From a5e0f7849b73f06bcef649248eff7bc8deb40d34 Mon Sep 17 00:00:00 2001 From: Radu Stefanache Date: Thu, 23 Dec 2021 00:14:16 +0000 Subject: [PATCH 1/2] [ADD] Github Actions --- .git-crypt/.gitattributes | 4 - ...ED20CFC7112DE4E6C4070CED0E3AA9A664E742.gpg | Bin 471 -> 0 bytes ...BCDE40E6B92375882CAF869801BFBDC5D7F579.gpg | Bin 727 -> 0 bytes ...D2606F66C3FF28874362B61A16916844CE9D82.gpg | Bin 471 -> 0 bytes ...5982A11F55E25E97210243CC6B9299734DD558.gpg | Bin 727 -> 0 bytes ...4145CFE7938B456B337E514F2AE1DED258B20E.gpg | Bin 727 -> 0 bytes ...76184B551B037240C4D457AFD792BACA20583D.gpg | Bin 471 -> 0 bytes .gitattributes | 1 - .github/workflows/main.yaml | 64 + .ruby-version | 1 - Gemfile | 10 - Gemfile.lock | 1231 ----------------- Rakefile | 498 ------- config/ci/rdm-management-default.yaml | 15 - config/defaults.yaml | 43 - config/deployments/bsn-demo-copernicium.yaml | 31 - .../deployments/bsn-development-hassium.yaml | 31 - config/deployments/bsn-local-default.yaml | 3 - .../deployments/bsn-production-vanadium.yaml | 30 - config/deployments/local-development.yaml | 3 - config/deployments/local-testing.yaml | 1 - .../deployments/rdm-management-default.yaml | 1 - config/env.js | 107 -- config/getHttpsConfig.js | 64 - config/hiera.yaml | 16 - config/jest/cssTransform.js | 12 - config/jest/fileTransform.js | 38 - config/modules.js | 112 -- config/paths.js | 61 - config/pipelines/defaults.yaml | 18 - config/roles/bootstrap.yaml | 9 - config/roles/builder-pipeline.yaml | 20 - config/roles/demo-pipeline.yaml | 27 - config/roles/develop-pipeline.yaml | 27 - config/roles/local-app.yaml | 4 - config/roles/pr-pipeline.yaml | 20 - config/roles/tag-pipeline.yaml | 27 - config/roles/website.yaml | 33 - config/secrets/.unlocked | Bin 26 -> 0 bytes config/secrets/pipeline/constants.yaml | Bin 7826 -> 0 bytes .../pipeline/rdm-management-default.yaml | Bin 240 -> 0 bytes .../secrets/website/bsn-demo-copernicium.yaml | Bin 212 -> 0 bytes .../website/bsn-development-hassium.yaml | Bin 217 -> 0 bytes .../website/bsn-production-vanadium.yaml | Bin 147 -> 0 bytes config/webpack.config.js | 688 --------- config/webpackDevServer.config.js | 128 -- go | 82 -- lib/s3_website.rb | 165 --- pipelines/builder/handle-pr-event/task.sh | 15 - pipelines/builder/handle-pr-event/task.yaml | 8 - pipelines/builder/pipeline.yaml | 39 - pipelines/demo/pipeline.yaml | 148 -- pipelines/demo/provision-content/task.sh | 25 - pipelines/demo/provision-content/task.yaml | 9 - pipelines/demo/provision-website/task.sh | 25 - pipelines/demo/provision-website/task.yaml | 9 - pipelines/develop/pipeline.yaml | 148 -- pipelines/develop/provision-content/task.sh | 25 - pipelines/develop/provision-content/task.yaml | 9 - pipelines/develop/provision-website/task.sh | 25 - pipelines/develop/provision-website/task.yaml | 9 - pipelines/pr/pipeline.yaml | 167 --- pipelines/shared/build/task.sh | 12 - pipelines/shared/build/task.yaml | 9 - pipelines/shared/coverage/task.sh | 20 - pipelines/shared/coverage/task.yaml | 12 - pipelines/shared/test/task.sh | 12 - pipelines/shared/test/task.yaml | 9 - pipelines/tag/pipeline.yaml | 142 -- pipelines/tag/provision-content/task.sh | 25 - pipelines/tag/provision-content/task.yaml | 9 - pipelines/tag/provision-website/task.sh | 25 - pipelines/tag/provision-website/task.yaml | 9 - state/bootstrap/bsn-demo-copernicium.tfstate | 186 --- .../bootstrap/bsn-development-hassium.tfstate | 156 --- .../bootstrap/bsn-production-vanadium.tfstate | 186 --- 76 files changed, 64 insertions(+), 5034 deletions(-) delete mode 100644 .git-crypt/.gitattributes delete mode 100644 .git-crypt/keys/default/0/04ED20CFC7112DE4E6C4070CED0E3AA9A664E742.gpg delete mode 100644 .git-crypt/keys/default/0/2CBCDE40E6B92375882CAF869801BFBDC5D7F579.gpg delete mode 100644 .git-crypt/keys/default/0/41D2606F66C3FF28874362B61A16916844CE9D82.gpg delete mode 100644 .git-crypt/keys/default/0/855982A11F55E25E97210243CC6B9299734DD558.gpg delete mode 100644 .git-crypt/keys/default/0/B14145CFE7938B456B337E514F2AE1DED258B20E.gpg delete mode 100644 .git-crypt/keys/default/0/CF76184B551B037240C4D457AFD792BACA20583D.gpg delete mode 100644 .gitattributes create mode 100644 .github/workflows/main.yaml delete mode 100644 .ruby-version delete mode 100644 Gemfile delete mode 100644 Gemfile.lock delete mode 100644 Rakefile delete mode 100644 config/ci/rdm-management-default.yaml delete mode 100644 config/defaults.yaml delete mode 100644 config/deployments/bsn-demo-copernicium.yaml delete mode 100644 config/deployments/bsn-development-hassium.yaml delete mode 100644 config/deployments/bsn-local-default.yaml delete mode 100644 config/deployments/bsn-production-vanadium.yaml delete mode 100644 config/deployments/local-development.yaml delete mode 100644 config/deployments/local-testing.yaml delete mode 100644 config/deployments/rdm-management-default.yaml delete mode 100644 config/env.js delete mode 100644 config/getHttpsConfig.js delete mode 100644 config/hiera.yaml delete mode 100644 config/jest/cssTransform.js delete mode 100644 config/jest/fileTransform.js delete mode 100644 config/modules.js delete mode 100644 config/paths.js delete mode 100644 config/pipelines/defaults.yaml delete mode 100644 config/roles/bootstrap.yaml delete mode 100644 config/roles/builder-pipeline.yaml delete mode 100644 config/roles/demo-pipeline.yaml delete mode 100644 config/roles/develop-pipeline.yaml delete mode 100644 config/roles/local-app.yaml delete mode 100644 config/roles/pr-pipeline.yaml delete mode 100644 config/roles/tag-pipeline.yaml delete mode 100644 config/roles/website.yaml delete mode 100644 config/secrets/.unlocked delete mode 100644 config/secrets/pipeline/constants.yaml delete mode 100644 config/secrets/pipeline/rdm-management-default.yaml delete mode 100644 config/secrets/website/bsn-demo-copernicium.yaml delete mode 100644 config/secrets/website/bsn-development-hassium.yaml delete mode 100644 config/secrets/website/bsn-production-vanadium.yaml delete mode 100644 config/webpack.config.js delete mode 100644 config/webpackDevServer.config.js delete mode 100755 go delete mode 100644 lib/s3_website.rb delete mode 100755 pipelines/builder/handle-pr-event/task.sh delete mode 100644 pipelines/builder/handle-pr-event/task.yaml delete mode 100644 pipelines/builder/pipeline.yaml delete mode 100644 pipelines/demo/pipeline.yaml delete mode 100755 pipelines/demo/provision-content/task.sh delete mode 100644 pipelines/demo/provision-content/task.yaml delete mode 100755 pipelines/demo/provision-website/task.sh delete mode 100644 pipelines/demo/provision-website/task.yaml delete mode 100644 pipelines/develop/pipeline.yaml delete mode 100755 pipelines/develop/provision-content/task.sh delete mode 100644 pipelines/develop/provision-content/task.yaml delete mode 100755 pipelines/develop/provision-website/task.sh delete mode 100644 pipelines/develop/provision-website/task.yaml delete mode 100644 pipelines/pr/pipeline.yaml delete mode 100755 pipelines/shared/build/task.sh delete mode 100644 pipelines/shared/build/task.yaml delete mode 100755 pipelines/shared/coverage/task.sh delete mode 100644 pipelines/shared/coverage/task.yaml delete mode 100755 pipelines/shared/test/task.sh delete mode 100644 pipelines/shared/test/task.yaml delete mode 100644 pipelines/tag/pipeline.yaml delete mode 100755 pipelines/tag/provision-content/task.sh delete mode 100644 pipelines/tag/provision-content/task.yaml delete mode 100755 pipelines/tag/provision-website/task.sh delete mode 100644 pipelines/tag/provision-website/task.yaml delete mode 100644 state/bootstrap/bsn-demo-copernicium.tfstate delete mode 100644 state/bootstrap/bsn-development-hassium.tfstate delete mode 100644 state/bootstrap/bsn-production-vanadium.tfstate diff --git a/.git-crypt/.gitattributes b/.git-crypt/.gitattributes deleted file mode 100644 index 665b10e8..00000000 --- a/.git-crypt/.gitattributes +++ /dev/null @@ -1,4 +0,0 @@ -# Do not edit this file. To specify the files to encrypt, create your own -# .gitattributes file in the directory where your files are. -* !filter !diff -*.gpg binary diff --git a/.git-crypt/keys/default/0/04ED20CFC7112DE4E6C4070CED0E3AA9A664E742.gpg b/.git-crypt/keys/default/0/04ED20CFC7112DE4E6C4070CED0E3AA9A664E742.gpg deleted file mode 100644 index ca3b7d040a17671f4a40ef3c81f386fb6eaf42f8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 471 zcmV;|0Vw{30Sp5{(iS6;rKeW`2mB5&PVOQ+BdTSvvP6vpg}v9s4y5e3%EJIqMS6k< zfyy@45z~bu=Z7qA`O()M@;Lu^3`%YAc}Fr`h;6zw^Kmy~K#%PAve9ByKaUy zGV$E2*lyU{$NJ46Q-{00R6pe=;0%@fb!u2D+oXJ94hb}SKW6)qas&dVc?5x}oxplW zZk<%Obd;tyXd;fpNZES-k66;c1p!j;JJM}FjLOn`ltzn>4PDx2bjZR(z55MsXcgl0 z6tvt*xo7tyG!xIH58;M5Ye){V1WW=D!foXCgVOf??WzF)eR<`l0SCSLB|w4AlcfY0 zsJryA?rJ`HfxwbdJdLu1=I>`qqDPA10=+&ylVq6_a|*^*buWt#6!9Yf>Get7^zNy2 z1tI{SOZ_5a$waIuJS3foxAACxX1n9E%Ex<;{`_B|?%)g3U~aZ^&_^bqTo!4*bQqN+ Nn1hy}`ouqzMIaPa=E(p6 diff --git a/.git-crypt/keys/default/0/2CBCDE40E6B92375882CAF869801BFBDC5D7F579.gpg b/.git-crypt/keys/default/0/2CBCDE40E6B92375882CAF869801BFBDC5D7F579.gpg deleted file mode 100644 index b249b343018663b9cd98f1338aa7d8352612d3cf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 727 zcmV;|0x1230t^E$BT+qSxOk%h5C3<{h(G5vS(0>m!IP&!;V14}&u>(op^r(Lhp#M< zV6u`+ZnzL9(t1@@Pj#$rDJ9j`BmW4jmquzFtMw`EYPcqc49L63J56G)g=-`S<%{Rp z4ChDw02BT_FWmeWpI(1-8CnQDZA-kuZBL*Kla<|_7ByR3jPgLyLb@V#xVh& z&9i)%mWe=?CC7bEc1dV41C34B^90e7_6xAvp@?X0k6cgRfQ>Y?gZX1elLf)C`6Mjk z5iXJ;`#ed4{GuhOVbE?%MTe{MR(8%yy#++8V;!1{U$LSL(bCCn(MA2s zfB?e{Sf9DyOU{{(ILOUVlafZa)9~yczJ|0`HP*@UXV;; zs{BlxjmMa|@DFyqXiU<;1p&TZZ(epG@4tXTyj|5fpV43%3sl@O0tF^Vj@j(ZJeC*a zs?s3HO1xK&6{6xQ{(~Dx7i85KECs6AE8No8el@SdljUB+ScWw987<-FSt|dDk^wc6 zBhQoZ2A$_OslSXcGXQv$B&+Usow(LDa)!_+H9k@cZ}T{4hEzWR@0PM#c%6&=30Idy zF`kL;r4?76jKJ!3@{aRB@m9C*t3+xH J_wvUuE`qq3XYK$1 diff --git a/.git-crypt/keys/default/0/41D2606F66C3FF28874362B61A16916844CE9D82.gpg b/.git-crypt/keys/default/0/41D2606F66C3FF28874362B61A16916844CE9D82.gpg deleted file mode 100644 index 0010349f3b719d0b2083071e3b019ddb7aca0b85..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 471 zcmV;|0Vw{30Sp8EeDc3*iP`D_2mqRR7FbVJ4>iO=iA^_X<02Bf^h(&q!V8~mDdTQk z@Y1vZ@TJi*hy2OmCd0d|mZ?Dc;$r7C-+z8cnr(k=j5Vc*oIqp!H^-l0eFU_w}kPth(Y@v1-a4w7c@q7RP diff --git a/.git-crypt/keys/default/0/855982A11F55E25E97210243CC6B9299734DD558.gpg b/.git-crypt/keys/default/0/855982A11F55E25E97210243CC6B9299734DD558.gpg deleted file mode 100644 index f5cfe8e7ea84036900661b8767c905c430bea0c8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 727 zcmV;|0x1230t^GpSt-Gk-#Fa?5C3&^-oC^OjP36)H0)RIF$np}*M(sn3%i0I&1~H~ za*t42_RIZK>R$A+uVI(1wM^Q?h$zT09?eVN?PBENTQj`2k`h#YFb|p)CT7M(UXaB! zU-2q6+S2oyyShaQH2lSGZn=H|ejnr|MQ>?&u!Itsn@s6YcI9Hf7ChgkV)!i`-|L=z zxb{1|5%Fo~%{qz>3U&G7Xm;C^x9S;P^7rTAN@nA+qhCrd3q{=DdT3^8V0)BwjV|G4tA-!52hg>nbvH(0hZIfCd90|DHb zx-^&cbyniMqnB22{Gymx=Ih`i2@Jc#Jhy=qlx>d9uBwy7 zV#yMYk7*Dz${*yi=r5a;Lo(P#_el;?Ia|2hm~)HVl2MX?c;-!bcz@#>HChqnsO*vV zwA3j3>1siGCN^!sl;G091pz)aX{PUUzJ+T;d3hIqqnStR-YEV~M8Z@EX3R);nrYo& zuKYS&oYc49%%b~^dhpp^Z4U=#_R{r2FLzc=N=SPyBF5dTQ2zO>B!UJ*;-;F{-Nwp> z;VmnVJPgPIAve}R{^(liLaARkEsk(>!0HZPy~a^_9H@ezN=?=|n{c~b(X6zT=98YS zOENyr6*yx(3-B7&4oxOtye`ISUf{q6PPAOd+3Qz%m<2e`c0sPhZdy+8=N^~}`{(Wy Jq%c@3adLstct!vK diff --git a/.git-crypt/keys/default/0/B14145CFE7938B456B337E514F2AE1DED258B20E.gpg b/.git-crypt/keys/default/0/B14145CFE7938B456B337E514F2AE1DED258B20E.gpg deleted file mode 100644 index 4df185ebb125054e6fbc3ec3d28986cd360fa08c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 727 zcmV;|0x1230t^Erfx44{9v21y5BdWE+#%e#I92CD0PsQI7K6(J>s=70%xhmNUq19F zSmI)aIl?Sa(sK}33P9}84&WpK4#=TkUy@LY5!{fJjx`Y3-K{G9P*8D}vcILkd5Qew z1YzAtivn|s5*~8$XbW18Ejey4Ppi7Ms4!Sf66SIKuoyEfTM^~50Ad{)ESx9yNCAN`; z##l|-$ZM*kE~A8QS z2drb=bEX!)I{l(@oIf9O03;Lw66R>mf0;q+3F^J5I_tU4e*l$waKIPnV~sODfIlik z4ZlMz^izeRD_an&PT*VdTZlbR+f_I&d;7Fb&{Ilf#(BI*-6g*8YSmo6=-0Vo5- zov^S~){ost5|_ORm#;@n%eFeWQ#&J~;;KLyG$7_hwXGZ2Imsa1?RX`M>~0tGqIXtR z(niN<=-l2*G(jabQt;Bi1p&9I*LP>Cy*Ab5|04gp2qrz71Onuz(oR#QO1TX(^;H!~ zfqkJ}2?;e-o9S`)4fMi&DShg95EEe%f4QVS09uBM4jr4l4M%~E(p1%O_EkP=t;H_j zl|O9Ral^n29p`x_?BMsy1@IoJy8!Ir2mqo~92FWvL&STtd*2!Nk*eig`maf|sa`A1qu`KMS~P(+Ws5e11f~ zXxR>+V8F_cbEpNB;gbJyS`Htg-jpkTYg4ldM3powV4sh-%Fytk#@Jz^P)V51GBr%_ zZaH0W{hhJCvD*R3ZbVfcXQgh(d~Q#=7;ErYt>g&8z4!fau|DU(uPvE4I3jo<Z{a`0}0Q~)wRTaxNyl((li zVF2?^s8g!Vm>U!PaThARwVr3m8gm+T5zn((LomhxC72hFDjz!!l4gzv6E15fQppH; z^X*a^AG&uJN8cDXIcTe$jtf=9Il3kS!o&16RGq=PvnR%LaBfbf6iyK0-tZyY32WNW zjcHKv|INVlW=@zEWx;?70l)xoQ`$3X@_p{%5V-&4mH!_vd6Zifg-#wq+1YSqTx$%e NbHv3pi%?TV0bv;V;@JQI diff --git a/.gitattributes b/.gitattributes deleted file mode 100644 index 4f1503af..00000000 --- a/.gitattributes +++ /dev/null @@ -1 +0,0 @@ -config/secrets/** filter=git-crypt diff=git-crypt diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml new file mode 100644 index 00000000..2a571d18 --- /dev/null +++ b/.github/workflows/main.yaml @@ -0,0 +1,64 @@ +name: Build and Deploy leptonite.io + +on: + push: + tags: + - 'v*' + pull_request: + branches: + - main + +jobs: + build-and-test: + name: Build and Test + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-node@v2 + with: + node-version: '12' + cache: 'npm' + - run: npm install + - run: npm run app:lint + - run: npm run app:format + - run: npm run tests:lint + - run: npm run tests:format + - run: npm run tests:unit:coverage + - run: npm run tests:coverage:badge + + deploy: + name: Publish to CDN + runs-on: ubuntu-latest + if: ${{ github.event_name == 'push' }} + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-node@v2 + with: + node-version: '12' + cache: 'npm' + - run: npm install + - name: Build content + id: build + run: npm run build + env: + NODE_ENV: production + REACT_APP_BACKEND_BASE_URL: https://api.leptonite.io + REACT_APP_FRONT_END_LOCALSTORAGE_VERSION: 1.0 + CONTENT_WORK_DIRECTORY: build/content + GENERATE_SOURCEMAP: false + - name: Configure AWS credentials + uses: aws-actions/configure-aws-credentials@v1 + with: + aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} + aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + aws-region: eu-west-2 + - id: install-aws-cli + uses: unfor19/install-aws-cli-action@v1 + with: + version: 2 + - run: aws s3 sync ./build/content s3://$BUCKET --delete + env: + BUCKET: ${{ secrets.S3_CONTENT_BUCKET }} + - run: aws cloudfront create-invalidation --distribution-id $CDN_ID --paths "/*" + env: + CDN_ID: ${{ secrets.CDN_ID }} diff --git a/.ruby-version b/.ruby-version deleted file mode 100644 index fbafd6b6..00000000 --- a/.ruby-version +++ /dev/null @@ -1 +0,0 @@ -2.7.2 \ No newline at end of file diff --git a/Gemfile b/Gemfile deleted file mode 100644 index ed8e27f2..00000000 --- a/Gemfile +++ /dev/null @@ -1,10 +0,0 @@ -source 'https://rubygems.org' - -gem 'aws-sdk', '~> 3.0' -gem 'confidante', '~> 0.27' -gem 'git', '~> 1.8' -gem 'mime-types', '~> 3.3' -gem 'rake', '~> 13.0' -gem 'rake_docker', '~> 2.13' -gem 'rake_fly', '~> 2.7' -gem 'rake_terraform', '~> 1.19' diff --git a/Gemfile.lock b/Gemfile.lock deleted file mode 100644 index a6f323b2..00000000 --- a/Gemfile.lock +++ /dev/null @@ -1,1231 +0,0 @@ -GEM - remote: https://rubygems.org/ - specs: - activesupport (6.1.3.2) - concurrent-ruby (~> 1.0, >= 1.0.2) - i18n (>= 1.6, < 2) - minitest (>= 5.1) - tzinfo (~> 2.0) - zeitwerk (~> 2.3) - aws-eventstream (1.1.1) - aws-partitions (1.465.0) - aws-sdk (3.0.2) - aws-sdk-resources (~> 3) - aws-sdk-accessanalyzer (1.19.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-acm (1.41.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-acmpca (1.36.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-alexaforbusiness (1.47.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-amplify (1.29.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-amplifybackend (1.3.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-apigateway (1.62.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-apigatewaymanagementapi (1.21.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-apigatewayv2 (1.32.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-appconfig (1.14.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-appflow (1.10.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-appintegrationsservice (1.2.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-applicationautoscaling (1.51.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-applicationcostprofiler (1.0.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-applicationdiscoveryservice (1.35.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-applicationinsights (1.18.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-appmesh (1.35.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-appregistry (1.5.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-apprunner (1.0.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-appstream (1.52.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-appsync (1.40.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-athena (1.37.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-auditmanager (1.7.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-augmentedairuntime (1.13.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-autoscaling (1.61.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-autoscalingplans (1.31.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-backup (1.28.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-batch (1.47.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-braket (1.7.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-budgets (1.38.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-chime (1.46.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-cloud9 (1.33.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-clouddirectory (1.31.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-cloudformation (1.52.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-cloudfront (1.51.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-cloudhsm (1.30.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-cloudhsmv2 (1.33.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-cloudsearch (1.29.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-cloudsearchdomain (1.24.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-cloudtrail (1.34.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-cloudwatch (1.51.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-cloudwatchevents (1.46.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-cloudwatchlogs (1.41.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-codeartifact (1.10.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-codebuild (1.72.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-codecommit (1.42.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-codedeploy (1.40.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-codeguruprofiler (1.15.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-codegurureviewer (1.17.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-codepipeline (1.44.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-codestar (1.29.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-codestarconnections (1.15.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-codestarnotifications (1.10.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-cognitoidentity (1.31.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-cognitoidentityprovider (1.51.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-cognitosync (1.27.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-comprehend (1.46.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-comprehendmedical (1.26.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-computeoptimizer (1.18.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-configservice (1.62.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-connect (1.44.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-connectcontactlens (1.2.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-connectparticipant (1.11.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-core (3.114.0) - aws-eventstream (~> 1, >= 1.0.2) - aws-partitions (~> 1, >= 1.239.0) - aws-sigv4 (~> 1.1) - jmespath (~> 1.0) - aws-sdk-costandusagereportservice (1.31.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-costexplorer (1.62.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-customerprofiles (1.7.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-databasemigrationservice (1.53.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-dataexchange (1.13.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-datapipeline (1.27.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-datasync (1.32.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-dax (1.29.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-detective (1.18.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-devicefarm (1.42.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-devopsguru (1.6.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-directconnect (1.41.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-directoryservice (1.39.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-dlm (1.40.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-docdb (1.30.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-dynamodb (1.60.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-dynamodbstreams (1.29.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-ebs (1.13.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-ec2 (1.240.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-ec2instanceconnect (1.14.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-ecr (1.42.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-ecrpublic (1.3.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-ecs (1.79.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-efs (1.40.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-eks (1.54.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-elasticache (1.57.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-elasticbeanstalk (1.42.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-elasticinference (1.12.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-elasticloadbalancing (1.31.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-elasticloadbalancingv2 (1.61.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-elasticsearchservice (1.52.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-elastictranscoder (1.29.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-emr (1.45.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-emrcontainers (1.3.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-eventbridge (1.24.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-finspace (1.2.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-finspacedata (1.1.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-firehose (1.37.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-fis (1.1.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-fms (1.36.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-forecastqueryservice (1.12.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-forecastservice (1.20.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-frauddetector (1.18.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-fsx (1.37.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-gamelift (1.44.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-glacier (1.37.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-globalaccelerator (1.30.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-glue (1.87.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-gluedatabrew (1.7.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-greengrass (1.40.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-greengrassv2 (1.3.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-groundstation (1.18.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-guardduty (1.45.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-health (1.35.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-healthlake (1.3.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-honeycode (1.6.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-iam (1.54.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-identitystore (1.5.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-imagebuilder (1.22.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-importexport (1.26.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv2 (~> 1.0) - aws-sdk-inspector (1.34.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-iot (1.69.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-iot1clickdevicesservice (1.28.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-iot1clickprojects (1.28.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-iotanalytics (1.38.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-iotdataplane (1.28.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-iotdeviceadvisor (1.3.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-iotevents (1.24.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-ioteventsdata (1.16.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-iotfleethub (1.2.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-iotjobsdataplane (1.27.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-iotsecuretunneling (1.11.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-iotsitewise (1.23.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-iotthingsgraph (1.14.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-iotwireless (1.10.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-ivs (1.9.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-kafka (1.36.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-kendra (1.25.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-kinesis (1.32.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-kinesisanalytics (1.31.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-kinesisanalyticsv2 (1.30.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-kinesisvideo (1.32.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-kinesisvideoarchivedmedia (1.34.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-kinesisvideomedia (1.28.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-kinesisvideosignalingchannels (1.10.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-kms (1.43.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-lakeformation (1.14.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-lambda (1.62.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-lambdapreview (1.26.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-lex (1.36.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-lexmodelbuildingservice (1.45.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-lexmodelsv2 (1.4.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-lexruntimev2 (1.2.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-licensemanager (1.27.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-lightsail (1.50.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-locationservice (1.4.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-lookoutequipment (1.0.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-lookoutforvision (1.3.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-lookoutmetrics (1.3.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-machinelearning (1.28.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-macie (1.28.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-macie2 (1.28.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-managedblockchain (1.22.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-marketplacecatalog (1.12.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-marketplacecommerceanalytics (1.32.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-marketplaceentitlementservice (1.26.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-marketplacemetering (1.34.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-mediaconnect (1.33.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-mediaconvert (1.67.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-medialive (1.70.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-mediapackage (1.40.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-mediapackagevod (1.23.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-mediastore (1.32.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-mediastoredata (1.29.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-mediatailor (1.38.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-mgn (1.0.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-migrationhub (1.31.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-migrationhubconfig (1.11.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-mobile (1.26.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-mq (1.36.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-mturk (1.31.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-mwaa (1.5.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-neptune (1.35.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-networkfirewall (1.4.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-networkmanager (1.11.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-nimblestudio (1.1.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-opsworks (1.32.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-opsworkscm (1.43.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-organizations (1.59.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-outposts (1.16.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-personalize (1.26.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-personalizeevents (1.17.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-personalizeruntime (1.22.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-pi (1.27.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-pinpoint (1.53.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-pinpointemail (1.26.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-pinpointsmsvoice (1.23.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-polly (1.41.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-pricing (1.27.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-prometheusservice (1.3.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-qldb (1.14.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-qldbsession (1.13.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-quicksight (1.46.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-ram (1.25.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-rds (1.118.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-rdsdataservice (1.25.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-redshift (1.62.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-redshiftdataapiservice (1.6.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-rekognition (1.51.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-resourcegroups (1.36.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-resourcegroupstaggingapi (1.37.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-resources (3.104.0) - aws-sdk-accessanalyzer (~> 1) - aws-sdk-acm (~> 1) - aws-sdk-acmpca (~> 1) - aws-sdk-alexaforbusiness (~> 1) - aws-sdk-amplify (~> 1) - aws-sdk-amplifybackend (~> 1) - aws-sdk-apigateway (~> 1) - aws-sdk-apigatewaymanagementapi (~> 1) - aws-sdk-apigatewayv2 (~> 1) - aws-sdk-appconfig (~> 1) - aws-sdk-appflow (~> 1) - aws-sdk-appintegrationsservice (~> 1) - aws-sdk-applicationautoscaling (~> 1) - aws-sdk-applicationcostprofiler (~> 1) - aws-sdk-applicationdiscoveryservice (~> 1) - aws-sdk-applicationinsights (~> 1) - aws-sdk-appmesh (~> 1) - aws-sdk-appregistry (~> 1) - aws-sdk-apprunner (~> 1) - aws-sdk-appstream (~> 1) - aws-sdk-appsync (~> 1) - aws-sdk-athena (~> 1) - aws-sdk-auditmanager (~> 1) - aws-sdk-augmentedairuntime (~> 1) - aws-sdk-autoscaling (~> 1) - aws-sdk-autoscalingplans (~> 1) - aws-sdk-backup (~> 1) - aws-sdk-batch (~> 1) - aws-sdk-braket (~> 1) - aws-sdk-budgets (~> 1) - aws-sdk-chime (~> 1) - aws-sdk-cloud9 (~> 1) - aws-sdk-clouddirectory (~> 1) - aws-sdk-cloudformation (~> 1) - aws-sdk-cloudfront (~> 1) - aws-sdk-cloudhsm (~> 1) - aws-sdk-cloudhsmv2 (~> 1) - aws-sdk-cloudsearch (~> 1) - aws-sdk-cloudsearchdomain (~> 1) - aws-sdk-cloudtrail (~> 1) - aws-sdk-cloudwatch (~> 1) - aws-sdk-cloudwatchevents (~> 1) - aws-sdk-cloudwatchlogs (~> 1) - aws-sdk-codeartifact (~> 1) - aws-sdk-codebuild (~> 1) - aws-sdk-codecommit (~> 1) - aws-sdk-codedeploy (~> 1) - aws-sdk-codeguruprofiler (~> 1) - aws-sdk-codegurureviewer (~> 1) - aws-sdk-codepipeline (~> 1) - aws-sdk-codestar (~> 1) - aws-sdk-codestarconnections (~> 1) - aws-sdk-codestarnotifications (~> 1) - aws-sdk-cognitoidentity (~> 1) - aws-sdk-cognitoidentityprovider (~> 1) - aws-sdk-cognitosync (~> 1) - aws-sdk-comprehend (~> 1) - aws-sdk-comprehendmedical (~> 1) - aws-sdk-computeoptimizer (~> 1) - aws-sdk-configservice (~> 1) - aws-sdk-connect (~> 1) - aws-sdk-connectcontactlens (~> 1) - aws-sdk-connectparticipant (~> 1) - aws-sdk-costandusagereportservice (~> 1) - aws-sdk-costexplorer (~> 1) - aws-sdk-customerprofiles (~> 1) - aws-sdk-databasemigrationservice (~> 1) - aws-sdk-dataexchange (~> 1) - aws-sdk-datapipeline (~> 1) - aws-sdk-datasync (~> 1) - aws-sdk-dax (~> 1) - aws-sdk-detective (~> 1) - aws-sdk-devicefarm (~> 1) - aws-sdk-devopsguru (~> 1) - aws-sdk-directconnect (~> 1) - aws-sdk-directoryservice (~> 1) - aws-sdk-dlm (~> 1) - aws-sdk-docdb (~> 1) - aws-sdk-dynamodb (~> 1) - aws-sdk-dynamodbstreams (~> 1) - aws-sdk-ebs (~> 1) - aws-sdk-ec2 (~> 1) - aws-sdk-ec2instanceconnect (~> 1) - aws-sdk-ecr (~> 1) - aws-sdk-ecrpublic (~> 1) - aws-sdk-ecs (~> 1) - aws-sdk-efs (~> 1) - aws-sdk-eks (~> 1) - aws-sdk-elasticache (~> 1) - aws-sdk-elasticbeanstalk (~> 1) - aws-sdk-elasticinference (~> 1) - aws-sdk-elasticloadbalancing (~> 1) - aws-sdk-elasticloadbalancingv2 (~> 1) - aws-sdk-elasticsearchservice (~> 1) - aws-sdk-elastictranscoder (~> 1) - aws-sdk-emr (~> 1) - aws-sdk-emrcontainers (~> 1) - aws-sdk-eventbridge (~> 1) - aws-sdk-finspace (~> 1) - aws-sdk-finspacedata (~> 1) - aws-sdk-firehose (~> 1) - aws-sdk-fis (~> 1) - aws-sdk-fms (~> 1) - aws-sdk-forecastqueryservice (~> 1) - aws-sdk-forecastservice (~> 1) - aws-sdk-frauddetector (~> 1) - aws-sdk-fsx (~> 1) - aws-sdk-gamelift (~> 1) - aws-sdk-glacier (~> 1) - aws-sdk-globalaccelerator (~> 1) - aws-sdk-glue (~> 1) - aws-sdk-gluedatabrew (~> 1) - aws-sdk-greengrass (~> 1) - aws-sdk-greengrassv2 (~> 1) - aws-sdk-groundstation (~> 1) - aws-sdk-guardduty (~> 1) - aws-sdk-health (~> 1) - aws-sdk-healthlake (~> 1) - aws-sdk-honeycode (~> 1) - aws-sdk-iam (~> 1) - aws-sdk-identitystore (~> 1) - aws-sdk-imagebuilder (~> 1) - aws-sdk-importexport (~> 1) - aws-sdk-inspector (~> 1) - aws-sdk-iot (~> 1) - aws-sdk-iot1clickdevicesservice (~> 1) - aws-sdk-iot1clickprojects (~> 1) - aws-sdk-iotanalytics (~> 1) - aws-sdk-iotdataplane (~> 1) - aws-sdk-iotdeviceadvisor (~> 1) - aws-sdk-iotevents (~> 1) - aws-sdk-ioteventsdata (~> 1) - aws-sdk-iotfleethub (~> 1) - aws-sdk-iotjobsdataplane (~> 1) - aws-sdk-iotsecuretunneling (~> 1) - aws-sdk-iotsitewise (~> 1) - aws-sdk-iotthingsgraph (~> 1) - aws-sdk-iotwireless (~> 1) - aws-sdk-ivs (~> 1) - aws-sdk-kafka (~> 1) - aws-sdk-kendra (~> 1) - aws-sdk-kinesis (~> 1) - aws-sdk-kinesisanalytics (~> 1) - aws-sdk-kinesisanalyticsv2 (~> 1) - aws-sdk-kinesisvideo (~> 1) - aws-sdk-kinesisvideoarchivedmedia (~> 1) - aws-sdk-kinesisvideomedia (~> 1) - aws-sdk-kinesisvideosignalingchannels (~> 1) - aws-sdk-kms (~> 1) - aws-sdk-lakeformation (~> 1) - aws-sdk-lambda (~> 1) - aws-sdk-lambdapreview (~> 1) - aws-sdk-lex (~> 1) - aws-sdk-lexmodelbuildingservice (~> 1) - aws-sdk-lexmodelsv2 (~> 1) - aws-sdk-lexruntimev2 (~> 1) - aws-sdk-licensemanager (~> 1) - aws-sdk-lightsail (~> 1) - aws-sdk-locationservice (~> 1) - aws-sdk-lookoutequipment (~> 1) - aws-sdk-lookoutforvision (~> 1) - aws-sdk-lookoutmetrics (~> 1) - aws-sdk-machinelearning (~> 1) - aws-sdk-macie (~> 1) - aws-sdk-macie2 (~> 1) - aws-sdk-managedblockchain (~> 1) - aws-sdk-marketplacecatalog (~> 1) - aws-sdk-marketplacecommerceanalytics (~> 1) - aws-sdk-marketplaceentitlementservice (~> 1) - aws-sdk-marketplacemetering (~> 1) - aws-sdk-mediaconnect (~> 1) - aws-sdk-mediaconvert (~> 1) - aws-sdk-medialive (~> 1) - aws-sdk-mediapackage (~> 1) - aws-sdk-mediapackagevod (~> 1) - aws-sdk-mediastore (~> 1) - aws-sdk-mediastoredata (~> 1) - aws-sdk-mediatailor (~> 1) - aws-sdk-mgn (~> 1) - aws-sdk-migrationhub (~> 1) - aws-sdk-migrationhubconfig (~> 1) - aws-sdk-mobile (~> 1) - aws-sdk-mq (~> 1) - aws-sdk-mturk (~> 1) - aws-sdk-mwaa (~> 1) - aws-sdk-neptune (~> 1) - aws-sdk-networkfirewall (~> 1) - aws-sdk-networkmanager (~> 1) - aws-sdk-nimblestudio (~> 1) - aws-sdk-opsworks (~> 1) - aws-sdk-opsworkscm (~> 1) - aws-sdk-organizations (~> 1) - aws-sdk-outposts (~> 1) - aws-sdk-personalize (~> 1) - aws-sdk-personalizeevents (~> 1) - aws-sdk-personalizeruntime (~> 1) - aws-sdk-pi (~> 1) - aws-sdk-pinpoint (~> 1) - aws-sdk-pinpointemail (~> 1) - aws-sdk-pinpointsmsvoice (~> 1) - aws-sdk-polly (~> 1) - aws-sdk-pricing (~> 1) - aws-sdk-prometheusservice (~> 1) - aws-sdk-qldb (~> 1) - aws-sdk-qldbsession (~> 1) - aws-sdk-quicksight (~> 1) - aws-sdk-ram (~> 1) - aws-sdk-rds (~> 1) - aws-sdk-rdsdataservice (~> 1) - aws-sdk-redshift (~> 1) - aws-sdk-redshiftdataapiservice (~> 1) - aws-sdk-rekognition (~> 1) - aws-sdk-resourcegroups (~> 1) - aws-sdk-resourcegroupstaggingapi (~> 1) - aws-sdk-robomaker (~> 1) - aws-sdk-route53 (~> 1) - aws-sdk-route53domains (~> 1) - aws-sdk-route53resolver (~> 1) - aws-sdk-s3 (~> 1) - aws-sdk-s3control (~> 1) - aws-sdk-s3outposts (~> 1) - aws-sdk-sagemaker (~> 1) - aws-sdk-sagemakeredgemanager (~> 1) - aws-sdk-sagemakerfeaturestoreruntime (~> 1) - aws-sdk-sagemakerruntime (~> 1) - aws-sdk-savingsplans (~> 1) - aws-sdk-schemas (~> 1) - aws-sdk-secretsmanager (~> 1) - aws-sdk-securityhub (~> 1) - aws-sdk-serverlessapplicationrepository (~> 1) - aws-sdk-servicecatalog (~> 1) - aws-sdk-servicediscovery (~> 1) - aws-sdk-servicequotas (~> 1) - aws-sdk-ses (~> 1) - aws-sdk-sesv2 (~> 1) - aws-sdk-shield (~> 1) - aws-sdk-signer (~> 1) - aws-sdk-simpledb (~> 1) - aws-sdk-sms (~> 1) - aws-sdk-snowball (~> 1) - aws-sdk-sns (~> 1) - aws-sdk-sqs (~> 1) - aws-sdk-ssm (~> 1) - aws-sdk-ssmcontacts (~> 1) - aws-sdk-ssmincidents (~> 1) - aws-sdk-ssoadmin (~> 1) - aws-sdk-ssooidc (~> 1) - aws-sdk-states (~> 1) - aws-sdk-storagegateway (~> 1) - aws-sdk-support (~> 1) - aws-sdk-swf (~> 1) - aws-sdk-synthetics (~> 1) - aws-sdk-textract (~> 1) - aws-sdk-timestreamquery (~> 1) - aws-sdk-timestreamwrite (~> 1) - aws-sdk-transcribeservice (~> 1) - aws-sdk-transcribestreamingservice (~> 1) - aws-sdk-transfer (~> 1) - aws-sdk-translate (~> 1) - aws-sdk-waf (~> 1) - aws-sdk-wafregional (~> 1) - aws-sdk-wafv2 (~> 1) - aws-sdk-wellarchitected (~> 1) - aws-sdk-workdocs (~> 1) - aws-sdk-worklink (~> 1) - aws-sdk-workmail (~> 1) - aws-sdk-workmailmessageflow (~> 1) - aws-sdk-workspaces (~> 1) - aws-sdk-xray (~> 1) - aws-sdk-robomaker (1.36.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-route53 (1.49.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-route53domains (1.30.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-route53resolver (1.25.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-s3 (1.95.1) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sdk-kms (~> 1) - aws-sigv4 (~> 1.1) - aws-sdk-s3control (1.33.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-s3outposts (1.2.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-sagemaker (1.87.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-sagemakeredgemanager (1.2.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-sagemakerfeaturestoreruntime (1.2.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-sagemakerruntime (1.31.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-savingsplans (1.15.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-schemas (1.12.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-secretsmanager (1.46.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-securityhub (1.46.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-serverlessapplicationrepository (1.34.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-servicecatalog (1.59.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-servicediscovery (1.36.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-servicequotas (1.14.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-ses (1.38.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-sesv2 (1.17.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-shield (1.37.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-signer (1.29.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-simpledb (1.26.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv2 (~> 1.0) - aws-sdk-sms (1.29.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-snowball (1.38.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-sns (1.41.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-sqs (1.39.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-ssm (1.110.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-ssmcontacts (1.0.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-ssmincidents (1.0.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-ssoadmin (1.7.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-ssooidc (1.10.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-states (1.39.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-storagegateway (1.55.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-support (1.31.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-swf (1.27.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-synthetics (1.12.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-textract (1.24.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-timestreamquery (1.4.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-timestreamwrite (1.4.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-transcribeservice (1.55.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-transcribestreamingservice (1.29.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-transfer (1.33.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-translate (1.31.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-waf (1.38.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-wafregional (1.39.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-wafv2 (1.20.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-wellarchitected (1.4.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-workdocs (1.30.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-worklink (1.23.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-workmail (1.37.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-workmailmessageflow (1.12.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-workspaces (1.53.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sdk-xray (1.37.0) - aws-sdk-core (~> 3, >= 3.112.0) - aws-sigv4 (~> 1.1) - aws-sigv2 (1.0.2) - aws-sigv4 (1.2.3) - aws-eventstream (~> 1, >= 1.0.2) - colored2 (3.1.2) - concourse.rb (0.4.0) - dry-schema (~> 0.5) - excon (~> 0.72) - semantic (~> 1.5) - concurrent-ruby (1.1.8) - confidante (0.27.0) - activesupport (>= 4) - hiera (~> 3.3, >= 3.3.1) - shikashi (~> 0.6) - docker-api (1.34.2) - excon (>= 0.47.0) - multi_json - dry-configurable (0.12.1) - concurrent-ruby (~> 1.0) - dry-core (~> 0.5, >= 0.5.0) - dry-container (0.7.2) - concurrent-ruby (~> 1.0) - dry-configurable (~> 0.1, >= 0.1.3) - dry-core (0.5.0) - concurrent-ruby (~> 1.0) - dry-equalizer (0.3.0) - dry-inflector (0.2.0) - dry-initializer (3.0.4) - dry-logic (1.2.0) - concurrent-ruby (~> 1.0) - dry-core (~> 0.5, >= 0.5) - dry-schema (0.6.0) - concurrent-ruby (~> 1.0) - dry-configurable (~> 0.8, >= 0.8.0) - dry-core (~> 0.4) - dry-equalizer (~> 0.2) - dry-initializer (~> 3.0) - dry-logic (~> 1.0) - dry-types (~> 1.0) - dry-types (1.5.1) - concurrent-ruby (~> 1.0) - dry-container (~> 0.3) - dry-core (~> 0.5, >= 0.5) - dry-inflector (~> 0.1, >= 0.1.2) - dry-logic (~> 1.0, >= 1.0.2) - evalhook (0.6.0) - partialruby (~> 0.3) - sexp_processor (~> 4.0) - excon (0.82.0) - getsource (0.2.2) - git (1.8.1) - rchardet (~> 1.8) - hamster (3.0.0) - concurrent-ruby (~> 1.0) - hiera (3.7.0) - i18n (1.8.10) - concurrent-ruby (~> 1.0) - immutable-struct (2.4.1) - jmespath (1.4.0) - lino (3.0.0) - hamster (~> 3.0) - open4 (~> 1.3) - mime-types (3.3.1) - mime-types-data (~> 3.2015) - mime-types-data (3.2021.0225) - minitar (0.9) - minitest (5.14.4) - multi_json (1.15.0) - open4 (1.3.4) - partialruby (0.3.0) - ruby2ruby (~> 2) - ruby_parser (~> 3) - rake (13.0.3) - rake_dependencies (2.11.0) - hamster (~> 3.0) - minitar (~> 0.9) - rake_factory (~> 0.23) - rubyzip (>= 1.3) - rake_docker (2.13.0) - aws-sdk-ecr (~> 1.2) - colored2 (~> 3.1) - docker-api (~> 1.34) - rake_factory (~> 0.23) - rake_factory (0.29.0) - activesupport (>= 4) - rake (~> 13.0) - rake_fly (2.7.0) - concourse.rb (>= 0.4) - rake_dependencies (~> 2, < 3) - rake_factory (>= 0.29, < 1) - ruby_fly (>= 0.35) - semantic (~> 1.6.1) - rake_terraform (1.19.0) - colored2 (~> 3.1) - rake_dependencies (~> 2.11) - rake_factory (~> 0.23) - ruby-terraform (~> 1.1) - rchardet (1.8.0) - ruby-terraform (1.2.0) - immutable-struct (~> 2.4) - lino (~> 3.0) - ruby2ruby (2.4.4) - ruby_parser (~> 3.1) - sexp_processor (~> 4.6) - ruby_fly (0.35.0) - lino (>= 1.5) - ruby_parser (3.16.0) - sexp_processor (~> 4.15, >= 4.15.1) - rubyzip (2.3.0) - semantic (1.6.1) - sexp_processor (4.15.3) - shikashi (0.6.0) - evalhook (>= 0.6.0) - getsource (>= 0.1.0) - tzinfo (2.0.4) - concurrent-ruby (~> 1.0) - zeitwerk (2.4.2) - -PLATFORMS - arm64-darwin-20 - x86_64-darwin-19 - x86_64-darwin-20 - x86_64-linux - -DEPENDENCIES - aws-sdk (~> 3.0) - confidante (~> 0.27) - git (~> 1.8) - mime-types (~> 3.3) - rake (~> 13.0) - rake_docker (~> 2.13) - rake_fly (~> 2.7) - rake_terraform (~> 1.19) - -BUNDLED WITH - 2.2.16 diff --git a/Rakefile b/Rakefile deleted file mode 100644 index 5ba4f8d4..00000000 --- a/Rakefile +++ /dev/null @@ -1,498 +0,0 @@ -require 'git' -require 'confidante' -require 'rake_fly' -require 'rake_terraform' -require 'ruby_terraform/output' -require 'aws-sdk' -require 'securerandom' -require 'mime/types' - -require_relative 'lib/s3_website' - -configuration = Confidante.configuration - -configuration.non_standard_mime_types.each do |mime_type, extensions| - MIME::Types.add(MIME::Type.new(mime_type.to_s) { |m| - m.extensions = extensions - }) -end - -RakeFly.define_installation_tasks(version: '6.7.2') -RakeTerraform.define_installation_tasks( - path: File.join(Dir.pwd, 'vendor', 'terraform'), - version: '0.15.4') - -task :default => [ - :build_fix, - :test -] - -task :build => [ - :"app:lint", - :"app:format", - :"tests:lint", - :"tests:format" -] - -task :build_fix => [ - :"app:lint_fix", - :"app:format_fix", - :"tests:lint_fix", - :"tests:format_fix" -] - -task :test => [:'tests:unit'] - -namespace :secrets do - desc 'Check if secrets are readable' - task :check do - if File.exist?('config/secrets') - puts 'Checking if secrets are accessible.' - unless File.read('config/secrets/.unlocked').strip == "true" - raise RuntimeError, Paint['Cannot access secrets.', :red] - end - puts 'Secrets accessible. Continuing.' - end - end - - desc 'Unlock secrets' - task :unlock do - if File.exist?('config/secrets') - puts 'Unlocking secrets.' - sh('git crypt unlock') - end - end -end - -namespace :bootstrap do - RakeTerraform.define_command_tasks( - configuration_name: 'bootstrap', - argument_names: [ - :deployment_type, - :deployment_label - ] - ) do |t, args| - configuration = configuration - .for_scope(args.to_h.merge(role: 'bootstrap')) - - vars = configuration.vars - deployment_identifier = configuration.deployment_identifier - - t.source_directory = 'infra/bootstrap' - t.work_directory = 'build' - - t.state_file = File.join( - Dir.pwd, "state/bootstrap/#{deployment_identifier}.tfstate") - t.vars = vars - end -end - -namespace :website do - RakeTerraform.define_command_tasks( - configuration_name: 'website', - argument_names: [ - :deployment_type, - :deployment_label - ] - ) do |t, args| - configuration = configuration - .for_scope(args.to_h.merge(role: 'website')) - - t.source_directory = 'infra/website' - t.work_directory = 'build' - - t.backend_config = configuration.backend_config - t.vars = configuration.vars - end -end - -namespace :dependencies do - desc 'Fetch dependencies' - task :install do - sh('npm', 'install') - end -end - -namespace :app do - desc 'Clean built content' - task :clean do - rm_rf 'src/dist' - rm_rf 'build/content' - end - - desc "Lint all app sources" - task :lint => [:'dependencies:install'] do - sh('npm', 'run', 'app:lint') - end - - desc "Lint & fix all app source" - task :lint_fix => [:'dependencies:install'] do - sh('npm', 'run', 'app:lint-fix') - end - - desc "Format all app sources" - task :format => [:'dependencies:install'] do - sh('npm', 'run', 'app:format') - end - - desc "Format & fix all app sources" - task :format_fix => [:'dependencies:install'] do - sh('npm', 'run', 'app:format-fix') - end - - desc "Run the app as a local process" - task :run => [:'dependencies:install'] do - configuration = configuration - .for_scope( - deployment_type: 'local', - deployment_label: 'development', - role: 'local-app' - ) - - environment = configuration - .environment - .map { |k, v| [k.to_s, v] } - .to_h - - sh(environment, 'npm', 'run', 'start:local') - end - - desc 'Build content for deployment identifier' - task :build, [ - :deployment_type, - :deployment_label - ] => [:'dependencies:install'] do |_, args| - default_deployment_identifier(args) - - configuration = configuration.for_scope(args.to_h) - - environment = configuration.environment - content_work_directory = configuration.content_work_directory - react_app_backend_base_url = configuration.react_app_backend_base_url - - sh({ - "NODE_ENV" => environment, - "REACT_APP_BACKEND_BASE_URL" => react_app_backend_base_url, - "REACT_APP_FRONT_END_LOCALSTORAGE_VERSION" => "1.0", - "CONTENT_WORK_DIRECTORY" => content_work_directory, - "GENERATE_SOURCEMAP" => "false" - }, "npm", "run", - "build") - end - - desc 'Publish content for deployment identifier' - task :publish, [ - :deployment_type, - :deployment_label - ] do |_, args| - configuration = configuration - .for_scope(args.to_h.merge(role: 'website')) - - region = configuration.region - max_ages = configuration.max_ages - content_work_directory = configuration.content_work_directory - bucket = configuration.website_bucket_name - - s3sync = S3Website.new( - region: region, - bucket: bucket, - max_ages: max_ages) - - s3sync.publish_from(content_work_directory) - end - - desc 'Invalidate content caches for deployment identifier' - task :invalidate, [ - :deployment_type, - :deployment_label - ] => [:'terraform:ensure'] do |_, args| - configuration = configuration - .for_scope(args.to_h.merge(role: 'website')) - - region = configuration.region - backend_config = configuration.backend_config - - distribution_id = JSON.parse( - RubyTerraform::Output.for( - name: 'cdn_id', - source_directory: 'infra/website', - work_directory: 'build', - backend_config: backend_config)) - - cloudfront = Aws::CloudFront::Client.new(region: region) - - cloudfront.create_invalidation( - distribution_id: distribution_id, - invalidation_batch: { - caller_reference: SecureRandom.uuid, - paths: { - quantity: 1, - items: ['/*'], - } - }) - end - - desc 'Deploy content' - task :deploy, [ - :deployment_type, - :deployment_label - ] => [:'terraform:ensure'] do |_, args| - Rake::Task['app:build'].invoke(*args) - Rake::Task['app:publish'].invoke(*args) - Rake::Task['app:invalidate'].invoke(*args) - end -end - -namespace :tests do - desc "Lint all tests" - task :lint => [:'dependencies:install'] do - sh('npm', 'run', 'tests:lint') - end - - desc "Lint & fix all tests" - task :lint_fix => [:'dependencies:install'] do - sh('npm', 'run', 'tests:lint-fix') - end - - desc "Format all test files" - task :format => [:'dependencies:install'] do - sh('npm', 'run', 'tests:format') - end - - desc "Format & fix all test files" - task :format_fix => [:'dependencies:install'] do - sh('npm', 'run', 'tests:format-fix') - end - - desc "Run all unit tests" - task :unit => [:'dependencies:install'] do - script_name = ENV["INCLUDE_COVERAGE"] == 'true' ? - 'tests:unit:coverage' : - 'tests:unit' - sh('npm', 'run', script_name) - end - - namespace :coverage do - desc "Run coverage badge creation" - task :badge => [:'dependencies:install'] do - sh('npm', 'run', 'tests:coverage:badge') - end - end -end - -namespace :ci do - RakeFly.define_authentication_tasks( - namespace: :authentication, - argument_names: [ - :ci_deployment_type, - :ci_deployment_label - ]) do |t, args| - configuration = configuration - .for_scope(args.to_h) - - t.target = configuration.concourse_team - t.concourse_url = configuration.concourse_url - t.team = configuration.concourse_team - t.username = configuration.concourse_username - t.password = configuration.concourse_password - - t.home_directory = 'build/fly' - end - - namespace :pipeline do - RakeFly.define_pipeline_tasks( - namespace: :develop, - argument_names: [ - :ci_deployment_type, - :ci_deployment_label - ] - ) do |t, args| - configuration = configuration - .for_scope(args.to_h.merge(role: 'develop-pipeline')) - ci_deployment_type = configuration.ci_deployment_identifier - - t.target = configuration.concourse_team - t.team = configuration.concourse_team - t.pipeline = "reference-frontend-develop" - - t.config = 'pipelines/develop/pipeline.yaml' - - t.vars = configuration.vars - t.var_files = [ - 'config/secrets/pipeline/constants.yaml', - "config/secrets/pipeline/#{ci_deployment_type}.yaml" - ] - - t.non_interactive = true - t.home_directory = 'build/fly' - end - - RakeFly.define_pipeline_tasks( - namespace: :demo, - argument_names: [ - :ci_deployment_type, - :ci_deployment_label - ] - ) do |t, args| - configuration = configuration - .for_scope(args.to_h.merge(role: 'demo-pipeline')) - ci_deployment_type = configuration.ci_deployment_identifier - - t.target = configuration.concourse_team - t.team = configuration.concourse_team - t.pipeline = "reference-frontend-demo" - - t.config = 'pipelines/demo/pipeline.yaml' - - t.vars = configuration.vars - t.var_files = [ - 'config/secrets/pipeline/constants.yaml', - "config/secrets/pipeline/#{ci_deployment_type}.yaml" - ] - - t.non_interactive = true - t.home_directory = 'build/fly' - end - - RakeFly.define_pipeline_tasks( - namespace: :production, - argument_names: [ - :ci_deployment_type, - :ci_deployment_label - ] - ) do |t, args| - configuration = configuration - .for_scope(args.to_h.merge(role: 'tag-pipeline')) - ci_deployment_type = configuration.ci_deployment_identifier - - t.target = configuration.concourse_team - t.team = configuration.concourse_team - t.pipeline = "reference-frontend-production" - - t.config = 'pipelines/tag/pipeline.yaml' - - t.vars = configuration.vars - t.var_files = [ - 'config/secrets/pipeline/constants.yaml', - "config/secrets/pipeline/#{ci_deployment_type}.yaml" - ] - - t.non_interactive = true - t.home_directory = 'build/fly' - end - - RakeFly.define_pipeline_tasks( - namespace: :builder, - argument_names: [ - :ci_deployment_type, - :ci_deployment_label] - ) do |t, args| - configuration = configuration - .for_scope(args.to_h.merge(role: 'builder-pipeline')) - ci_deployment_type = configuration.ci_deployment_identifier - - t.target = configuration.concourse_team - t.team = configuration.concourse_team - t.pipeline = "reference-frontend-builder" - - t.config = 'pipelines/builder/pipeline.yaml' - - t.vars = configuration.vars - t.var_files = [ - 'config/secrets/pipeline/constants.yaml', - "config/secrets/pipeline/#{ci_deployment_type}.yaml" - ] - - t.non_interactive = true - t.home_directory = 'build/fly' - end - - namespace :pr do - RakeFly.define_pipeline_tasks( - argument_names: [ - :ci_deployment_type, - :ci_deployment_label, - :branch - ] - ) do |t, args| - branch = args.branch || pr_metadata_branch - - configuration = configuration - .for_scope(args.to_h.merge(role: 'pr-pipeline')) - .for_overrides(source_repository_branch: branch) - - ci_deployment_type = configuration.ci_deployment_identifier - - t.target = configuration.concourse_team - t.team = configuration.concourse_team - t.pipeline = "reference-frontend-pr-#{to_pipeline_name(branch)}" - - t.config = 'pipelines/pr/pipeline.yaml' - - t.vars = configuration.vars - t.var_files = [ - 'config/secrets/pipeline/constants.yaml', - "config/secrets/pipeline/#{ci_deployment_type}.yaml" - ] - - t.non_interactive = true - t.home_directory = 'build/fly' - end - - task :handle, [ - :ci_deployment_type, - :ci_deployment_label, - :branch, - :state - ] do |_, args| - branch = args.branch || pr_metadata_branch - state = args.state || pr_metadata_state - - if state == "OPEN" - Rake::Task[:"ci:pipeline:pr:push"].invoke( - args.ci_deployment_type, - args.ci_deployment_label, - branch) - else - Rake::Task[:"ci:pipeline:pr:destroy"].invoke( - args.ci_deployment_type, - args.ci_deployment_label, - branch) - end - end - end - end - - namespace :pipelines do - desc "Push all pipelines" - task :push, [:ci_deployment_type, :ci_deployment_label] do |_, args| - Rake::Task[:"ci:pipeline:develop:push"].invoke(*args) - Rake::Task[:"ci:pipeline:demo:push"].invoke(*args) - Rake::Task[:"ci:pipeline:builder:push"].invoke(*args) - end - end -end - -def pr_metadata_value(key) - File.exist?(".git/resource/#{key}") ? - File.read(".git/resource/#{key}") : - nil -end - -def pr_metadata_branch - pr_metadata_value("head_name") -end - -def pr_metadata_state - pr_metadata_value("state") -end - -def to_pipeline_name(string) - string.gsub(/[^a-zA-Z0-9_-]/, "_") -end - -def default_deployment_identifier(args) - args.with_defaults( - deployment_type: "bsn-local", - deployment_label: "default") -end \ No newline at end of file diff --git a/config/ci/rdm-management-default.yaml b/config/ci/rdm-management-default.yaml deleted file mode 100644 index 6258f4a3..00000000 --- a/config/ci/rdm-management-default.yaml +++ /dev/null @@ -1,15 +0,0 @@ ---- -ci_account_id: "%{hiera('rdm_management_account_id')}" - -ci_deployment_identifier: "%{ci_deployment_type}-%{ci_deployment_label}" - -ci_storage_bucket_name: "rdm-%{hiera('component')}-%{hiera('ci_deployment_identifier')}" -ci_storage_bucket_region: "%{hiera('region')}" -ci_storage_bucket_encryption: "AES256" - -concourse_url: "https://ci-server.rdm-management.redeemeum.io" - -image_repository_base_url: "%{hiera('rdm_management_account_id')}.dkr.ecr.%{hiera('region')}.amazonaws.com" - -node_builder_image_repository_name: "rdm/node-12-builder" -node_builder_image_repository_url: "%{hiera('image_repository_base_url')}/%{hiera('node_builder_image_repository_name')}" diff --git a/config/defaults.yaml b/config/defaults.yaml deleted file mode 100644 index e5601d83..00000000 --- a/config/defaults.yaml +++ /dev/null @@ -1,43 +0,0 @@ ---- -region: "eu-west-2" - -development_group: "bsn" - -component: "reference-frontend" -deployment_identifier: "%{deployment_type}-%{deployment_label}" - -source_repository_name: "bosonprotocol/reference-frontend" -source_repository_url: "git@github.com:%{hiera('source_repository_name')}.git" -source_repository_branch: "develop" - -storage_bucket_name: "%{hiera('development_group')}-%{hiera('component')}-%{hiera('deployment_identifier')}-storage" -website_bucket_name: "%{hiera('development_group')}-%{hiera('component')}-%{hiera('deployment_identifier')}-content" - -storage_bucket_encryption: "AES256" - -admin_role_name: "cross-account-admin-role" - -rdm_management_account_id: "031036423983" - -bsn_parent_account_id: "915981965568" -bsn_development_potassium_account_id: "384010198059" -bsn_production_lutetium_account_id: "371854298993" - -bsn_parent_account_admin_role: "arn:aws:iam::%{hiera('bsn_parent_account_id')}:role/%{hiera('admin_role_name')}" - -non_standard_mime_types: - font/woff2: - - woff2 - application/manifest+json: - - webmanifest - -max_ages: - image/jpeg: 300 - image/png: 300 - image/gif: 300 - image/svg+xml: 300 - text/html: 0 - text/css: 300 - application/javascript: 300 - application/font-woff: 2592000 - font/woff2: 2592000 diff --git a/config/deployments/bsn-demo-copernicium.yaml b/config/deployments/bsn-demo-copernicium.yaml deleted file mode 100644 index 7b1d12a6..00000000 --- a/config/deployments/bsn-demo-copernicium.yaml +++ /dev/null @@ -1,31 +0,0 @@ ---- -# General -environment: "production" # use full asset pipeline for all deployed environments - -parent_role_arn: "%{hiera('bsn_parent_account_admin_role')}" - -content_work_directory: "build/content/%{hiera('deployment_identifier')}" - -parent_domain_name: "bosonprotocol.io" -primary_domain_name: "bsn-development-potassium.%{hiera('parent_domain_name')}" -certificate_domain_name: "%{hiera('primary_domain_name')}" - -primary_address: "%{hiera('component')}-%{deployment_label}.%{hiera('primary_domain_name')}" -other_addresses: - - "reference-frontend-uat.%{hiera('parent_domain_name')}" - -# State -parent_common_state_bucket_name: "bsn-aws-parent-account-bsn-parent-default" -parent_common_state_key: "common/deployment-state/default.tfstate" -parent_common_state_bucket_region: "%{hiera('region')}" -parent_common_state_bucket_is_encrypted: "true" - -common_state_bucket_name: "bsn-aws-application-account-bsn-development-potassium" -common_state_key: "common/deployment-state/default.tfstate" -common_state_bucket_region: "%{hiera('region')}" -common_state_bucket_is_encrypted: "true" - -website_state_bucket_name: "%{hiera('storage_bucket_name')}" -website_state_key: "website/deployment-state/default.tfstate" -website_state_bucket_region: "%{hiera('region')}" -website_state_bucket_is_encrypted: "true" diff --git a/config/deployments/bsn-development-hassium.yaml b/config/deployments/bsn-development-hassium.yaml deleted file mode 100644 index c479ace2..00000000 --- a/config/deployments/bsn-development-hassium.yaml +++ /dev/null @@ -1,31 +0,0 @@ ---- -# General -environment: "production" # use full asset pipeline for all deployed environments - -parent_role_arn: "%{hiera('bsn_parent_account_admin_role')}" - -content_work_directory: "build/content/%{hiera('deployment_identifier')}" - -parent_domain_name: "bosonprotocol.io" -primary_domain_name: "bsn-development-potassium.%{hiera('parent_domain_name')}" -certificate_domain_name: "%{hiera('primary_domain_name')}" - -primary_address: "%{hiera('component')}-%{deployment_label}.%{hiera('primary_domain_name')}" -other_addresses: - - "reference-frontend-preview.%{hiera('parent_domain_name')}" - -# State -parent_common_state_bucket_name: "bsn-aws-parent-account-bsn-parent-default" -parent_common_state_key: "common/deployment-state/default.tfstate" -parent_common_state_bucket_region: "%{hiera('region')}" -parent_common_state_bucket_is_encrypted: "true" - -common_state_bucket_name: "bsn-aws-application-account-bsn-development-potassium" -common_state_key: "common/deployment-state/default.tfstate" -common_state_bucket_region: "%{hiera('region')}" -common_state_bucket_is_encrypted: "true" - -website_state_bucket_name: "%{hiera('storage_bucket_name')}" -website_state_key: "website/deployment-state/default.tfstate" -website_state_bucket_region: "%{hiera('region')}" -website_state_bucket_is_encrypted: "true" diff --git a/config/deployments/bsn-local-default.yaml b/config/deployments/bsn-local-default.yaml deleted file mode 100644 index e11cc20a..00000000 --- a/config/deployments/bsn-local-default.yaml +++ /dev/null @@ -1,3 +0,0 @@ ---- -# General -environment: "development" diff --git a/config/deployments/bsn-production-vanadium.yaml b/config/deployments/bsn-production-vanadium.yaml deleted file mode 100644 index 2a90f10e..00000000 --- a/config/deployments/bsn-production-vanadium.yaml +++ /dev/null @@ -1,30 +0,0 @@ ---- -# General -environment: "production" # use full asset pipeline for all deployed environments - -parent_role_arn: "%{hiera('bsn_parent_account_admin_role')}" - -content_work_directory: "build/content/%{hiera('deployment_identifier')}" - -parent_domain_name: "bosonprotocol.io" -primary_domain_name: "bsn-production-lutetium.%{hiera('parent_domain_name')}" -certificate_domain_name: "%{hiera('primary_domain_name')}" - -primary_address: "%{hiera('component')}-%{deployment_label}.%{hiera('primary_domain_name')}" -other_addresses: [] - -# State -parent_common_state_bucket_name: "bsn-aws-parent-account-bsn-parent-default" -parent_common_state_key: "common/deployment-state/default.tfstate" -parent_common_state_bucket_region: "%{hiera('region')}" -parent_common_state_bucket_is_encrypted: "true" - -common_state_bucket_name: "bsn-aws-application-account-bsn-production-lutetium" -common_state_key: "common/deployment-state/default.tfstate" -common_state_bucket_region: "%{hiera('region')}" -common_state_bucket_is_encrypted: "true" - -website_state_bucket_name: "%{hiera('storage_bucket_name')}" -website_state_key: "website/deployment-state/default.tfstate" -website_state_bucket_region: "%{hiera('region')}" -website_state_bucket_is_encrypted: "true" diff --git a/config/deployments/local-development.yaml b/config/deployments/local-development.yaml deleted file mode 100644 index 84ce22c7..00000000 --- a/config/deployments/local-development.yaml +++ /dev/null @@ -1,3 +0,0 @@ ---- -app_port: "3002" -react_app_backend_base_url: "" \ No newline at end of file diff --git a/config/deployments/local-testing.yaml b/config/deployments/local-testing.yaml deleted file mode 100644 index ed97d539..00000000 --- a/config/deployments/local-testing.yaml +++ /dev/null @@ -1 +0,0 @@ ---- diff --git a/config/deployments/rdm-management-default.yaml b/config/deployments/rdm-management-default.yaml deleted file mode 100644 index ed97d539..00000000 --- a/config/deployments/rdm-management-default.yaml +++ /dev/null @@ -1 +0,0 @@ ---- diff --git a/config/env.js b/config/env.js deleted file mode 100644 index 884aca5d..00000000 --- a/config/env.js +++ /dev/null @@ -1,107 +0,0 @@ -'use strict'; - -const fs = require('fs'); -const path = require('path'); -const paths = require('./paths'); - -// Make sure that including paths.js after env.js will read .env variables. -delete require.cache[require.resolve('./paths')]; - -const NODE_ENV = process.env.NODE_ENV; -if (!NODE_ENV) { - throw new Error( - 'The NODE_ENV environment variable is required but was not specified.' - ); -} - -// https://github.com/bkeepers/dotenv#what-other-env-files-can-i-use -const dotenvFiles = [ - `${paths.dotenv}.${NODE_ENV}.local`, - // Don't include `.env.local` for `test` environment - // since normally you expect tests to produce the same - // results for everyone - NODE_ENV !== 'test' && `${paths.dotenv}.local`, - `${paths.dotenv}.${NODE_ENV}`, - paths.dotenv, -].filter(Boolean); - -// Load environment variables from .env* files. Suppress warnings using silent -// if this file is missing. dotenv will never modify any environment variables -// that have already been set. Variable expansion is supported in .env files. -// https://github.com/motdotla/dotenv -// https://github.com/motdotla/dotenv-expand -dotenvFiles.forEach(dotenvFile => { - if (fs.existsSync(dotenvFile)) { - require('dotenv-expand')( - require('dotenv').config({ - path: dotenvFile, - }) - ); - } -}); - -// We support resolving modules according to `NODE_PATH`. -// This lets you use absolute paths in imports inside large monorepos: -// https://github.com/facebook/create-react-app/issues/253. -// It works similar to `NODE_PATH` in Node itself: -// https://nodejs.org/api/modules.html#modules_loading_from_the_global_folders -// Note that unlike in Node, only *relative* paths from `NODE_PATH` are honored. -// Otherwise, we risk importing Node.js core modules into an app instead of -// webpack shims. -// https://github.com/facebook/create-react-app/issues/1023#issuecomment-265344421 -// We also resolve them to make sure all tools using them work consistently. -const appDirectory = fs.realpathSync(process.cwd()); -process.env.NODE_PATH = (process.env.NODE_PATH || '') - .split(path.delimiter) - .filter(folder => folder && !path.isAbsolute(folder)) - .map(folder => path.resolve(appDirectory, folder)) - .join(path.delimiter); - -// Grab NODE_ENV and REACT_APP_* environment variables and prepare them to be -// injected into the application via DefinePlugin in webpack configuration. -const REACT_APP = /^REACT_APP_/i; - -function getClientEnvironment(publicUrl) { - const raw = Object.keys(process.env) - .filter(key => REACT_APP.test(key)) - .reduce( - (env, key) => { - env[key] = process.env[key]; - return env; - }, - { - // Useful for determining whether we’re running in production mode. - // Most importantly, it switches React into the correct mode. - NODE_ENV: process.env.NODE_ENV || 'development', - // Useful for resolving the correct path to static assets in `public`. - // For example, . - // This should only be used as an escape hatch. Normally you would put - // images into the `src` and `import` them in code to get their paths. - PUBLIC_URL: publicUrl, - // We support configuring the sockjs pathname during development. - // These settings let a developer run multiple simultaneous projects. - // They are used as the connection `hostname`, `pathname` and `port` - // in webpackHotDevClient. They are used as the `sockHost`, `sockPath` - // and `sockPort` options in webpack-dev-server. - WDS_SOCKET_HOST: process.env.WDS_SOCKET_HOST, - WDS_SOCKET_PATH: process.env.WDS_SOCKET_PATH, - WDS_SOCKET_PORT: process.env.WDS_SOCKET_PORT, - // Whether or not react-refresh is enabled. - // react-refresh is not 100% stable at this time, - // which is why it's disabled by default. - // It is defined here so it is available in the webpackHotDevClient. - FAST_REFRESH: process.env.FAST_REFRESH !== 'false', - } - ); - // Stringify all values so we can feed into webpack DefinePlugin - const stringified = { - 'process.env': Object.keys(raw).reduce((env, key) => { - env[key] = JSON.stringify(raw[key]); - return env; - }, {}), - }; - - return { raw, stringified }; -} - -module.exports = getClientEnvironment; diff --git a/config/getHttpsConfig.js b/config/getHttpsConfig.js deleted file mode 100644 index d035cfe8..00000000 --- a/config/getHttpsConfig.js +++ /dev/null @@ -1,64 +0,0 @@ -const fs = require('fs'); -const path = require('path'); -const crypto = require('crypto'); -const chalk = require('react-dev-utils/chalk'); -const paths = require('./paths'); - -// Ensure the certificate and key provided are valid and if not -// throw an easy to debug error -function validateKeyAndCerts({ cert, key, keyFile, crtFile }) { - let encrypted; - try { - // publicEncrypt will throw an error with an invalid cert - encrypted = crypto.publicEncrypt(cert, Buffer.from('test')); - } catch (err) { - throw new Error( - `The certificate "${chalk.yellow(crtFile)}" is invalid.\n${err.message}` - ); - } - - try { - // privateDecrypt will throw an error with an invalid key - crypto.privateDecrypt(key, encrypted); - } catch (err) { - throw new Error( - `The certificate key "${chalk.yellow(keyFile)}" is invalid.\n${ - err.message - }` - ); - } -} - -// Read file and throw an error if it doesn't exist -function readEnvFile(file, type) { - if (!fs.existsSync(file)) { - throw new Error( - `You specified ${chalk.cyan( - type - )} in your env, but the file "${chalk.yellow(file)}" can't be found.` - ); - } - return fs.readFileSync(file); -} - -// Get the https config -// Return cert files if provided in env, otherwise just true or false -function getHttpsConfig() { - const { SSL_CRT_FILE, SSL_KEY_FILE, HTTPS } = process.env; - const isHttps = HTTPS === 'true'; - - if (isHttps && SSL_CRT_FILE && SSL_KEY_FILE) { - const crtFile = path.resolve(paths.appPath, SSL_CRT_FILE); - const keyFile = path.resolve(paths.appPath, SSL_KEY_FILE); - const config = { - cert: readEnvFile(crtFile, 'SSL_CRT_FILE'), - key: readEnvFile(keyFile, 'SSL_KEY_FILE'), - }; - - validateKeyAndCerts({ ...config, keyFile, crtFile }); - return config; - } - return isHttps; -} - -module.exports = getHttpsConfig; diff --git a/config/hiera.yaml b/config/hiera.yaml deleted file mode 100644 index dd80ef61..00000000 --- a/config/hiera.yaml +++ /dev/null @@ -1,16 +0,0 @@ ---- -:backends: - - "overrides" - - "env" - - "yaml" -:logger: "noop" -:yaml: - :datadir: "config" -:hierarchy: - - "roles/%{role}" - - "deployments/%{deployment_type}-%{deployment_label}" - - "pipelines/defaults" - - "ci/%{ci_deployment_type}-%{ci_deployment_label}" - - "secrets/pipeline/%{ci_deployment_type}-%{ci_deployment_label}" - - "secrets/website/%{deployment_type}-%{deployment_label}" - - "defaults" diff --git a/config/jest/cssTransform.js b/config/jest/cssTransform.js deleted file mode 100644 index d3612352..00000000 --- a/config/jest/cssTransform.js +++ /dev/null @@ -1,12 +0,0 @@ -// This is a custom Jest transformer turning style imports into empty objects. -// http://facebook.github.io/jest/docs/en/webpack.html - -module.exports = { - process() { - return 'module.exports = {};'; - }, - getCacheKey() { - // The output is always the same. - return 'cssTransform'; - }, -}; diff --git a/config/jest/fileTransform.js b/config/jest/fileTransform.js deleted file mode 100644 index b301c88f..00000000 --- a/config/jest/fileTransform.js +++ /dev/null @@ -1,38 +0,0 @@ -const path = require('path'); -const camelcase = require('camelcase'); - -// This is a custom Jest transformer turning file imports into filenames. -// http://facebook.github.io/jest/docs/en/webpack.html - -module.exports = { - process(src, filename) { - const assetFilename = JSON.stringify(path.basename(filename)); - - if (filename.match(/\.svg$/)) { - // Based on how SVGR generates a component name: - // https://github.com/smooth-code/svgr/blob/01b194cf967347d43d4cbe6b434404731b87cf27/packages/core/src/state.js#L6 - const pascalCaseFilename = camelcase(path.parse(filename).name, { - pascalCase: true, - }); - const componentName = `Svg${pascalCaseFilename}`; - return `const React = require('react'); - module.exports = { - __esModule: true, - default: ${assetFilename}, - ReactComponent: React.forwardRef(function ${componentName}(props, ref) { - return { - $$typeof: Symbol.for('react.element'), - type: 'svg', - ref: ref, - key: null, - props: Object.assign({}, props, { - children: ${assetFilename} - }) - }; - }), - };`; - } - - return `module.exports = ${assetFilename};`; - }, -}; diff --git a/config/modules.js b/config/modules.js deleted file mode 100644 index 38ba75ad..00000000 --- a/config/modules.js +++ /dev/null @@ -1,112 +0,0 @@ -const fs = require('fs'); -const path = require('path'); -const paths = require('./paths'); -const chalk = require('react-dev-utils/chalk'); -const resolve = require('resolve'); - -/** - * Get additional module paths based on the baseUrl of a compilerOptions object. - * - * @param {Object} options - */ -function getAdditionalModulePaths(options = {}) { - const baseUrl = options.baseUrl; - - if (!baseUrl) { - return ''; - } - - const baseUrlResolved = path.resolve(paths.appPath, baseUrl); - - // We don't need to do anything if `baseUrl` is set to `node_modules`. This is - // the default behavior. - if (path.relative(paths.appNodeModules, baseUrlResolved) === '') { - return null; - } - - // Allow the user set the `baseUrl` to `appSrc`. - if (path.relative(paths.appSrc, baseUrlResolved) === '') { - return [paths.appSrc]; - } - - // If the path is equal to the root directory we ignore it here. - // We don't want to allow importing from the root directly as source files are - // not transpiled outside of `src`. We do allow importing them with the - // absolute path (e.g. `src/Components/Button.js`) but we set that up with - // an alias. - if (path.relative(paths.appPath, baseUrlResolved) === '') { - return null; - } - - // Otherwise, throw an error. - throw new Error( - chalk.red.bold( - "Your project's `baseUrl` can only be set to `src` or `node_modules`." + - ' Create React App does not support other values at this time.' - ) - ); -} - -/** - * Get webpack aliases based on the baseUrl of a compilerOptions object. - * - * @param {*} options - */ -function getWebpackAliases(options = {}) { - const baseUrl = options.baseUrl; - - if (!baseUrl) { - return {}; - } - - const baseUrlResolved = path.resolve(paths.appPath, baseUrl); - - if (path.relative(paths.appPath, baseUrlResolved) === '') { - return { - src: paths.appSrc, - }; - } -} - -/** - * Get jest aliases based on the baseUrl of a compilerOptions object. - * - * @param {*} options - */ -function getJestAliases(options = {}) { - const baseUrl = options.baseUrl; - - if (!baseUrl) { - return {}; - } - - const baseUrlResolved = path.resolve(paths.appPath, baseUrl); - - if (path.relative(paths.appPath, baseUrlResolved) === '') { - return { - '^src/(.*)$': '/src/$1', - }; - } -} - -function getModules() { - const hasJsConfig = fs.existsSync(paths.appJsConfig); - - let config; - if (hasJsConfig) { - config = require(paths.appJsConfig); - } - - config = config || {}; - const options = config.compilerOptions || {}; - - const additionalModulePaths = getAdditionalModulePaths(options); - - return { - additionalModulePaths: additionalModulePaths, - webpackAliases: getWebpackAliases(options), - jestAliases: getJestAliases(options) - }; -} - -module.exports = getModules(); diff --git a/config/paths.js b/config/paths.js deleted file mode 100644 index e98e10ea..00000000 --- a/config/paths.js +++ /dev/null @@ -1,61 +0,0 @@ -const path = require('path'); -const fs = require('fs'); -const getPublicUrlOrPath = require('react-dev-utils/getPublicUrlOrPath'); - -// Make sure any symlinks in the project folder are resolved: -// https://github.com/facebook/create-react-app/issues/637 -const appDirectory = fs.realpathSync(process.cwd()); -const resolveApp = relativePath => path.resolve(appDirectory, relativePath); - -// We use `PUBLIC_URL` environment variable or "homepage" field to infer -// "public path" at which the app is served. -// webpack needs to know it to put the right