diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
new file mode 100644
index 00000000..879f9e54
--- /dev/null
+++ b/.github/workflows/ci.yml
@@ -0,0 +1,197 @@
+name: CI # Nom de l'action
+
+on: # Déclencheur de l'action
+ push: # Déclencheur de l'action lors d'un push
+ branches: [test] # Déclencheur de l'action lors d'un push sur la branche test
+
+env: # Variables d'environnement declarées dans la vm de l'action
+ DOCKER_HUB_USERNAME: ${{ secrets.DOCKER_HUB_USERNAME }} # les secrets sont des variables d'environnement sous forme de secrets stockées dans le répertoire secrets du repo sur github
+ DOCKER_HUB_ACCESS_TOKEN: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}
+ DB_USER_PASS: ${{ secrets.DB_USER_PASS }}
+ REACT_APP_URL_API: ${{ vars.REACT_APP_LOCAL_URL_API }} # les vars sont des variables d'environnement stockées dans le répertoire vars du repo sur github
+
+jobs: # Jobs de l'action
+ Jest-tests: # Job de l'action pour les tests Jest
+ runs-on: ubuntu-latest # Système d'exploitation de la vm
+
+ steps: # Etapes du job
+ - name: Checkout code # Prendre le code du repot en contexte
+ uses: actions/checkout@v2 # use permet d'utiliser une action déjà existante (ici checkout@v2)
+
+ - name: Use Node.js # Installation de Node.js
+ uses: actions/setup-node@v2
+ with: # with permet de passer des paramètres à l'action
+ node-version: 20
+
+ - name: Install front dependencies # Installation des dépendances front
+ run: | # run permet d'exécuter des commandes dans la vm
+ cd client
+ npm ci
+
+ - name: Install back dependencies # Installation des dépendances back
+ run: |
+ cd server
+ npm ci
+
+ - name: Create rapports directory if not exists # Creation du dossier rapports pour les tests front s'il n'existe pas
+ run: mkdir -p rapports
+ working-directory: server # working-directory permet de changer le répertoire de travail
+
+ - name: Create rapports directory if not exists # Creation du dossier rapports pour les tests back s'il n'existe pas
+ run: mkdir -p rapports
+ working-directory: client
+
+ - name: Run back Jest tests # execution des tests Jest du backend
+ run: |
+ cd server
+ npm test
+ mv ./test-report.html ./back-jest-report.html
+
+ # - name: run back server # execution du serveur backend afin de pouvoir executer l'ensemble des tests du front
+ # run: |
+ # cd server
+ # npm run watch &
+
+ - name: Run front Jest tests # execution des tests Jest du frontend
+ run: |
+ cd client
+ npm test
+ mv ./test-report.html ./front-jest-report.html
+
+ - name: Upload reports # Upload des rapports de tests (les tests tournant sur une vm, les rapports sont uploadés pour consultation car ils ne sont pas accessibles directement sur la vm)
+ uses: actions/upload-artifact@v3
+ with:
+ name: jest reports
+ path: | # path permet de spécifier le chemin des fichiers à uploader
+ ./client/front-jest-report.html
+ ./server/back-jest-report.html
+
+ Eslint-test:
+ runs-on: ubuntu-latest
+
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v2
+
+ - name: Use Node.js
+ uses: actions/setup-node@v2
+ with:
+ node-version: 20
+
+ - name: Install front dependencies
+ run: |
+ npm ci
+ working-directory: client
+
+ - name: Install back dependencies
+ run: |
+ npm ci
+ working-directory: server
+
+ - name: Where am i
+ run: |
+ pwd
+ ls
+
+ - name: Where am i server
+ run: |
+ pwd
+ ls -la
+ working-directory: server
+
+ - name: Where am i client
+ run: |
+ pwd
+ ls -la
+ working-directory: client
+
+ - name: Create eslint directory if not exists
+ run: mkdir -p eslint
+ working-directory: server
+
+ - name: Create eslint directory if not exists
+ run: mkdir -p eslint
+ working-directory: client
+
+ - name: Run front Eslint test
+ run: |
+ npm run lint || true
+ working-directory: client
+
+ - name: Run back Eslint test
+ run: |
+ npm run lint || true
+ working-directory: server
+
+ - name: Eslint reports
+ uses: actions/upload-artifact@v3
+ with:
+ name: eslint reports
+ path: |
+ client/eslint-report.html
+ server/eslint-report.html
+
+ build-and-push:
+ needs: [Jest-tests, Eslint-test]
+ runs-on: ubuntu-latest
+
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v2
+
+ - name: Use Node.js
+ uses: actions/setup-node@v2
+ with:
+ node-version: 20
+
+ - name: Set up QEMU
+ uses: docker/setup-qemu-action@v1
+
+ - name: Set up Docker Buildx
+ uses: docker/setup-buildx-action@v1
+
+ - name: Login to DockerHub
+ uses: docker/login-action@v1
+ with:
+ username: ${{ secrets.DOCKER_HUB_USERNAME }}
+ password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}
+
+ - name: Install front dependencies
+ run: |
+ cd client
+ npm install
+
+ - name: Create .env files
+ run: |
+ echo "DB_USER_PASS=${{ secrets.DB_USER_PASS }}" > ./server/config/.env
+ cat ./server/config/.env
+ echo "REACT_APP_URL_API=${{ secrets.REACT_APP_URL_API }}" > ./client/.env
+ cat ./client/.env
+
+ - name: Build front
+ if: ${{ success() }}
+ env:
+ REACT_APP_URL_API: ${{ secrets.REACT_APP_URL_API }}
+ run: |
+ cd client
+ npm run build
+
+ - name: Build and push front
+ uses: docker/build-push-action@v2
+ env:
+ REACT_APP_URL_API: ${{ secrets.REACT_APP_URL_API }}
+ with:
+ context: ./client/
+ file: ./client/Dockerfile
+ push: true
+ tags: ${{ secrets.DOCKER_HUB_USERNAME }}/${{ vars.DOCKER_FRONT }}:${{ vars.DOCKER_FRONT_VERSION }}
+
+ - name: Build and push back
+ uses: docker/build-push-action@v2
+ env:
+ DB_USER_PASS: ${{ secrets.DB_USER_PASS }}
+ with:
+ context: ./server/
+ file: ./server/Dockerfile
+ push: true
+ tags: ${{ secrets.DOCKER_HUB_USERNAME }}/${{ vars.DOCKER_BACK }}:${{ vars.DOCKER_BACK_VERSION }}
diff --git a/.github/workflows/logging.yml b/.github/workflows/logging.yml
new file mode 100644
index 00000000..613905e5
--- /dev/null
+++ b/.github/workflows/logging.yml
@@ -0,0 +1,59 @@
+name: Pipeline Logging
+
+on:
+ push:
+ branches:
+ - logging
+ pull_request:
+ branches:
+ - logging
+
+jobs:
+ deploy:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v2
+
+ - name: "Google auth"
+ id: "auth"
+ uses: "google-github-actions/auth@v1"
+ with:
+ credentials_json: "${{ secrets.GOOGLE_CREDENTIALS }}"
+
+ - name: Set up Cloud SDK
+ uses: google-github-actions/setup-gcloud@v1
+ with:
+ project_id: ${{ secrets.GCP_PROJECT }}
+ install_components: "gke-gcloud-auth-plugin"
+
+ - name: Configure gcloud
+ run: gcloud config set compute/region europe-west2
+
+ - name: Get cluster credential
+ uses: google-github-actions/get-gke-credentials@v1
+ with:
+ cluster_name: khagu-dev-cluster
+ location: europe-west2
+
+ - name: Set up ECK
+ run: |
+ # Liste des CRDs ECK
+ crds=("agents.agent.k8s.elastic.co" "apmservers.apm.k8s.elastic.co" "beats.beat.k8s.elastic.co" "elasticmapsservers.maps.k8s.elastic.co" "elasticsearchautoscalers.autoscaling.k8s.elastic.co" "elasticsearches.elasticsearch.k8s.elastic.co" "enterprisesearches.enterprisesearch.k8s.elastic.co" "kibanas.kibana.k8s.elastic.co" "logstashes.logstash.k8s.elastic.co" "stackconfigpolicies.stackconfigpolicy.k8s.elastic.co")
+
+ # Vérifiez chaque CRD
+ for crd in "${crds[@]}"
+ do
+ if ! kubectl get crd $crd > /dev/null 2>&1; then
+ # Si le CRD n'existe pas, créez les CRDs
+ kubectl create -f https://download.elastic.co/downloads/eck/2.11.1/crds.yaml
+ break
+ fi
+ done
+
+ # Appliquez l'opérateur ECK
+ kubectl apply -f https://download.elastic.co/downloads/eck/2.11.1/operator.yaml
+
+ - name: Deploy to GKE
+ run: |
+ kubectl apply -f ./logging/fleet.yml
diff --git a/.github/workflows/prod.yml b/.github/workflows/prod.yml
new file mode 100644
index 00000000..7cf52b82
--- /dev/null
+++ b/.github/workflows/prod.yml
@@ -0,0 +1,258 @@
+name: Pipeline Prod
+
+on:
+ pull_request:
+ branches:
+ - main
+
+permissions:
+ pull-requests: write
+
+env:
+ # Use docker.io for Docker Hub if empty
+ SHA: ${{ github.event.pull_request.head.sha || github.event.after }}
+ REACT_APP_URL_API: ${{ secrets.REACT_APP_URL_API }}
+
+jobs:
+ ##### Check de l'image Front ######
+ ###################################
+ check-front-image:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v3
+
+ - name: Login to Docker Hub
+ uses: docker/login-action@v2
+ with:
+ username: ${{ secrets.DOCKER_HUB_USERNAME }}
+ password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}
+
+ - name: Extract Docker Front metadata
+ id: meta
+ uses: docker/metadata-action@v4.4.0
+ with:
+ images: ${{ secrets.DOCKER_HUB_USERNAME }}/${{ vars.DOCKER_FRONT }}
+ labels: |
+ org.opencontainers.image.revision=${{ env.SHA }}
+ tags: |
+ type=edge,branch=$repo.default_branch
+ type=semver,pattern=v{{version}}
+ type=sha,prefix=,suffix=,format=short
+
+ - name: Check Front image
+ uses: docker/scout-action@v0.18.1
+ with:
+ command: cves
+ image: ${{ secrets.DOCKER_HUB_USERNAME }}/${{ vars.DOCKER_FRONT }}:${{ vars.DOCKER_FRONT_VERSION }}
+ exit-code: true
+
+ ##### Check de l'image Back ######
+ ###################################
+ check-back-image:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v3
+
+ - name: Login to Docker Hub
+ uses: docker/login-action@v2
+ with:
+ username: ${{ secrets.DOCKER_HUB_USERNAME }}
+ password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}
+
+ - name: Extract Docker Back metadata
+ id: meta
+ uses: docker/metadata-action@v4.4.0
+ with:
+ images: ${{ secrets.DOCKER_HUB_USERNAME }}/${{ vars.DOCKER_BACK }}
+ labels: |
+ org.opencontainers.image.revision=${{ env.SHA }}
+ tags: |
+ type=edge,branch=$repo.default_branch
+ type=semver,pattern=v{{version}}
+ type=sha,prefix=,suffix=,format=short
+
+ - name: Check Back image
+ uses: docker/scout-action@v0.18.1
+ with:
+ command: cves
+ image: ${{ secrets.DOCKER_HUB_USERNAME }}/${{ vars.DOCKER_BACK }}:${{ vars.DOCKER_BACK_VERSION }}
+ exit-code: true
+
+ ##### Push front image to GAR ######
+ ####################################
+ push-front-image-to-GAR:
+ needs: [check-front-image]
+ runs-on: ubuntu-latest
+ permissions:
+ contents: "read"
+ id-token: "write"
+
+ steps:
+ - uses: actions/checkout@v3
+
+ - name: "Google auth"
+ id: "auth"
+ uses: "google-github-actions/auth@v1"
+ with:
+ credentials_json: "${{ secrets.GOOGLE_CREDENTIALS }}"
+
+ - name: "Pull image from Docker Hub"
+ run: docker pull ${{ secrets.DOCKER_HUB_USERNAME }}/${{ vars.DOCKER_FRONT }}:${{ vars.DOCKER_FRONT_VERSION }}
+
+ - name: "Tag image"
+ run: docker tag ${{ secrets.DOCKER_HUB_USERNAME }}/${{ vars.DOCKER_FRONT }}:${{ vars.DOCKER_FRONT_VERSION }} europe-west1-docker.pkg.dev/${{ secrets.GCP_PROJECT }}/${{ secrets.GAR }}/${{ vars.DOCKER_FRONT }}:${{ vars.DOCKER_FRONT_VERSION }}
+
+ - name: "config docker"
+ run: gcloud auth configure-docker "europe-west1-docker.pkg.dev"
+
+ - name: "Push image to GAR"
+ run: docker push europe-west1-docker.pkg.dev/${{ secrets.GCP_PROJECT }}/${{ secrets.GAR }}/${{ vars.DOCKER_FRONT }}:${{ vars.DOCKER_FRONT_VERSION }}
+
+ ##### Push back image to GAR ######
+ ###################################
+ push-back-image-to-GAR:
+ needs: [check-back-image]
+ runs-on: ubuntu-latest
+ permissions:
+ contents: "read"
+ id-token: "write"
+
+ steps:
+ - uses: actions/checkout@v3
+
+ - name: "Google auth"
+ id: "auth"
+ uses: "google-github-actions/auth@v1"
+ with:
+ credentials_json: "${{ secrets.GOOGLE_CREDENTIALS }}"
+
+ - name: "Pull image from Docker Hub"
+ run: docker pull ${{ secrets.DOCKER_HUB_USERNAME }}/${{ vars.DOCKER_BACK }}:${{ vars.DOCKER_BACK_VERSION }}
+
+ - name: "Tag image"
+ run: docker tag ${{ secrets.DOCKER_HUB_USERNAME }}/${{ vars.DOCKER_BACK }}:${{ vars.DOCKER_BACK_VERSION }} europe-west1-docker.pkg.dev/${{ secrets.GCP_PROJECT }}/${{ secrets.GAR }}/${{ vars.DOCKER_BACK }}:${{ vars.DOCKER_BACK_VERSION }}
+
+ - name: "config docker"
+ run: gcloud auth configure-docker "europe-west1-docker.pkg.dev"
+
+ - name: "Push image to GAR"
+ run: docker push europe-west1-docker.pkg.dev/${{ secrets.GCP_PROJECT }}/${{ secrets.GAR }}/${{ vars.DOCKER_BACK }}:${{ vars.DOCKER_BACK_VERSION }}
+ # - name: "Build and push"
+ # uses: RafikFarhad/push-to-gcr-github-action@v5-beta
+ # with:
+ # registry: europe-west1-docker.pkg.dev
+ # project_id: ${{ secrets.GCP_PROJECT }}
+ # image_name: ${{ vars.DOCKER_BACK }}
+ # image_tag: ${{ vars.DOCKER_BACK_VERSION }}
+ # dockerfile: ./server/Dockerfile
+ # context: ./server
+
+ ##### Deploiement Terraform ######
+ ##################################
+ deploy-terraform:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v3
+
+ - name: Setup Terraform
+ uses: hashicorp/setup-terraform@v2
+
+ - name: Terraform Init
+ run: |
+ cd terraform
+ terraform init
+ env:
+ GOOGLE_CREDENTIALS: ${{ secrets.GOOGLE_CREDENTIALS }}
+
+ - name: Terraform Plan
+ run: |
+ cd terraform
+ terraform plan
+ env:
+ GOOGLE_CREDENTIALS: ${{ secrets.GOOGLE_CREDENTIALS }}
+
+ - name: Terraform Apply
+ run: |
+ cd terraform
+ terraform apply -auto-approve
+ env:
+ GOOGLE_CREDENTIALS: ${{ secrets.GOOGLE_CREDENTIALS }}
+
+ ##### Deploy front to GKE ######
+ ################################
+ deploy-front-to-gke:
+ needs: [push-front-image-to-GAR, deploy-terraform]
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v3
+
+ - name: "Google auth"
+ id: "auth"
+ uses: "google-github-actions/auth@v1"
+ with:
+ credentials_json: "${{ secrets.GOOGLE_CREDENTIALS }}"
+
+ - name: Set up Cloud SDK
+ uses: google-github-actions/setup-gcloud@v1
+ with:
+ project_id: ${{ secrets.GCP_PROJECT }}
+ install_components: "gke-gcloud-auth-plugin"
+
+ - name: Configure gcloud
+ run: gcloud config set compute/region europe-west2
+
+ - name: Get cluster credential
+ uses: google-github-actions/get-gke-credentials@v1
+ with:
+ cluster_name: khagu-dev-cluster
+ location: europe-west2
+
+ - name: Deploy to GKE
+ run: |
+ gcloud auth configure-docker europe-west1-docker.pkg.dev
+ kubectl apply -f ./client/prod-front.yml
+ env:
+ PROJECT_ID: ${{ secrets.GCP_PROJECT }}
+ BUCKET: ${{ vars.CLOUDBUILD_BUCKET }}
+
+ ##### Deploy back to GKE ######
+ ###############################
+ deploy-back-to-gke:
+ needs: [push-back-image-to-GAR, deploy-terraform]
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v3
+
+ - name: "Google auth"
+ id: "auth"
+ uses: "google-github-actions/auth@v1"
+ with:
+ credentials_json: "${{ secrets.GOOGLE_CREDENTIALS }}"
+
+ - name: Set up Cloud SDK
+ uses: google-github-actions/setup-gcloud@v1
+ with:
+ project_id: ${{ secrets.GCP_PROJECT }}
+ install_components: "gke-gcloud-auth-plugin"
+
+ - name: Configure gcloud
+ run: gcloud config set compute/region europe-west2
+
+ - name: Get cluster credential
+ uses: google-github-actions/get-gke-credentials@v1
+ with:
+ cluster_name: khagu-dev-cluster
+ location: europe-west2
+
+ - name: Deploy to GKE
+ run: |
+ gcloud auth configure-docker europe-west1-docker.pkg.dev
+ kubectl apply -f ./server/prod-back.yml
+ env:
+ PROJECT_ID: ${{ secrets.GCP_PROJECT }}
+ BUCKET: ${{ vars.CLOUDBUILD_BUCKET }}
diff --git a/.gitignore b/.gitignore
index a1f41a91..e54921da 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,34 @@
-
+# dependencies
+/client/.pnp
+/client/.pnp.js
/server/node_modules
/server/config/.env
-/client/node_modules
\ No newline at end of file
+/client/node_modules
+/client/.env
+
+
+# testing
+/client/eslint-report.html
+/client/front-jest-report.html
+/server/eslint-report.html
+/server/back-jest-report.html
+server/test-report.html
+/client/coverage
+
+# production
+/client/build
+
+# Cle ssh compte de service
+/terraform_sa.json
+/kubernetes_sa.json
+
+# misc
+.DS_Store
+.env.local
+.env.development.local
+.env.test.local
+.env.production.local
+
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
\ No newline at end of file
diff --git a/client/.eslintignore b/client/.eslintignore
new file mode 100644
index 00000000..f2d23e78
--- /dev/null
+++ b/client/.eslintignore
@@ -0,0 +1,2 @@
+/node_modules/
+/node_modules/**/*
\ No newline at end of file
diff --git a/client/.eslintrc.js b/client/.eslintrc.js
index 5729de2c..a42f633b 100644
--- a/client/.eslintrc.js
+++ b/client/.eslintrc.js
@@ -25,7 +25,12 @@ module.exports = {
},
},
plugins: ["react"],
- ignorePatterns: ["**/build/**", ".eslintrc.js"],
+ ignorePatterns: [
+ "**/build/**",
+ ".eslintrc.js",
+ "node_modules/**/*",
+ "node_modules/",
+ ],
rules: {
"linebreak-style": [
"error",
@@ -39,5 +44,4 @@ module.exports = {
"react/prop-types": 0,
"comma-dangle": 0,
},
- "eslint.workingdirectories": ["./back", "./front"],
};
diff --git a/client/.gitignore b/client/.gitignore
deleted file mode 100644
index 586f7bca..00000000
--- a/client/.gitignore
+++ /dev/null
@@ -1,25 +0,0 @@
-# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
-
-# dependencies
-/node_modules
-/.pnp
-.pnp.js
-
-# testing
-/coverage
-
-# production
-/build
-# /public/images
-# /src/styles/assets/
-
-# misc
-.DS_Store
-.env.local
-.env.development.local
-.env.test.local
-.env.production.local
-
-npm-debug.log*
-yarn-debug.log*
-yarn-error.log*
diff --git a/client/__tests__/Modal.test.js b/client/__tests__/Modal.test.js
index d48f5942..bb1ac41f 100644
--- a/client/__tests__/Modal.test.js
+++ b/client/__tests__/Modal.test.js
@@ -3,26 +3,28 @@ import {
render,
fireEvent,
waitForElementToBeRemoved,
+ waitFor
} from "@testing-library/react";
import PortfolioContent from "../src/components/Portfolio/PortfolioContent.js";
-import fetchMock from "jest-fetch-mock";
+import axios from 'axios';
+import MockAdapter from 'axios-mock-adapter';
import "@testing-library/jest-dom";
-fetchMock.enableMocks();
+// This sets the mock adapter on the default instance
+var mock = new MockAdapter(axios);
beforeEach(() => {
- fetch.resetMocks();
- fetch.mockResponseOnce(
- JSON.stringify([
- {
- _id: "63010eb139a57ed333541505",
- name: "adposeAccueil",
- chemin: "./images/adpose.PNG",
- __v: 0,
- caption: "caption",
- },
- ])
- );
+ // Mock any GET request to /images
+ // arguments for reply are (status, data, headers)
+ mock.onGet(process.env.REACT_APP_URL_API + "/images").reply(200, [
+ {
+ _id: "63010eb139a57ed333541505",
+ name: "adposeAccueil",
+ chemin: "./images/adpose.PNG",
+ __v: 0,
+ caption: "caption",
+ },
+ ]);
});
beforeEach(() => {
@@ -40,7 +42,7 @@ afterEach(() => {
test("should open the modal when an image is clicked", async () => {
const { findByAltText, findByTestId } = render();
- const image = await findByAltText("adposeAccueil");
+ const image = await waitFor(() => findByAltText("adposeAccueil"));
const modal = await findByTestId("portfolio");
fireEvent.click(image);
expect(modal).toBeInTheDocument();
@@ -48,7 +50,7 @@ test("should open the modal when an image is clicked", async () => {
test("should close the modal when the close button is clicked", async () => {
const { findByAltText, findByTestId } = render();
- const image = await findByAltText("adposeAccueil");
+ const image = await waitFor(() => findByAltText("adposeAccueil"));
fireEvent.click(image);
const closeButton = await findByTestId("closeButton");
diff --git a/client/__tests__/Portfolio.test.js b/client/__tests__/Portfolio.test.js
index 90368a45..0545aa3b 100644
--- a/client/__tests__/Portfolio.test.js
+++ b/client/__tests__/Portfolio.test.js
@@ -8,6 +8,8 @@ import "@testing-library/jest-dom";
jest.mock("axios");
test("should render Portfolio and fetch data", async () => {
+ console.log(process.env.REACT_APP_URL_API);
+
// Simulate a successful response
axios.get.mockResolvedValueOnce({
data: [
diff --git a/client/jest.config.js b/client/jest.config.js
index 2955f2a2..285d97df 100644
--- a/client/jest.config.js
+++ b/client/jest.config.js
@@ -7,4 +7,13 @@ module.exports = {
"\\.(css|scss)$": "identity-obj-proxy",
},
setupFilesAfterEnv: ["./jest.setup.js"],
+ reporters: [
+ "default",
+ [
+ "./node_modules/jest-html-reporter",
+ {
+ pageTitle: "Front Jest Report",
+ },
+ ],
+ ],
};
diff --git a/client/package-lock.json b/client/package-lock.json
index 07c1f86b..0c35e05a 100644
--- a/client/package-lock.json
+++ b/client/package-lock.json
@@ -10,9 +10,12 @@
"dependencies": {
"@testing-library/user-event": "^13.5.0",
"axios": "^0.27.2",
+ "crypto-browserify": "^3.12.0",
"dotenv": "^16.0.1",
"mongodb": "^6.3.0",
"node-sass": "^7.0.1",
+ "os-browserify": "^0.3.0",
+ "path-browserify": "^1.0.1",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"react-router-dom": "^6.3.0",
@@ -26,15 +29,19 @@
"@babel/preset-react": "^7.23.3",
"@testing-library/jest-dom": "^6.3.0",
"@testing-library/react": "^14.1.2",
+ "axios-mock-adapter": "^1.22.0",
"babel-jest": "^29.7.0",
"eslint": "^8.56.0",
"eslint-config-google": "^0.14.0",
+ "eslint-formatter-html": "^2.4.0",
"eslint-plugin-jest": "^27.6.3",
"eslint-plugin-react": "^7.33.2",
"jest": "^29.7.0",
"jest-environment-jsdom": "^29.7.0",
"jest-fetch-mock": "^3.0.3",
+ "jest-html-reporter": "^3.10.2",
"jsdom": "^24.0.0",
+ "node-json2html": "^3.0.0",
"react-test-renderer": "^18.2.0"
},
"engines": {
@@ -5782,6 +5789,22 @@
"safer-buffer": "~2.1.0"
}
},
+ "node_modules/asn1.js": {
+ "version": "5.4.1",
+ "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz",
+ "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==",
+ "dependencies": {
+ "bn.js": "^4.0.0",
+ "inherits": "^2.0.1",
+ "minimalistic-assert": "^1.0.0",
+ "safer-buffer": "^2.1.0"
+ }
+ },
+ "node_modules/asn1.js/node_modules/bn.js": {
+ "version": "4.12.0",
+ "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
+ "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA=="
+ },
"node_modules/assert-plus": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
@@ -5906,6 +5929,19 @@
"form-data": "^4.0.0"
}
},
+ "node_modules/axios-mock-adapter": {
+ "version": "1.22.0",
+ "resolved": "https://registry.npmjs.org/axios-mock-adapter/-/axios-mock-adapter-1.22.0.tgz",
+ "integrity": "sha512-dmI0KbkyAhntUR05YY96qg2H6gg0XMl2+qTW0xmYg6Up+BFBAJYRLROMXRdDEL06/Wqwa0TJThAYvFtSFdRCZw==",
+ "dev": true,
+ "dependencies": {
+ "fast-deep-equal": "^3.1.3",
+ "is-buffer": "^2.0.5"
+ },
+ "peerDependencies": {
+ "axios": ">= 0.17.0"
+ }
+ },
"node_modules/axobject-query": {
"version": "3.2.1",
"resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.2.1.tgz",
@@ -6426,6 +6462,11 @@
"resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz",
"integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg=="
},
+ "node_modules/bn.js": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz",
+ "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ=="
+ },
"node_modules/body-parser": {
"version": "1.20.1",
"resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz",
@@ -6529,11 +6570,78 @@
"node": ">=8"
}
},
+ "node_modules/brorand": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz",
+ "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w=="
+ },
"node_modules/browser-process-hrtime": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz",
"integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow=="
},
+ "node_modules/browserify-aes": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz",
+ "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==",
+ "dependencies": {
+ "buffer-xor": "^1.0.3",
+ "cipher-base": "^1.0.0",
+ "create-hash": "^1.1.0",
+ "evp_bytestokey": "^1.0.3",
+ "inherits": "^2.0.1",
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "node_modules/browserify-cipher": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz",
+ "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==",
+ "dependencies": {
+ "browserify-aes": "^1.0.4",
+ "browserify-des": "^1.0.0",
+ "evp_bytestokey": "^1.0.0"
+ }
+ },
+ "node_modules/browserify-des": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz",
+ "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==",
+ "dependencies": {
+ "cipher-base": "^1.0.1",
+ "des.js": "^1.0.0",
+ "inherits": "^2.0.1",
+ "safe-buffer": "^5.1.2"
+ }
+ },
+ "node_modules/browserify-rsa": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz",
+ "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==",
+ "dependencies": {
+ "bn.js": "^5.0.0",
+ "randombytes": "^2.0.1"
+ }
+ },
+ "node_modules/browserify-sign": {
+ "version": "4.2.2",
+ "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.2.tgz",
+ "integrity": "sha512-1rudGyeYY42Dk6texmv7c4VcQ0EsvVbLwZkA+AQB7SxvXxmcD93jcHie8bzecJ+ChDlmAm2Qyu0+Ccg5uhZXCg==",
+ "dependencies": {
+ "bn.js": "^5.2.1",
+ "browserify-rsa": "^4.1.0",
+ "create-hash": "^1.2.0",
+ "create-hmac": "^1.1.7",
+ "elliptic": "^6.5.4",
+ "inherits": "^2.0.4",
+ "parse-asn1": "^5.1.6",
+ "readable-stream": "^3.6.2",
+ "safe-buffer": "^5.2.1"
+ },
+ "engines": {
+ "node": ">= 4"
+ }
+ },
"node_modules/browserslist": {
"version": "4.22.2",
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.2.tgz",
@@ -6586,6 +6694,11 @@
"resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
"integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ=="
},
+ "node_modules/buffer-xor": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz",
+ "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ=="
+ },
"node_modules/builtin-modules": {
"version": "3.3.0",
"resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz",
@@ -6852,6 +6965,15 @@
"node": ">=8"
}
},
+ "node_modules/cipher-base": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz",
+ "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==",
+ "dependencies": {
+ "inherits": "^2.0.1",
+ "safe-buffer": "^5.0.1"
+ }
+ },
"node_modules/cjs-module-lexer": {
"version": "1.2.3",
"resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz",
@@ -7150,6 +7272,45 @@
"node": ">=10"
}
},
+ "node_modules/create-ecdh": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz",
+ "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==",
+ "dependencies": {
+ "bn.js": "^4.1.0",
+ "elliptic": "^6.5.3"
+ }
+ },
+ "node_modules/create-ecdh/node_modules/bn.js": {
+ "version": "4.12.0",
+ "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
+ "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA=="
+ },
+ "node_modules/create-hash": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz",
+ "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==",
+ "dependencies": {
+ "cipher-base": "^1.0.1",
+ "inherits": "^2.0.1",
+ "md5.js": "^1.3.4",
+ "ripemd160": "^2.0.1",
+ "sha.js": "^2.4.0"
+ }
+ },
+ "node_modules/create-hmac": {
+ "version": "1.1.7",
+ "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz",
+ "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==",
+ "dependencies": {
+ "cipher-base": "^1.0.3",
+ "create-hash": "^1.1.0",
+ "inherits": "^2.0.1",
+ "ripemd160": "^2.0.0",
+ "safe-buffer": "^5.0.1",
+ "sha.js": "^2.4.8"
+ }
+ },
"node_modules/create-jest": {
"version": "29.7.0",
"resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz",
@@ -7263,6 +7424,27 @@
"node": ">= 8"
}
},
+ "node_modules/crypto-browserify": {
+ "version": "3.12.0",
+ "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz",
+ "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==",
+ "dependencies": {
+ "browserify-cipher": "^1.0.0",
+ "browserify-sign": "^4.0.0",
+ "create-ecdh": "^4.0.0",
+ "create-hash": "^1.1.0",
+ "create-hmac": "^1.1.0",
+ "diffie-hellman": "^5.0.0",
+ "inherits": "^2.0.1",
+ "pbkdf2": "^3.0.3",
+ "public-encrypt": "^4.0.0",
+ "randombytes": "^2.0.0",
+ "randomfill": "^1.0.3"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
"node_modules/crypto-random-string": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz",
@@ -7700,6 +7882,15 @@
"node": ">=18"
}
},
+ "node_modules/dateformat": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.2.tgz",
+ "integrity": "sha512-EelsCzH0gMC2YmXuMeaZ3c6md1sUJQxyb1XXc4xaisi/K6qKukqZhKPrEQyRkdNIncgYyLoDTReq0nNyuKerTg==",
+ "dev": true,
+ "engines": {
+ "node": "*"
+ }
+ },
"node_modules/debug": {
"version": "4.3.4",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
@@ -7887,6 +8078,15 @@
"node": ">=6"
}
},
+ "node_modules/des.js": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.1.0.tgz",
+ "integrity": "sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg==",
+ "dependencies": {
+ "inherits": "^2.0.1",
+ "minimalistic-assert": "^1.0.0"
+ }
+ },
"node_modules/destroy": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
@@ -7952,6 +8152,21 @@
"node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
+ "node_modules/diffie-hellman": {
+ "version": "5.0.3",
+ "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz",
+ "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==",
+ "dependencies": {
+ "bn.js": "^4.1.0",
+ "miller-rabin": "^4.0.0",
+ "randombytes": "^2.0.0"
+ }
+ },
+ "node_modules/diffie-hellman/node_modules/bn.js": {
+ "version": "4.12.0",
+ "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
+ "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA=="
+ },
"node_modules/dir-glob": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
@@ -8148,6 +8363,25 @@
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.643.tgz",
"integrity": "sha512-QHscvvS7gt155PtoRC0dR2ilhL8E9LHhfTQEq1uD5AL0524rBLAwpAREFH06f87/e45B9XkR6Ki5dbhbCsVEIg=="
},
+ "node_modules/elliptic": {
+ "version": "6.5.4",
+ "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz",
+ "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==",
+ "dependencies": {
+ "bn.js": "^4.11.9",
+ "brorand": "^1.1.0",
+ "hash.js": "^1.0.0",
+ "hmac-drbg": "^1.0.1",
+ "inherits": "^2.0.4",
+ "minimalistic-assert": "^1.0.1",
+ "minimalistic-crypto-utils": "^1.0.1"
+ }
+ },
+ "node_modules/elliptic/node_modules/bn.js": {
+ "version": "4.12.0",
+ "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
+ "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA=="
+ },
"node_modules/emittery": {
"version": "0.13.1",
"resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz",
@@ -8592,6 +8826,37 @@
}
}
},
+ "node_modules/eslint-formatter-html": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/eslint-formatter-html/-/eslint-formatter-html-2.4.0.tgz",
+ "integrity": "sha512-6Fh4apVWiRVcXUHZ/1W+rpRIdn+1mIRrrWFst88m/uHX68yOI+O5/qB7OrrMJ0KcRR9GKprhGlDYfzLTaI73BQ==",
+ "dev": true,
+ "dependencies": {
+ "pako": "^2.1.0",
+ "strip-ansi": "^5.2.0"
+ }
+ },
+ "node_modules/eslint-formatter-html/node_modules/ansi-regex": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz",
+ "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/eslint-formatter-html/node_modules/strip-ansi": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^4.1.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
"node_modules/eslint-import-resolver-node": {
"version": "0.3.9",
"resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz",
@@ -9218,6 +9483,15 @@
"node": ">=0.8.x"
}
},
+ "node_modules/evp_bytestokey": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz",
+ "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==",
+ "dependencies": {
+ "md5.js": "^1.3.4",
+ "safe-buffer": "^5.1.1"
+ }
+ },
"node_modules/execa": {
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz",
@@ -10394,6 +10668,28 @@
"resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
"integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ=="
},
+ "node_modules/hash-base": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz",
+ "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==",
+ "dependencies": {
+ "inherits": "^2.0.4",
+ "readable-stream": "^3.6.0",
+ "safe-buffer": "^5.2.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/hash.js": {
+ "version": "1.1.7",
+ "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz",
+ "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==",
+ "dependencies": {
+ "inherits": "^2.0.3",
+ "minimalistic-assert": "^1.0.1"
+ }
+ },
"node_modules/hasown": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz",
@@ -10413,6 +10709,16 @@
"he": "bin/he"
}
},
+ "node_modules/hmac-drbg": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz",
+ "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==",
+ "dependencies": {
+ "hash.js": "^1.0.3",
+ "minimalistic-assert": "^1.0.0",
+ "minimalistic-crypto-utils": "^1.0.1"
+ }
+ },
"node_modules/hoopy": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/hoopy/-/hoopy-0.1.4.tgz",
@@ -11007,6 +11313,29 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/is-buffer": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz",
+ "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "engines": {
+ "node": ">=4"
+ }
+ },
"node_modules/is-callable": {
"version": "1.2.7",
"resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz",
@@ -12616,6 +12945,27 @@
"node": ">=8"
}
},
+ "node_modules/jest-html-reporter": {
+ "version": "3.10.2",
+ "resolved": "https://registry.npmjs.org/jest-html-reporter/-/jest-html-reporter-3.10.2.tgz",
+ "integrity": "sha512-XRBa5ylHPUQoo8aJXEEdKsTruieTdlPbRktMx9WG9evMTxzJEKGFMaw5x+sQxJuClWdNR72GGwbOaz+6HIlksA==",
+ "dev": true,
+ "dependencies": {
+ "@jest/test-result": "^29.0.2",
+ "@jest/types": "^29.0.2",
+ "dateformat": "3.0.2",
+ "mkdirp": "^1.0.3",
+ "strip-ansi": "6.0.1",
+ "xmlbuilder": "15.0.0"
+ },
+ "engines": {
+ "node": ">=4.8.3"
+ },
+ "peerDependencies": {
+ "jest": "19.x - 29.x",
+ "typescript": "^3.7.x || ^4.3.x || ^5.x"
+ }
+ },
"node_modules/jest-jasmine2": {
"version": "27.5.1",
"resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz",
@@ -15345,6 +15695,16 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/md5.js": {
+ "version": "1.3.5",
+ "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz",
+ "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==",
+ "dependencies": {
+ "hash-base": "^3.0.0",
+ "inherits": "^2.0.1",
+ "safe-buffer": "^5.1.2"
+ }
+ },
"node_modules/mdn-data": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz",
@@ -15448,6 +15808,23 @@
"node": ">=8.6"
}
},
+ "node_modules/miller-rabin": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz",
+ "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==",
+ "dependencies": {
+ "bn.js": "^4.0.0",
+ "brorand": "^1.0.1"
+ },
+ "bin": {
+ "miller-rabin": "bin/miller-rabin"
+ }
+ },
+ "node_modules/miller-rabin/node_modules/bn.js": {
+ "version": "4.12.0",
+ "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
+ "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA=="
+ },
"node_modules/mime": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
@@ -15546,6 +15923,11 @@
"resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz",
"integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A=="
},
+ "node_modules/minimalistic-crypto-utils": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz",
+ "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg=="
+ },
"node_modules/minimatch": {
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
@@ -15967,6 +16349,15 @@
"resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz",
"integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw=="
},
+ "node_modules/node-json2html": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/node-json2html/-/node-json2html-3.0.0.tgz",
+ "integrity": "sha512-VXLy0VQOAh7pdSgAENEWBdAUOgedDVmJH0k3PaYPCyAtdz60y31KRXqVz4Xn1kZtF62zhry/7SZt8Dw3egO0zw==",
+ "dev": true,
+ "engines": {
+ "node": "*"
+ }
+ },
"node_modules/node-releases": {
"version": "2.0.14",
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz",
@@ -16452,6 +16843,11 @@
"node": ">= 0.8.0"
}
},
+ "node_modules/os-browserify": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz",
+ "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A=="
+ },
"node_modules/p-limit": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
@@ -16522,6 +16918,12 @@
"node": ">=6"
}
},
+ "node_modules/pako": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/pako/-/pako-2.1.0.tgz",
+ "integrity": "sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==",
+ "dev": true
+ },
"node_modules/param-case": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz",
@@ -16547,6 +16949,18 @@
"node": ">=6"
}
},
+ "node_modules/parse-asn1": {
+ "version": "5.1.6",
+ "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz",
+ "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==",
+ "dependencies": {
+ "asn1.js": "^5.2.0",
+ "browserify-aes": "^1.0.0",
+ "evp_bytestokey": "^1.0.0",
+ "pbkdf2": "^3.0.3",
+ "safe-buffer": "^5.1.1"
+ }
+ },
"node_modules/parse-json": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
@@ -16610,6 +17024,11 @@
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
"integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
},
+ "node_modules/path-browserify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz",
+ "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g=="
+ },
"node_modules/path-exists": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
@@ -16683,6 +17102,21 @@
"node": ">=8"
}
},
+ "node_modules/pbkdf2": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz",
+ "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==",
+ "dependencies": {
+ "create-hash": "^1.1.2",
+ "create-hmac": "^1.1.4",
+ "ripemd160": "^2.0.1",
+ "safe-buffer": "^5.0.1",
+ "sha.js": "^2.4.8"
+ },
+ "engines": {
+ "node": ">=0.12"
+ }
+ },
"node_modules/performance-now": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
@@ -18294,6 +18728,24 @@
"resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz",
"integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag=="
},
+ "node_modules/public-encrypt": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz",
+ "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==",
+ "dependencies": {
+ "bn.js": "^4.1.0",
+ "browserify-rsa": "^4.0.0",
+ "create-hash": "^1.1.0",
+ "parse-asn1": "^5.0.0",
+ "randombytes": "^2.0.1",
+ "safe-buffer": "^5.1.2"
+ }
+ },
+ "node_modules/public-encrypt/node_modules/bn.js": {
+ "version": "4.12.0",
+ "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
+ "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA=="
+ },
"node_modules/punycode": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
@@ -18383,6 +18835,15 @@
"safe-buffer": "^5.1.0"
}
},
+ "node_modules/randomfill": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz",
+ "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==",
+ "dependencies": {
+ "randombytes": "^2.0.5",
+ "safe-buffer": "^5.1.0"
+ }
+ },
"node_modules/range-parser": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
@@ -20895,6 +21356,15 @@
"url": "https://github.com/sponsors/isaacs"
}
},
+ "node_modules/ripemd160": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz",
+ "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==",
+ "dependencies": {
+ "hash-base": "^3.0.0",
+ "inherits": "^2.0.1"
+ }
+ },
"node_modules/rollup": {
"version": "2.79.1",
"resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz",
@@ -21383,6 +21853,18 @@
"resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
"integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
},
+ "node_modules/sha.js": {
+ "version": "2.4.11",
+ "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz",
+ "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==",
+ "dependencies": {
+ "inherits": "^2.0.1",
+ "safe-buffer": "^5.0.1"
+ },
+ "bin": {
+ "sha.js": "bin.js"
+ }
+ },
"node_modules/shebang-command": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
@@ -23774,6 +24256,15 @@
"node": ">=18"
}
},
+ "node_modules/xmlbuilder": {
+ "version": "15.0.0",
+ "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.0.0.tgz",
+ "integrity": "sha512-KLu/G0DoWhkncQ9eHSI6s0/w+T4TM7rQaLhtCaL6tORv8jFlJPlnGumsgTcGfYeS1qZ/IHqrvDG7zJZ4d7e+nw==",
+ "dev": true,
+ "engines": {
+ "node": ">=8.0"
+ }
+ },
"node_modules/xmlchars": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz",
diff --git a/client/package.json b/client/package.json
index 5b0ff3dd..c0d0e2b8 100644
--- a/client/package.json
+++ b/client/package.json
@@ -6,9 +6,12 @@
"dependencies": {
"@testing-library/user-event": "^13.5.0",
"axios": "^0.27.2",
+ "crypto-browserify": "^3.12.0",
"dotenv": "^16.0.1",
"mongodb": "^6.3.0",
"node-sass": "^7.0.1",
+ "os-browserify": "^0.3.0",
+ "path-browserify": "^1.0.1",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"react-router-dom": "^6.3.0",
@@ -19,7 +22,8 @@
"start": "react-scripts start",
"test": "jest",
"eject": "react-scripts eject",
- "build": "react-scripts build"
+ "build": "react-scripts build",
+ "lint": "eslint . -f html -o eslint-report.html --max-warnings 10000"
},
"engines": {
"node": "14.x"
@@ -30,6 +34,9 @@
"react-app/jest"
]
},
+ "eslintIgnore": [
+ "*/node_modules/**/*"
+ ],
"browserslist": {
"production": [
">0.2%",
@@ -49,15 +56,19 @@
"@babel/preset-react": "^7.23.3",
"@testing-library/jest-dom": "^6.3.0",
"@testing-library/react": "^14.1.2",
+ "axios-mock-adapter": "^1.22.0",
"babel-jest": "^29.7.0",
"eslint": "^8.56.0",
"eslint-config-google": "^0.14.0",
+ "eslint-formatter-html": "^2.4.0",
"eslint-plugin-jest": "^27.6.3",
"eslint-plugin-react": "^7.33.2",
"jest": "^29.7.0",
"jest-environment-jsdom": "^29.7.0",
"jest-fetch-mock": "^3.0.3",
+ "jest-html-reporter": "^3.10.2",
"jsdom": "^24.0.0",
+ "node-json2html": "^3.0.0",
"react-test-renderer": "^18.2.0"
}
}
diff --git a/client/prod-front.yml b/client/prod-front.yml
index e6f6b3a9..962f2bbb 100644
--- a/client/prod-front.yml
+++ b/client/prod-front.yml
@@ -17,7 +17,7 @@ spec:
spec:
containers:
- name: khagu-dev-front
- image: "khagu/khagu-dev-front:1.0.6" # Remplacer par votre repo
+ image: "europe-west1-docker.pkg.dev/khagu-devops/khagu-dev-images-registry/khagu-dev-front:1.1.8" # Remplacer par votre repo
ports:
- containerPort: 80
- containerPort: 7000
@@ -26,7 +26,7 @@ apiVersion: "autoscaling/v2"
kind: "HorizontalPodAutoscaler"
metadata:
name: "khagu-dev-front-hpa"
- namespace: "default"
+ namespace: default
labels:
app: "khagu-dev-front"
spec:
@@ -37,35 +37,53 @@ spec:
minReplicas: 1
maxReplicas: 5
metrics:
- - type: "Resource"
- resource:
- name: "cpu"
- target:
- type: "Utilization"
- averageUtilization: 80
+ - type: "Resource"
+ resource:
+ name: "cpu"
+ target:
+ type: "Utilization"
+ averageUtilization: 80
---
apiVersion: v1
kind: Service
metadata:
name: khagu-dev-front
+ namespace: default
spec:
- type: LoadBalancer
+ type: NodePort
selector:
app: khagu-dev-front
ports:
- - protocol: TCP
- port: 80
- targetPort: 80
+ - protocol: TCP
+ port: 80
+ targetPort: 80
---
-apiVersion: v1
-kind: Service
+apiVersion: networking.k8s.io/v1
+kind: Ingress
metadata:
- name: khagu-dev-front-to-back
+ name: khagu-dev-front-ingress
+ annotations:
+ kubernetes.io/ingress.class: "gce"
spec:
- type: ClusterIP
- selector:
- app: khagu-dev-front
- ports:
- - protocol: TCP
- port: 7000
- targetPort: 7000
\ No newline at end of file
+ rules:
+ - host: www.projet.khagu-dev.fr
+ http:
+ paths:
+ - pathType: Prefix
+ path: "/"
+ backend:
+ service:
+ name: khagu-dev-front
+ port:
+ number: 80
+ - host: projet.khagu-dev.fr
+ http:
+ paths:
+ - pathType: Prefix
+ path: "/"
+ backend:
+ service:
+ name: khagu-dev-front
+ port:
+ number: 80
+---
diff --git a/client/src/components/Portfolio/PortfolioContent.js b/client/src/components/Portfolio/PortfolioContent.js
index a591bc77..74a3c2f9 100644
--- a/client/src/components/Portfolio/PortfolioContent.js
+++ b/client/src/components/Portfolio/PortfolioContent.js
@@ -7,7 +7,7 @@ const PortfolioContent = () => {
useEffect(() => {
axios
- .get("http://localhost:7000/api/images")
+ .get(process.env.REACT_APP_URL_API + "/images")
.then((res) => setData(res.data));
}, []);
diff --git a/client/src/components/home/Apropos.js b/client/src/components/home/Apropos.js
index 972ee883..87a3a3c9 100644
--- a/client/src/components/home/Apropos.js
+++ b/client/src/components/home/Apropos.js
@@ -5,8 +5,9 @@ const Apropos = () => {
const [data, setData] = useState([]);
useEffect(() => {
+ console.log(process.env.REACT_APP_URL_API);
axios
- .get("http://localhost:7000/api/article")
+ .get(process.env.REACT_APP_URL_API + "/article")
.then((res) => setData(res.data));
}, []);
return (
diff --git a/client/src/components/home/Skills.js b/client/src/components/home/Skills.js
index 2af65797..18428671 100644
--- a/client/src/components/home/Skills.js
+++ b/client/src/components/home/Skills.js
@@ -23,7 +23,7 @@ const Skills = () => {
// Le useEffect ce joue lorsque le composant est monté
useEffect(() => {
axios
- .get("http://localhost:7000/api/tech")
+ .get(process.env.REACT_APP_URL_API + "/tech") // url de l'api
.then((res) => setData(res.data))
.catch((error) => console.error(error));
}, []);
diff --git a/client/src/styles/components/home.scss b/client/src/styles/components/home.scss
index e1ee1e8b..7c4666f4 100644
--- a/client/src/styles/components/home.scss
+++ b/client/src/styles/components/home.scss
@@ -33,7 +33,7 @@ div.topAccueil {
transform: translateY(0px);
}
input#checkbox_hamburger:checked ~ ul {
- height: calc(38px * $nbr_li);
+ height: calc(38px * #{$nbr_li});
}
input#checkbox_hamburger:not(:checked) ~ ul {
height: 0;
diff --git a/client/src/styles/components/navcontact.scss b/client/src/styles/components/navcontact.scss
index bd18ae25..64320111 100644
--- a/client/src/styles/components/navcontact.scss
+++ b/client/src/styles/components/navcontact.scss
@@ -33,7 +33,7 @@ div.topContact {
transform: translateY(0px);
}
input#checkbox_hamburger:checked ~ ul {
- height: calc(38px * $nbr_li);
+ height: calc(38px * #{$nbr_li});
}
input#checkbox_hamburger:not(:checked) ~ ul {
height: 0;
diff --git a/client/src/styles/components/navportfolio.scss b/client/src/styles/components/navportfolio.scss
index f0026a13..0228cdc6 100644
--- a/client/src/styles/components/navportfolio.scss
+++ b/client/src/styles/components/navportfolio.scss
@@ -33,7 +33,7 @@ div.topPortfolio {
transform: translateY(0px);
}
input#checkbox_hamburger:checked ~ ul {
- height: calc(38px * $nbr_li);
+ height: calc(38px * #{$nbr_li});
}
input#checkbox_hamburger:not(:checked) ~ ul {
height: 0;
diff --git a/client/test-report.html b/client/test-report.html
new file mode 100644
index 00000000..20c38498
--- /dev/null
+++ b/client/test-report.html
@@ -0,0 +1,260 @@
+
Front Jest Report
navigates to /portfolio when Portfolio link is clicked
passed
0.084s
should render Portfolio and fetch data
passed
0.047s
should render Skills and fetch data
passed
0.074s
should render Apropos and fetch data
passed
0.085s
should send the form data and show success message
passed
0.193s
should open the modal when an image is clicked
failed
1.092s
should close the modal when the close button is clicked
failed
1.022s
\ No newline at end of file
diff --git a/client/webpack.config.js b/client/webpack.config.js
new file mode 100644
index 00000000..49ade629
--- /dev/null
+++ b/client/webpack.config.js
@@ -0,0 +1,11 @@
+// webpack.config.js
+module.exports = {
+ //...
+ resolve: {
+ fallback: {
+ path: false,
+ os: false,
+ crypto: false,
+ },
+ },
+};
diff --git a/logging/fleet.yml b/logging/fleet.yml
new file mode 100644
index 00000000..3f59139e
--- /dev/null
+++ b/logging/fleet.yml
@@ -0,0 +1,175 @@
+apiVersion: agent.k8s.elastic.co/v1alpha1
+kind: Agent
+metadata:
+ name: fleet-server-quickstart
+ namespace: default
+spec:
+ version: 8.12.2
+ kibanaRef:
+ name: kibana-quickstart
+ elasticsearchRefs:
+ - name: elasticsearch-quickstart
+ mode: fleet
+ fleetServerEnabled: true
+ policyID: eck-fleet-server
+ deployment:
+ replicas: 1
+ podTemplate:
+ spec:
+ serviceAccountName: elastic-agent
+ automountServiceAccountToken: true
+ securityContext:
+ runAsUser: 0
+---
+apiVersion: agent.k8s.elastic.co/v1alpha1
+kind: Agent
+metadata:
+ name: elastic-agent-quickstart
+ namespace: default
+spec:
+ version: 8.12.2
+ kibanaRef:
+ name: kibana-quickstart
+ fleetServerRef:
+ name: fleet-server-quickstart
+ mode: fleet
+ policyID: eck-agent
+ daemonSet:
+ podTemplate:
+ spec:
+ serviceAccountName: elastic-agent
+ automountServiceAccountToken: true
+ securityContext:
+ runAsUser: 0
+ volumes:
+ - name: agent-data
+ emptyDir: {}
+---
+apiVersion: kibana.k8s.elastic.co/v1
+kind: Kibana
+metadata:
+ name: kibana-quickstart
+ namespace: default
+spec:
+ version: 8.12.2
+ count: 1
+ elasticsearchRef:
+ name: elasticsearch-quickstart
+ http:
+ service:
+ spec:
+ type: LoadBalancer # default is ClusterIP
+ tls:
+ selfSignedCertificate:
+ subjectAltNames:
+ - ip: 1.2.3.4
+ - dns: kibana.example.com
+ config:
+ xpack.fleet.agents.elasticsearch.hosts:
+ ["https://elasticsearch-quickstart-es-http.default.svc:9200"]
+ xpack.fleet.agents.fleet_server.hosts:
+ ["https://fleet-server-quickstart-agent-http.default.svc:8220"]
+ xpack.fleet.packages:
+ - name: system
+ version: latest
+ - name: elastic_agent
+ version: latest
+ - name: fleet_server
+ version: latest
+ xpack.fleet.agentPolicies:
+ - name: Fleet Server on ECK policy
+ id: eck-fleet-server
+ namespace: default
+ monitoring_enabled:
+ - logs
+ - metrics
+ unenroll_timeout: 900
+ package_policies:
+ - name: fleet_server-1
+ id: fleet_server-1
+ package:
+ name: fleet_server
+ - name: Elastic Agent on ECK policy
+ id: eck-agent
+ namespace: default
+ monitoring_enabled:
+ - logs
+ - metrics
+ unenroll_timeout: 900
+ package_policies:
+ - name: system-1
+ id: system-1
+ package:
+ name: system
+---
+apiVersion: elasticsearch.k8s.elastic.co/v1
+kind: Elasticsearch
+metadata:
+ name: elasticsearch-quickstart
+ namespace: default
+spec:
+ version: 8.12.2
+
+ nodeSets:
+ - name: default
+ count: 3
+ config:
+ node.store.allow_mmap: false
+
+---
+apiVersion: rbac.authorization.k8s.io/v1
+kind: ClusterRole
+metadata:
+ name: elastic-agent
+rules:
+ - apiGroups: [""] # "" indicates the core API group
+ resources:
+ - pods
+ - nodes
+ - namespaces
+ verbs:
+ - get
+ - watch
+ - list
+ - apiGroups: ["apps"]
+ resources:
+ - deployments
+ verbs:
+ - get
+ - watch
+ - list
+ - apiGroups: ["autoscaling"]
+ resources:
+ - horizontalpodautoscalers
+ verbs:
+ - get
+ - watch
+ - list
+ - apiGroups: [""]
+ resources:
+ - services
+ verbs:
+ - get
+ - watch
+ - list
+---
+apiVersion: v1
+kind: ServiceAccount
+metadata:
+ name: elastic-agent
+ namespace: default
+---
+apiVersion: rbac.authorization.k8s.io/v1
+kind: ClusterRoleBinding
+metadata:
+ name: elastic-agent
+subjects:
+ - kind: ServiceAccount
+ name: elastic-agent
+ namespace: default
+roleRef:
+ kind: ClusterRole
+ name: elastic-agent
+ apiGroup: rbac.authorization.k8s.io
+---
+
diff --git a/package-lock.json b/package-lock.json
deleted file mode 100644
index 183e4c9f..00000000
--- a/package-lock.json
+++ /dev/null
@@ -1,819 +0,0 @@
-{
- "name": "khagu-dev",
- "lockfileVersion": 3,
- "requires": true,
- "packages": {
- "": {
- "devDependencies": {
- "@babel/preset-react": "^7.23.3"
- }
- },
- "node_modules/@ampproject/remapping": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz",
- "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "@jridgewell/gen-mapping": "^0.3.0",
- "@jridgewell/trace-mapping": "^0.3.9"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/@babel/code-frame": {
- "version": "7.23.5",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz",
- "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "@babel/highlight": "^7.23.4",
- "chalk": "^2.4.2"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/compat-data": {
- "version": "7.23.5",
- "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz",
- "integrity": "sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==",
- "dev": true,
- "peer": true,
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/core": {
- "version": "7.23.9",
- "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.9.tgz",
- "integrity": "sha512-5q0175NOjddqpvvzU+kDiSOAk4PfdO6FvwCWoQ6RO7rTzEe8vlo+4HVfcnAREhD4npMs0e9uZypjTwzZPCf/cw==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "@ampproject/remapping": "^2.2.0",
- "@babel/code-frame": "^7.23.5",
- "@babel/generator": "^7.23.6",
- "@babel/helper-compilation-targets": "^7.23.6",
- "@babel/helper-module-transforms": "^7.23.3",
- "@babel/helpers": "^7.23.9",
- "@babel/parser": "^7.23.9",
- "@babel/template": "^7.23.9",
- "@babel/traverse": "^7.23.9",
- "@babel/types": "^7.23.9",
- "convert-source-map": "^2.0.0",
- "debug": "^4.1.0",
- "gensync": "^1.0.0-beta.2",
- "json5": "^2.2.3",
- "semver": "^6.3.1"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/babel"
- }
- },
- "node_modules/@babel/generator": {
- "version": "7.23.6",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz",
- "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "@babel/types": "^7.23.6",
- "@jridgewell/gen-mapping": "^0.3.2",
- "@jridgewell/trace-mapping": "^0.3.17",
- "jsesc": "^2.5.1"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-annotate-as-pure": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz",
- "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==",
- "dev": true,
- "dependencies": {
- "@babel/types": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-compilation-targets": {
- "version": "7.23.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz",
- "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "@babel/compat-data": "^7.23.5",
- "@babel/helper-validator-option": "^7.23.5",
- "browserslist": "^4.22.2",
- "lru-cache": "^5.1.1",
- "semver": "^6.3.1"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-environment-visitor": {
- "version": "7.22.20",
- "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz",
- "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==",
- "dev": true,
- "peer": true,
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-function-name": {
- "version": "7.23.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz",
- "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "@babel/template": "^7.22.15",
- "@babel/types": "^7.23.0"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-hoist-variables": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz",
- "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "@babel/types": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-module-imports": {
- "version": "7.22.15",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz",
- "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==",
- "dev": true,
- "dependencies": {
- "@babel/types": "^7.22.15"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-module-transforms": {
- "version": "7.23.3",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz",
- "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "@babel/helper-environment-visitor": "^7.22.20",
- "@babel/helper-module-imports": "^7.22.15",
- "@babel/helper-simple-access": "^7.22.5",
- "@babel/helper-split-export-declaration": "^7.22.6",
- "@babel/helper-validator-identifier": "^7.22.20"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0"
- }
- },
- "node_modules/@babel/helper-plugin-utils": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz",
- "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==",
- "dev": true,
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-simple-access": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz",
- "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "@babel/types": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-split-export-declaration": {
- "version": "7.22.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz",
- "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "@babel/types": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-string-parser": {
- "version": "7.23.4",
- "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz",
- "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==",
- "dev": true,
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-validator-identifier": {
- "version": "7.22.20",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz",
- "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==",
- "dev": true,
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-validator-option": {
- "version": "7.23.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz",
- "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==",
- "dev": true,
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helpers": {
- "version": "7.23.9",
- "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.9.tgz",
- "integrity": "sha512-87ICKgU5t5SzOT7sBMfCOZQ2rHjRU+Pcb9BoILMYz600W6DkVRLFBPwQ18gwUVvggqXivaUakpnxWQGbpywbBQ==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "@babel/template": "^7.23.9",
- "@babel/traverse": "^7.23.9",
- "@babel/types": "^7.23.9"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/highlight": {
- "version": "7.23.4",
- "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz",
- "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "@babel/helper-validator-identifier": "^7.22.20",
- "chalk": "^2.4.2",
- "js-tokens": "^4.0.0"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/parser": {
- "version": "7.23.9",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.9.tgz",
- "integrity": "sha512-9tcKgqKbs3xGJ+NtKF2ndOBBLVwPjl1SHxPQkd36r3Dlirw3xWUeGaTbqr7uGZcTaxkVNwc+03SVP7aCdWrTlA==",
- "dev": true,
- "peer": true,
- "bin": {
- "parser": "bin/babel-parser.js"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/@babel/plugin-syntax-jsx": {
- "version": "7.23.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.23.3.tgz",
- "integrity": "sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==",
- "dev": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-react-display-name": {
- "version": "7.23.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.23.3.tgz",
- "integrity": "sha512-GnvhtVfA2OAtzdX58FJxU19rhoGeQzyVndw3GgtdECQvQFXPEZIOVULHVZGAYmOgmqjXpVpfocAbSjh99V/Fqw==",
- "dev": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-react-jsx": {
- "version": "7.23.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.23.4.tgz",
- "integrity": "sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA==",
- "dev": true,
- "dependencies": {
- "@babel/helper-annotate-as-pure": "^7.22.5",
- "@babel/helper-module-imports": "^7.22.15",
- "@babel/helper-plugin-utils": "^7.22.5",
- "@babel/plugin-syntax-jsx": "^7.23.3",
- "@babel/types": "^7.23.4"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-react-jsx-development": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.22.5.tgz",
- "integrity": "sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A==",
- "dev": true,
- "dependencies": {
- "@babel/plugin-transform-react-jsx": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-react-pure-annotations": {
- "version": "7.23.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.23.3.tgz",
- "integrity": "sha512-qMFdSS+TUhB7Q/3HVPnEdYJDQIk57jkntAwSuz9xfSE4n+3I+vHYCli3HoHawN1Z3RfCz/y1zXA/JXjG6cVImQ==",
- "dev": true,
- "dependencies": {
- "@babel/helper-annotate-as-pure": "^7.22.5",
- "@babel/helper-plugin-utils": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/preset-react": {
- "version": "7.23.3",
- "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.23.3.tgz",
- "integrity": "sha512-tbkHOS9axH6Ysf2OUEqoSZ6T3Fa2SrNH6WTWSPBboxKzdxNc9qOICeLXkNG0ZEwbQ1HY8liwOce4aN/Ceyuq6w==",
- "dev": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5",
- "@babel/helper-validator-option": "^7.22.15",
- "@babel/plugin-transform-react-display-name": "^7.23.3",
- "@babel/plugin-transform-react-jsx": "^7.22.15",
- "@babel/plugin-transform-react-jsx-development": "^7.22.5",
- "@babel/plugin-transform-react-pure-annotations": "^7.23.3"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/template": {
- "version": "7.23.9",
- "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.23.9.tgz",
- "integrity": "sha512-+xrD2BWLpvHKNmX2QbpdpsBaWnRxahMwJjO+KZk2JOElj5nSmKezyS1B4u+QbHMTX69t4ukm6hh9lsYQ7GHCKA==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "@babel/code-frame": "^7.23.5",
- "@babel/parser": "^7.23.9",
- "@babel/types": "^7.23.9"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/traverse": {
- "version": "7.23.9",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.9.tgz",
- "integrity": "sha512-I/4UJ9vs90OkBtY6iiiTORVMyIhJ4kAVmsKo9KFc8UOxMeUfi2hvtIBsET5u9GizXE6/GFSuKCTNfgCswuEjRg==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "@babel/code-frame": "^7.23.5",
- "@babel/generator": "^7.23.6",
- "@babel/helper-environment-visitor": "^7.22.20",
- "@babel/helper-function-name": "^7.23.0",
- "@babel/helper-hoist-variables": "^7.22.5",
- "@babel/helper-split-export-declaration": "^7.22.6",
- "@babel/parser": "^7.23.9",
- "@babel/types": "^7.23.9",
- "debug": "^4.3.1",
- "globals": "^11.1.0"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/types": {
- "version": "7.23.9",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.9.tgz",
- "integrity": "sha512-dQjSq/7HaSjRM43FFGnv5keM2HsxpmyV1PfaSVm0nzzjwwTmjOe6J4bC8e3+pTEIgHaHj+1ZlLThRJ2auc/w1Q==",
- "dev": true,
- "dependencies": {
- "@babel/helper-string-parser": "^7.23.4",
- "@babel/helper-validator-identifier": "^7.22.20",
- "to-fast-properties": "^2.0.0"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@jridgewell/gen-mapping": {
- "version": "0.3.3",
- "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz",
- "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "@jridgewell/set-array": "^1.0.1",
- "@jridgewell/sourcemap-codec": "^1.4.10",
- "@jridgewell/trace-mapping": "^0.3.9"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/@jridgewell/resolve-uri": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz",
- "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==",
- "dev": true,
- "peer": true,
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/@jridgewell/set-array": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz",
- "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==",
- "dev": true,
- "peer": true,
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/@jridgewell/sourcemap-codec": {
- "version": "1.4.15",
- "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
- "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==",
- "dev": true,
- "peer": true
- },
- "node_modules/@jridgewell/trace-mapping": {
- "version": "0.3.22",
- "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.22.tgz",
- "integrity": "sha512-Wf963MzWtA2sjrNt+g18IAln9lKnlRp+K2eH4jjIoF1wYeq3aMREpG09xhlhdzS0EjwU7qmUJYangWa+151vZw==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "@jridgewell/resolve-uri": "^3.1.0",
- "@jridgewell/sourcemap-codec": "^1.4.14"
- }
- },
- "node_modules/ansi-styles": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
- "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "color-convert": "^1.9.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/browserslist": {
- "version": "4.22.3",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.3.tgz",
- "integrity": "sha512-UAp55yfwNv0klWNapjs/ktHoguxuQNGnOzxYmfnXIS+8AsRDZkSDxg7R1AX3GKzn078SBI5dzwzj/Yx0Or0e3A==",
- "dev": true,
- "funding": [
- {
- "type": "opencollective",
- "url": "https://opencollective.com/browserslist"
- },
- {
- "type": "tidelift",
- "url": "https://tidelift.com/funding/github/npm/browserslist"
- },
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
- }
- ],
- "peer": true,
- "dependencies": {
- "caniuse-lite": "^1.0.30001580",
- "electron-to-chromium": "^1.4.648",
- "node-releases": "^2.0.14",
- "update-browserslist-db": "^1.0.13"
- },
- "bin": {
- "browserslist": "cli.js"
- },
- "engines": {
- "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
- }
- },
- "node_modules/caniuse-lite": {
- "version": "1.0.30001581",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001581.tgz",
- "integrity": "sha512-whlTkwhqV2tUmP3oYhtNfaWGYHDdS3JYFQBKXxcUR9qqPWsRhFHhoISO2Xnl/g0xyKzht9mI1LZpiNWfMzHixQ==",
- "dev": true,
- "funding": [
- {
- "type": "opencollective",
- "url": "https://opencollective.com/browserslist"
- },
- {
- "type": "tidelift",
- "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
- },
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
- }
- ],
- "peer": true
- },
- "node_modules/chalk": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
- "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/color-convert": {
- "version": "1.9.3",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
- "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "color-name": "1.1.3"
- }
- },
- "node_modules/color-name": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
- "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
- "dev": true,
- "peer": true
- },
- "node_modules/convert-source-map": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
- "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
- "dev": true,
- "peer": true
- },
- "node_modules/debug": {
- "version": "4.3.4",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
- "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "ms": "2.1.2"
- },
- "engines": {
- "node": ">=6.0"
- },
- "peerDependenciesMeta": {
- "supports-color": {
- "optional": true
- }
- }
- },
- "node_modules/electron-to-chromium": {
- "version": "1.4.648",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.648.tgz",
- "integrity": "sha512-EmFMarXeqJp9cUKu/QEciEApn0S/xRcpZWuAm32U7NgoZCimjsilKXHRO9saeEW55eHZagIDg6XTUOv32w9pjg==",
- "dev": true,
- "peer": true
- },
- "node_modules/escalade": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
- "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
- "dev": true,
- "peer": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/escape-string-regexp": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
- "dev": true,
- "peer": true,
- "engines": {
- "node": ">=0.8.0"
- }
- },
- "node_modules/gensync": {
- "version": "1.0.0-beta.2",
- "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
- "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
- "dev": true,
- "peer": true,
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/globals": {
- "version": "11.12.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
- "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
- "dev": true,
- "peer": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/has-flag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
- "dev": true,
- "peer": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/js-tokens": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
- "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
- "dev": true,
- "peer": true
- },
- "node_modules/jsesc": {
- "version": "2.5.2",
- "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
- "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
- "dev": true,
- "peer": true,
- "bin": {
- "jsesc": "bin/jsesc"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/json5": {
- "version": "2.2.3",
- "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
- "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
- "dev": true,
- "peer": true,
- "bin": {
- "json5": "lib/cli.js"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/lru-cache": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
- "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "yallist": "^3.0.2"
- }
- },
- "node_modules/ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
- "dev": true,
- "peer": true
- },
- "node_modules/node-releases": {
- "version": "2.0.14",
- "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz",
- "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==",
- "dev": true,
- "peer": true
- },
- "node_modules/picocolors": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
- "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
- "dev": true,
- "peer": true
- },
- "node_modules/semver": {
- "version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
- "dev": true,
- "peer": true,
- "bin": {
- "semver": "bin/semver.js"
- }
- },
- "node_modules/supports-color": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
- "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/to-fast-properties": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
- "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/update-browserslist-db": {
- "version": "1.0.13",
- "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz",
- "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==",
- "dev": true,
- "funding": [
- {
- "type": "opencollective",
- "url": "https://opencollective.com/browserslist"
- },
- {
- "type": "tidelift",
- "url": "https://tidelift.com/funding/github/npm/browserslist"
- },
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
- }
- ],
- "peer": true,
- "dependencies": {
- "escalade": "^3.1.1",
- "picocolors": "^1.0.0"
- },
- "bin": {
- "update-browserslist-db": "cli.js"
- },
- "peerDependencies": {
- "browserslist": ">= 4.21.0"
- }
- },
- "node_modules/yallist": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
- "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
- "dev": true,
- "peer": true
- }
- }
-}
diff --git a/package.json b/package.json
deleted file mode 100644
index 162d4db5..00000000
--- a/package.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "devDependencies": {
- "@babel/preset-react": "^7.23.3"
- }
-}
diff --git a/server/.dockerignore b/server/.dockerignore
new file mode 100644
index 00000000..a1d7ff6a
--- /dev/null
+++ b/server/.dockerignore
@@ -0,0 +1,33 @@
+# ---------------------------------------------------------------------------------*
+# This will prevent your local modules and debug logs from being copied onto your
+# Docker image and possibly overwriting modules installed within your image.
+# ---------------------------------------------------------------------------------*
+node_modules
+npm-debug.log
+
+# ---------------------------------------------------------------------------------*
+# ignore all test related files
+__tests__
+.eslintignore
+.eslintrc.js
+jest-mongodb-config.js
+jest.config.js
+
+# ---------------------------------------------------------------------------------*
+# ignore .git and .cache folders
+.git
+.cache
+
+# ---------------------------------------------------------------------------------*
+# ignore all markdown files (md) beside all README*.md other than README-secret.md
+*.md
+!README*.md
+README-secret.md
+
+# ---------------------------------------------------------------------------------*
+# github related files
+.github/
+
+# ---------------------------------------------------------------------------------*
+# ignore k8s file
+prod-back.yml
\ No newline at end of file
diff --git a/server/.eslintignore b/server/.eslintignore
new file mode 100644
index 00000000..c3e7e894
--- /dev/null
+++ b/server/.eslintignore
@@ -0,0 +1,2 @@
+node_modules/
+node_modules/**/*
\ No newline at end of file
diff --git a/server/.eslintrc.js b/server/.eslintrc.js
index b7eb6a6d..4d66f30e 100644
--- a/server/.eslintrc.js
+++ b/server/.eslintrc.js
@@ -21,8 +21,8 @@ module.exports = {
sourceType: "module",
},
+ ignorePatterns: [".eslintrc.js", "node_modules/**/*", "node_modules/"],
rules: {
- complexity: ["error", { max: 2 }],
+ complexity: ["error", { max: 10 }],
},
- "eslint.workingdirectories": ["./back", "./front"],
};
diff --git a/server/Dockerfile b/server/Dockerfile
index a7a26a95..c434e554 100644
--- a/server/Dockerfile
+++ b/server/Dockerfile
@@ -1,11 +1,11 @@
FROM node:latest
-RUN apt-get update -y
+RUN apt-get update && apt-get install -y
COPY . .
EXPOSE 7000
-RUN npm install
+RUN npm ci
CMD [ "npm", "run", "start" ]
\ No newline at end of file
diff --git a/server/__tests__/articleController.test.js b/server/__tests__/articleController.test.js
new file mode 100644
index 00000000..b558f209
--- /dev/null
+++ b/server/__tests__/articleController.test.js
@@ -0,0 +1,33 @@
+const request = require("supertest");
+const express = require("express");
+const ArticleModel = require("../models/articleModel");
+const articlesRouter = require("../routes/articlesController");
+
+const app = express();
+app.use(express.json());
+app.use("/", articlesRouter);
+
+jest.mock("../models/articleModel");
+
+describe("articlesController", () => {
+ afterEach(() => {
+ jest.clearAllMocks();
+ });
+
+ test("GET / - Récupération de tous les articles", async () => {
+ ArticleModel.find.mockResolvedValue([
+ { name: "Article1", contenu: "Contenu1" },
+ ]);
+ const res = await request(app).get("/");
+ expect(res.statusCode).toEqual(200);
+ expect(res.body).toEqual([{ name: "Article1", contenu: "Contenu1" }]);
+ });
+
+ test("POST / - Création d'un nouvel article", async () => {
+ const newArticle = { name: "Article2", contenu: "Contenu2" };
+ ArticleModel.prototype.save.mockResolvedValue(newArticle);
+ const res = await request(app).post("/").send(newArticle);
+ expect(res.statusCode).toEqual(200);
+ expect(res.body).toEqual(newArticle);
+ });
+});
diff --git a/server/__tests__/db.test.js b/server/__tests__/db.test.js
index 343404c1..f8730e6a 100644
--- a/server/__tests__/db.test.js
+++ b/server/__tests__/db.test.js
@@ -1,4 +1,4 @@
-require("dotenv").config({ path: "./config/.env" }); // Ajoutez cette ligne en haut de votre fichier de test
+require("dotenv").config({ path: "./config/.env" });
const mongoose = require("mongoose");
diff --git a/server/__tests__/imagesController.test.js b/server/__tests__/imagesController.test.js
new file mode 100644
index 00000000..d216ad0e
--- /dev/null
+++ b/server/__tests__/imagesController.test.js
@@ -0,0 +1,39 @@
+const request = require("supertest");
+const express = require("express");
+const ImagesModel = require("../models/imagesModel");
+const imagesController = require("../routes/imagesController");
+
+const app = express();
+app.use(express.json());
+app.use("/", imagesController);
+
+jest.mock("../models/imagesModel");
+
+describe("imagesController", () => {
+ afterEach(() => {
+ jest.clearAllMocks();
+ });
+
+ test("GET / - Récupération de toutes les images", async () => {
+ ImagesModel.find.mockResolvedValue([
+ { name: "Image1", caption: "caption1", chemin: "chemin1" },
+ ]);
+ const res = await request(app).get("/");
+ expect(res.statusCode).toEqual(200);
+ expect(res.body).toEqual([
+ { name: "Image1", caption: "caption1", chemin: "chemin1" },
+ ]);
+ });
+
+ test("POST / - Création d'une nouvelle image", async () => {
+ const newImage = {
+ name: "Article2",
+ caption: "caption2",
+ chemin: "chemin2",
+ };
+ ImagesModel.prototype.save.mockResolvedValue(newImage);
+ const res = await request(app).post("/").send(newImage);
+ expect(res.statusCode).toEqual(200);
+ expect(res.body).toEqual(newImage);
+ });
+});
diff --git a/server/__tests__/techController.test.js b/server/__tests__/techController.test.js
new file mode 100644
index 00000000..07ee8221
--- /dev/null
+++ b/server/__tests__/techController.test.js
@@ -0,0 +1,39 @@
+const request = require("supertest");
+const express = require("express");
+const TechModel = require("../models/techModel");
+const TechRouter = require("../routes/techController");
+
+const app = express();
+app.use(express.json());
+app.use("/", TechRouter);
+
+jest.mock("../models/techModel");
+
+describe("techController", () => {
+ afterEach(() => {
+ jest.clearAllMocks();
+ });
+
+ test("GET / - Récupération de tous les articles", async () => {
+ TechModel.find.mockResolvedValue([
+ { techName: "Tech1", image: "image1", techType: "techType 1" },
+ ]);
+ const res = await request(app).get("/");
+ expect(res.statusCode).toEqual(200);
+ expect(res.body).toEqual([
+ { techName: "Tech1", image: "image1", techType: "techType 1" },
+ ]);
+ });
+
+ test("POST / - Création d'un nouvel article", async () => {
+ const newArticle = {
+ techName: "tech2",
+ image: "image2",
+ techType: "techType 2",
+ };
+ TechModel.prototype.save.mockResolvedValue(newArticle);
+ const res = await request(app).post("/").send(newArticle);
+ expect(res.statusCode).toEqual(200);
+ expect(res.body).toEqual(newArticle);
+ });
+});
diff --git a/server/eslint.txt b/server/eslint.txt
deleted file mode 100644
index 36f8a9b2..00000000
--- a/server/eslint.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-
-C:\Users\Khagu\Documents\cours\DevOps\projet\khagu-dev\server\config\db.js
- 1:9 error 'config' is assigned a value but never used no-unused-vars
- 5:10 error 'callback' is defined but never used no-unused-vars
-
-C:\Users\Khagu\Documents\cours\DevOps\projet\khagu-dev\server\index.js
- 26:44 error 'res' is defined but never used no-unused-vars
-
-✖ 3 problems (3 errors, 0 warnings)
diff --git a/server/index.js b/server/index.js
index d54861e3..f2c503f3 100644
--- a/server/index.js
+++ b/server/index.js
@@ -1,4 +1,5 @@
const express = require("express");
+const { createProxyMiddleware } = require('http-proxy-middleware');
require("dotenv").config({ path: "./config/.env" });
const app = express();
@@ -19,10 +20,18 @@ const MAIL_PASS = process.env.MAIL_PASS;
app.use(bodyParser.json());
app.use(express.static("client/build"));
app.use(cors());
+
app.use("/api/tech", techRoutes);
app.use("/api/images", imagesRoutes);
app.use("/api/article", articleRoutes);
+app.use('/api', createProxyMiddleware({
+ target: 'http://back-service.default.svc.cluster.local:7000',
+ changeOrigin: true,
+}));
+
+
+
app.post("/send_mail", cors(), async (req, res) => {
let { nom } = req.body;
let { prenom } = req.body;
diff --git a/server/jest-mongodb-config.js b/server/jest-mongodb-config.js
new file mode 100644
index 00000000..4c1198e6
--- /dev/null
+++ b/server/jest-mongodb-config.js
@@ -0,0 +1,12 @@
+module.exports = {
+ mongodbMemoryServerOptions: {
+ instance: {
+ port: 27018, // Utilisez un port différent du port par défaut
+ },
+ binary: {
+ version: "4.0.3", // Utilisez la version de MongoDB que vous préférez
+ skipMD5: true,
+ },
+ autoStart: false,
+ },
+};
diff --git a/server/jest.config.js b/server/jest.config.js
index ad4e0cd7..36e76766 100644
--- a/server/jest.config.js
+++ b/server/jest.config.js
@@ -1,4 +1,13 @@
module.exports = {
preset: "@shelf/jest-mongodb",
testEnvironment: "node",
+ reporters: [
+ "default",
+ [
+ "./node_modules/jest-html-reporter",
+ {
+ pageTitle: "Back Jest Report",
+ },
+ ],
+ ],
};
diff --git a/server/package-lock.json b/server/package-lock.json
index 09dc0f6c..e0924bfe 100644
--- a/server/package-lock.json
+++ b/server/package-lock.json
@@ -13,6 +13,7 @@
"cors": "^2.8.5",
"dotenv": "^16.0.1",
"express": "^4.18.2",
+ "http-proxy-middleware": "^2.0.6",
"mongodb": "^4.8.1",
"nodemailer": "^6.7.8",
"nodemon": "^2.0.19",
@@ -22,8 +23,11 @@
"devDependencies": {
"@shelf/jest-mongodb": "^4.2.0",
"eslint": "^8.56.0",
+ "eslint-formatter-html": "^2.4.0",
"jest": "^29.7.0",
- "mongoose": "^8.1.1"
+ "jest-html-reporter": "^3.10.2",
+ "mongoose": "^8.1.1",
+ "supertest": "^6.3.4"
},
"engines": {
"node": "14.x"
@@ -155,50 +159,50 @@
"optional": true
},
"node_modules/@aws-sdk/client-cognito-identity": {
- "version": "3.490.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/client-cognito-identity/-/client-cognito-identity-3.490.0.tgz",
- "integrity": "sha512-P2C8yBOUK0iIIYMb6AUkiE5qoWu032tMVxIZWya9dBYu8uqlnzO0duC5P3UGn6lETZX/59PQ926vRc/6YMyMLg==",
+ "version": "3.502.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/client-cognito-identity/-/client-cognito-identity-3.502.0.tgz",
+ "integrity": "sha512-L+ARSvG/UHaF1blVOZ0MQfAfzVoG+ydCqiDOWyPqsGhlPuU1x0HpLWGhTA6W7D+MlFqbWJN94q0fdL6nbGYNdg==",
"optional": true,
"dependencies": {
"@aws-crypto/sha256-browser": "3.0.0",
"@aws-crypto/sha256-js": "3.0.0",
- "@aws-sdk/client-sts": "3.490.0",
- "@aws-sdk/core": "3.490.0",
- "@aws-sdk/credential-provider-node": "3.490.0",
- "@aws-sdk/middleware-host-header": "3.489.0",
- "@aws-sdk/middleware-logger": "3.489.0",
- "@aws-sdk/middleware-recursion-detection": "3.489.0",
- "@aws-sdk/middleware-signing": "3.489.0",
- "@aws-sdk/middleware-user-agent": "3.489.0",
- "@aws-sdk/region-config-resolver": "3.489.0",
- "@aws-sdk/types": "3.489.0",
- "@aws-sdk/util-endpoints": "3.489.0",
- "@aws-sdk/util-user-agent-browser": "3.489.0",
- "@aws-sdk/util-user-agent-node": "3.489.0",
- "@smithy/config-resolver": "^2.0.23",
- "@smithy/core": "^1.2.2",
- "@smithy/fetch-http-handler": "^2.3.2",
- "@smithy/hash-node": "^2.0.18",
- "@smithy/invalid-dependency": "^2.0.16",
- "@smithy/middleware-content-length": "^2.0.18",
- "@smithy/middleware-endpoint": "^2.3.0",
- "@smithy/middleware-retry": "^2.0.26",
- "@smithy/middleware-serde": "^2.0.16",
- "@smithy/middleware-stack": "^2.0.10",
- "@smithy/node-config-provider": "^2.1.9",
- "@smithy/node-http-handler": "^2.2.2",
- "@smithy/protocol-http": "^3.0.12",
- "@smithy/smithy-client": "^2.2.1",
- "@smithy/types": "^2.8.0",
- "@smithy/url-parser": "^2.0.16",
- "@smithy/util-base64": "^2.0.1",
- "@smithy/util-body-length-browser": "^2.0.1",
- "@smithy/util-body-length-node": "^2.1.0",
- "@smithy/util-defaults-mode-browser": "^2.0.24",
- "@smithy/util-defaults-mode-node": "^2.0.32",
- "@smithy/util-endpoints": "^1.0.8",
- "@smithy/util-retry": "^2.0.9",
- "@smithy/util-utf8": "^2.0.2",
+ "@aws-sdk/client-sts": "3.502.0",
+ "@aws-sdk/core": "3.496.0",
+ "@aws-sdk/credential-provider-node": "3.502.0",
+ "@aws-sdk/middleware-host-header": "3.502.0",
+ "@aws-sdk/middleware-logger": "3.502.0",
+ "@aws-sdk/middleware-recursion-detection": "3.502.0",
+ "@aws-sdk/middleware-signing": "3.502.0",
+ "@aws-sdk/middleware-user-agent": "3.502.0",
+ "@aws-sdk/region-config-resolver": "3.502.0",
+ "@aws-sdk/types": "3.502.0",
+ "@aws-sdk/util-endpoints": "3.502.0",
+ "@aws-sdk/util-user-agent-browser": "3.502.0",
+ "@aws-sdk/util-user-agent-node": "3.502.0",
+ "@smithy/config-resolver": "^2.1.1",
+ "@smithy/core": "^1.3.1",
+ "@smithy/fetch-http-handler": "^2.4.1",
+ "@smithy/hash-node": "^2.1.1",
+ "@smithy/invalid-dependency": "^2.1.1",
+ "@smithy/middleware-content-length": "^2.1.1",
+ "@smithy/middleware-endpoint": "^2.4.1",
+ "@smithy/middleware-retry": "^2.1.1",
+ "@smithy/middleware-serde": "^2.1.1",
+ "@smithy/middleware-stack": "^2.1.1",
+ "@smithy/node-config-provider": "^2.2.1",
+ "@smithy/node-http-handler": "^2.3.1",
+ "@smithy/protocol-http": "^3.1.1",
+ "@smithy/smithy-client": "^2.3.1",
+ "@smithy/types": "^2.9.1",
+ "@smithy/url-parser": "^2.1.1",
+ "@smithy/util-base64": "^2.1.1",
+ "@smithy/util-body-length-browser": "^2.1.1",
+ "@smithy/util-body-length-node": "^2.2.1",
+ "@smithy/util-defaults-mode-browser": "^2.1.1",
+ "@smithy/util-defaults-mode-node": "^2.1.1",
+ "@smithy/util-endpoints": "^1.1.1",
+ "@smithy/util-retry": "^2.1.1",
+ "@smithy/util-utf8": "^2.1.1",
"tslib": "^2.5.0"
},
"engines": {
@@ -206,115 +210,170 @@
}
},
"node_modules/@aws-sdk/client-sso": {
- "version": "3.490.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.490.0.tgz",
- "integrity": "sha512-yfxoHmCL1w/IKmFRfzCxdVCQrGlSQf4eei9iVEm5oi3iE8REFyPj3o/BmKQEHG3h2ITK5UbdYDb5TY4xoYHsyA==",
+ "version": "3.502.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.502.0.tgz",
+ "integrity": "sha512-OZAYal1+PQgUUtWiHhRayDtX0OD+XpXHKAhjYgEIPbyhQaCMp3/Bq1xDX151piWXvXqXLJHFKb8DUEqzwGO9QA==",
"optional": true,
"dependencies": {
"@aws-crypto/sha256-browser": "3.0.0",
"@aws-crypto/sha256-js": "3.0.0",
- "@aws-sdk/core": "3.490.0",
- "@aws-sdk/middleware-host-header": "3.489.0",
- "@aws-sdk/middleware-logger": "3.489.0",
- "@aws-sdk/middleware-recursion-detection": "3.489.0",
- "@aws-sdk/middleware-user-agent": "3.489.0",
- "@aws-sdk/region-config-resolver": "3.489.0",
- "@aws-sdk/types": "3.489.0",
- "@aws-sdk/util-endpoints": "3.489.0",
- "@aws-sdk/util-user-agent-browser": "3.489.0",
- "@aws-sdk/util-user-agent-node": "3.489.0",
- "@smithy/config-resolver": "^2.0.23",
- "@smithy/core": "^1.2.2",
- "@smithy/fetch-http-handler": "^2.3.2",
- "@smithy/hash-node": "^2.0.18",
- "@smithy/invalid-dependency": "^2.0.16",
- "@smithy/middleware-content-length": "^2.0.18",
- "@smithy/middleware-endpoint": "^2.3.0",
- "@smithy/middleware-retry": "^2.0.26",
- "@smithy/middleware-serde": "^2.0.16",
- "@smithy/middleware-stack": "^2.0.10",
- "@smithy/node-config-provider": "^2.1.9",
- "@smithy/node-http-handler": "^2.2.2",
- "@smithy/protocol-http": "^3.0.12",
- "@smithy/smithy-client": "^2.2.1",
- "@smithy/types": "^2.8.0",
- "@smithy/url-parser": "^2.0.16",
- "@smithy/util-base64": "^2.0.1",
- "@smithy/util-body-length-browser": "^2.0.1",
- "@smithy/util-body-length-node": "^2.1.0",
- "@smithy/util-defaults-mode-browser": "^2.0.24",
- "@smithy/util-defaults-mode-node": "^2.0.32",
- "@smithy/util-endpoints": "^1.0.8",
- "@smithy/util-retry": "^2.0.9",
- "@smithy/util-utf8": "^2.0.2",
+ "@aws-sdk/core": "3.496.0",
+ "@aws-sdk/middleware-host-header": "3.502.0",
+ "@aws-sdk/middleware-logger": "3.502.0",
+ "@aws-sdk/middleware-recursion-detection": "3.502.0",
+ "@aws-sdk/middleware-user-agent": "3.502.0",
+ "@aws-sdk/region-config-resolver": "3.502.0",
+ "@aws-sdk/types": "3.502.0",
+ "@aws-sdk/util-endpoints": "3.502.0",
+ "@aws-sdk/util-user-agent-browser": "3.502.0",
+ "@aws-sdk/util-user-agent-node": "3.502.0",
+ "@smithy/config-resolver": "^2.1.1",
+ "@smithy/core": "^1.3.1",
+ "@smithy/fetch-http-handler": "^2.4.1",
+ "@smithy/hash-node": "^2.1.1",
+ "@smithy/invalid-dependency": "^2.1.1",
+ "@smithy/middleware-content-length": "^2.1.1",
+ "@smithy/middleware-endpoint": "^2.4.1",
+ "@smithy/middleware-retry": "^2.1.1",
+ "@smithy/middleware-serde": "^2.1.1",
+ "@smithy/middleware-stack": "^2.1.1",
+ "@smithy/node-config-provider": "^2.2.1",
+ "@smithy/node-http-handler": "^2.3.1",
+ "@smithy/protocol-http": "^3.1.1",
+ "@smithy/smithy-client": "^2.3.1",
+ "@smithy/types": "^2.9.1",
+ "@smithy/url-parser": "^2.1.1",
+ "@smithy/util-base64": "^2.1.1",
+ "@smithy/util-body-length-browser": "^2.1.1",
+ "@smithy/util-body-length-node": "^2.2.1",
+ "@smithy/util-defaults-mode-browser": "^2.1.1",
+ "@smithy/util-defaults-mode-node": "^2.1.1",
+ "@smithy/util-endpoints": "^1.1.1",
+ "@smithy/util-retry": "^2.1.1",
+ "@smithy/util-utf8": "^2.1.1",
"tslib": "^2.5.0"
},
"engines": {
"node": ">=14.0.0"
}
},
+ "node_modules/@aws-sdk/client-sso-oidc": {
+ "version": "3.502.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.502.0.tgz",
+ "integrity": "sha512-Yc9tZqTOMWtdgpkrdjKShgWb9oKNsFQrItfoiN1xWDllaFFRPi2KTiZiR0AbSTrNasJy13d210DOxrIdte+kWQ==",
+ "optional": true,
+ "dependencies": {
+ "@aws-crypto/sha256-browser": "3.0.0",
+ "@aws-crypto/sha256-js": "3.0.0",
+ "@aws-sdk/client-sts": "3.502.0",
+ "@aws-sdk/core": "3.496.0",
+ "@aws-sdk/middleware-host-header": "3.502.0",
+ "@aws-sdk/middleware-logger": "3.502.0",
+ "@aws-sdk/middleware-recursion-detection": "3.502.0",
+ "@aws-sdk/middleware-signing": "3.502.0",
+ "@aws-sdk/middleware-user-agent": "3.502.0",
+ "@aws-sdk/region-config-resolver": "3.502.0",
+ "@aws-sdk/types": "3.502.0",
+ "@aws-sdk/util-endpoints": "3.502.0",
+ "@aws-sdk/util-user-agent-browser": "3.502.0",
+ "@aws-sdk/util-user-agent-node": "3.502.0",
+ "@smithy/config-resolver": "^2.1.1",
+ "@smithy/core": "^1.3.1",
+ "@smithy/fetch-http-handler": "^2.4.1",
+ "@smithy/hash-node": "^2.1.1",
+ "@smithy/invalid-dependency": "^2.1.1",
+ "@smithy/middleware-content-length": "^2.1.1",
+ "@smithy/middleware-endpoint": "^2.4.1",
+ "@smithy/middleware-retry": "^2.1.1",
+ "@smithy/middleware-serde": "^2.1.1",
+ "@smithy/middleware-stack": "^2.1.1",
+ "@smithy/node-config-provider": "^2.2.1",
+ "@smithy/node-http-handler": "^2.3.1",
+ "@smithy/protocol-http": "^3.1.1",
+ "@smithy/smithy-client": "^2.3.1",
+ "@smithy/types": "^2.9.1",
+ "@smithy/url-parser": "^2.1.1",
+ "@smithy/util-base64": "^2.1.1",
+ "@smithy/util-body-length-browser": "^2.1.1",
+ "@smithy/util-body-length-node": "^2.2.1",
+ "@smithy/util-defaults-mode-browser": "^2.1.1",
+ "@smithy/util-defaults-mode-node": "^2.1.1",
+ "@smithy/util-endpoints": "^1.1.1",
+ "@smithy/util-retry": "^2.1.1",
+ "@smithy/util-utf8": "^2.1.1",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ },
+ "peerDependencies": {
+ "@aws-sdk/credential-provider-node": "*"
+ }
+ },
"node_modules/@aws-sdk/client-sts": {
- "version": "3.490.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.490.0.tgz",
- "integrity": "sha512-n2vQ5Qu2qi2I0XMI+IH99ElpIRHOJTa1+sqNC4juMYxKQBMvw+EnsqUtaL3QvTHoyxNB/R7mpkeBB6SzPQ1TtA==",
+ "version": "3.502.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.502.0.tgz",
+ "integrity": "sha512-0q08gsvn6nuRqjK+i/e30PT/t7vvYwmGJS0PhJikZWv5yRDNSUxSYG0uDwKSbLDzmc2UX5+mLeyjPHlL4hbGlA==",
"optional": true,
"dependencies": {
"@aws-crypto/sha256-browser": "3.0.0",
"@aws-crypto/sha256-js": "3.0.0",
- "@aws-sdk/core": "3.490.0",
- "@aws-sdk/credential-provider-node": "3.490.0",
- "@aws-sdk/middleware-host-header": "3.489.0",
- "@aws-sdk/middleware-logger": "3.489.0",
- "@aws-sdk/middleware-recursion-detection": "3.489.0",
- "@aws-sdk/middleware-user-agent": "3.489.0",
- "@aws-sdk/region-config-resolver": "3.489.0",
- "@aws-sdk/types": "3.489.0",
- "@aws-sdk/util-endpoints": "3.489.0",
- "@aws-sdk/util-user-agent-browser": "3.489.0",
- "@aws-sdk/util-user-agent-node": "3.489.0",
- "@smithy/config-resolver": "^2.0.23",
- "@smithy/core": "^1.2.2",
- "@smithy/fetch-http-handler": "^2.3.2",
- "@smithy/hash-node": "^2.0.18",
- "@smithy/invalid-dependency": "^2.0.16",
- "@smithy/middleware-content-length": "^2.0.18",
- "@smithy/middleware-endpoint": "^2.3.0",
- "@smithy/middleware-retry": "^2.0.26",
- "@smithy/middleware-serde": "^2.0.16",
- "@smithy/middleware-stack": "^2.0.10",
- "@smithy/node-config-provider": "^2.1.9",
- "@smithy/node-http-handler": "^2.2.2",
- "@smithy/protocol-http": "^3.0.12",
- "@smithy/smithy-client": "^2.2.1",
- "@smithy/types": "^2.8.0",
- "@smithy/url-parser": "^2.0.16",
- "@smithy/util-base64": "^2.0.1",
- "@smithy/util-body-length-browser": "^2.0.1",
- "@smithy/util-body-length-node": "^2.1.0",
- "@smithy/util-defaults-mode-browser": "^2.0.24",
- "@smithy/util-defaults-mode-node": "^2.0.32",
- "@smithy/util-endpoints": "^1.0.8",
- "@smithy/util-middleware": "^2.0.9",
- "@smithy/util-retry": "^2.0.9",
- "@smithy/util-utf8": "^2.0.2",
+ "@aws-sdk/core": "3.496.0",
+ "@aws-sdk/middleware-host-header": "3.502.0",
+ "@aws-sdk/middleware-logger": "3.502.0",
+ "@aws-sdk/middleware-recursion-detection": "3.502.0",
+ "@aws-sdk/middleware-user-agent": "3.502.0",
+ "@aws-sdk/region-config-resolver": "3.502.0",
+ "@aws-sdk/types": "3.502.0",
+ "@aws-sdk/util-endpoints": "3.502.0",
+ "@aws-sdk/util-user-agent-browser": "3.502.0",
+ "@aws-sdk/util-user-agent-node": "3.502.0",
+ "@smithy/config-resolver": "^2.1.1",
+ "@smithy/core": "^1.3.1",
+ "@smithy/fetch-http-handler": "^2.4.1",
+ "@smithy/hash-node": "^2.1.1",
+ "@smithy/invalid-dependency": "^2.1.1",
+ "@smithy/middleware-content-length": "^2.1.1",
+ "@smithy/middleware-endpoint": "^2.4.1",
+ "@smithy/middleware-retry": "^2.1.1",
+ "@smithy/middleware-serde": "^2.1.1",
+ "@smithy/middleware-stack": "^2.1.1",
+ "@smithy/node-config-provider": "^2.2.1",
+ "@smithy/node-http-handler": "^2.3.1",
+ "@smithy/protocol-http": "^3.1.1",
+ "@smithy/smithy-client": "^2.3.1",
+ "@smithy/types": "^2.9.1",
+ "@smithy/url-parser": "^2.1.1",
+ "@smithy/util-base64": "^2.1.1",
+ "@smithy/util-body-length-browser": "^2.1.1",
+ "@smithy/util-body-length-node": "^2.2.1",
+ "@smithy/util-defaults-mode-browser": "^2.1.1",
+ "@smithy/util-defaults-mode-node": "^2.1.1",
+ "@smithy/util-endpoints": "^1.1.1",
+ "@smithy/util-middleware": "^2.1.1",
+ "@smithy/util-retry": "^2.1.1",
+ "@smithy/util-utf8": "^2.1.1",
"fast-xml-parser": "4.2.5",
"tslib": "^2.5.0"
},
"engines": {
"node": ">=14.0.0"
+ },
+ "peerDependencies": {
+ "@aws-sdk/credential-provider-node": "*"
}
},
"node_modules/@aws-sdk/core": {
- "version": "3.490.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.490.0.tgz",
- "integrity": "sha512-TSBWkXtxMU7q1Zo6w3v5wIOr/sj7P5Jw3OyO7lJrFGsPsDC2xwpxkVqTesDxkzgMRypO52xjYEmveagn1xxBHg==",
+ "version": "3.496.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.496.0.tgz",
+ "integrity": "sha512-yT+ug7Cw/3eJi7x2es0+46x12+cIJm5Xv+GPWsrTFD1TKgqO/VPEgfDtHFagDNbFmjNQA65Ygc/kEdIX9ICX/A==",
"optional": true,
"dependencies": {
- "@smithy/core": "^1.2.2",
- "@smithy/protocol-http": "^3.0.12",
- "@smithy/signature-v4": "^2.0.0",
- "@smithy/smithy-client": "^2.2.1",
- "@smithy/types": "^2.8.0",
+ "@smithy/core": "^1.3.1",
+ "@smithy/protocol-http": "^3.1.1",
+ "@smithy/signature-v4": "^2.1.1",
+ "@smithy/smithy-client": "^2.3.1",
+ "@smithy/types": "^2.9.1",
"tslib": "^2.5.0"
},
"engines": {
@@ -322,15 +381,15 @@
}
},
"node_modules/@aws-sdk/credential-provider-cognito-identity": {
- "version": "3.490.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.490.0.tgz",
- "integrity": "sha512-tm07p+jladfKJYFhFqQjT8PC3mM0zagVud/NnYx6w/MB7pHPrixhCRoG1hK+ckAjnUAUVP2uuGXhTVkTfrkTXg==",
+ "version": "3.502.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.502.0.tgz",
+ "integrity": "sha512-AOFXWskh92+dhNRXw5GDPzEVYkrcIcqHMhT+XeIMRBsUwmF4nC4/Q3zAYsdCWm36bZ2F6C9UML5H5DvZGLDRXQ==",
"optional": true,
"dependencies": {
- "@aws-sdk/client-cognito-identity": "3.490.0",
- "@aws-sdk/types": "3.489.0",
- "@smithy/property-provider": "^2.0.0",
- "@smithy/types": "^2.8.0",
+ "@aws-sdk/client-cognito-identity": "3.502.0",
+ "@aws-sdk/types": "3.502.0",
+ "@smithy/property-provider": "^2.1.1",
+ "@smithy/types": "^2.9.1",
"tslib": "^2.5.0"
},
"engines": {
@@ -338,14 +397,14 @@
}
},
"node_modules/@aws-sdk/credential-provider-env": {
- "version": "3.489.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.489.0.tgz",
- "integrity": "sha512-5PqYsx9G5SB2tqPT9/z/u0EkF6D4wP6HTMWQs+DfMdmwXihrqQAgeYaTtV3KbXqb88p6sfacwxhUvE6+Rm494w==",
+ "version": "3.502.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.502.0.tgz",
+ "integrity": "sha512-KIB8Ae1Z7domMU/jU4KiIgK4tmYgvuXlhR54ehwlVHxnEoFPoPuGHFZU7oFn79jhhSLUFQ1lRYMxP0cEwb7XeQ==",
"optional": true,
"dependencies": {
- "@aws-sdk/types": "3.489.0",
- "@smithy/property-provider": "^2.0.0",
- "@smithy/types": "^2.8.0",
+ "@aws-sdk/types": "3.502.0",
+ "@smithy/property-provider": "^2.1.1",
+ "@smithy/types": "^2.9.1",
"tslib": "^2.5.0"
},
"engines": {
@@ -353,19 +412,19 @@
}
},
"node_modules/@aws-sdk/credential-provider-http": {
- "version": "3.489.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.489.0.tgz",
- "integrity": "sha512-Q9M/yQs2e67Jvrvgvr1J3dZkEypSUlUhsNwCCNLDFGaDZjft6BgqzNMXKKtH+IvuAuZAjqZ2Wm4mriFWbhXUeA==",
+ "version": "3.502.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.502.0.tgz",
+ "integrity": "sha512-I2V6IehnKr9Jn7hZi72YTdaUKIZHqBpngzUAP/WipOPSuTHJ3w65MU+Wxrw/jfjsI47z7Q76Xkw1TVe5lRKGGQ==",
"optional": true,
"dependencies": {
- "@aws-sdk/types": "3.489.0",
- "@smithy/fetch-http-handler": "^2.3.2",
- "@smithy/node-http-handler": "^2.2.2",
- "@smithy/property-provider": "^2.0.0",
- "@smithy/protocol-http": "^3.0.12",
- "@smithy/smithy-client": "^2.2.1",
- "@smithy/types": "^2.8.0",
- "@smithy/util-stream": "^2.0.24",
+ "@aws-sdk/types": "3.502.0",
+ "@smithy/fetch-http-handler": "^2.4.1",
+ "@smithy/node-http-handler": "^2.3.1",
+ "@smithy/property-provider": "^2.1.1",
+ "@smithy/protocol-http": "^3.1.1",
+ "@smithy/smithy-client": "^2.3.1",
+ "@smithy/types": "^2.9.1",
+ "@smithy/util-stream": "^2.1.1",
"tslib": "^2.5.0"
},
"engines": {
@@ -373,20 +432,21 @@
}
},
"node_modules/@aws-sdk/credential-provider-ini": {
- "version": "3.490.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.490.0.tgz",
- "integrity": "sha512-7m63zyCpVqj9FsoDxWMWWRvL6c7zZzOcXYkHZmHujVVlmAXH0RT/vkXFkYgt+Ku+ov+v5NQrzwO5TmVoRt6O8g==",
+ "version": "3.502.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.502.0.tgz",
+ "integrity": "sha512-1wB/escbspUY6uRDEMp9AMMyypUSyuQ0AMO1yQNtXviV8cPf+CuRbqP/UVnimHO1RuX0n5BmjDVVjUIEU6kuGA==",
"optional": true,
"dependencies": {
- "@aws-sdk/credential-provider-env": "3.489.0",
- "@aws-sdk/credential-provider-process": "3.489.0",
- "@aws-sdk/credential-provider-sso": "3.490.0",
- "@aws-sdk/credential-provider-web-identity": "3.489.0",
- "@aws-sdk/types": "3.489.0",
- "@smithy/credential-provider-imds": "^2.0.0",
- "@smithy/property-provider": "^2.0.0",
- "@smithy/shared-ini-file-loader": "^2.0.6",
- "@smithy/types": "^2.8.0",
+ "@aws-sdk/client-sts": "3.502.0",
+ "@aws-sdk/credential-provider-env": "3.502.0",
+ "@aws-sdk/credential-provider-process": "3.502.0",
+ "@aws-sdk/credential-provider-sso": "3.502.0",
+ "@aws-sdk/credential-provider-web-identity": "3.502.0",
+ "@aws-sdk/types": "3.502.0",
+ "@smithy/credential-provider-imds": "^2.2.1",
+ "@smithy/property-provider": "^2.1.1",
+ "@smithy/shared-ini-file-loader": "^2.3.1",
+ "@smithy/types": "^2.9.1",
"tslib": "^2.5.0"
},
"engines": {
@@ -394,21 +454,21 @@
}
},
"node_modules/@aws-sdk/credential-provider-node": {
- "version": "3.490.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.490.0.tgz",
- "integrity": "sha512-Gh33u2O5Xbout8G3z/Z5H/CZzdG1ophxf/XS3iMFxA1cazQ7swY1UMmGvB7Lm7upvax5anXouItD1Ph3gzKc4w==",
+ "version": "3.502.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.502.0.tgz",
+ "integrity": "sha512-qg71UpYeFrjhu5hD+vdRqZ+EYFB11BeszsbfEJGaHhOMHmmTHNBaDAexW+bUnJSXcJL0a8vniCvca+rElbcAHQ==",
"optional": true,
"dependencies": {
- "@aws-sdk/credential-provider-env": "3.489.0",
- "@aws-sdk/credential-provider-ini": "3.490.0",
- "@aws-sdk/credential-provider-process": "3.489.0",
- "@aws-sdk/credential-provider-sso": "3.490.0",
- "@aws-sdk/credential-provider-web-identity": "3.489.0",
- "@aws-sdk/types": "3.489.0",
- "@smithy/credential-provider-imds": "^2.0.0",
- "@smithy/property-provider": "^2.0.0",
- "@smithy/shared-ini-file-loader": "^2.0.6",
- "@smithy/types": "^2.8.0",
+ "@aws-sdk/credential-provider-env": "3.502.0",
+ "@aws-sdk/credential-provider-ini": "3.502.0",
+ "@aws-sdk/credential-provider-process": "3.502.0",
+ "@aws-sdk/credential-provider-sso": "3.502.0",
+ "@aws-sdk/credential-provider-web-identity": "3.502.0",
+ "@aws-sdk/types": "3.502.0",
+ "@smithy/credential-provider-imds": "^2.2.1",
+ "@smithy/property-provider": "^2.1.1",
+ "@smithy/shared-ini-file-loader": "^2.3.1",
+ "@smithy/types": "^2.9.1",
"tslib": "^2.5.0"
},
"engines": {
@@ -416,15 +476,15 @@
}
},
"node_modules/@aws-sdk/credential-provider-process": {
- "version": "3.489.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.489.0.tgz",
- "integrity": "sha512-3vKQYJZ5cZYjy0870CPmbmKRBgATw2xCygxhn4m4UDCjOXVXcGUtYD51DMWsvBo3S0W8kH+FIJV4yuEDMFqLFQ==",
+ "version": "3.502.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.502.0.tgz",
+ "integrity": "sha512-fJJowOjQ4infYQX0E1J3xFVlmuwEYJAFk0Mo1qwafWmEthsBJs+6BR2RiWDELHKrSK35u4Pf3fu3RkYuCtmQFw==",
"optional": true,
"dependencies": {
- "@aws-sdk/types": "3.489.0",
- "@smithy/property-provider": "^2.0.0",
- "@smithy/shared-ini-file-loader": "^2.0.6",
- "@smithy/types": "^2.8.0",
+ "@aws-sdk/types": "3.502.0",
+ "@smithy/property-provider": "^2.1.1",
+ "@smithy/shared-ini-file-loader": "^2.3.1",
+ "@smithy/types": "^2.9.1",
"tslib": "^2.5.0"
},
"engines": {
@@ -432,17 +492,17 @@
}
},
"node_modules/@aws-sdk/credential-provider-sso": {
- "version": "3.490.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.490.0.tgz",
- "integrity": "sha512-3UUBUoPbFvT58IhS4Vb23omYj/QPNkjgxu9p9ruQ3KSjLkanI4w8t/l/jljA65q83P7CoLnM5UKG9L7RA8/V1Q==",
+ "version": "3.502.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.502.0.tgz",
+ "integrity": "sha512-/2Nyvo+cWQpH283lmZBimTJ9JDhES9FzQUkhUXZgxQo3Ez4sguLVi2V9xoFFyG0cMff5fuNivdKHfj4FeMGjZw==",
"optional": true,
"dependencies": {
- "@aws-sdk/client-sso": "3.490.0",
- "@aws-sdk/token-providers": "3.489.0",
- "@aws-sdk/types": "3.489.0",
- "@smithy/property-provider": "^2.0.0",
- "@smithy/shared-ini-file-loader": "^2.0.6",
- "@smithy/types": "^2.8.0",
+ "@aws-sdk/client-sso": "3.502.0",
+ "@aws-sdk/token-providers": "3.502.0",
+ "@aws-sdk/types": "3.502.0",
+ "@smithy/property-provider": "^2.1.1",
+ "@smithy/shared-ini-file-loader": "^2.3.1",
+ "@smithy/types": "^2.9.1",
"tslib": "^2.5.0"
},
"engines": {
@@ -450,14 +510,15 @@
}
},
"node_modules/@aws-sdk/credential-provider-web-identity": {
- "version": "3.489.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.489.0.tgz",
- "integrity": "sha512-mjIuE2Wg1H/ds0nXQ/7vfusEDudmdd8YzKZI1y5O4n60iZZtyB2RNIECtvLMx1EQAKclidY7/06qQkArrGau5Q==",
+ "version": "3.502.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.502.0.tgz",
+ "integrity": "sha512-veBAjDqjMMgA2Qxxf9ywDfHYLeJpaeHWLWCQ9XCHwJJ6ZIGWmAZPTq3he/UMr5JIQXooIccqqyqXMDIXPenXpA==",
"optional": true,
"dependencies": {
- "@aws-sdk/types": "3.489.0",
- "@smithy/property-provider": "^2.0.0",
- "@smithy/types": "^2.8.0",
+ "@aws-sdk/client-sts": "3.502.0",
+ "@aws-sdk/types": "3.502.0",
+ "@smithy/property-provider": "^2.1.1",
+ "@smithy/types": "^2.9.1",
"tslib": "^2.5.0"
},
"engines": {
@@ -465,26 +526,26 @@
}
},
"node_modules/@aws-sdk/credential-providers": {
- "version": "3.490.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-providers/-/credential-providers-3.490.0.tgz",
- "integrity": "sha512-b66SfI3A2H5qVKYkuaYtnNmHApcj2Vju6wRWDr+nZX2iVqBcpCFIs6jMBY0QWmwn+xhlVvAX9tI4AoqGumzKWg==",
+ "version": "3.502.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-providers/-/credential-providers-3.502.0.tgz",
+ "integrity": "sha512-3p55XuIZ76vwsje4QbzYgYaGo+JGK3U59CBbx2GbXyUscFkVaKTiivJsdOaQ7MdkCjbrPQbLwDH4lLoPYLu2pg==",
"optional": true,
"dependencies": {
- "@aws-sdk/client-cognito-identity": "3.490.0",
- "@aws-sdk/client-sso": "3.490.0",
- "@aws-sdk/client-sts": "3.490.0",
- "@aws-sdk/credential-provider-cognito-identity": "3.490.0",
- "@aws-sdk/credential-provider-env": "3.489.0",
- "@aws-sdk/credential-provider-http": "3.489.0",
- "@aws-sdk/credential-provider-ini": "3.490.0",
- "@aws-sdk/credential-provider-node": "3.490.0",
- "@aws-sdk/credential-provider-process": "3.489.0",
- "@aws-sdk/credential-provider-sso": "3.490.0",
- "@aws-sdk/credential-provider-web-identity": "3.489.0",
- "@aws-sdk/types": "3.489.0",
- "@smithy/credential-provider-imds": "^2.0.0",
- "@smithy/property-provider": "^2.0.0",
- "@smithy/types": "^2.8.0",
+ "@aws-sdk/client-cognito-identity": "3.502.0",
+ "@aws-sdk/client-sso": "3.502.0",
+ "@aws-sdk/client-sts": "3.502.0",
+ "@aws-sdk/credential-provider-cognito-identity": "3.502.0",
+ "@aws-sdk/credential-provider-env": "3.502.0",
+ "@aws-sdk/credential-provider-http": "3.502.0",
+ "@aws-sdk/credential-provider-ini": "3.502.0",
+ "@aws-sdk/credential-provider-node": "3.502.0",
+ "@aws-sdk/credential-provider-process": "3.502.0",
+ "@aws-sdk/credential-provider-sso": "3.502.0",
+ "@aws-sdk/credential-provider-web-identity": "3.502.0",
+ "@aws-sdk/types": "3.502.0",
+ "@smithy/credential-provider-imds": "^2.2.1",
+ "@smithy/property-provider": "^2.1.1",
+ "@smithy/types": "^2.9.1",
"tslib": "^2.5.0"
},
"engines": {
@@ -492,14 +553,14 @@
}
},
"node_modules/@aws-sdk/middleware-host-header": {
- "version": "3.489.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.489.0.tgz",
- "integrity": "sha512-Cl7HJ1jhOfllwf0CRx1eB4ypRGMqdGKWpc0eSTXty7wWSvCdMZUhwfjQqu2bIOIlgYxg/gFu6TVmVZ6g4O8PlA==",
+ "version": "3.502.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.502.0.tgz",
+ "integrity": "sha512-EjnG0GTYXT/wJBmm5/mTjDcAkzU8L7wQjOzd3FTXuTCNNyvAvwrszbOj5FlarEw5XJBbQiZtBs+I5u9+zy560w==",
"optional": true,
"dependencies": {
- "@aws-sdk/types": "3.489.0",
- "@smithy/protocol-http": "^3.0.12",
- "@smithy/types": "^2.8.0",
+ "@aws-sdk/types": "3.502.0",
+ "@smithy/protocol-http": "^3.1.1",
+ "@smithy/types": "^2.9.1",
"tslib": "^2.5.0"
},
"engines": {
@@ -507,13 +568,13 @@
}
},
"node_modules/@aws-sdk/middleware-logger": {
- "version": "3.489.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.489.0.tgz",
- "integrity": "sha512-+EVDnWese61MdImcBNAgz/AhTcIZJaska/xsU3GWU9CP905x4a4qZdB7fExFMDu1Jlz5pJqNteFYYHCFMJhHfg==",
+ "version": "3.502.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.502.0.tgz",
+ "integrity": "sha512-FDyv6K4nCoHxbjLGS2H8ex8I0KDIiu4FJgVRPs140ZJy6gE5Pwxzv6YTzZGLMrnqcIs9gh065Lf6DjwMelZqaw==",
"optional": true,
"dependencies": {
- "@aws-sdk/types": "3.489.0",
- "@smithy/types": "^2.8.0",
+ "@aws-sdk/types": "3.502.0",
+ "@smithy/types": "^2.9.1",
"tslib": "^2.5.0"
},
"engines": {
@@ -521,14 +582,14 @@
}
},
"node_modules/@aws-sdk/middleware-recursion-detection": {
- "version": "3.489.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.489.0.tgz",
- "integrity": "sha512-m4rU+fTzziQcu9DKjRNZ4nQlXENEd2ZnJblJV4ONdWqqEjbmOgOj3P6aCCQlJdIbzuNvX1FBOZ5tY59ZpERo7Q==",
+ "version": "3.502.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.502.0.tgz",
+ "integrity": "sha512-hvbyGJbxeuezxOu8VfFmcV4ql1hKXLxHTe5FNYfEBat2KaZXVhc1Hg+4TvB06/53p+E8J99Afmumkqbxs2esUA==",
"optional": true,
"dependencies": {
- "@aws-sdk/types": "3.489.0",
- "@smithy/protocol-http": "^3.0.12",
- "@smithy/types": "^2.8.0",
+ "@aws-sdk/types": "3.502.0",
+ "@smithy/protocol-http": "^3.1.1",
+ "@smithy/types": "^2.9.1",
"tslib": "^2.5.0"
},
"engines": {
@@ -536,17 +597,17 @@
}
},
"node_modules/@aws-sdk/middleware-signing": {
- "version": "3.489.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-signing/-/middleware-signing-3.489.0.tgz",
- "integrity": "sha512-rlHcWYZn6Ym3v/u0DvKNDiD7ogIzEsHlerm0lowTiQbszkFobOiUClRTALwvsUZdAAztl706qO1OKbnGnD6Ubw==",
+ "version": "3.502.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-signing/-/middleware-signing-3.502.0.tgz",
+ "integrity": "sha512-4hF08vSzJ7L6sB+393gOFj3s2N6nLusYS0XrMW6wYNFU10IDdbf8Z3TZ7gysDJJHEGQPmTAesPEDBsasGWcMxg==",
"optional": true,
"dependencies": {
- "@aws-sdk/types": "3.489.0",
- "@smithy/property-provider": "^2.0.0",
- "@smithy/protocol-http": "^3.0.12",
- "@smithy/signature-v4": "^2.0.0",
- "@smithy/types": "^2.8.0",
- "@smithy/util-middleware": "^2.0.9",
+ "@aws-sdk/types": "3.502.0",
+ "@smithy/property-provider": "^2.1.1",
+ "@smithy/protocol-http": "^3.1.1",
+ "@smithy/signature-v4": "^2.1.1",
+ "@smithy/types": "^2.9.1",
+ "@smithy/util-middleware": "^2.1.1",
"tslib": "^2.5.0"
},
"engines": {
@@ -554,15 +615,15 @@
}
},
"node_modules/@aws-sdk/middleware-user-agent": {
- "version": "3.489.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.489.0.tgz",
- "integrity": "sha512-M54Cv2fAN3GGgdfUjLtZ4wFUIrfM/ivbXv4DgpcNsacEQ2g4H+weQgKp41X7XZW8MWAzl+k1zJaryK69RYNQkQ==",
+ "version": "3.502.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.502.0.tgz",
+ "integrity": "sha512-TxbBZbRiXPH0AUxegqiNd9aM9zNSbfjtBs5MEfcBsweeT/B2O7K1EjP9+CkB8Xmk/5FLKhAKLr19b1TNoE27rw==",
"optional": true,
"dependencies": {
- "@aws-sdk/types": "3.489.0",
- "@aws-sdk/util-endpoints": "3.489.0",
- "@smithy/protocol-http": "^3.0.12",
- "@smithy/types": "^2.8.0",
+ "@aws-sdk/types": "3.502.0",
+ "@aws-sdk/util-endpoints": "3.502.0",
+ "@smithy/protocol-http": "^3.1.1",
+ "@smithy/types": "^2.9.1",
"tslib": "^2.5.0"
},
"engines": {
@@ -570,16 +631,16 @@
}
},
"node_modules/@aws-sdk/region-config-resolver": {
- "version": "3.489.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.489.0.tgz",
- "integrity": "sha512-UvrnB78XTz9ddby7mr0vuUHn2MO3VTjzaIu+GQhyedMGQU0QlIQrYOlzbbu4LC5rL1O8FxFLUxRe/AAjgwyuGw==",
+ "version": "3.502.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.502.0.tgz",
+ "integrity": "sha512-mxmsX2AGgnSM+Sah7mcQCIneOsJQNiLX0COwEttuf8eO+6cLMAZvVudH3BnWTfea4/A9nuri9DLCqBvEmPrilg==",
"optional": true,
"dependencies": {
- "@aws-sdk/types": "3.489.0",
- "@smithy/node-config-provider": "^2.1.9",
- "@smithy/types": "^2.8.0",
- "@smithy/util-config-provider": "^2.1.0",
- "@smithy/util-middleware": "^2.0.9",
+ "@aws-sdk/types": "3.502.0",
+ "@smithy/node-config-provider": "^2.2.1",
+ "@smithy/types": "^2.9.1",
+ "@smithy/util-config-provider": "^2.2.1",
+ "@smithy/util-middleware": "^2.1.1",
"tslib": "^2.5.0"
},
"engines": {
@@ -587,47 +648,16 @@
}
},
"node_modules/@aws-sdk/token-providers": {
- "version": "3.489.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.489.0.tgz",
- "integrity": "sha512-hSgjB8CMQoA8EIQ0ripDjDtbBcWDSa+7vSBYPIzksyknaGERR/GUfGXLV2dpm5t17FgFG6irT5f3ZlBzarL8Dw==",
+ "version": "3.502.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.502.0.tgz",
+ "integrity": "sha512-RQgMgIXYlSf0xGl6EUeD+pqIPBlb7e29dbqHOBFc66hJVYUC2ULZX7Y+jLvcGIEaMiIaTPyvntZRFip+U+9hag==",
"optional": true,
"dependencies": {
- "@aws-crypto/sha256-browser": "3.0.0",
- "@aws-crypto/sha256-js": "3.0.0",
- "@aws-sdk/middleware-host-header": "3.489.0",
- "@aws-sdk/middleware-logger": "3.489.0",
- "@aws-sdk/middleware-recursion-detection": "3.489.0",
- "@aws-sdk/middleware-user-agent": "3.489.0",
- "@aws-sdk/region-config-resolver": "3.489.0",
- "@aws-sdk/types": "3.489.0",
- "@aws-sdk/util-endpoints": "3.489.0",
- "@aws-sdk/util-user-agent-browser": "3.489.0",
- "@aws-sdk/util-user-agent-node": "3.489.0",
- "@smithy/config-resolver": "^2.0.23",
- "@smithy/fetch-http-handler": "^2.3.2",
- "@smithy/hash-node": "^2.0.18",
- "@smithy/invalid-dependency": "^2.0.16",
- "@smithy/middleware-content-length": "^2.0.18",
- "@smithy/middleware-endpoint": "^2.3.0",
- "@smithy/middleware-retry": "^2.0.26",
- "@smithy/middleware-serde": "^2.0.16",
- "@smithy/middleware-stack": "^2.0.10",
- "@smithy/node-config-provider": "^2.1.9",
- "@smithy/node-http-handler": "^2.2.2",
- "@smithy/property-provider": "^2.0.0",
- "@smithy/protocol-http": "^3.0.12",
- "@smithy/shared-ini-file-loader": "^2.0.6",
- "@smithy/smithy-client": "^2.2.1",
- "@smithy/types": "^2.8.0",
- "@smithy/url-parser": "^2.0.16",
- "@smithy/util-base64": "^2.0.1",
- "@smithy/util-body-length-browser": "^2.0.1",
- "@smithy/util-body-length-node": "^2.1.0",
- "@smithy/util-defaults-mode-browser": "^2.0.24",
- "@smithy/util-defaults-mode-node": "^2.0.32",
- "@smithy/util-endpoints": "^1.0.8",
- "@smithy/util-retry": "^2.0.9",
- "@smithy/util-utf8": "^2.0.2",
+ "@aws-sdk/client-sso-oidc": "3.502.0",
+ "@aws-sdk/types": "3.502.0",
+ "@smithy/property-provider": "^2.1.1",
+ "@smithy/shared-ini-file-loader": "^2.3.1",
+ "@smithy/types": "^2.9.1",
"tslib": "^2.5.0"
},
"engines": {
@@ -635,12 +665,12 @@
}
},
"node_modules/@aws-sdk/types": {
- "version": "3.489.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.489.0.tgz",
- "integrity": "sha512-kcDtLfKog/p0tC4gAeqJqWxAiEzfe2LRPnKamvSG2Mjbthx4R/alE2dxyIq/wW+nvRv0fqR3OD5kD1+eVfdr/w==",
+ "version": "3.502.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.502.0.tgz",
+ "integrity": "sha512-M0DSPYe/gXhwD2QHgoukaZv5oDxhW3FfvYIrJptyqUq3OnPJBcDbihHjrE0PBtfh/9kgMZT60/fQ2NVFANfa2g==",
"optional": true,
"dependencies": {
- "@smithy/types": "^2.8.0",
+ "@smithy/types": "^2.9.1",
"tslib": "^2.5.0"
},
"engines": {
@@ -648,14 +678,14 @@
}
},
"node_modules/@aws-sdk/util-endpoints": {
- "version": "3.489.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.489.0.tgz",
- "integrity": "sha512-uGyG1u84ATX03mf7bT4xD9XD/vlYJGD5+RxMN/UpzeTfzXfh+jvCQWbOQ44z8ttFJWYQQqrLxkfpF/JgvALzLA==",
+ "version": "3.502.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.502.0.tgz",
+ "integrity": "sha512-6LKFlJPp2J24r1Kpfoz5ESQn+1v5fEjDB3mtUKRdpwarhm3syu7HbKlHCF3KbcCOyahobvLvhoedT78rJFEeeg==",
"optional": true,
"dependencies": {
- "@aws-sdk/types": "3.489.0",
- "@smithy/types": "^2.8.0",
- "@smithy/util-endpoints": "^1.0.8",
+ "@aws-sdk/types": "3.502.0",
+ "@smithy/types": "^2.9.1",
+ "@smithy/util-endpoints": "^1.1.1",
"tslib": "^2.5.0"
},
"engines": {
@@ -663,9 +693,9 @@
}
},
"node_modules/@aws-sdk/util-locate-window": {
- "version": "3.465.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.465.0.tgz",
- "integrity": "sha512-f+QNcWGswredzC1ExNAB/QzODlxwaTdXkNT5cvke2RLX8SFU5pYk6h4uCtWC0vWPELzOfMfloBrJefBzlarhsw==",
+ "version": "3.495.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.495.0.tgz",
+ "integrity": "sha512-MfaPXT0kLX2tQaR90saBT9fWQq2DHqSSJRzW+MZWsmF+y5LGCOhO22ac/2o6TKSQm7h0HRc2GaADqYYYor62yg==",
"optional": true,
"dependencies": {
"tslib": "^2.5.0"
@@ -675,26 +705,26 @@
}
},
"node_modules/@aws-sdk/util-user-agent-browser": {
- "version": "3.489.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.489.0.tgz",
- "integrity": "sha512-85B9KMsuMpAZauzWQ16r52ZBAHYnznW6BVitnBglsibN7oJKn10Hggt4QGuRhvQFCxQ8YhvBl7r+vQGFO4hxIw==",
+ "version": "3.502.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.502.0.tgz",
+ "integrity": "sha512-v8gKyCs2obXoIkLETAeEQ3AM+QmhHhst9xbM1cJtKUGsRlVIak/XyyD+kVE6kmMm1cjfudHpHKABWk9apQcIZQ==",
"optional": true,
"dependencies": {
- "@aws-sdk/types": "3.489.0",
- "@smithy/types": "^2.8.0",
+ "@aws-sdk/types": "3.502.0",
+ "@smithy/types": "^2.9.1",
"bowser": "^2.11.0",
"tslib": "^2.5.0"
}
},
"node_modules/@aws-sdk/util-user-agent-node": {
- "version": "3.489.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.489.0.tgz",
- "integrity": "sha512-CYdkBHig8sFNc0dv11Ni9WXvZQHeI5+z77OrDHKkbidFx/V4BDTuwZw4K1vWg62pzFOEfzunJFiULRcDZWJR3w==",
+ "version": "3.502.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.502.0.tgz",
+ "integrity": "sha512-9RjxpkGZKbTdl96tIJvAo+vZoz4P/cQh36SBUt9xfRfW0BtsaLyvSrvlR5wyUYhvRcC12Axqh/8JtnAPq//+Vw==",
"optional": true,
"dependencies": {
- "@aws-sdk/types": "3.489.0",
- "@smithy/node-config-provider": "^2.1.9",
- "@smithy/types": "^2.8.0",
+ "@aws-sdk/types": "3.502.0",
+ "@smithy/node-config-provider": "^2.2.1",
+ "@smithy/types": "^2.9.1",
"tslib": "^2.5.0"
},
"engines": {
@@ -2049,12 +2079,12 @@
}
},
"node_modules/@smithy/abort-controller": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-2.1.0.tgz",
- "integrity": "sha512-fyPlWpzXyKzDVRRMUbsfH7AV/2xX+dyZ5RqeEo6Hjz9YUvDMGVSnm88iHH0zqZ+XmH4+sH4+mhwRL76HXX65uw==",
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-2.1.1.tgz",
+ "integrity": "sha512-1+qdrUqLhaALYL0iOcN43EP6yAXXQ2wWZ6taf4S2pNGowmOc5gx+iMQv+E42JizNJjB0+gEadOXeV1Bf7JWL1Q==",
"optional": true,
"dependencies": {
- "@smithy/types": "^2.9.0",
+ "@smithy/types": "^2.9.1",
"tslib": "^2.5.0"
},
"engines": {
@@ -2062,15 +2092,15 @@
}
},
"node_modules/@smithy/config-resolver": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-2.1.0.tgz",
- "integrity": "sha512-NcR1Hw2uZgwHT7/KFsQH76YHb/mNGLFu+hS0ODnoFUpViE8ddIVOXm/8sgwdh0QvFPtWGzPn0Wcp19Cm31wv2A==",
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-2.1.1.tgz",
+ "integrity": "sha512-lxfLDpZm+AWAHPFZps5JfDoO9Ux1764fOgvRUBpHIO8HWHcSN1dkgsago1qLRVgm1BZ8RCm8cgv99QvtaOWIhw==",
"optional": true,
"dependencies": {
- "@smithy/node-config-provider": "^2.2.0",
- "@smithy/types": "^2.9.0",
- "@smithy/util-config-provider": "^2.2.0",
- "@smithy/util-middleware": "^2.1.0",
+ "@smithy/node-config-provider": "^2.2.1",
+ "@smithy/types": "^2.9.1",
+ "@smithy/util-config-provider": "^2.2.1",
+ "@smithy/util-middleware": "^2.1.1",
"tslib": "^2.5.0"
},
"engines": {
@@ -2078,18 +2108,18 @@
}
},
"node_modules/@smithy/core": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/@smithy/core/-/core-1.3.0.tgz",
- "integrity": "sha512-XoU9eiICwhxZIyAdugijyD/YqsumDQ3FgGyFSJibO60qoUkdfMGSjnIvrTemjFBdnDsj4B26F/ZRxSR3PUJbJQ==",
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/@smithy/core/-/core-1.3.1.tgz",
+ "integrity": "sha512-tf+NIu9FkOh312b6M9G4D68is4Xr7qptzaZGZUREELF8ysE1yLKphqt7nsomjKZVwW7WE5pDDex9idowNGRQ/Q==",
"optional": true,
"dependencies": {
- "@smithy/middleware-endpoint": "^2.4.0",
- "@smithy/middleware-retry": "^2.1.0",
- "@smithy/middleware-serde": "^2.1.0",
- "@smithy/protocol-http": "^3.1.0",
- "@smithy/smithy-client": "^2.3.0",
- "@smithy/types": "^2.9.0",
- "@smithy/util-middleware": "^2.1.0",
+ "@smithy/middleware-endpoint": "^2.4.1",
+ "@smithy/middleware-retry": "^2.1.1",
+ "@smithy/middleware-serde": "^2.1.1",
+ "@smithy/protocol-http": "^3.1.1",
+ "@smithy/smithy-client": "^2.3.1",
+ "@smithy/types": "^2.9.1",
+ "@smithy/util-middleware": "^2.1.1",
"tslib": "^2.5.0"
},
"engines": {
@@ -2097,15 +2127,15 @@
}
},
"node_modules/@smithy/credential-provider-imds": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-2.2.0.tgz",
- "integrity": "sha512-uqoRizHR8rKih6SuWcJRSv46tdqZk1zPEk6r909O87XO85j21MfUcxRKzbkORM2JOlaFhCH4geRcvlvYfK6EyQ==",
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-2.2.1.tgz",
+ "integrity": "sha512-7XHjZUxmZYnONheVQL7j5zvZXga+EWNgwEAP6OPZTi7l8J4JTeNh9aIOfE5fKHZ/ee2IeNOh54ZrSna+Vc6TFA==",
"optional": true,
"dependencies": {
- "@smithy/node-config-provider": "^2.2.0",
- "@smithy/property-provider": "^2.1.0",
- "@smithy/types": "^2.9.0",
- "@smithy/url-parser": "^2.1.0",
+ "@smithy/node-config-provider": "^2.2.1",
+ "@smithy/property-provider": "^2.1.1",
+ "@smithy/types": "^2.9.1",
+ "@smithy/url-parser": "^2.1.1",
"tslib": "^2.5.0"
},
"engines": {
@@ -2113,39 +2143,39 @@
}
},
"node_modules/@smithy/eventstream-codec": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-2.1.0.tgz",
- "integrity": "sha512-1yQnf8bSycsZ5ICXVMf8pEj1DQSUsw6/3H4nEdzH2+E3RZdNGPjVecQEm9kWPW7fvXvNvzT8MvZOQdk1IWoVTg==",
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-2.1.1.tgz",
+ "integrity": "sha512-E8KYBxBIuU4c+zrpR22VsVrOPoEDzk35bQR3E+xm4k6Pa6JqzkDOdMyf9Atac5GPNKHJBdVaQ4JtjdWX2rl/nw==",
"optional": true,
"dependencies": {
"@aws-crypto/crc32": "3.0.0",
- "@smithy/types": "^2.9.0",
- "@smithy/util-hex-encoding": "^2.1.0",
+ "@smithy/types": "^2.9.1",
+ "@smithy/util-hex-encoding": "^2.1.1",
"tslib": "^2.5.0"
}
},
"node_modules/@smithy/fetch-http-handler": {
- "version": "2.4.0",
- "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-2.4.0.tgz",
- "integrity": "sha512-fLhPNfbWG8vTcS9PsR1wjHaA54kDcSiAZKVuVAfjHleS7QDWjrCr1SDUqCB2yAc9NBLe2lIDbDL8+i9yoYhxoQ==",
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-2.4.1.tgz",
+ "integrity": "sha512-VYGLinPsFqH68lxfRhjQaSkjXM7JysUOJDTNjHBuN/ykyRb2f1gyavN9+VhhPTWCy32L4yZ2fdhpCs/nStEicg==",
"optional": true,
"dependencies": {
- "@smithy/protocol-http": "^3.1.0",
- "@smithy/querystring-builder": "^2.1.0",
- "@smithy/types": "^2.9.0",
- "@smithy/util-base64": "^2.1.0",
+ "@smithy/protocol-http": "^3.1.1",
+ "@smithy/querystring-builder": "^2.1.1",
+ "@smithy/types": "^2.9.1",
+ "@smithy/util-base64": "^2.1.1",
"tslib": "^2.5.0"
}
},
"node_modules/@smithy/hash-node": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-2.1.0.tgz",
- "integrity": "sha512-/B7b6NNjw+i4PlwsrYHmxmmrTxp2oRejgZH26HhXE77XWwAiPEI9iHu7GZR9fYhm7Fsj66Z9Bk6JA9aEvUC9/w==",
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-2.1.1.tgz",
+ "integrity": "sha512-Qhoq0N8f2OtCnvUpCf+g1vSyhYQrZjhSwvJ9qvR8BUGOtTXiyv2x1OD2e6jVGmlpC4E4ax1USHoyGfV9JFsACg==",
"optional": true,
"dependencies": {
- "@smithy/types": "^2.9.0",
- "@smithy/util-buffer-from": "^2.1.0",
- "@smithy/util-utf8": "^2.1.0",
+ "@smithy/types": "^2.9.1",
+ "@smithy/util-buffer-from": "^2.1.1",
+ "@smithy/util-utf8": "^2.1.1",
"tslib": "^2.5.0"
},
"engines": {
@@ -2153,19 +2183,19 @@
}
},
"node_modules/@smithy/invalid-dependency": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-2.1.0.tgz",
- "integrity": "sha512-hvryGI0KChV4jMgK/kwr6U4/HaYldzjiQAZ+c//QAMDoCp0KkP0Xt94XqAkr7Uq08577mAMW5U70YCaAx+KjSQ==",
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-2.1.1.tgz",
+ "integrity": "sha512-7WTgnKw+VPg8fxu2v9AlNOQ5yaz6RA54zOVB4f6vQuR0xFKd+RzlCpt0WidYTsye7F+FYDIaS/RnJW4pxjNInw==",
"optional": true,
"dependencies": {
- "@smithy/types": "^2.9.0",
+ "@smithy/types": "^2.9.1",
"tslib": "^2.5.0"
}
},
"node_modules/@smithy/is-array-buffer": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.1.0.tgz",
- "integrity": "sha512-XnQvn/6ie5kjFyeW94NqSjGGOdMuB2WnNmDWKHHLVMCR/Emu7B8pcAZX4k8H3tjDujXAQvfBrEgmPRq6FgqmZg==",
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.1.1.tgz",
+ "integrity": "sha512-xozSQrcUinPpNPNPds4S7z/FakDTh1MZWtRP/2vQtYB/u3HYrX2UXuZs+VhaKBd6Vc7g2XPr2ZtwGBNDN6fNKQ==",
"optional": true,
"dependencies": {
"tslib": "^2.5.0"
@@ -2175,13 +2205,13 @@
}
},
"node_modules/@smithy/middleware-content-length": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-2.1.0.tgz",
- "integrity": "sha512-XYhKZPuS8nnecdx0IGGUt1Nt2/ekoVOw1zal4c0ARRaLJEw+umFLxwHUelIeBocbdOcPCeZRE6pdk35Y2T2wpw==",
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-2.1.1.tgz",
+ "integrity": "sha512-rSr9ezUl9qMgiJR0UVtVOGEZElMdGFyl8FzWEF5iEKTlcWxGr2wTqGfDwtH3LAB7h+FPkxqv4ZU4cpuCN9Kf/g==",
"optional": true,
"dependencies": {
- "@smithy/protocol-http": "^3.1.0",
- "@smithy/types": "^2.9.0",
+ "@smithy/protocol-http": "^3.1.1",
+ "@smithy/types": "^2.9.1",
"tslib": "^2.5.0"
},
"engines": {
@@ -2189,17 +2219,17 @@
}
},
"node_modules/@smithy/middleware-endpoint": {
- "version": "2.4.0",
- "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-2.4.0.tgz",
- "integrity": "sha512-GMebLCihCxIlbPdA/l6WDpNJppIgW5OeTJkIAbqVArg1vFxZ92XhW+UwN12av5OAXswySGJ80/fpDFP7HmSyYg==",
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-2.4.1.tgz",
+ "integrity": "sha512-XPZTb1E2Oav60Ven3n2PFx+rX9EDsU/jSTA8VDamt7FXks67ekjPY/XrmmPDQaFJOTUHJNKjd8+kZxVO5Ael4Q==",
"optional": true,
"dependencies": {
- "@smithy/middleware-serde": "^2.1.0",
- "@smithy/node-config-provider": "^2.2.0",
- "@smithy/shared-ini-file-loader": "^2.3.0",
- "@smithy/types": "^2.9.0",
- "@smithy/url-parser": "^2.1.0",
- "@smithy/util-middleware": "^2.1.0",
+ "@smithy/middleware-serde": "^2.1.1",
+ "@smithy/node-config-provider": "^2.2.1",
+ "@smithy/shared-ini-file-loader": "^2.3.1",
+ "@smithy/types": "^2.9.1",
+ "@smithy/url-parser": "^2.1.1",
+ "@smithy/util-middleware": "^2.1.1",
"tslib": "^2.5.0"
},
"engines": {
@@ -2207,18 +2237,18 @@
}
},
"node_modules/@smithy/middleware-retry": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-2.1.0.tgz",
- "integrity": "sha512-lGEVds90hFyIAvypH58rwC6j9mrCR2ZwYbcxow7AgW6sWCCoBppz5FtLpgSg6QV/CTRh8K7w4kxGVx8LqINQBg==",
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-2.1.1.tgz",
+ "integrity": "sha512-eMIHOBTXro6JZ+WWzZWd/8fS8ht5nS5KDQjzhNMHNRcG5FkNTqcKpYhw7TETMYzbLfhO5FYghHy1vqDWM4FLDA==",
"optional": true,
"dependencies": {
- "@smithy/node-config-provider": "^2.2.0",
- "@smithy/protocol-http": "^3.1.0",
- "@smithy/service-error-classification": "^2.1.0",
- "@smithy/smithy-client": "^2.3.0",
- "@smithy/types": "^2.9.0",
- "@smithy/util-middleware": "^2.1.0",
- "@smithy/util-retry": "^2.1.0",
+ "@smithy/node-config-provider": "^2.2.1",
+ "@smithy/protocol-http": "^3.1.1",
+ "@smithy/service-error-classification": "^2.1.1",
+ "@smithy/smithy-client": "^2.3.1",
+ "@smithy/types": "^2.9.1",
+ "@smithy/util-middleware": "^2.1.1",
+ "@smithy/util-retry": "^2.1.1",
"tslib": "^2.5.0",
"uuid": "^8.3.2"
},
@@ -2227,12 +2257,12 @@
}
},
"node_modules/@smithy/middleware-serde": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-2.1.0.tgz",
- "integrity": "sha512-iysAUIDKsc354HMnYVQxMJEzNaOrQQvE86b1oSl2fRwcFqn+9TTi028a37PLFE+ccAiyVGjBjB8PBsAz9plUug==",
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-2.1.1.tgz",
+ "integrity": "sha512-D8Gq0aQBeE1pxf3cjWVkRr2W54t+cdM2zx78tNrVhqrDykRA7asq8yVJij1u5NDtKzKqzBSPYh7iW0svUKg76g==",
"optional": true,
"dependencies": {
- "@smithy/types": "^2.9.0",
+ "@smithy/types": "^2.9.1",
"tslib": "^2.5.0"
},
"engines": {
@@ -2240,12 +2270,12 @@
}
},
"node_modules/@smithy/middleware-stack": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-2.1.0.tgz",
- "integrity": "sha512-y5Ph/TWfO7oTfxNqKU+uAK5cFRTYeP16ReOmDweq+zQ8NQODDg7LSxsfQT4Wp0mhIvm0bt3pZp66T1YMtnihWw==",
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-2.1.1.tgz",
+ "integrity": "sha512-KPJhRlhsl8CjgGXK/DoDcrFGfAqoqvuwlbxy+uOO4g2Azn1dhH+GVfC3RAp+6PoL5PWPb+vt6Z23FP+Mr6qeCw==",
"optional": true,
"dependencies": {
- "@smithy/types": "^2.9.0",
+ "@smithy/types": "^2.9.1",
"tslib": "^2.5.0"
},
"engines": {
@@ -2253,14 +2283,14 @@
}
},
"node_modules/@smithy/node-config-provider": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-2.2.0.tgz",
- "integrity": "sha512-rU82PFR32Bxo4EMGUJ2BGG+K97zUp9j6SWjG83T2itmbXwA/+DoCc4xCON8kcmdej822x1yLcSzFiTeg0b472w==",
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-2.2.1.tgz",
+ "integrity": "sha512-epzK3x1xNxA9oJgHQ5nz+2j6DsJKdHfieb+YgJ7ATWxzNcB7Hc+Uya2TUck5MicOPhDV8HZImND7ZOecVr+OWg==",
"optional": true,
"dependencies": {
- "@smithy/property-provider": "^2.1.0",
- "@smithy/shared-ini-file-loader": "^2.3.0",
- "@smithy/types": "^2.9.0",
+ "@smithy/property-provider": "^2.1.1",
+ "@smithy/shared-ini-file-loader": "^2.3.1",
+ "@smithy/types": "^2.9.1",
"tslib": "^2.5.0"
},
"engines": {
@@ -2268,15 +2298,15 @@
}
},
"node_modules/@smithy/node-http-handler": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-2.3.0.tgz",
- "integrity": "sha512-8jcQaOdrD/X0VihhM2W/KtJ5fvKaT8UpNf/pl/epvLQ6MkAttIMaCLex6xk31BpFSPvS2+q65ZdBBjQ3cMOSiA==",
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-2.3.1.tgz",
+ "integrity": "sha512-gLA8qK2nL9J0Rk/WEZSvgin4AppvuCYRYg61dcUo/uKxvMZsMInL5I5ZdJTogOvdfVug3N2dgI5ffcUfS4S9PA==",
"optional": true,
"dependencies": {
- "@smithy/abort-controller": "^2.1.0",
- "@smithy/protocol-http": "^3.1.0",
- "@smithy/querystring-builder": "^2.1.0",
- "@smithy/types": "^2.9.0",
+ "@smithy/abort-controller": "^2.1.1",
+ "@smithy/protocol-http": "^3.1.1",
+ "@smithy/querystring-builder": "^2.1.1",
+ "@smithy/types": "^2.9.1",
"tslib": "^2.5.0"
},
"engines": {
@@ -2284,12 +2314,12 @@
}
},
"node_modules/@smithy/property-provider": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-2.1.0.tgz",
- "integrity": "sha512-6cpCSsgwbKHnl567SrthpqLgZ7e5jc7qPHG6wz9U2T24vcUp2yiG0vdAlH1QdTH20+/PGamKR0ZM35a08X1Tbg==",
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-2.1.1.tgz",
+ "integrity": "sha512-FX7JhhD/o5HwSwg6GLK9zxrMUrGnb3PzNBrcthqHKBc3dH0UfgEAU24xnJ8F0uow5mj17UeBEOI6o3CF2k7Mhw==",
"optional": true,
"dependencies": {
- "@smithy/types": "^2.9.0",
+ "@smithy/types": "^2.9.1",
"tslib": "^2.5.0"
},
"engines": {
@@ -2297,12 +2327,12 @@
}
},
"node_modules/@smithy/protocol-http": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-3.1.0.tgz",
- "integrity": "sha512-CGNzkKza1yUga7sv+U4gx3jbwSh5x42/9vy0E/NoR2HTFken2MuMc/bClxXAO0Z6EQoTYHHA6FMCREXwSP04lg==",
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-3.1.1.tgz",
+ "integrity": "sha512-6ZRTSsaXuSL9++qEwH851hJjUA0OgXdQFCs+VDw4tGH256jQ3TjYY/i34N4vd24RV3nrjNsgd1yhb57uMoKbzQ==",
"optional": true,
"dependencies": {
- "@smithy/types": "^2.9.0",
+ "@smithy/types": "^2.9.1",
"tslib": "^2.5.0"
},
"engines": {
@@ -2310,13 +2340,13 @@
}
},
"node_modules/@smithy/querystring-builder": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-2.1.0.tgz",
- "integrity": "sha512-8QColSkqn9TbvpX40zW0T8IrKcLXg7Um4bczm9qIYDRPh8T873WNIOWzYBw8chI8SWizMXbsSR95PFCP/YlgYw==",
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-2.1.1.tgz",
+ "integrity": "sha512-C/ko/CeEa8jdYE4gt6nHO5XDrlSJ3vdCG0ZAc6nD5ZIE7LBp0jCx4qoqp7eoutBu7VrGMXERSRoPqwi1WjCPbg==",
"optional": true,
"dependencies": {
- "@smithy/types": "^2.9.0",
- "@smithy/util-uri-escape": "^2.1.0",
+ "@smithy/types": "^2.9.1",
+ "@smithy/util-uri-escape": "^2.1.1",
"tslib": "^2.5.0"
},
"engines": {
@@ -2324,12 +2354,12 @@
}
},
"node_modules/@smithy/querystring-parser": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-2.1.0.tgz",
- "integrity": "sha512-+l17LQQxelslo5CHsLXwSw2F1J6Qmf64OgByreNnLR82gHkJ91ZbMFhxZeLTo2qXxEu0uqraMc4uNw8qE9A6bw==",
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-2.1.1.tgz",
+ "integrity": "sha512-H4+6jKGVhG1W4CIxfBaSsbm98lOO88tpDWmZLgkJpt8Zkk/+uG0FmmqMuCAc3HNM2ZDV+JbErxr0l5BcuIf/XQ==",
"optional": true,
"dependencies": {
- "@smithy/types": "^2.9.0",
+ "@smithy/types": "^2.9.1",
"tslib": "^2.5.0"
},
"engines": {
@@ -2337,24 +2367,24 @@
}
},
"node_modules/@smithy/service-error-classification": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-2.1.0.tgz",
- "integrity": "sha512-yBMJk4IfYqUxsPmc8P0YtWHd/Kbd0PP+kU0dgFksH6eiE2ZQJl7478xNtkUKp2QJLcooYEbA3gBFUza6ukXMiA==",
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-2.1.1.tgz",
+ "integrity": "sha512-txEdZxPUgM1PwGvDvHzqhXisrc5LlRWYCf2yyHfvITWioAKat7srQvpjMAvgzf0t6t7j8yHrryXU9xt7RZqFpw==",
"optional": true,
"dependencies": {
- "@smithy/types": "^2.9.0"
+ "@smithy/types": "^2.9.1"
},
"engines": {
"node": ">=14.0.0"
}
},
"node_modules/@smithy/shared-ini-file-loader": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-2.3.0.tgz",
- "integrity": "sha512-jgm7cjj0d08jIB9cp4idtpIUY590Twecv4xpijgl2IzkrPfBddzKTH4Zk+Zwfyk8ecz2T/7ihqtnNcq7Qdj9lw==",
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-2.3.1.tgz",
+ "integrity": "sha512-2E2kh24igmIznHLB6H05Na4OgIEilRu0oQpYXo3LCNRrawHAcfDKq9004zJs+sAMt2X5AbY87CUCJ7IpqpSgdw==",
"optional": true,
"dependencies": {
- "@smithy/types": "^2.9.0",
+ "@smithy/types": "^2.9.1",
"tslib": "^2.5.0"
},
"engines": {
@@ -2362,18 +2392,18 @@
}
},
"node_modules/@smithy/signature-v4": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-2.1.0.tgz",
- "integrity": "sha512-ONi89MBjxNtl497obaO/qGixsOedikTV3CAj3ZBPGY3IKykS8wQ2Wkctsx2T1J5B9OnynH0KuGGmgG91utX/7w==",
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-2.1.1.tgz",
+ "integrity": "sha512-Hb7xub0NHuvvQD3YwDSdanBmYukoEkhqBjqoxo+bSdC0ryV9cTfgmNjuAQhTPYB6yeU7hTR+sPRiFMlxqv6kmg==",
"optional": true,
"dependencies": {
- "@smithy/eventstream-codec": "^2.1.0",
- "@smithy/is-array-buffer": "^2.1.0",
- "@smithy/types": "^2.9.0",
- "@smithy/util-hex-encoding": "^2.1.0",
- "@smithy/util-middleware": "^2.1.0",
- "@smithy/util-uri-escape": "^2.1.0",
- "@smithy/util-utf8": "^2.1.0",
+ "@smithy/eventstream-codec": "^2.1.1",
+ "@smithy/is-array-buffer": "^2.1.1",
+ "@smithy/types": "^2.9.1",
+ "@smithy/util-hex-encoding": "^2.1.1",
+ "@smithy/util-middleware": "^2.1.1",
+ "@smithy/util-uri-escape": "^2.1.1",
+ "@smithy/util-utf8": "^2.1.1",
"tslib": "^2.5.0"
},
"engines": {
@@ -2381,16 +2411,16 @@
}
},
"node_modules/@smithy/smithy-client": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-2.3.0.tgz",
- "integrity": "sha512-oEaLdVmHcbdK8IHQ4yE7xOYK2nSkF2xXp6nRr5NhfKB5QTKNzpNsXLiGJgfmm7j0ol1S6BhjyBhi7tZ8M0JJtg==",
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-2.3.1.tgz",
+ "integrity": "sha512-YsTdU8xVD64r2pLEwmltrNvZV6XIAC50LN6ivDopdt+YiF/jGH6PY9zUOu0CXD/d8GMB8gbhnpPsdrjAXHS9QA==",
"optional": true,
"dependencies": {
- "@smithy/middleware-endpoint": "^2.4.0",
- "@smithy/middleware-stack": "^2.1.0",
- "@smithy/protocol-http": "^3.1.0",
- "@smithy/types": "^2.9.0",
- "@smithy/util-stream": "^2.1.0",
+ "@smithy/middleware-endpoint": "^2.4.1",
+ "@smithy/middleware-stack": "^2.1.1",
+ "@smithy/protocol-http": "^3.1.1",
+ "@smithy/types": "^2.9.1",
+ "@smithy/util-stream": "^2.1.1",
"tslib": "^2.5.0"
},
"engines": {
@@ -2398,9 +2428,9 @@
}
},
"node_modules/@smithy/types": {
- "version": "2.9.0",
- "resolved": "https://registry.npmjs.org/@smithy/types/-/types-2.9.0.tgz",
- "integrity": "sha512-ST1M87Lf2cLHRI+irEFRIHXGY08HHTAUbiRFYkmFyJdTMg3VDxkcm7DwW9/EgV3X8M6wDPrbIkx/RXONyttrQg==",
+ "version": "2.9.1",
+ "resolved": "https://registry.npmjs.org/@smithy/types/-/types-2.9.1.tgz",
+ "integrity": "sha512-vjXlKNXyprDYDuJ7UW5iobdmyDm6g8dDG+BFUncAg/3XJaN45Gy5RWWWUVgrzIK7S4R1KWgIX5LeJcfvSI24bw==",
"optional": true,
"dependencies": {
"tslib": "^2.5.0"
@@ -2410,23 +2440,23 @@
}
},
"node_modules/@smithy/url-parser": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-2.1.0.tgz",
- "integrity": "sha512-V3FMzNFCDwQNAgJdxI6Gj48qP9WAyvK59WE90hOoya3m8ey02uLDhWjZkl+505s7iTVVmJ7Mr7nKwG5vU2NIMQ==",
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-2.1.1.tgz",
+ "integrity": "sha512-qC9Bv8f/vvFIEkHsiNrUKYNl8uKQnn4BdhXl7VzQRP774AwIjiSMMwkbT+L7Fk8W8rzYVifzJNYxv1HwvfBo3Q==",
"optional": true,
"dependencies": {
- "@smithy/querystring-parser": "^2.1.0",
- "@smithy/types": "^2.9.0",
+ "@smithy/querystring-parser": "^2.1.1",
+ "@smithy/types": "^2.9.1",
"tslib": "^2.5.0"
}
},
"node_modules/@smithy/util-base64": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-2.1.0.tgz",
- "integrity": "sha512-zjXlHFm7S+TEDVA3j1rWGpuNDTlTxIWDqzwIfWUENT0VqCGDAdJITd8RYVjduf3u8HWMlgALkrY6B62UTESQ5w==",
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-2.1.1.tgz",
+ "integrity": "sha512-UfHVpY7qfF/MrgndI5PexSKVTxSZIdz9InghTFa49QOvuu9I52zLPLUHXvHpNuMb1iD2vmc6R+zbv/bdMipR/g==",
"optional": true,
"dependencies": {
- "@smithy/util-buffer-from": "^2.1.0",
+ "@smithy/util-buffer-from": "^2.1.1",
"tslib": "^2.5.0"
},
"engines": {
@@ -2434,18 +2464,18 @@
}
},
"node_modules/@smithy/util-body-length-browser": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-2.1.0.tgz",
- "integrity": "sha512-fkLY8W+jXGSkymLNe9NB7u6lGflHz6w1R+a3RxLOK6UrtwU4LBLskAP5Ag/zVPUNd5tmfv3/W6cTVzk8IBJuiw==",
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-2.1.1.tgz",
+ "integrity": "sha512-ekOGBLvs1VS2d1zM2ER4JEeBWAvIOUKeaFch29UjjJsxmZ/f0L3K3x0dEETgh3Q9bkZNHgT+rkdl/J/VUqSRag==",
"optional": true,
"dependencies": {
"tslib": "^2.5.0"
}
},
"node_modules/@smithy/util-body-length-node": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-2.2.0.tgz",
- "integrity": "sha512-ZLsqYH+s71y6Oc2Auws6zYI4LzsSi6N8+W+Gq7CwXaZm7QIKGiCeEunEwxo50OGAqJs0g6F9kCIwNxhlK1s4Aw==",
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-2.2.1.tgz",
+ "integrity": "sha512-/ggJG+ta3IDtpNVq4ktmEUtOkH1LW64RHB5B0hcr5ZaWBmo96UX2cIOVbjCqqDickTXqBWZ4ZO0APuaPrD7Abg==",
"optional": true,
"dependencies": {
"tslib": "^2.5.0"
@@ -2455,12 +2485,12 @@
}
},
"node_modules/@smithy/util-buffer-from": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.1.0.tgz",
- "integrity": "sha512-3w7AM0moGyBmr9gMBGE7+pqG3cjboRvmMyRhpesbJoOUHO0BV1Qrk00M/wQ3EHJAQXM3dehQfFNUf7sR6nT6+Q==",
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.1.1.tgz",
+ "integrity": "sha512-clhNjbyfqIv9Md2Mg6FffGVrJxw7bgK7s3Iax36xnfVj6cg0fUG7I4RH0XgXJF8bxi+saY5HR21g2UPKSxVCXg==",
"optional": true,
"dependencies": {
- "@smithy/is-array-buffer": "^2.1.0",
+ "@smithy/is-array-buffer": "^2.1.1",
"tslib": "^2.5.0"
},
"engines": {
@@ -2468,9 +2498,9 @@
}
},
"node_modules/@smithy/util-config-provider": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-2.2.0.tgz",
- "integrity": "sha512-D3Gx0BWXjsn1E25ikUt0+yc8oZnViTa5IHZ1JvD9J1NyyVS4c3IgHqbG64XRverEMnhzUb0EhqMTwQTY12in+w==",
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-2.2.1.tgz",
+ "integrity": "sha512-50VL/tx9oYYcjJn/qKqNy7sCtpD0+s8XEBamIFo4mFFTclKMNp+rsnymD796uybjiIquB7VCB/DeafduL0y2kw==",
"optional": true,
"dependencies": {
"tslib": "^2.5.0"
@@ -2480,14 +2510,14 @@
}
},
"node_modules/@smithy/util-defaults-mode-browser": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-2.1.0.tgz",
- "integrity": "sha512-zmXL4aKeBGBz02kDZdks2QfG+HGq99Tp4/ICPmu2OvSbwTOLjmlCnUrtZJTmLhX4etP3o0voOL9gFEa2PSjlJg==",
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-2.1.1.tgz",
+ "integrity": "sha512-lqLz/9aWRO6mosnXkArtRuQqqZBhNpgI65YDpww4rVQBuUT7qzKbDLG5AmnQTCiU4rOquaZO/Kt0J7q9Uic7MA==",
"optional": true,
"dependencies": {
- "@smithy/property-provider": "^2.1.0",
- "@smithy/smithy-client": "^2.3.0",
- "@smithy/types": "^2.9.0",
+ "@smithy/property-provider": "^2.1.1",
+ "@smithy/smithy-client": "^2.3.1",
+ "@smithy/types": "^2.9.1",
"bowser": "^2.11.0",
"tslib": "^2.5.0"
},
@@ -2496,17 +2526,17 @@
}
},
"node_modules/@smithy/util-defaults-mode-node": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-2.1.0.tgz",
- "integrity": "sha512-pVBaw2fBJMjjJj+AR69xQhjzYLZ5u9azdKyaAAjR16dthdBOcnczBClBVCfhb/Moj0ivIHnaXJ5AXCdbDok94g==",
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-2.1.1.tgz",
+ "integrity": "sha512-tYVrc+w+jSBfBd267KDnvSGOh4NMz+wVH7v4CClDbkdPfnjvImBZsOURncT5jsFwR9KCuDyPoSZq4Pa6+eCUrA==",
"optional": true,
"dependencies": {
- "@smithy/config-resolver": "^2.1.0",
- "@smithy/credential-provider-imds": "^2.2.0",
- "@smithy/node-config-provider": "^2.2.0",
- "@smithy/property-provider": "^2.1.0",
- "@smithy/smithy-client": "^2.3.0",
- "@smithy/types": "^2.9.0",
+ "@smithy/config-resolver": "^2.1.1",
+ "@smithy/credential-provider-imds": "^2.2.1",
+ "@smithy/node-config-provider": "^2.2.1",
+ "@smithy/property-provider": "^2.1.1",
+ "@smithy/smithy-client": "^2.3.1",
+ "@smithy/types": "^2.9.1",
"tslib": "^2.5.0"
},
"engines": {
@@ -2514,13 +2544,13 @@
}
},
"node_modules/@smithy/util-endpoints": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-1.1.0.tgz",
- "integrity": "sha512-gKzfdj5pyEOg1fVOsZVpVPRWAXbWqt9JgZdwU4cjKlJ57Fuccfk0ui5twh1TYvuJWtR2Tw3GwUmUuBM3qRWJJg==",
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-1.1.1.tgz",
+ "integrity": "sha512-sI4d9rjoaekSGEtq3xSb2nMjHMx8QXcz2cexnVyRWsy4yQ9z3kbDpX+7fN0jnbdOp0b3KSTZJZ2Yb92JWSanLw==",
"optional": true,
"dependencies": {
- "@smithy/node-config-provider": "^2.2.0",
- "@smithy/types": "^2.9.0",
+ "@smithy/node-config-provider": "^2.2.1",
+ "@smithy/types": "^2.9.1",
"tslib": "^2.5.0"
},
"engines": {
@@ -2528,9 +2558,9 @@
}
},
"node_modules/@smithy/util-hex-encoding": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-2.1.0.tgz",
- "integrity": "sha512-haxSIaBxn3p/lK+bEyqC32myHffacBLD61/HHzBGcG1Vo8dFTm5y0vhdR5R4wakW7H8Tr/czx+uckDOWZ1Km9Q==",
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-2.1.1.tgz",
+ "integrity": "sha512-3UNdP2pkYUUBGEXzQI9ODTDK+Tcu1BlCyDBaRHwyxhA+8xLP8agEKQq4MGmpjqb4VQAjq9TwlCQX0kP6XDKYLg==",
"optional": true,
"dependencies": {
"tslib": "^2.5.0"
@@ -2540,12 +2570,12 @@
}
},
"node_modules/@smithy/util-middleware": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-2.1.0.tgz",
- "integrity": "sha512-bKfhAsdjRyGmYDsJUW5hPsL3qofgPgLPsuV+V6nNGyD/kjMobwstiIpA3ddGFT+XDwVOIUHElg7I06/wOpwKiQ==",
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-2.1.1.tgz",
+ "integrity": "sha512-mKNrk8oz5zqkNcbcgAAepeJbmfUW6ogrT2Z2gDbIUzVzNAHKJQTYmH9jcy0jbWb+m7ubrvXKb6uMjkSgAqqsFA==",
"optional": true,
"dependencies": {
- "@smithy/types": "^2.9.0",
+ "@smithy/types": "^2.9.1",
"tslib": "^2.5.0"
},
"engines": {
@@ -2553,13 +2583,13 @@
}
},
"node_modules/@smithy/util-retry": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-2.1.0.tgz",
- "integrity": "sha512-igJw+/olhAUtocMbEMBjy8SKRTHfefS+qcgmMUVEBLFgLjqMfpc8EDVB1BebNBQ1rre5yLDbi2UHUz48eZNkPQ==",
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-2.1.1.tgz",
+ "integrity": "sha512-Mg+xxWPTeSPrthpC5WAamJ6PW4Kbo01Fm7lWM1jmGRvmrRdsd3192Gz2fBXAMURyXpaNxyZf6Hr/nQ4q70oVEA==",
"optional": true,
"dependencies": {
- "@smithy/service-error-classification": "^2.1.0",
- "@smithy/types": "^2.9.0",
+ "@smithy/service-error-classification": "^2.1.1",
+ "@smithy/types": "^2.9.1",
"tslib": "^2.5.0"
},
"engines": {
@@ -2567,18 +2597,18 @@
}
},
"node_modules/@smithy/util-stream": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-2.1.0.tgz",
- "integrity": "sha512-lcw9JVXLHvRawaXnfxdnGRw5pQM5c9XMEkBuMec+fIhGuPHIezqhQq7oO0jJcj0xwupJzW6HAvinktr9ozdKyg==",
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-2.1.1.tgz",
+ "integrity": "sha512-J7SMIpUYvU4DQN55KmBtvaMc7NM3CZ2iWICdcgaovtLzseVhAqFRYqloT3mh0esrFw+3VEK6nQFteFsTqZSECQ==",
"optional": true,
"dependencies": {
- "@smithy/fetch-http-handler": "^2.4.0",
- "@smithy/node-http-handler": "^2.3.0",
- "@smithy/types": "^2.9.0",
- "@smithy/util-base64": "^2.1.0",
- "@smithy/util-buffer-from": "^2.1.0",
- "@smithy/util-hex-encoding": "^2.1.0",
- "@smithy/util-utf8": "^2.1.0",
+ "@smithy/fetch-http-handler": "^2.4.1",
+ "@smithy/node-http-handler": "^2.3.1",
+ "@smithy/types": "^2.9.1",
+ "@smithy/util-base64": "^2.1.1",
+ "@smithy/util-buffer-from": "^2.1.1",
+ "@smithy/util-hex-encoding": "^2.1.1",
+ "@smithy/util-utf8": "^2.1.1",
"tslib": "^2.5.0"
},
"engines": {
@@ -2586,9 +2616,9 @@
}
},
"node_modules/@smithy/util-uri-escape": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-2.1.0.tgz",
- "integrity": "sha512-ZHYFGyF9o/MHGMGtsHfkxnn2DhGRZlDIFGNgipu4K3x8jMEVahQ+tGnlkFVMM2QrSQHCcjICbBTJ5JEgaD5+Jg==",
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-2.1.1.tgz",
+ "integrity": "sha512-saVzI1h6iRBUVSqtnlOnc9ssU09ypo7n+shdQ8hBTZno/9rZ3AuRYvoHInV57VF7Qn7B+pFJG7qTzFiHxWlWBw==",
"optional": true,
"dependencies": {
"tslib": "^2.5.0"
@@ -2598,12 +2628,12 @@
}
},
"node_modules/@smithy/util-utf8": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.1.0.tgz",
- "integrity": "sha512-RnNNedYLpsNPQocMhr0nGEz0mGKdzI5dBi0h7vvmimULtBlyElgX1/hXozlkurIgx8R3bSy14/oRtmDsFClifg==",
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.1.1.tgz",
+ "integrity": "sha512-BqTpzYEcUMDwAKr7/mVRUtHDhs6ZoXDi9NypMvMfOr/+u1NW7JgqodPDECiiLboEm6bobcPcECxzjtQh865e9A==",
"optional": true,
"dependencies": {
- "@smithy/util-buffer-from": "^2.1.0",
+ "@smithy/util-buffer-from": "^2.1.1",
"tslib": "^2.5.0"
},
"engines": {
@@ -2660,6 +2690,14 @@
"@types/node": "*"
}
},
+ "node_modules/@types/http-proxy": {
+ "version": "1.17.14",
+ "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.14.tgz",
+ "integrity": "sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w==",
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
"node_modules/@types/istanbul-lib-coverage": {
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz",
@@ -2896,6 +2934,12 @@
"resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
"integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg=="
},
+ "node_modules/asap": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
+ "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==",
+ "dev": true
+ },
"node_modules/async-mutex": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/async-mutex/-/async-mutex-0.4.1.tgz",
@@ -2905,6 +2949,12 @@
"tslib": "^2.4.0"
}
},
+ "node_modules/asynckit": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
+ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
+ "dev": true
+ },
"node_modules/b4a": {
"version": "1.6.4",
"resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.4.tgz",
@@ -3150,14 +3200,12 @@
}
},
"node_modules/bson": {
- "version": "4.7.2",
- "resolved": "https://registry.npmjs.org/bson/-/bson-4.7.2.tgz",
- "integrity": "sha512-Ry9wCtIZ5kGqkJoi6aD8KjxFZEx78guTQDnpXWiNthsxzrxAK/i8E6pCHAIZTbaEFWcOCvbecMukfK7XUvyLpQ==",
- "dependencies": {
- "buffer": "^5.6.0"
- },
+ "version": "5.5.1",
+ "resolved": "https://registry.npmjs.org/bson/-/bson-5.5.1.tgz",
+ "integrity": "sha512-ix0EwukN2EpC0SRWIj/7B5+A6uQMQy6KMREI9qQqvgpkV2frH63T0UDVd1SYedL6dNCmDBYB3QtXi4ISk9YT+g==",
+ "dev": true,
"engines": {
- "node": ">=6.9.0"
+ "node": ">=14.20.1"
}
},
"node_modules/buffer": {
@@ -3398,12 +3446,33 @@
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
"dev": true
},
+ "node_modules/combined-stream": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
+ "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
+ "dev": true,
+ "dependencies": {
+ "delayed-stream": "~1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
"node_modules/commondir": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
"integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==",
"dev": true
},
+ "node_modules/component-emitter": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.1.tgz",
+ "integrity": "sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/concat-map": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
@@ -3447,6 +3516,12 @@
"resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
"integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ=="
},
+ "node_modules/cookiejar": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.4.tgz",
+ "integrity": "sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==",
+ "dev": true
+ },
"node_modules/cors": {
"version": "2.8.5",
"resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz",
@@ -3494,6 +3569,15 @@
"node": ">= 8"
}
},
+ "node_modules/dateformat": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.2.tgz",
+ "integrity": "sha512-EelsCzH0gMC2YmXuMeaZ3c6md1sUJQxyb1XXc4xaisi/K6qKukqZhKPrEQyRkdNIncgYyLoDTReq0nNyuKerTg==",
+ "dev": true,
+ "engines": {
+ "node": "*"
+ }
+ },
"node_modules/debug": {
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
@@ -3544,6 +3628,15 @@
"node": ">= 0.4"
}
},
+ "node_modules/delayed-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
+ "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
"node_modules/depd": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
@@ -3570,6 +3663,16 @@
"node": ">=8"
}
},
+ "node_modules/dezalgo": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz",
+ "integrity": "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==",
+ "dev": true,
+ "dependencies": {
+ "asap": "^2.0.0",
+ "wrappy": "1"
+ }
+ },
"node_modules/diff-sequences": {
"version": "29.6.3",
"resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz",
@@ -3608,9 +3711,9 @@
"integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="
},
"node_modules/electron-to-chromium": {
- "version": "1.4.648",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.648.tgz",
- "integrity": "sha512-EmFMarXeqJp9cUKu/QEciEApn0S/xRcpZWuAm32U7NgoZCimjsilKXHRO9saeEW55eHZagIDg6XTUOv32w9pjg==",
+ "version": "1.4.650",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.650.tgz",
+ "integrity": "sha512-sYSQhJCJa4aGA1wYol5cMQgekDBlbVfTRavlGZVr3WZpDdOPcp6a6xUnFfrt8TqZhsBYYbDxJZCjGfHuGupCRQ==",
"dev": true
},
"node_modules/emittery": {
@@ -3729,6 +3832,37 @@
"url": "https://opencollective.com/eslint"
}
},
+ "node_modules/eslint-formatter-html": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/eslint-formatter-html/-/eslint-formatter-html-2.4.0.tgz",
+ "integrity": "sha512-6Fh4apVWiRVcXUHZ/1W+rpRIdn+1mIRrrWFst88m/uHX68yOI+O5/qB7OrrMJ0KcRR9GKprhGlDYfzLTaI73BQ==",
+ "dev": true,
+ "dependencies": {
+ "pako": "^2.1.0",
+ "strip-ansi": "^5.2.0"
+ }
+ },
+ "node_modules/eslint-formatter-html/node_modules/ansi-regex": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz",
+ "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/eslint-formatter-html/node_modules/strip-ansi": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^4.1.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
"node_modules/eslint-scope": {
"version": "7.2.2",
"resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz",
@@ -3872,6 +4006,11 @@
"node": ">= 0.6"
}
},
+ "node_modules/eventemitter3": {
+ "version": "4.0.7",
+ "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz",
+ "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw=="
+ },
"node_modules/execa": {
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz",
@@ -4027,6 +4166,12 @@
"integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
"dev": true
},
+ "node_modules/fast-safe-stringify": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz",
+ "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==",
+ "dev": true
+ },
"node_modules/fast-xml-parser": {
"version": "4.2.5",
"resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.2.5.tgz",
@@ -4050,9 +4195,9 @@
}
},
"node_modules/fastq": {
- "version": "1.16.0",
- "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.16.0.tgz",
- "integrity": "sha512-ifCoaXsDrsdkWTtiNJX5uzHDsrck5TzfKKDcuFFTIrrc/BS076qgEIfoIy1VeZqViznfKiysPYTh/QeHtnIsYA==",
+ "version": "1.17.0",
+ "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.0.tgz",
+ "integrity": "sha512-zGygtijUMT7jnk3h26kUms3BkSDp4IfIKjmnqI2tvx6nuBfiF1UqOxbnLfzdv+apBy+53oaImsKtMw/xYbW+1w==",
"dev": true,
"dependencies": {
"reusify": "^1.0.4"
@@ -4197,7 +4342,6 @@
"version": "1.15.5",
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz",
"integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==",
- "dev": true,
"funding": [
{
"type": "individual",
@@ -4213,6 +4357,35 @@
}
}
},
+ "node_modules/form-data": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
+ "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
+ "dev": true,
+ "dependencies": {
+ "asynckit": "^0.4.0",
+ "combined-stream": "^1.0.8",
+ "mime-types": "^2.1.12"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/formidable": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/formidable/-/formidable-2.1.2.tgz",
+ "integrity": "sha512-CM3GuJ57US06mlpQ47YcunuUZ9jpm8Vx+P2CGt2j7HpgkKZO/DJYQ0Bobim8G6PFQmK5lOqOOdUXboU+h73A4g==",
+ "dev": true,
+ "dependencies": {
+ "dezalgo": "^1.0.4",
+ "hexoid": "^1.0.0",
+ "once": "^1.4.0",
+ "qs": "^6.11.0"
+ },
+ "funding": {
+ "url": "https://ko-fi.com/tunnckoCore/commissions"
+ }
+ },
"node_modules/forwarded": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
@@ -4430,6 +4603,15 @@
"node": ">= 0.4"
}
},
+ "node_modules/hexoid": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/hexoid/-/hexoid-1.0.0.tgz",
+ "integrity": "sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/html-escaper": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz",
@@ -4451,6 +4633,42 @@
"node": ">= 0.8"
}
},
+ "node_modules/http-proxy": {
+ "version": "1.18.1",
+ "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz",
+ "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==",
+ "dependencies": {
+ "eventemitter3": "^4.0.0",
+ "follow-redirects": "^1.0.0",
+ "requires-port": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=8.0.0"
+ }
+ },
+ "node_modules/http-proxy-middleware": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz",
+ "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==",
+ "dependencies": {
+ "@types/http-proxy": "^1.17.8",
+ "http-proxy": "^1.18.1",
+ "is-glob": "^4.0.1",
+ "is-plain-obj": "^3.0.0",
+ "micromatch": "^4.0.2"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ },
+ "peerDependencies": {
+ "@types/express": "^4.17.13"
+ },
+ "peerDependenciesMeta": {
+ "@types/express": {
+ "optional": true
+ }
+ }
+ },
"node_modules/https-proxy-agent": {
"version": "7.0.2",
"resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.2.tgz",
@@ -4695,6 +4913,17 @@
"node": ">=8"
}
},
+ "node_modules/is-plain-obj": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz",
+ "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/is-stream": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
@@ -4927,39 +5156,6 @@
"node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
- "node_modules/jest-cli": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz",
- "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==",
- "dev": true,
- "dependencies": {
- "@jest/core": "^29.7.0",
- "@jest/test-result": "^29.7.0",
- "@jest/types": "^29.6.3",
- "chalk": "^4.0.0",
- "create-jest": "^29.7.0",
- "exit": "^0.1.2",
- "import-local": "^3.0.2",
- "jest-config": "^29.7.0",
- "jest-util": "^29.7.0",
- "jest-validate": "^29.7.0",
- "yargs": "^17.3.1"
- },
- "bin": {
- "jest": "bin/jest.js"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- },
- "peerDependencies": {
- "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0"
- },
- "peerDependenciesMeta": {
- "node-notifier": {
- "optional": true
- }
- }
- },
"node_modules/jest-config": {
"version": "29.7.0",
"resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz",
@@ -5099,6 +5295,27 @@
"fsevents": "^2.3.2"
}
},
+ "node_modules/jest-html-reporter": {
+ "version": "3.10.2",
+ "resolved": "https://registry.npmjs.org/jest-html-reporter/-/jest-html-reporter-3.10.2.tgz",
+ "integrity": "sha512-XRBa5ylHPUQoo8aJXEEdKsTruieTdlPbRktMx9WG9evMTxzJEKGFMaw5x+sQxJuClWdNR72GGwbOaz+6HIlksA==",
+ "dev": true,
+ "dependencies": {
+ "@jest/test-result": "^29.0.2",
+ "@jest/types": "^29.0.2",
+ "dateformat": "3.0.2",
+ "mkdirp": "^1.0.3",
+ "strip-ansi": "6.0.1",
+ "xmlbuilder": "15.0.0"
+ },
+ "engines": {
+ "node": ">=4.8.3"
+ },
+ "peerDependencies": {
+ "jest": "19.x - 29.x",
+ "typescript": "^3.7.x || ^4.3.x || ^5.x"
+ }
+ },
"node_modules/jest-leak-detector": {
"version": "29.7.0",
"resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz",
@@ -5453,6 +5670,39 @@
"url": "https://github.com/chalk/supports-color?sponsor=1"
}
},
+ "node_modules/jest/node_modules/jest-cli": {
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz",
+ "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==",
+ "dev": true,
+ "dependencies": {
+ "@jest/core": "^29.7.0",
+ "@jest/test-result": "^29.7.0",
+ "@jest/types": "^29.6.3",
+ "chalk": "^4.0.0",
+ "create-jest": "^29.7.0",
+ "exit": "^0.1.2",
+ "import-local": "^3.0.2",
+ "jest-config": "^29.7.0",
+ "jest-util": "^29.7.0",
+ "jest-validate": "^29.7.0",
+ "yargs": "^17.3.1"
+ },
+ "bin": {
+ "jest": "bin/jest.js"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ },
+ "peerDependencies": {
+ "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0"
+ },
+ "peerDependenciesMeta": {
+ "node-notifier": {
+ "optional": true
+ }
+ }
+ },
"node_modules/js-tokens": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
@@ -5708,7 +5958,6 @@
"version": "4.0.5",
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
"integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
- "dev": true,
"dependencies": {
"braces": "^3.0.2",
"picomatch": "^2.3.1"
@@ -5767,6 +6016,18 @@
"node": "*"
}
},
+ "node_modules/mkdirp": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
+ "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
+ "dev": true,
+ "bin": {
+ "mkdirp": "bin/cmd.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
"node_modules/mongodb": {
"version": "4.17.2",
"resolved": "https://registry.npmjs.org/mongodb/-/mongodb-4.17.2.tgz",
@@ -5830,15 +6091,6 @@
"node": ">=14.20.1"
}
},
- "node_modules/mongodb-memory-server-core/node_modules/bson": {
- "version": "5.5.1",
- "resolved": "https://registry.npmjs.org/bson/-/bson-5.5.1.tgz",
- "integrity": "sha512-ix0EwukN2EpC0SRWIj/7B5+A6uQMQy6KMREI9qQqvgpkV2frH63T0UDVd1SYedL6dNCmDBYB3QtXi4ISk9YT+g==",
- "dev": true,
- "engines": {
- "node": ">=14.20.1"
- }
- },
"node_modules/mongodb-memory-server-core/node_modules/camelcase": {
"version": "6.3.0",
"resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz",
@@ -5948,6 +6200,17 @@
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
"dev": true
},
+ "node_modules/mongodb/node_modules/bson": {
+ "version": "4.7.2",
+ "resolved": "https://registry.npmjs.org/bson/-/bson-4.7.2.tgz",
+ "integrity": "sha512-Ry9wCtIZ5kGqkJoi6aD8KjxFZEx78guTQDnpXWiNthsxzrxAK/i8E6pCHAIZTbaEFWcOCvbecMukfK7XUvyLpQ==",
+ "dependencies": {
+ "buffer": "^5.6.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
"node_modules/mongoose": {
"version": "8.1.1",
"resolved": "https://registry.npmjs.org/mongoose/-/mongoose-8.1.1.tgz",
@@ -6374,6 +6637,12 @@
"node": ">=6"
}
},
+ "node_modules/pako": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/pako/-/pako-2.1.0.tgz",
+ "integrity": "sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==",
+ "dev": true
+ },
"node_modules/parent-module": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
@@ -6818,6 +7087,11 @@
"node": ">=0.10.0"
}
},
+ "node_modules/requires-port": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
+ "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ=="
+ },
"node_modules/resolve": {
"version": "1.22.8",
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz",
@@ -7276,6 +7550,108 @@
"integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==",
"optional": true
},
+ "node_modules/superagent": {
+ "version": "8.1.2",
+ "resolved": "https://registry.npmjs.org/superagent/-/superagent-8.1.2.tgz",
+ "integrity": "sha512-6WTxW1EB6yCxV5VFOIPQruWGHqc3yI7hEmZK6h+pyk69Lk/Ut7rLUY6W/ONF2MjBuGjvmMiIpsrVJ2vjrHlslA==",
+ "dev": true,
+ "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"
+ },
+ "engines": {
+ "node": ">=6.4.0 <13 || >=14"
+ }
+ },
+ "node_modules/superagent/node_modules/debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "dev": true,
+ "dependencies": {
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/superagent/node_modules/lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "dev": true,
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/superagent/node_modules/mime": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz",
+ "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==",
+ "dev": true,
+ "bin": {
+ "mime": "cli.js"
+ },
+ "engines": {
+ "node": ">=4.0.0"
+ }
+ },
+ "node_modules/superagent/node_modules/ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "dev": true
+ },
+ "node_modules/superagent/node_modules/semver": {
+ "version": "7.5.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
+ "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
+ "dev": true,
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/superagent/node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "dev": true
+ },
+ "node_modules/supertest": {
+ "version": "6.3.4",
+ "resolved": "https://registry.npmjs.org/supertest/-/supertest-6.3.4.tgz",
+ "integrity": "sha512-erY3HFDG0dPnhw4U+udPfrzXa4xhSG+n4rxfRuZWCUvjFWwKl+OxWf/7zk50s84/fAAs7vf5QAb9uRa0cCykxw==",
+ "dev": true,
+ "dependencies": {
+ "methods": "^1.1.2",
+ "superagent": "^8.1.2"
+ },
+ "engines": {
+ "node": ">=6.4.0"
+ }
+ },
"node_modules/supports-color": {
"version": "5.5.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
@@ -7437,6 +7813,20 @@
"node": ">= 0.6"
}
},
+ "node_modules/typescript": {
+ "version": "5.3.3",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz",
+ "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==",
+ "dev": true,
+ "peer": true,
+ "bin": {
+ "tsc": "bin/tsc",
+ "tsserver": "bin/tsserver"
+ },
+ "engines": {
+ "node": ">=14.17"
+ }
+ },
"node_modules/undefsafe": {
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz",
@@ -7621,6 +8011,15 @@
"node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
+ "node_modules/xmlbuilder": {
+ "version": "15.0.0",
+ "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.0.0.tgz",
+ "integrity": "sha512-KLu/G0DoWhkncQ9eHSI6s0/w+T4TM7rQaLhtCaL6tORv8jFlJPlnGumsgTcGfYeS1qZ/IHqrvDG7zJZ4d7e+nw==",
+ "dev": true,
+ "engines": {
+ "node": ">=8.0"
+ }
+ },
"node_modules/y18n": {
"version": "5.0.8",
"resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
diff --git a/server/package.json b/server/package.json
index 690b6fb7..e13e3e90 100644
--- a/server/package.json
+++ b/server/package.json
@@ -10,8 +10,12 @@
"install-client": "cd client && npm install",
"heroku-postbuild": "npm run install-client && npm run build",
"build": "cd client && npm run build",
- "test": "jest"
+ "test": "jest",
+ "lint": "eslint . -f html -o eslint-report.html --max-warnings 10000"
},
+ "eslintIgnore": [
+ "*/node_modules/**/*"
+ ],
"engines": {
"node": "14.x"
},
@@ -23,6 +27,7 @@
"cors": "^2.8.5",
"dotenv": "^16.0.1",
"express": "^4.18.2",
+ "http-proxy-middleware": "^2.0.6",
"mongodb": "^4.8.1",
"nodemailer": "^6.7.8",
"nodemon": "^2.0.19",
@@ -32,7 +37,10 @@
"devDependencies": {
"@shelf/jest-mongodb": "^4.2.0",
"eslint": "^8.56.0",
+ "eslint-formatter-html": "^2.4.0",
"jest": "^29.7.0",
- "mongoose": "^8.1.1"
+ "jest-html-reporter": "^3.10.2",
+ "mongoose": "^8.1.1",
+ "supertest": "^6.3.4"
}
}
diff --git a/server/prod-back.yml b/server/prod-back.yml
index 53322695..b50f0d60 100644
--- a/server/prod-back.yml
+++ b/server/prod-back.yml
@@ -17,18 +17,42 @@ spec:
spec:
containers:
- name: khagu-dev-back
- image: "khagu/khagu-dev-back:1" # Remplacer par votre repo
+ image: "europe-west1-docker.pkg.dev/khagu-devops/khagu-dev-images-registry/khagu-dev-back:1.0.9.3" # Remplacer par votre repo
ports:
- containerPort: 7000
---
+apiVersion: "autoscaling/v2"
+kind: "HorizontalPodAutoscaler"
+metadata:
+ name: "khagu-dev-front-hpa"
+ namespace: default
+ labels:
+ app: "khagu-dev-back"
+spec:
+ scaleTargetRef:
+ kind: "Deployment"
+ name: "khagu-dev-back"
+ apiVersion: "apps/v1"
+ minReplicas: 1
+ maxReplicas: 5
+ metrics:
+ - type: "Resource"
+ resource:
+ name: "cpu"
+ target:
+ type: "Utilization"
+ averageUtilization: 80
+---
apiVersion: v1
kind: Service
metadata:
name: back-service
+ namespace: default
spec:
selector:
app: khagu-dev-back
- type: ClusterIP
+ type: NodePort
ports:
- - port: 7000
- targetPort: 7000
\ No newline at end of file
+ - port: 7000
+ targetPort: 7000
+---
\ No newline at end of file
diff --git a/terraform/cluster/cluster.tf b/terraform/cluster/cluster.tf
new file mode 100644
index 00000000..411e522e
--- /dev/null
+++ b/terraform/cluster/cluster.tf
@@ -0,0 +1,58 @@
+resource "google_container_cluster" "primary" {
+ name = var.cluster_name # Name of the cluster
+ location = var.gcp_region # Region where the cluster will be created
+
+ remove_default_node_pool = true # Remove the default node pool
+ initial_node_count = 1 # Number of nodes in the cluster initially
+
+ logging_service = "logging.googleapis.com/kubernetes" # Enable Stackdriver Logging
+ monitoring_service = "monitoring.googleapis.com/kubernetes" # Enable Stackdriver Monitoring
+
+ node_pool_auto_config {
+ network_tags {
+ tags = ["foo", "bar"]
+ }
+ }
+ node_config {
+ disk_type = "pd-standard" # Disk type for the nodes
+ disk_size_gb = 50 # Disk size for the nodes
+ }
+ cluster_autoscaling {
+ enabled = true # Enable cluster autoscaling
+ resource_limits {
+ resource_type = "cpu" # Resource type for autoscaling
+ minimum = 1 # Minimum number of nodes
+ maximum = 8 # Maximum number of nodes
+ }
+
+ resource_limits {
+ resource_type = "memory" # Resource type for autoscaling
+ minimum = 6 # Minimum memory in GB
+ maximum = 64 # Maximum memory in GB
+ }
+ }
+
+}
+
+resource "google_container_node_pool" "primary_preemptible_nodes" {
+ name = var.pool_name
+ location = var.gcp_region
+ cluster = google_container_cluster.primary.name
+
+ node_config {
+ preemptible = true
+ machine_type = "e2-standard-4"
+
+ # Google recommends custom service accounts that have cloud-platform scope and permissions granted via IAM Roles.
+ service_account = var.sa_email
+ oauth_scopes = [
+ "https://www.googleapis.com/auth/cloud-platform"
+ ]
+ disk_type = "pd-standard"
+ disk_size_gb = 50
+ }
+ autoscaling {
+ min_node_count = 1
+ max_node_count = 8
+ }
+}
diff --git a/terraform/cluster/variables.tf b/terraform/cluster/variables.tf
new file mode 100644
index 00000000..c38db6cc
--- /dev/null
+++ b/terraform/cluster/variables.tf
@@ -0,0 +1,21 @@
+variable "gcp_region" {
+ description = "The GCP region to deploy the cluster."
+}
+
+# variable "gcp_region" {
+# description = "The GCP region to deploy the cluster."
+
+# }
+
+variable "pool_name" {
+ description = "The name of the node pool."
+}
+
+
+variable "cluster_name" {
+ description = "The name of the GKE cluster."
+}
+
+variable "sa_email" {
+ description = "The email of the service account."
+}
\ No newline at end of file
diff --git a/terraform/main.tf b/terraform/main.tf
new file mode 100644
index 00000000..c093d0a6
--- /dev/null
+++ b/terraform/main.tf
@@ -0,0 +1,19 @@
+provider "google" {
+ project = var.gcp_project
+ region = var.gcp_region
+ zone = var.gcp_zone
+}
+
+module "service_account" {
+ source = "./service_account"
+ gcp_project = var.gcp_project
+ role_iam = var.role_iam
+}
+
+module "cluster" {
+ source = "./cluster"
+ cluster_name = var.cluster_name
+ gcp_region = var.gcp_region
+ sa_email = module.service_account.sa_email
+ pool_name = var.pool_name
+}
\ No newline at end of file
diff --git a/terraform/providers.tf b/terraform/providers.tf
new file mode 100644
index 00000000..d74f9b66
--- /dev/null
+++ b/terraform/providers.tf
@@ -0,0 +1,6 @@
+terraform {
+ backend "gcs" {
+ bucket = "khagu-devops"
+ prefix = "terraform/state"
+ }
+}
\ No newline at end of file
diff --git a/terraform/service_account/outputs.tf b/terraform/service_account/outputs.tf
new file mode 100644
index 00000000..7363c552
--- /dev/null
+++ b/terraform/service_account/outputs.tf
@@ -0,0 +1,3 @@
+output "sa_email" {
+ value = google_service_account.cluster_service_account.email
+}
\ No newline at end of file
diff --git a/terraform/service_account/service_account.tf b/terraform/service_account/service_account.tf
new file mode 100644
index 00000000..9cde1742
--- /dev/null
+++ b/terraform/service_account/service_account.tf
@@ -0,0 +1,15 @@
+# service_account / service_account.tf
+resource "google_service_account" "cluster_service_account" {
+ project = var.gcp_project
+ account_id = "cluster-service-account"
+ display_name = "Service Account linked for the cluster"
+}
+
+resource "google_project_iam_binding" "cluster_service_account" {
+ project = var.gcp_project
+ for_each = toset(var.role_iam)
+ role = each.value
+ members = [
+ "serviceAccount:${google_service_account.cluster_service_account.email}"
+ ]
+}
\ No newline at end of file
diff --git a/terraform/service_account/variables.tf b/terraform/service_account/variables.tf
new file mode 100644
index 00000000..7bb8610a
--- /dev/null
+++ b/terraform/service_account/variables.tf
@@ -0,0 +1,7 @@
+variable "gcp_project" {
+ description = "The GCP project to deploy the app."
+}
+
+variable "role_iam" {
+ description = "The role to assign to the service account."
+}
\ No newline at end of file
diff --git a/terraform/variables.tf b/terraform/variables.tf
new file mode 100644
index 00000000..53c3cf13
--- /dev/null
+++ b/terraform/variables.tf
@@ -0,0 +1,38 @@
+####### Variables Providers #######
+variable "gcp_project" {
+ type = string
+ default = "khagu-devops" # Change me
+ description = "The GCP project to deploy the app."
+}
+variable "gcp_zone" {
+ type = string
+ default = "europe-west2-b" # Change me if you need
+ description = "The GCP zone to deploy the app."
+}
+
+variable "gcp_region" {
+ type = string
+ default = "europe-west2" # Change me if you need
+ description = "The GCP region to deploy the app."
+}
+
+
+####### Variables Cluster #######
+variable "cluster_name" {
+ type = string
+ default = "khagu-dev-cluster" # Change me if you need
+ description = "The name of the GKE cluster."
+}
+
+variable "pool_name" {
+ type = string
+ default = "khagu-dev-pool" # Change me if you need
+ description = "The name of the node pool."
+
+}
+####### Variables Service Account #######
+variable "role_iam" {
+ type = list(string)
+ default = [ "roles/storage.objectViewer", "roles/container.hostServiceAgentUser", "roles/container.admin","roles/container.clusterAdmin" ]
+ description = "The roles to assign to the service account."
+}
\ No newline at end of file