From 1133ae4ae9c18f1de7610d6e0ef4ccf37c985a60 Mon Sep 17 00:00:00 2001 From: Maidul Islam Date: Wed, 12 Jul 2023 16:10:09 -0400 Subject: [PATCH 01/49] bring back secret engine for dev --- docker-compose.dev.yml | 47 +++++++++++++++++++++--------------------- nginx/default.dev.conf | 20 +++++++++--------- 2 files changed, 33 insertions(+), 34 deletions(-) diff --git a/docker-compose.dev.yml b/docker-compose.dev.yml index 597354229..6ca233209 100644 --- a/docker-compose.dev.yml +++ b/docker-compose.dev.yml @@ -58,30 +58,29 @@ services: networks: - infisical-dev - # git-app: - # container_name: infisical-dev-git-app - # restart: unless-stopped - # depends_on: - # - mongo - # - smtp-server - # - backend - # - frontend - # volumes: - # - ./secret-engine/src:/app/src/ # mounted whole src to avoid missing reload on new files - # ports: - # - "3000:3001" - # build: - # context: ./secret-engine - # dockerfile: Dockerfile.dev - # command: npm run start - # env_file: ./secret-engine/.env - # environment: - # - NODE_ENV=development - # - MONGO_URL=mongodb://root:example@mongo:27017/?authSource=admin - # networks: - # - infisical-dev - # extra_hosts: - # - "host.docker.internal:host-gateway" + git-app: + container_name: infisical-dev-git-app + restart: unless-stopped + depends_on: + - mongo + - smtp-server + - backend + - frontend + volumes: + - ./secret-engine/src:/app/src/ # mounted whole src to avoid missing reload on new files + ports: + - "3000:3001" + build: + context: ./secret-engine + dockerfile: Dockerfile.dev + env_file: ./secret-engine/.env + environment: + - NODE_ENV=development + - MONGO_URL=mongodb://root:example@mongo:27017/?authSource=admin + networks: + - infisical-dev + extra_hosts: + - "host.docker.internal:host-gateway" mongo: image: mongo diff --git a/nginx/default.dev.conf b/nginx/default.dev.conf index b03755427..2390602a8 100644 --- a/nginx/default.dev.conf +++ b/nginx/default.dev.conf @@ -14,19 +14,19 @@ server { proxy_cookie_path / "/; secure; HttpOnly; SameSite=strict"; } - # location /git-app-api { - # proxy_set_header X-Real-RIP $remote_addr; - # proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + location /git-app-api { + proxy_set_header X-Real-RIP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - # proxy_set_header Host $http_host; - # proxy_set_header X-NginX-Proxy true; + proxy_set_header Host $http_host; + proxy_set_header X-NginX-Proxy true; - # proxy_pass http://git-app:3000/; - # proxy_redirect off; - # # proxy_redirect http://localhost:8080/ http://frontend.example.com/; + proxy_pass http://git-app:3000/; + proxy_redirect off; + # proxy_redirect http://localhost:8080/ http://frontend.example.com/; - # proxy_cookie_path / "/; secure; HttpOnly; SameSite=strict"; - # } + proxy_cookie_path / "/; secure; HttpOnly; SameSite=strict"; + } location / { include /etc/nginx/mime.types; From f022f6d3ee1210c1cfb87b5f2d7aaffaa6591bf6 Mon Sep 17 00:00:00 2001 From: Maidul Islam Date: Wed, 12 Jul 2023 16:39:45 -0400 Subject: [PATCH 02/49] update secret engine port --- docker-compose.dev.yml | 2 +- nginx/default.dev.conf | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docker-compose.dev.yml b/docker-compose.dev.yml index 6ca233209..460ac27d0 100644 --- a/docker-compose.dev.yml +++ b/docker-compose.dev.yml @@ -69,7 +69,7 @@ services: volumes: - ./secret-engine/src:/app/src/ # mounted whole src to avoid missing reload on new files ports: - - "3000:3001" + - "3005:3005" build: context: ./secret-engine dockerfile: Dockerfile.dev diff --git a/nginx/default.dev.conf b/nginx/default.dev.conf index 2390602a8..6e2ab9bc9 100644 --- a/nginx/default.dev.conf +++ b/nginx/default.dev.conf @@ -21,7 +21,7 @@ server { proxy_set_header Host $http_host; proxy_set_header X-NginX-Proxy true; - proxy_pass http://git-app:3000/; + proxy_pass http://git-app:3005/; proxy_redirect off; # proxy_redirect http://localhost:8080/ http://frontend.example.com/; From 67d5f52aca9399b0c195faa22efc5cba705a8592 Mon Sep 17 00:00:00 2001 From: Maidul Islam Date: Thu, 13 Jul 2023 19:56:49 -0400 Subject: [PATCH 03/49] extract correct params after git app install --- frontend/src/pages/secret-scanning/index.tsx | 8 ++++---- secret-engine/src/index.ts | 1 + 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/frontend/src/pages/secret-scanning/index.tsx b/frontend/src/pages/secret-scanning/index.tsx index e5ca8ed89..867f35a39 100644 --- a/frontend/src/pages/secret-scanning/index.tsx +++ b/frontend/src/pages/secret-scanning/index.tsx @@ -10,7 +10,7 @@ import { RiskStatus } from "../api/secret-scanning/updateRiskStatus"; export default function SecretScanning() { const router = useRouter() - const { state, installationId} = router.query + const queryParams = router.query const [integrationEnabled, setIntegrationStatus] = useState(false) const [gitRisks, setGitRisks] = useState([]); const [selectedRiskStatus, setSelectedRiskStatus] = useState(""); @@ -28,9 +28,9 @@ export default function SecretScanning() { } const linkInstallation = async () => { - if (typeof state === "string" && typeof installationId === "string"){ + if (typeof queryParams.state === "string" && typeof queryParams.installation_id === "string"){ try { - await linkGitAppInstallationWithOrganization(installationId as string, state as string) + await linkGitAppInstallationWithOrganization(queryParams.installation_id as string, queryParams.state as string) console.log("installation verification complete") }catch (e){ console.log("app installation is stale, start new session", e) @@ -46,7 +46,7 @@ export default function SecretScanning() { fetchInstallationStatus() linkInstallation() fetchRisks() - },[state, installationId]) + },[queryParams.state, queryParams.installation_id]) const generateNewIntegrationSession = async () => { const session = await createNewIntegrationSession(String(localStorage.getItem("orgData.id"))) diff --git a/secret-engine/src/index.ts b/secret-engine/src/index.ts index 09dfedd44..00c7d2eb0 100644 --- a/secret-engine/src/index.ts +++ b/secret-engine/src/index.ts @@ -61,6 +61,7 @@ export = async (app: Probot) => { const { commits, repository, installation, pusher } = payload; const [owner, repo] = repository.full_name.split('/'); + console.log(payload) const installationLinkToOrgExists = await GitAppOrganizationInstallation.findOne({ installationId: installation.id }).lean() if (!installationLinkToOrgExists) { return From d69465517f9f689e69d76d13f0c1d521d75f6b8d Mon Sep 17 00:00:00 2001 From: Vladyslav Matsiiako Date: Fri, 14 Jul 2023 16:26:18 -0700 Subject: [PATCH 04/49] Added styling --- .../system-outline-69-document-scan.json | 1 + .../components/v2/EmptyState/EmptyState.tsx | 2 +- frontend/src/layouts/AppLayout/AppLayout.tsx | 22 ++- frontend/src/pages/org/[id]/billing/index.tsx | 1 + .../pages/org/[id]/secret-scanning/index.tsx | 85 ++++++++++ frontend/src/pages/secret-scanning.tsx | 15 ++ frontend/src/pages/secret-scanning/index.tsx | 156 ------------------ .../components/SecretScanningLogsTable.tsx | 111 +++++++++++++ .../views/SecretScanning/components/index.tsx | 1 + .../BillingSettingsPage.tsx | 4 +- 10 files changed, 227 insertions(+), 171 deletions(-) create mode 100644 frontend/public/lotties/system-outline-69-document-scan.json create mode 100644 frontend/src/pages/org/[id]/secret-scanning/index.tsx create mode 100644 frontend/src/pages/secret-scanning.tsx delete mode 100644 frontend/src/pages/secret-scanning/index.tsx create mode 100644 frontend/src/views/SecretScanning/components/SecretScanningLogsTable.tsx create mode 100644 frontend/src/views/SecretScanning/components/index.tsx diff --git a/frontend/public/lotties/system-outline-69-document-scan.json b/frontend/public/lotties/system-outline-69-document-scan.json new file mode 100644 index 000000000..03664451e --- /dev/null +++ b/frontend/public/lotties/system-outline-69-document-scan.json @@ -0,0 +1 @@ +{"v":"5.8.1","fr":60,"ip":0,"op":91,"w":500,"h":500,"nm":"69-document-scan-outline","ddd":0,"assets":[{"id":"comp_0","nm":"in-scan","fr":60,"layers":[{"ddd":0,"ind":1,"ty":4,"nm":".primary.design","cl":"primary design","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[250.003,250.003,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[8.644,0],[0,0],[0,8.643],[-8.644,0],[0,0],[0,-8.643]],"o":[[0,0],[-8.644,0],[0,-8.643],[0,0],[8.644,0],[0,8.643]],"v":[[171.875,15.65],[-171.875,15.65],[-187.525,0],[-171.875,-15.65],[171.875,-15.65],[187.525,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.070588235294,0.074509803922,0.192156862745,1],"ix":4,"x":"var $bm_rt;\n$bm_rt = comp('69-document-scan-outline').layer('Color & Stroke Change').effect('Primary')('Color');"},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":60,"op":300,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".primary.design","cl":"primary design","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[250.001,250.001,0],"ix":2,"l":2},"a":{"a":0,"k":[250.001,250.001,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[8.644,0],[0,8.643],[0,0],[2.858,0],[0,0],[0,8.643],[-8.644,0],[0,0],[0,-20.117],[0,0]],"o":[[-8.644,0],[0,0],[0,-2.858],[0,0],[-8.644,0],[0,-8.643],[0,0],[20.117,0],[0,0],[0,8.643]],"v":[[46.875,62.525],[31.225,46.875],[31.225,-26.041],[26.041,-31.225],[-46.875,-31.225],[-62.525,-46.875],[-46.875,-62.525],[26.041,-62.525],[62.525,-26.041],[62.525,46.875]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.070588235294,0.074509803922,0.192156862745,1],"ix":4,"x":"var $bm_rt;\n$bm_rt = comp('69-document-scan-outline').layer('Color & Stroke Change').effect('Primary')('Color');"},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[374.998,125.001],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[8.644,0],[0,0],[0,20.117],[0,0],[-8.644,0],[0,-8.643],[0,0],[-2.857,0],[0,0],[0,-8.643]],"o":[[0,0],[-20.117,0],[0,0],[0,-8.643],[8.644,0],[0,0],[0,2.858],[0,0],[8.644,0],[0,8.643]],"v":[[46.875,62.524],[-26.042,62.524],[-62.525,26.041],[-62.525,-46.875],[-46.875,-62.524],[-31.224,-46.875],[-31.224,26.041],[-26.042,31.225],[46.875,31.225],[62.525,46.875]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.070588235294,0.074509803922,0.192156862745,1],"ix":4,"x":"var $bm_rt;\n$bm_rt = comp('69-document-scan-outline').layer('Color & Stroke Change').effect('Primary')('Color');"},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[124.998,374.999],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[8.644,0],[0,8.643],[0,0],[-20.117,0],[0,0],[0,-8.643],[8.644,0],[0,0],[0,-2.858],[0,0]],"o":[[-8.644,0],[0,0],[0,-20.117],[0,0],[8.644,0],[0,8.643],[0,0],[-2.857,0],[0,0],[0,8.643]],"v":[[-46.875,62.524],[-62.525,46.875],[-62.525,-26.042],[-26.042,-62.524],[46.875,-62.524],[62.525,-46.875],[46.875,-31.225],[-26.042,-31.225],[-31.224,-26.042],[-31.224,46.875]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.070588235294,0.074509803922,0.192156862745,1],"ix":4,"x":"var $bm_rt;\n$bm_rt = comp('69-document-scan-outline').layer('Color & Stroke Change').effect('Primary')('Color');"},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[124.998,124.998],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[20.117,0],[0,0],[0,8.643],[-8.644,0],[0,0],[0,2.858],[0,0],[-8.644,0],[0,-8.643],[0,0]],"o":[[0,0],[-8.644,0],[0,-8.643],[0,0],[2.857,0],[0,0],[0,-8.643],[8.644,0],[0,0],[0,20.117]],"v":[[26.042,62.525],[-46.875,62.525],[-62.525,46.875],[-46.875,31.225],[26.042,31.225],[31.224,26.041],[31.224,-46.875],[46.875,-62.525],[62.525,-46.875],[62.525,26.041]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.070588235294,0.074509803922,0.192156862745,1],"ix":4,"x":"var $bm_rt;\n$bm_rt = comp('69-document-scan-outline').layer('Color & Stroke Change').effect('Primary')('Color');"},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[375.004,375.003],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false}],"ip":60,"op":300,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":".primary.design","cl":"primary design","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[250.004,250.003,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0,"y":1},"o":{"x":0.167,"y":0.167},"t":10,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[0.004,0],[-0.004,0]],"c":false}]},{"t":60,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-171.875,0],[171.875,0]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.070588235294,0.074509803922,0.192156862745,1],"ix":3,"x":"var $bm_rt;\n$bm_rt = comp('69-document-scan-outline').layer('Color & Stroke Change').effect('Primary')('Color');"},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":31.3,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":10,"op":60,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":".primary.design","cl":"primary design","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[250.001,250.001,0],"ix":2,"l":2},"a":{"a":0,"k":[250.001,250.001,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":0,"s":[{"i":[[0,0],[0,0],[0,-0.25],[0,0]],"o":[[0,0],[0.25,0],[0,0],[0,0]],"v":[[-125.038,123.001],[-123.451,123.001],[-122.998,123.454],[-122.998,125.04]],"c":false}]},{"i":{"x":0.04,"y":1},"o":{"x":0.167,"y":0.167},"t":10,"s":[{"i":[[0,0],[0,0],[0,-11.506],[0,0]],"o":[[0,0],[11.506,0],[0,0],[0,0]],"v":[[-126.875,33.125],[-53.959,33.125],[-33.125,53.959],[-33.125,126.875]],"c":false}]},{"t":45,"s":[{"i":[[0,0],[0,0],[0,-11.506],[0,0]],"o":[[0,0],[11.506,0],[0,0],[0,0]],"v":[[-46.875,-46.875],[26.041,-46.875],[46.875,-26.041],[46.875,46.875]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":0,"s":[{"i":[[0,0],[0,0],[0,0.25],[0,0]],"o":[[0,0],[-0.25,0],[0,0],[0,0]],"v":[[-124.956,126.998],[-126.543,126.998],[-126.996,126.545],[-126.996,124.959]],"c":false}]},{"i":{"x":0.04,"y":1},"o":{"x":0.167,"y":0.167},"t":10,"s":[{"i":[[0,0],[0,0],[0,11.506],[0,0]],"o":[[0,0],[-11.506,0],[0,0],[0,0]],"v":[[-123.126,216.872],[-196.042,216.872],[-216.875,196.039],[-216.875,123.123]],"c":false}]},{"t":45,"s":[{"i":[[0,0],[0,0],[0,11.506],[0,0]],"o":[[0,0],[-11.506,0],[0,0],[0,0]],"v":[[-203.126,296.872],[-276.042,296.872],[-296.875,276.039],[-296.875,203.123]],"c":false}]}],"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ind":2,"ty":"sh","ix":3,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":0,"s":[{"i":[[0,0],[0,0],[-0.25,0],[0,0]],"o":[[0,0],[0,-0.25],[0,0],[0,0]],"v":[[-126.996,125.04],[-126.996,123.454],[-126.543,123.001],[-124.956,123.001]],"c":false}]},{"i":{"x":0.04,"y":1},"o":{"x":0.167,"y":0.167},"t":10,"s":[{"i":[[0,0],[0,0],[-11.506,0],[0,0]],"o":[[0,0],[0,-11.506],[0,0],[0,0]],"v":[[-216.875,126.872],[-216.875,53.956],[-196.042,33.122],[-123.126,33.122]],"c":false}]},{"t":45,"s":[{"i":[[0,0],[0,0],[-11.506,0],[0,0]],"o":[[0,0],[0,-11.506],[0,0],[0,0]],"v":[[-296.875,46.872],[-296.875,-26.044],[-276.042,-46.878],[-203.126,-46.878]],"c":false}]}],"ix":2},"nm":"Path 3","mn":"ADBE Vector Shape - Group","hd":false},{"ind":3,"ty":"sh","ix":4,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":0,"s":[{"i":[[0,0],[0,0],[0.25,0],[0,0]],"o":[[0,0],[0,0.25],[0,0],[0,0]],"v":[[-122.998,124.959],[-122.998,126.545],[-123.451,126.998],[-125.038,126.998]],"c":false}]},{"i":{"x":0.04,"y":1},"o":{"x":0.167,"y":0.167},"t":10,"s":[{"i":[[0,0],[0,0],[11.506,0],[0,0]],"o":[[0,0],[0,11.506],[0,0],[0,0]],"v":[[-33.119,123.127],[-33.119,196.043],[-53.952,216.877],[-126.868,216.877]],"c":false}]},{"t":45,"s":[{"i":[[0,0],[0,0],[11.506,0],[0,0]],"o":[[0,0],[0,11.506],[0,0],[0,0]],"v":[[46.881,203.127],[46.881,276.043],[26.048,296.877],[-46.868,296.877]],"c":false}]}],"ix":2},"nm":"Path 4","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.070588235294,0.074509803922,0.192156862745,1],"ix":3,"x":"var $bm_rt;\n$bm_rt = comp('69-document-scan-outline').layer('Color & Stroke Change').effect('Primary')('Color');"},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":31.3,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[374.998,125.001],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":5,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":1,"op":60,"st":0,"bm":0}]},{"id":"comp_1","nm":"hover-scan","fr":60,"layers":[{"ddd":0,"ind":1,"ty":4,"nm":".primary.design","cl":"primary design","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[250.003,250.003,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[8.644,0],[0,0],[0,8.643],[-8.644,0],[0,0],[0,-8.643]],"o":[[0,0],[-8.644,0],[0,-8.643],[0,0],[8.644,0],[0,8.643]],"v":[[171.875,15.65],[-171.875,15.65],[-187.525,0],[-171.875,-15.65],[171.875,-15.65],[187.525,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.070588235294,0.074509803922,0.192156862745,1],"ix":4,"x":"var $bm_rt;\n$bm_rt = comp('69-document-scan-outline').layer('Color & Stroke Change').effect('Primary')('Color');"},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":90,"op":300,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".primary.design","cl":"primary design","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[250.001,250.001,0],"ix":2,"l":2},"a":{"a":0,"k":[250.001,250.001,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[8.644,0],[0,8.643],[0,0],[2.858,0],[0,0],[0,8.643],[-8.644,0],[0,0],[0,-20.117],[0,0]],"o":[[-8.644,0],[0,0],[0,-2.858],[0,0],[-8.644,0],[0,-8.643],[0,0],[20.117,0],[0,0],[0,8.643]],"v":[[46.875,62.525],[31.225,46.875],[31.225,-26.041],[26.041,-31.225],[-46.875,-31.225],[-62.525,-46.875],[-46.875,-62.525],[26.041,-62.525],[62.525,-26.041],[62.525,46.875]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.070588235294,0.074509803922,0.192156862745,1],"ix":4,"x":"var $bm_rt;\n$bm_rt = comp('69-document-scan-outline').layer('Color & Stroke Change').effect('Primary')('Color');"},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[374.998,125.001],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[8.644,0],[0,0],[0,20.117],[0,0],[-8.644,0],[0,-8.643],[0,0],[-2.857,0],[0,0],[0,-8.643]],"o":[[0,0],[-20.117,0],[0,0],[0,-8.643],[8.644,0],[0,0],[0,2.858],[0,0],[8.644,0],[0,8.643]],"v":[[46.875,62.524],[-26.042,62.524],[-62.525,26.041],[-62.525,-46.875],[-46.875,-62.524],[-31.224,-46.875],[-31.224,26.041],[-26.042,31.225],[46.875,31.225],[62.525,46.875]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.070588235294,0.074509803922,0.192156862745,1],"ix":4,"x":"var $bm_rt;\n$bm_rt = comp('69-document-scan-outline').layer('Color & Stroke Change').effect('Primary')('Color');"},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[124.998,374.999],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[8.644,0],[0,8.643],[0,0],[-20.117,0],[0,0],[0,-8.643],[8.644,0],[0,0],[0,-2.858],[0,0]],"o":[[-8.644,0],[0,0],[0,-20.117],[0,0],[8.644,0],[0,8.643],[0,0],[-2.857,0],[0,0],[0,8.643]],"v":[[-46.875,62.524],[-62.525,46.875],[-62.525,-26.042],[-26.042,-62.524],[46.875,-62.524],[62.525,-46.875],[46.875,-31.225],[-26.042,-31.225],[-31.224,-26.042],[-31.224,46.875]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.070588235294,0.074509803922,0.192156862745,1],"ix":4,"x":"var $bm_rt;\n$bm_rt = comp('69-document-scan-outline').layer('Color & Stroke Change').effect('Primary')('Color');"},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[124.998,124.998],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[20.117,0],[0,0],[0,8.643],[-8.644,0],[0,0],[0,2.858],[0,0],[-8.644,0],[0,-8.643],[0,0]],"o":[[0,0],[-8.644,0],[0,-8.643],[0,0],[2.857,0],[0,0],[0,-8.643],[8.644,0],[0,0],[0,20.117]],"v":[[26.042,62.525],[-46.875,62.525],[-62.525,46.875],[-46.875,31.225],[26.042,31.225],[31.224,26.041],[31.224,-46.875],[46.875,-62.525],[62.525,-46.875],[62.525,26.041]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.070588235294,0.074509803922,0.192156862745,1],"ix":4,"x":"var $bm_rt;\n$bm_rt = comp('69-document-scan-outline').layer('Color & Stroke Change').effect('Primary')('Color');"},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[375.004,375.003],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false}],"ip":90,"op":300,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":".primary.design","cl":"primary design","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[250.003,250.003,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[8.644,0],[0,0],[0,8.643],[-8.644,0],[0,0],[0,-8.643]],"o":[[0,0],[-8.644,0],[0,-8.643],[0,0],[8.644,0],[0,8.643]],"v":[[171.875,15.65],[-171.875,15.65],[-187.525,0],[-171.875,-15.65],[171.875,-15.65],[187.525,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.070588235294,0.074509803922,0.192156862745,1],"ix":4,"x":"var $bm_rt;\n$bm_rt = comp('69-document-scan-outline').layer('Color & Stroke Change').effect('Primary')('Color');"},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":1,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":".primary.design","cl":"primary design","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[250.001,250.001,0],"ix":2,"l":2},"a":{"a":0,"k":[250.001,250.001,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[8.644,0],[0,8.643],[0,0],[2.858,0],[0,0],[0,8.643],[-8.644,0],[0,0],[0,-20.117],[0,0]],"o":[[-8.644,0],[0,0],[0,-2.858],[0,0],[-8.644,0],[0,-8.643],[0,0],[20.117,0],[0,0],[0,8.643]],"v":[[46.875,62.525],[31.225,46.875],[31.225,-26.041],[26.041,-31.225],[-46.875,-31.225],[-62.525,-46.875],[-46.875,-62.525],[26.041,-62.525],[62.525,-26.041],[62.525,46.875]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.070588235294,0.074509803922,0.192156862745,1],"ix":4,"x":"var $bm_rt;\n$bm_rt = comp('69-document-scan-outline').layer('Color & Stroke Change').effect('Primary')('Color');"},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[374.998,125.001],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[8.644,0],[0,0],[0,20.117],[0,0],[-8.644,0],[0,-8.643],[0,0],[-2.857,0],[0,0],[0,-8.643]],"o":[[0,0],[-20.117,0],[0,0],[0,-8.643],[8.644,0],[0,0],[0,2.858],[0,0],[8.644,0],[0,8.643]],"v":[[46.875,62.524],[-26.042,62.524],[-62.525,26.041],[-62.525,-46.875],[-46.875,-62.524],[-31.224,-46.875],[-31.224,26.041],[-26.042,31.225],[46.875,31.225],[62.525,46.875]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.070588235294,0.074509803922,0.192156862745,1],"ix":4,"x":"var $bm_rt;\n$bm_rt = comp('69-document-scan-outline').layer('Color & Stroke Change').effect('Primary')('Color');"},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[124.998,374.999],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[8.644,0],[0,8.643],[0,0],[-20.117,0],[0,0],[0,-8.643],[8.644,0],[0,0],[0,-2.858],[0,0]],"o":[[-8.644,0],[0,0],[0,-20.117],[0,0],[8.644,0],[0,8.643],[0,0],[-2.857,0],[0,0],[0,8.643]],"v":[[-46.875,62.524],[-62.525,46.875],[-62.525,-26.042],[-26.042,-62.524],[46.875,-62.524],[62.525,-46.875],[46.875,-31.225],[-26.042,-31.225],[-31.224,-26.042],[-31.224,46.875]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.070588235294,0.074509803922,0.192156862745,1],"ix":4,"x":"var $bm_rt;\n$bm_rt = comp('69-document-scan-outline').layer('Color & Stroke Change').effect('Primary')('Color');"},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[124.998,124.998],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[20.117,0],[0,0],[0,8.643],[-8.644,0],[0,0],[0,2.858],[0,0],[-8.644,0],[0,-8.643],[0,0]],"o":[[0,0],[-8.644,0],[0,-8.643],[0,0],[2.857,0],[0,0],[0,-8.643],[8.644,0],[0,0],[0,20.117]],"v":[[26.042,62.525],[-46.875,62.525],[-62.525,46.875],[-46.875,31.225],[26.042,31.225],[31.224,26.041],[31.224,-46.875],[46.875,-62.525],[62.525,-46.875],[62.525,26.041]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.070588235294,0.074509803922,0.192156862745,1],"ix":4,"x":"var $bm_rt;\n$bm_rt = comp('69-document-scan-outline').layer('Color & Stroke Change').effect('Primary')('Color');"},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[375.004,375.003],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":1,"st":0,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":".primary.design","cl":"primary design","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.365,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[250.064,250.003,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.431,"y":1},"o":{"x":0.575,"y":0},"t":22,"s":[250.064,56.003,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.803,"y":0},"t":60,"s":[250.064,443.003,0],"to":[0,0,0],"ti":[0,0,0]},{"t":90,"s":[250.064,250.003,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":1,"k":[{"i":{"x":[0.667,0.667],"y":[0.042,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"t":0,"s":[343,0]},{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0.346,0]},"t":7,"s":[352.076,52]},{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"t":22,"s":[406,0]},{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"t":41,"s":[406,119]},{"i":{"x":[0.667,0.667],"y":[0.639,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"t":60,"s":[406,0]},{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0.824,0]},"t":80,"s":[354.333,30]},{"t":90,"s":[343,0]}],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"st","c":{"a":0,"k":[0.070588235294,0.074509803922,0.192156862745,1],"ix":3,"x":"var $bm_rt;\n$bm_rt = comp('69-document-scan-outline').layer('Color & Stroke Change').effect('Primary')('Color');"},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":31.3,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.070588235294,0.074509803922,0.192156862745,1],"ix":4,"x":"var $bm_rt;\n$bm_rt = comp('69-document-scan-outline').layer('Color & Stroke Change').effect('Primary')('Color');"},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-0.504,-0.503],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":1,"op":90,"st":0,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":".primary.design","cl":"primary design","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[250.001,250.001,0],"ix":2,"l":2},"a":{"a":0,"k":[250.001,250.001,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.4,"y":1},"o":{"x":0.6,"y":0},"t":0,"s":[{"i":[[0,0],[0,0],[0,-11.506],[0,0]],"o":[[0,0],[11.506,0],[0,0],[0,0]],"v":[[-46.875,-46.875],[26.041,-46.875],[46.875,-26.041],[46.875,46.875]],"c":false}]},{"i":{"x":0.4,"y":1},"o":{"x":0.6,"y":0},"t":22,"s":[{"i":[[0,0],[0,0],[0,-11.506],[0,0]],"o":[[0,0],[11.506,0],[0,0],[0,0]],"v":[[-13.917,-79.832],[58.999,-79.832],[79.832,-58.999],[79.832,13.917]],"c":false}]},{"i":{"x":0.4,"y":1},"o":{"x":0.6,"y":0},"t":60,"s":[{"i":[[0,0],[0,0],[0,-11.506],[0,0]],"o":[[0,0],[11.506,0],[0,0],[0,0]],"v":[[-13.917,-79.832],[58.999,-79.832],[79.832,-58.999],[79.832,13.917]],"c":false}]},{"t":90,"s":[{"i":[[0,0],[0,0],[0,-11.506],[0,0]],"o":[[0,0],[11.506,0],[0,0],[0,0]],"v":[[-46.875,-46.875],[26.041,-46.875],[46.875,-26.041],[46.875,46.875]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":1,"k":[{"i":{"x":0.4,"y":1},"o":{"x":0.6,"y":0},"t":0,"s":[{"i":[[0,0],[0,0],[0,11.506],[0,0]],"o":[[0,0],[-11.506,0],[0,0],[0,0]],"v":[[-203.126,296.872],[-276.042,296.872],[-296.875,276.039],[-296.875,203.123]],"c":false}]},{"i":{"x":0.4,"y":1},"o":{"x":0.6,"y":0},"t":22,"s":[{"i":[[0,0],[0,0],[0,11.506],[0,0]],"o":[[0,0],[-11.506,0],[0,0],[0,0]],"v":[[-236.084,329.83],[-309,329.83],[-329.833,308.997],[-329.833,236.081]],"c":false}]},{"i":{"x":0.4,"y":1},"o":{"x":0.6,"y":0},"t":60,"s":[{"i":[[0,0],[0,0],[0,11.506],[0,0]],"o":[[0,0],[-11.506,0],[0,0],[0,0]],"v":[[-236.084,329.83],[-309,329.83],[-329.833,308.997],[-329.833,236.081]],"c":false}]},{"t":90,"s":[{"i":[[0,0],[0,0],[0,11.506],[0,0]],"o":[[0,0],[-11.506,0],[0,0],[0,0]],"v":[[-203.126,296.872],[-276.042,296.872],[-296.875,276.039],[-296.875,203.123]],"c":false}]}],"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ind":2,"ty":"sh","ix":3,"ks":{"a":1,"k":[{"i":{"x":0.4,"y":1},"o":{"x":0.6,"y":0},"t":0,"s":[{"i":[[0,0],[0,0],[-11.506,0],[0,0]],"o":[[0,0],[0,-11.506],[0,0],[0,0]],"v":[[-296.875,46.872],[-296.875,-26.044],[-276.042,-46.878],[-203.126,-46.878]],"c":false}]},{"i":{"x":0.4,"y":1},"o":{"x":0.6,"y":0},"t":22,"s":[{"i":[[0,0],[0,0],[-11.506,0],[0,0]],"o":[[0,0],[0,-11.506],[0,0],[0,0]],"v":[[-329.833,13.914],[-329.833,-59.002],[-309,-79.835],[-236.084,-79.835]],"c":false}]},{"i":{"x":0.4,"y":1},"o":{"x":0.6,"y":0},"t":60,"s":[{"i":[[0,0],[0,0],[-11.506,0],[0,0]],"o":[[0,0],[0,-11.506],[0,0],[0,0]],"v":[[-329.833,13.914],[-329.833,-59.002],[-309,-79.835],[-236.084,-79.835]],"c":false}]},{"t":90,"s":[{"i":[[0,0],[0,0],[-11.506,0],[0,0]],"o":[[0,0],[0,-11.506],[0,0],[0,0]],"v":[[-296.875,46.872],[-296.875,-26.044],[-276.042,-46.878],[-203.126,-46.878]],"c":false}]}],"ix":2},"nm":"Path 3","mn":"ADBE Vector Shape - Group","hd":false},{"ind":3,"ty":"sh","ix":4,"ks":{"a":1,"k":[{"i":{"x":0.4,"y":1},"o":{"x":0.6,"y":0},"t":0,"s":[{"i":[[0,0],[0,0],[11.506,0],[0,0]],"o":[[0,0],[0,11.506],[0,0],[0,0]],"v":[[46.881,203.127],[46.881,276.043],[26.048,296.877],[-46.868,296.877]],"c":false}]},{"i":{"x":0.4,"y":1},"o":{"x":0.6,"y":0},"t":22,"s":[{"i":[[0,0],[0,0],[11.506,0],[0,0]],"o":[[0,0],[0,11.506],[0,0],[0,0]],"v":[[79.839,236.085],[79.839,309.001],[59.006,329.834],[-13.91,329.834]],"c":false}]},{"i":{"x":0.4,"y":1},"o":{"x":0.6,"y":0},"t":60,"s":[{"i":[[0,0],[0,0],[11.506,0],[0,0]],"o":[[0,0],[0,11.506],[0,0],[0,0]],"v":[[79.839,236.085],[79.839,309.001],[59.006,329.834],[-13.91,329.834]],"c":false}]},{"t":90,"s":[{"i":[[0,0],[0,0],[11.506,0],[0,0]],"o":[[0,0],[0,11.506],[0,0],[0,0]],"v":[[46.881,203.127],[46.881,276.043],[26.048,296.877],[-46.868,296.877]],"c":false}]}],"ix":2},"nm":"Path 4","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.070588235294,0.074509803922,0.192156862745,1],"ix":3,"x":"var $bm_rt;\n$bm_rt = comp('69-document-scan-outline').layer('Color & Stroke Change').effect('Primary')('Color');"},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":31.3,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[374.998,125.001],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":5,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":1,"op":90,"st":0,"bm":0}]},{"id":"comp_2","nm":"morph-scan-OK","fr":60,"layers":[{"ddd":0,"ind":1,"ty":4,"nm":".primary.design","cl":"primary design","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[253.419,260.347,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[149.956,-122.947],[-31.321,57.362],[-83.54,5.208]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":0,"k":100,"ix":1},"e":{"a":0,"k":100,"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":0,"k":[0.070588235294,0.074509803922,0.192156862745,1],"ix":3,"x":"var $bm_rt;\n$bm_rt = comp('69-document-scan-outline').layer('Color & Stroke Change').effect('Primary')('Color');"},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":31.3,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":1,"op":60,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".primary.design","cl":"primary design","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[253.419,260.347,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.3,"y":1},"o":{"x":0.7,"y":0},"t":60,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[197.252,182.153],[-31.025,182.263],[-200.744,182.309]],"c":false}]},{"t":90,"s":[{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[149.956,-122.947],[-31.321,57.362],[-83.54,5.208]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":0,"k":100,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.3],"y":[1]},"o":{"x":[0.7],"y":[0]},"t":60,"s":[0]},{"t":90,"s":[28.5]}],"ix":2},"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[0.418]},"o":{"x":[0.333],"y":[0]},"t":60,"s":[0]},{"i":{"x":[0.37],"y":[1]},"o":{"x":[0.333],"y":[-1.887]},"t":67,"s":[-2.777]},{"t":90,"s":[0]}],"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":0,"k":[0.070588235294,0.074509803922,0.192156862745,1],"ix":3,"x":"var $bm_rt;\n$bm_rt = comp('69-document-scan-outline').layer('Color & Stroke Change').effect('Primary')('Color');"},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":31.3,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":60,"op":90,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":".primary.design","cl":"primary design","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[250,249.974,0],"ix":2,"l":2},"a":{"a":0,"k":[250,249.999,0],"ix":1,"l":2},"s":{"a":0,"k":[2083,2083,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.57,-1.64],[2.27,-0.05],[1.65,1.56],[0.05,2.27],[-4.68,0.11],[-0.07,0],[-1.6,-1.52],[-0.05,-2.27]],"o":[[-1.57,1.64],[-2.28,0.06],[-1.65,-1.56],[-0.11,-4.69],[0.07,0],[2.19,0],[1.64,1.57],[0.06,2.26]],"v":[[6.15,5.861],[0.2,8.491],[-5.87,6.151],[-8.5,0.201],[-0.21,-8.499],[0,-8.499],[5.86,-6.149],[8.49,-0.199]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[2.67,-0.06],[-0.13,-5.51],[-1.93,-1.84],[-2.58,0],[-0.08,0],[-1.84,1.93],[0.06,2.67],[1.93,1.84]],"o":[[-5.51,0.14],[0.06,2.67],[1.88,1.79],[0.08,0],[2.67,-0.06],[1.84,-1.93],[-0.06,-2.67],[-1.94,-1.84]],"v":[[-0.24,-9.999],[-10,0.241],[-6.9,7.241],[-0.01,10.001],[0.24,10.001],[7.24,6.901],[10,-0.239],[6.9,-7.239]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.070588235294,0.074509803922,0.192156862745,1],"ix":4,"x":"var $bm_rt;\n$bm_rt = comp('69-document-scan-outline').layer('Color & Stroke Change').effect('Primary')('Color');"},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[250,249.999],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.3,-0.29],[0,0],[0,0],[0.29,-0.29],[-0.29,-0.29],[0,0],[-0.19,0],[-0.15,0.15],[0,0],[0.3,0.3]],"o":[[0,0],[0,0],[-0.29,-0.29],[-0.29,0.29],[0,0],[0.15,0.15],[0.19,0],[0,0],[0.3,-0.29],[-0.29,-0.29]],"v":[[3.476,-3.286],[-1.504,1.694],[-3.484,-0.276],[-4.544,-0.276],[-4.544,0.784],[-2.034,3.284],[-1.504,3.504],[-0.974,3.284],[4.536,-2.226],[4.536,-3.286]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.070588235294,0.074509803922,0.192156862745,1],"ix":4,"x":"var $bm_rt;\n$bm_rt = comp('69-document-scan-outline').layer('Color & Stroke Change').effect('Primary')('Color');"},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[250.164,250.496],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":90,"op":300,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":".primary.design","cl":"primary design","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[250.003,250.003,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[8.644,0],[0,0],[0,8.643],[-8.644,0],[0,0],[0,-8.643]],"o":[[0,0],[-8.644,0],[0,-8.643],[0,0],[8.644,0],[0,8.643]],"v":[[171.875,15.65],[-171.875,15.65],[-187.525,0],[-171.875,-15.65],[171.875,-15.65],[187.525,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.070588235294,0.074509803922,0.192156862745,1],"ix":4,"x":"var $bm_rt;\n$bm_rt = comp('69-document-scan-outline').layer('Color & Stroke Change').effect('Primary')('Color');"},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":1,"st":0,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":".primary.design","cl":"primary design","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[250.001,250.001,0],"ix":2,"l":2},"a":{"a":0,"k":[250.001,250.001,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[8.644,0],[0,8.643],[0,0],[2.858,0],[0,0],[0,8.643],[-8.644,0],[0,0],[0,-20.117],[0,0]],"o":[[-8.644,0],[0,0],[0,-2.858],[0,0],[-8.644,0],[0,-8.643],[0,0],[20.117,0],[0,0],[0,8.643]],"v":[[46.875,62.525],[31.225,46.875],[31.225,-26.041],[26.041,-31.225],[-46.875,-31.225],[-62.525,-46.875],[-46.875,-62.525],[26.041,-62.525],[62.525,-26.041],[62.525,46.875]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.070588235294,0.074509803922,0.192156862745,1],"ix":4,"x":"var $bm_rt;\n$bm_rt = comp('69-document-scan-outline').layer('Color & Stroke Change').effect('Primary')('Color');"},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[374.998,125.001],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[8.644,0],[0,0],[0,20.117],[0,0],[-8.644,0],[0,-8.643],[0,0],[-2.857,0],[0,0],[0,-8.643]],"o":[[0,0],[-20.117,0],[0,0],[0,-8.643],[8.644,0],[0,0],[0,2.858],[0,0],[8.644,0],[0,8.643]],"v":[[46.875,62.524],[-26.042,62.524],[-62.525,26.041],[-62.525,-46.875],[-46.875,-62.524],[-31.224,-46.875],[-31.224,26.041],[-26.042,31.225],[46.875,31.225],[62.525,46.875]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.070588235294,0.074509803922,0.192156862745,1],"ix":4,"x":"var $bm_rt;\n$bm_rt = comp('69-document-scan-outline').layer('Color & Stroke Change').effect('Primary')('Color');"},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[124.998,374.999],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[8.644,0],[0,8.643],[0,0],[-20.117,0],[0,0],[0,-8.643],[8.644,0],[0,0],[0,-2.858],[0,0]],"o":[[-8.644,0],[0,0],[0,-20.117],[0,0],[8.644,0],[0,8.643],[0,0],[-2.857,0],[0,0],[0,8.643]],"v":[[-46.875,62.524],[-62.525,46.875],[-62.525,-26.042],[-26.042,-62.524],[46.875,-62.524],[62.525,-46.875],[46.875,-31.225],[-26.042,-31.225],[-31.224,-26.042],[-31.224,46.875]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.070588235294,0.074509803922,0.192156862745,1],"ix":4,"x":"var $bm_rt;\n$bm_rt = comp('69-document-scan-outline').layer('Color & Stroke Change').effect('Primary')('Color');"},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[124.998,124.998],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[20.117,0],[0,0],[0,8.643],[-8.644,0],[0,0],[0,2.858],[0,0],[-8.644,0],[0,-8.643],[0,0]],"o":[[0,0],[-8.644,0],[0,-8.643],[0,0],[2.857,0],[0,0],[0,-8.643],[8.644,0],[0,0],[0,20.117]],"v":[[26.042,62.525],[-46.875,62.525],[-62.525,46.875],[-46.875,31.225],[26.042,31.225],[31.224,26.041],[31.224,-46.875],[46.875,-62.525],[62.525,-46.875],[62.525,26.041]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.070588235294,0.074509803922,0.192156862745,1],"ix":4,"x":"var $bm_rt;\n$bm_rt = comp('69-document-scan-outline').layer('Color & Stroke Change').effect('Primary')('Color');"},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[375.004,375.003],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":1,"st":0,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":".primary.design","cl":"primary design","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.365,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[250.064,250.003,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.431,"y":1},"o":{"x":0.575,"y":0},"t":22,"s":[250.064,56.003,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.803,"y":0},"t":60,"s":[250.064,443.003,0],"to":[0,0,0],"ti":[0,0,0]},{"t":90,"s":[250.064,250.003,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":1,"k":[{"i":{"x":[0.667,0.667],"y":[0.042,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"t":0,"s":[343,0]},{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0.346,0]},"t":7,"s":[352.076,52]},{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"t":22,"s":[406,0]},{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"t":41,"s":[406,119]},{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"t":60,"s":[406,0]},{"t":90,"s":[343,0]}],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"st","c":{"a":0,"k":[0.070588235294,0.074509803922,0.192156862745,1],"ix":3,"x":"var $bm_rt;\n$bm_rt = comp('69-document-scan-outline').layer('Color & Stroke Change').effect('Primary')('Color');"},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":31.3,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.070588235294,0.074509803922,0.192156862745,1],"ix":4,"x":"var $bm_rt;\n$bm_rt = comp('69-document-scan-outline').layer('Color & Stroke Change').effect('Primary')('Color');"},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-0.504,-0.503],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":1,"op":60,"st":0,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":".primary.design","cl":"primary design","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[250.001,250.001,0],"ix":2,"l":2},"a":{"a":0,"k":[250.001,250.001,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.4,"y":1},"o":{"x":0.6,"y":0},"t":0,"s":[{"i":[[0,0],[0,0],[0,-11.506],[0,0]],"o":[[0,0],[11.506,0],[0,0],[0,0]],"v":[[-46.875,-46.875],[26.041,-46.875],[46.875,-26.041],[46.875,46.875]],"c":false}]},{"i":{"x":0.4,"y":1},"o":{"x":0.6,"y":0},"t":22,"s":[{"i":[[0,0],[0,0],[0,-11.506],[0,0]],"o":[[0,0],[11.506,0],[0,0],[0,0]],"v":[[-13.917,-79.832],[58.999,-79.832],[79.832,-58.999],[79.832,13.917]],"c":false}]},{"i":{"x":0.221,"y":1},"o":{"x":0.6,"y":0},"t":60,"s":[{"i":[[0,0],[0,0],[0,-11.506],[0,0]],"o":[[0,0],[11.506,0],[0,0],[0,0]],"v":[[-13.917,-79.832],[58.999,-79.832],[79.832,-58.999],[79.832,13.917]],"c":false}]},{"t":90,"s":[{"i":[[0,0],[0,0],[0,-105.64],[0,0]],"o":[[0,0],[105.64,0],[0,0],[0,0]],"v":[[-124.924,-67.612],[-123.4,-67.615],[67.878,123.663],[67.875,124.613]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":1,"k":[{"i":{"x":0.4,"y":1},"o":{"x":0.6,"y":0},"t":0,"s":[{"i":[[0,0],[0,0],[0,11.506],[0,0]],"o":[[0,0],[-11.506,0],[0,0],[0,0]],"v":[[-203.126,296.872],[-276.042,296.872],[-296.875,276.039],[-296.875,203.123]],"c":false}]},{"i":{"x":0.4,"y":1},"o":{"x":0.6,"y":0},"t":22,"s":[{"i":[[0,0],[0,0],[0,11.506],[0,0]],"o":[[0,0],[-11.506,0],[0,0],[0,0]],"v":[[-236.084,329.83],[-309,329.83],[-329.833,308.997],[-329.833,236.081]],"c":false}]},{"i":{"x":0.221,"y":1},"o":{"x":0.6,"y":0},"t":60,"s":[{"i":[[0,0],[0,0],[0,11.506],[0,0]],"o":[[0,0],[-11.506,0],[0,0],[0,0]],"v":[[-236.084,329.83],[-309,329.83],[-329.833,308.997],[-329.833,236.081]],"c":false}]},{"t":90,"s":[{"i":[[0,0],[0,0],[0,105.64],[0,0]],"o":[[0,0],[-105.64,0],[0,0],[0,0]],"v":[[-124.928,316.796],[-126.451,315.673],[-317.73,124.395],[-316.584,120.576]],"c":false}]}],"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ind":2,"ty":"sh","ix":3,"ks":{"a":1,"k":[{"i":{"x":0.4,"y":1},"o":{"x":0.6,"y":0},"t":0,"s":[{"i":[[0,0],[0,0],[-11.506,0],[0,0]],"o":[[0,0],[0,-11.506],[0,0],[0,0]],"v":[[-296.875,46.872],[-296.875,-26.044],[-276.042,-46.878],[-203.126,-46.878]],"c":false}]},{"i":{"x":0.4,"y":1},"o":{"x":0.6,"y":0},"t":22,"s":[{"i":[[0,0],[0,0],[-11.506,0],[0,0]],"o":[[0,0],[0,-11.506],[0,0],[0,0]],"v":[[-329.833,13.914],[-329.833,-59.002],[-309,-79.835],[-236.084,-79.835]],"c":false}]},{"i":{"x":0.221,"y":1},"o":{"x":0.6,"y":0},"t":60,"s":[{"i":[[0,0],[0,0],[-11.506,0],[0,0]],"o":[[0,0],[0,-11.506],[0,0],[0,0]],"v":[[-329.833,13.914],[-329.833,-59.002],[-309,-79.835],[-236.084,-79.835]],"c":false}]},{"t":90,"s":[{"i":[[0,0],[0,0],[-105.64,0],[0,0]],"o":[[0,0],[0,-105.64],[0,0],[0,0]],"v":[[-317.741,121.714],[-317.736,123.634],[-126.458,-67.644],[-124.934,-67.668]],"c":false}]}],"ix":2},"nm":"Path 3","mn":"ADBE Vector Shape - Group","hd":false},{"ind":3,"ty":"sh","ix":4,"ks":{"a":1,"k":[{"i":{"x":0.4,"y":1},"o":{"x":0.6,"y":0},"t":0,"s":[{"i":[[0,0],[0,0],[11.506,0],[0,0]],"o":[[0,0],[0,11.506],[0,0],[0,0]],"v":[[46.881,203.127],[46.881,276.043],[26.048,296.877],[-46.868,296.877]],"c":false}]},{"i":{"x":0.4,"y":1},"o":{"x":0.6,"y":0},"t":22,"s":[{"i":[[0,0],[0,0],[11.506,0],[0,0]],"o":[[0,0],[0,11.506],[0,0],[0,0]],"v":[[79.839,236.085],[79.839,309.001],[59.006,329.834],[-13.91,329.834]],"c":false}]},{"i":{"x":0.221,"y":1},"o":{"x":0.6,"y":0},"t":60,"s":[{"i":[[0,0],[0,0],[11.506,0],[0,0]],"o":[[0,0],[0,11.506],[0,0],[0,0]],"v":[[79.839,236.085],[79.839,309.001],[59.006,329.834],[-13.91,329.834]],"c":false}]},{"t":90,"s":[{"i":[[0,0],[0,0],[105.64,0],[0,0]],"o":[[0,0],[0,105.64],[0,0],[0,0]],"v":[[68.002,124.062],[67.944,124.438],[-123.334,315.716],[-123.136,315.157]],"c":false}]}],"ix":2},"nm":"Path 4","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.070588235294,0.074509803922,0.192156862745,1],"ix":3,"x":"var $bm_rt;\n$bm_rt = comp('69-document-scan-outline').layer('Color & Stroke Change').effect('Primary')('Color');"},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":31.3,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[374.998,125.001],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":5,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":1,"op":90,"st":0,"bm":0}]},{"id":"comp_3","nm":"morph-scan-WRONG","fr":60,"layers":[{"ddd":0,"ind":1,"ty":4,"nm":".primary.design","cl":"primary design","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.236],"y":[1]},"o":{"x":[0.538],"y":[0]},"t":60,"s":[45]},{"t":90,"s":[90]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.236,"y":1},"o":{"x":0.538,"y":0},"t":60,"s":[150.004,439.003,0],"to":[16.667,-31.5,0],"ti":[-16.667,31.5,0]},{"t":90,"s":[250.004,250.003,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-67.709,67.709],[67.709,-67.709]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.070588235294,0.074509803922,0.192156862745,1],"ix":3,"x":"var $bm_rt;\n$bm_rt = comp('69-document-scan-outline').layer('Color & Stroke Change').effect('Primary')('Color');"},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":31.3,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":0,"k":100,"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":60,"op":90,"st":30,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".primary.design","cl":"primary design","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.236],"y":[1]},"o":{"x":[0.538],"y":[0]},"t":60,"s":[135]},{"t":90,"s":[90]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.236,"y":1},"o":{"x":0.538,"y":0},"t":60,"s":[350.004,439.003,0],"to":[-16.667,-31.5,0],"ti":[16.667,31.5,0]},{"t":90,"s":[250.004,250.003,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[67.709,67.709],[-67.709,-67.709]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.070588235294,0.074509803922,0.192156862745,1],"ix":3,"x":"var $bm_rt;\n$bm_rt = comp('69-document-scan-outline').layer('Color & Stroke Change').effect('Primary')('Color');"},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":31.3,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":0,"k":100,"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":60,"op":90,"st":30,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":".primary.design","cl":"primary design","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[250.002,249.974,0],"ix":2,"l":2},"a":{"a":0,"k":[250,249.999,0],"ix":1,"l":2},"s":{"a":0,"k":[2083,2083,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.57,-1.64],[2.27,-0.05],[1.64,1.56],[0.05,2.27],[-1.57,1.64],[-2.27,0.05],[-0.07,0],[-1.6,-1.52],[-0.05,-2.27]],"o":[[-1.57,1.64],[-2.26,0.06],[-1.64,-1.57],[-0.05,-2.26],[1.57,-1.64],[0.07,0],[2.19,0],[1.64,1.57],[0.05,2.25]],"v":[[6.15,5.861],[0.2,8.491],[-5.87,6.151],[-8.5,0.201],[-6.15,-5.859],[-0.2,-8.489],[0.01,-8.489],[5.87,-6.139],[8.5,-0.189]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[2.66,-0.06],[1.84,-1.93],[-0.06,-2.67],[-1.93,-1.84],[-2.58,0],[-0.08,0],[-1.84,1.93],[0.06,2.67],[1.93,1.84]],"o":[[-2.67,0.06],[-1.84,1.94],[0.06,2.67],[1.88,1.79],[0.08,0],[2.67,-0.06],[1.84,-1.93],[-0.06,-2.67],[-1.94,-1.84]],"v":[[-0.24,-9.999],[-7.24,-6.899],[-10,0.241],[-6.9,7.241],[-0.01,10.001],[0.24,10.001],[7.24,6.901],[10,-0.239],[6.9,-7.239]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.070588235294,0.074509803922,0.192156862745,1],"ix":4,"x":"var $bm_rt;\n$bm_rt = comp('69-document-scan-outline').layer('Color & Stroke Change').effect('Primary')('Color');"},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[250,249.999],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.29,0.29],[0.29,-0.29],[0,0],[0,0],[0.29,-0.29],[-0.29,-0.29],[0,0],[0,0],[-0.29,-0.29],[-0.19,0],[-0.15,0.15],[0,0],[0,0],[-0.19,0],[-0.15,0.15],[0.29,0.29],[0,0],[0,0]],"o":[[-0.29,-0.29],[0,0],[0,0],[-0.29,-0.29],[-0.29,0.29],[0,0],[0,0],[-0.29,0.29],[0.15,0.15],[0.19,0],[0,0],[0,0],[0.15,0.15],[0.19,0],[0.29,-0.29],[0,0],[0,0],[0.29,-0.29]],"v":[[3.78,-3.781],[2.72,-3.781],[0,-1.061],[-2.72,-3.781],[-3.78,-3.781],[-3.78,-2.721],[-1.06,-0.001],[-3.78,2.719],[-3.78,3.779],[-3.25,3.999],[-2.72,3.779],[0,1.059],[2.72,3.779],[3.25,3.999],[3.78,3.779],[3.78,2.719],[1.06,-0.001],[3.78,-2.721]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.070588235294,0.074509803922,0.192156862745,1],"ix":4,"x":"var $bm_rt;\n$bm_rt = comp('69-document-scan-outline').layer('Color & Stroke Change').effect('Primary')('Color');"},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[250,250.001],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":90,"op":330,"st":30,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":".primary.design","cl":"primary design","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[253.419,260.347,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[149.956,-122.947],[-31.321,57.362],[-83.54,5.208]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":0,"k":100,"ix":1},"e":{"a":0,"k":100,"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":0,"k":[0.070588235294,0.074509803922,0.192156862745,1],"ix":3,"x":"var $bm_rt;\n$bm_rt = comp('69-document-scan-outline').layer('Color & Stroke Change').effect('Primary')('Color');"},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":31.3,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":1,"op":60,"st":0,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":".primary.design","cl":"primary design","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[250.003,250.003,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[8.644,0],[0,0],[0,8.643],[-8.644,0],[0,0],[0,-8.643]],"o":[[0,0],[-8.644,0],[0,-8.643],[0,0],[8.644,0],[0,8.643]],"v":[[171.875,15.65],[-171.875,15.65],[-187.525,0],[-171.875,-15.65],[171.875,-15.65],[187.525,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.070588235294,0.074509803922,0.192156862745,1],"ix":4,"x":"var $bm_rt;\n$bm_rt = comp('69-document-scan-outline').layer('Color & Stroke Change').effect('Primary')('Color');"},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":1,"st":0,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":".primary.design","cl":"primary design","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[250.001,250.001,0],"ix":2,"l":2},"a":{"a":0,"k":[250.001,250.001,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[8.644,0],[0,8.643],[0,0],[2.858,0],[0,0],[0,8.643],[-8.644,0],[0,0],[0,-20.117],[0,0]],"o":[[-8.644,0],[0,0],[0,-2.858],[0,0],[-8.644,0],[0,-8.643],[0,0],[20.117,0],[0,0],[0,8.643]],"v":[[46.875,62.525],[31.225,46.875],[31.225,-26.041],[26.041,-31.225],[-46.875,-31.225],[-62.525,-46.875],[-46.875,-62.525],[26.041,-62.525],[62.525,-26.041],[62.525,46.875]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.070588235294,0.074509803922,0.192156862745,1],"ix":4,"x":"var $bm_rt;\n$bm_rt = comp('69-document-scan-outline').layer('Color & Stroke Change').effect('Primary')('Color');"},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[374.998,125.001],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[8.644,0],[0,0],[0,20.117],[0,0],[-8.644,0],[0,-8.643],[0,0],[-2.857,0],[0,0],[0,-8.643]],"o":[[0,0],[-20.117,0],[0,0],[0,-8.643],[8.644,0],[0,0],[0,2.858],[0,0],[8.644,0],[0,8.643]],"v":[[46.875,62.524],[-26.042,62.524],[-62.525,26.041],[-62.525,-46.875],[-46.875,-62.524],[-31.224,-46.875],[-31.224,26.041],[-26.042,31.225],[46.875,31.225],[62.525,46.875]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.070588235294,0.074509803922,0.192156862745,1],"ix":4,"x":"var $bm_rt;\n$bm_rt = comp('69-document-scan-outline').layer('Color & Stroke Change').effect('Primary')('Color');"},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[124.998,374.999],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[8.644,0],[0,8.643],[0,0],[-20.117,0],[0,0],[0,-8.643],[8.644,0],[0,0],[0,-2.858],[0,0]],"o":[[-8.644,0],[0,0],[0,-20.117],[0,0],[8.644,0],[0,8.643],[0,0],[-2.857,0],[0,0],[0,8.643]],"v":[[-46.875,62.524],[-62.525,46.875],[-62.525,-26.042],[-26.042,-62.524],[46.875,-62.524],[62.525,-46.875],[46.875,-31.225],[-26.042,-31.225],[-31.224,-26.042],[-31.224,46.875]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.070588235294,0.074509803922,0.192156862745,1],"ix":4,"x":"var $bm_rt;\n$bm_rt = comp('69-document-scan-outline').layer('Color & Stroke Change').effect('Primary')('Color');"},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[124.998,124.998],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[20.117,0],[0,0],[0,8.643],[-8.644,0],[0,0],[0,2.858],[0,0],[-8.644,0],[0,-8.643],[0,0]],"o":[[0,0],[-8.644,0],[0,-8.643],[0,0],[2.857,0],[0,0],[0,-8.643],[8.644,0],[0,0],[0,20.117]],"v":[[26.042,62.525],[-46.875,62.525],[-62.525,46.875],[-46.875,31.225],[26.042,31.225],[31.224,26.041],[31.224,-46.875],[46.875,-62.525],[62.525,-46.875],[62.525,26.041]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.070588235294,0.074509803922,0.192156862745,1],"ix":4,"x":"var $bm_rt;\n$bm_rt = comp('69-document-scan-outline').layer('Color & Stroke Change').effect('Primary')('Color');"},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[375.004,375.003],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":1,"st":0,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":".primary.design","cl":"primary design","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.365,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[250.064,250.003,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.431,"y":1},"o":{"x":0.575,"y":0},"t":22,"s":[250.064,56.003,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.803,"y":0},"t":60,"s":[250.064,443.003,0],"to":[0,0,0],"ti":[0,0,0]},{"t":90,"s":[250.064,250.003,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":1,"k":[{"i":{"x":[0.667,0.667],"y":[0.042,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"t":0,"s":[343,0]},{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0.346,0]},"t":7,"s":[352.076,52]},{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"t":22,"s":[406,0]},{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"t":41,"s":[406,119]},{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"t":60,"s":[406,0]},{"t":90,"s":[343,0]}],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"st","c":{"a":0,"k":[0.070588235294,0.074509803922,0.192156862745,1],"ix":3,"x":"var $bm_rt;\n$bm_rt = comp('69-document-scan-outline').layer('Color & Stroke Change').effect('Primary')('Color');"},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":31.3,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.070588235294,0.074509803922,0.192156862745,1],"ix":4,"x":"var $bm_rt;\n$bm_rt = comp('69-document-scan-outline').layer('Color & Stroke Change').effect('Primary')('Color');"},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-0.504,-0.503],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":1,"op":60,"st":0,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":".primary.design","cl":"primary design","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[250.001,250.001,0],"ix":2,"l":2},"a":{"a":0,"k":[250.001,250.001,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.4,"y":1},"o":{"x":0.6,"y":0},"t":0,"s":[{"i":[[0,0],[0,0],[0,-11.506],[0,0]],"o":[[0,0],[11.506,0],[0,0],[0,0]],"v":[[-46.875,-46.875],[26.041,-46.875],[46.875,-26.041],[46.875,46.875]],"c":false}]},{"i":{"x":0.4,"y":1},"o":{"x":0.6,"y":0},"t":22,"s":[{"i":[[0,0],[0,0],[0,-11.506],[0,0]],"o":[[0,0],[11.506,0],[0,0],[0,0]],"v":[[-13.917,-79.832],[58.999,-79.832],[79.832,-58.999],[79.832,13.917]],"c":false}]},{"i":{"x":0.221,"y":1},"o":{"x":0.6,"y":0},"t":60,"s":[{"i":[[0,0],[0,0],[0,-11.506],[0,0]],"o":[[0,0],[11.506,0],[0,0],[0,0]],"v":[[-13.917,-79.832],[58.999,-79.832],[79.832,-58.999],[79.832,13.917]],"c":false}]},{"t":90,"s":[{"i":[[0,0],[0,0],[0,-105.64],[0,0]],"o":[[0,0],[105.64,0],[0,0],[0,0]],"v":[[-124.924,-67.612],[-123.4,-67.615],[67.878,123.663],[67.875,124.613]],"c":false}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":1,"k":[{"i":{"x":0.4,"y":1},"o":{"x":0.6,"y":0},"t":0,"s":[{"i":[[0,0],[0,0],[0,11.506],[0,0]],"o":[[0,0],[-11.506,0],[0,0],[0,0]],"v":[[-203.126,296.872],[-276.042,296.872],[-296.875,276.039],[-296.875,203.123]],"c":false}]},{"i":{"x":0.4,"y":1},"o":{"x":0.6,"y":0},"t":22,"s":[{"i":[[0,0],[0,0],[0,11.506],[0,0]],"o":[[0,0],[-11.506,0],[0,0],[0,0]],"v":[[-236.084,329.83],[-309,329.83],[-329.833,308.997],[-329.833,236.081]],"c":false}]},{"i":{"x":0.221,"y":1},"o":{"x":0.6,"y":0},"t":60,"s":[{"i":[[0,0],[0,0],[0,11.506],[0,0]],"o":[[0,0],[-11.506,0],[0,0],[0,0]],"v":[[-236.084,329.83],[-309,329.83],[-329.833,308.997],[-329.833,236.081]],"c":false}]},{"t":90,"s":[{"i":[[0,0],[0,0],[0,105.64],[0,0]],"o":[[0,0],[-105.64,0],[0,0],[0,0]],"v":[[-124.928,316.796],[-126.451,315.673],[-317.73,124.395],[-316.584,120.576]],"c":false}]}],"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ind":2,"ty":"sh","ix":3,"ks":{"a":1,"k":[{"i":{"x":0.4,"y":1},"o":{"x":0.6,"y":0},"t":0,"s":[{"i":[[0,0],[0,0],[-11.506,0],[0,0]],"o":[[0,0],[0,-11.506],[0,0],[0,0]],"v":[[-296.875,46.872],[-296.875,-26.044],[-276.042,-46.878],[-203.126,-46.878]],"c":false}]},{"i":{"x":0.4,"y":1},"o":{"x":0.6,"y":0},"t":22,"s":[{"i":[[0,0],[0,0],[-11.506,0],[0,0]],"o":[[0,0],[0,-11.506],[0,0],[0,0]],"v":[[-329.833,13.914],[-329.833,-59.002],[-309,-79.835],[-236.084,-79.835]],"c":false}]},{"i":{"x":0.221,"y":1},"o":{"x":0.6,"y":0},"t":60,"s":[{"i":[[0,0],[0,0],[-11.506,0],[0,0]],"o":[[0,0],[0,-11.506],[0,0],[0,0]],"v":[[-329.833,13.914],[-329.833,-59.002],[-309,-79.835],[-236.084,-79.835]],"c":false}]},{"t":90,"s":[{"i":[[0,0],[0,0],[-105.64,0],[0,0]],"o":[[0,0],[0,-105.64],[0,0],[0,0]],"v":[[-317.741,121.714],[-317.736,123.634],[-126.458,-67.644],[-124.934,-67.668]],"c":false}]}],"ix":2},"nm":"Path 3","mn":"ADBE Vector Shape - Group","hd":false},{"ind":3,"ty":"sh","ix":4,"ks":{"a":1,"k":[{"i":{"x":0.4,"y":1},"o":{"x":0.6,"y":0},"t":0,"s":[{"i":[[0,0],[0,0],[11.506,0],[0,0]],"o":[[0,0],[0,11.506],[0,0],[0,0]],"v":[[46.881,203.127],[46.881,276.043],[26.048,296.877],[-46.868,296.877]],"c":false}]},{"i":{"x":0.4,"y":1},"o":{"x":0.6,"y":0},"t":22,"s":[{"i":[[0,0],[0,0],[11.506,0],[0,0]],"o":[[0,0],[0,11.506],[0,0],[0,0]],"v":[[79.839,236.085],[79.839,309.001],[59.006,329.834],[-13.91,329.834]],"c":false}]},{"i":{"x":0.221,"y":1},"o":{"x":0.6,"y":0},"t":60,"s":[{"i":[[0,0],[0,0],[11.506,0],[0,0]],"o":[[0,0],[0,11.506],[0,0],[0,0]],"v":[[79.839,236.085],[79.839,309.001],[59.006,329.834],[-13.91,329.834]],"c":false}]},{"t":90,"s":[{"i":[[0,0],[0,0],[105.64,0],[0,0]],"o":[[0,0],[0,105.64],[0,0],[0,0]],"v":[[68.002,124.062],[67.944,124.438],[-123.334,315.716],[-123.136,315.157]],"c":false}]}],"ix":2},"nm":"Path 4","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.070588235294,0.074509803922,0.192156862745,1],"ix":3,"x":"var $bm_rt;\n$bm_rt = comp('69-document-scan-outline').layer('Color & Stroke Change').effect('Primary')('Color');"},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":31.3,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[374.998,125.001],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":5,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":1,"op":90,"st":0,"bm":0}]},{"id":"comp_4","nm":"loop-scan","fr":60,"layers":[{"ddd":0,"ind":1,"ty":4,"nm":".primary.design","cl":"primary design","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[250.001,250.001,0],"ix":2,"l":2},"a":{"a":0,"k":[250.001,250.001,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[8.644,0],[0,8.643],[0,0],[2.858,0],[0,0],[0,8.643],[-8.644,0],[0,0],[0,-20.117],[0,0]],"o":[[-8.644,0],[0,0],[0,-2.858],[0,0],[-8.644,0],[0,-8.643],[0,0],[20.117,0],[0,0],[0,8.643]],"v":[[46.875,62.525],[31.225,46.875],[31.225,-26.041],[26.041,-31.225],[-46.875,-31.225],[-62.525,-46.875],[-46.875,-62.525],[26.041,-62.525],[62.525,-26.041],[62.525,46.875]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.070588235294,0.074509803922,0.192156862745,1],"ix":4,"x":"var $bm_rt;\n$bm_rt = comp('69-document-scan-outline').layer('Color & Stroke Change').effect('Primary')('Color');"},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[374.998,125.001],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[8.644,0],[0,0],[0,20.117],[0,0],[-8.644,0],[0,-8.643],[0,0],[-2.857,0],[0,0],[0,-8.643]],"o":[[0,0],[-20.117,0],[0,0],[0,-8.643],[8.644,0],[0,0],[0,2.858],[0,0],[8.644,0],[0,8.643]],"v":[[46.875,62.524],[-26.042,62.524],[-62.525,26.041],[-62.525,-46.875],[-46.875,-62.524],[-31.224,-46.875],[-31.224,26.041],[-26.042,31.225],[46.875,31.225],[62.525,46.875]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.070588235294,0.074509803922,0.192156862745,1],"ix":4,"x":"var $bm_rt;\n$bm_rt = comp('69-document-scan-outline').layer('Color & Stroke Change').effect('Primary')('Color');"},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[124.998,374.999],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[8.644,0],[0,8.643],[0,0],[-20.117,0],[0,0],[0,-8.643],[8.644,0],[0,0],[0,-2.858],[0,0]],"o":[[-8.644,0],[0,0],[0,-20.117],[0,0],[8.644,0],[0,8.643],[0,0],[-2.857,0],[0,0],[0,8.643]],"v":[[-46.875,62.524],[-62.525,46.875],[-62.525,-26.042],[-26.042,-62.524],[46.875,-62.524],[62.525,-46.875],[46.875,-31.225],[-26.042,-31.225],[-31.224,-26.042],[-31.224,46.875]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.070588235294,0.074509803922,0.192156862745,1],"ix":4,"x":"var $bm_rt;\n$bm_rt = comp('69-document-scan-outline').layer('Color & Stroke Change').effect('Primary')('Color');"},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[124.998,124.998],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[20.117,0],[0,0],[0,8.643],[-8.644,0],[0,0],[0,2.858],[0,0],[-8.644,0],[0,-8.643],[0,0]],"o":[[0,0],[-8.644,0],[0,-8.643],[0,0],[2.857,0],[0,0],[0,-8.643],[8.644,0],[0,0],[0,20.117]],"v":[[26.042,62.525],[-46.875,62.525],[-62.525,46.875],[-46.875,31.225],[26.042,31.225],[31.224,26.041],[31.224,-46.875],[46.875,-62.525],[62.525,-46.875],[62.525,26.041]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.070588235294,0.074509803922,0.192156862745,1],"ix":4,"x":"var $bm_rt;\n$bm_rt = comp('69-document-scan-outline').layer('Color & Stroke Change').effect('Primary')('Color');"},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[375.004,375.003],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":300,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".primary.design","cl":"primary design","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.167},"t":0,"s":[250.064,250.003,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":25,"s":[250.064,86.003,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.333,"y":0},"t":65,"s":[250.064,416.003,0],"to":[0,0,0],"ti":[0,0,0]},{"t":90,"s":[250.064,250.003,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":1,"k":[{"i":{"x":[0.569,0.569],"y":[3.925,-0.646]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"t":0,"s":[343,78]},{"i":{"x":[0.703,0.703],"y":[1,1]},"o":{"x":[0.321,0.321],"y":[0.247,0.493]},"t":9,"s":[344.02,63.623]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.333,0.333],"y":[0,0]},"t":25,"s":[328,0]},{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"t":45,"s":[343,144]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.333,0.333],"y":[0,0]},"t":65,"s":[332,0]},{"t":90,"s":[343,78]}],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"st","c":{"a":0,"k":[0.070588235294,0.074509803922,0.192156862745,1],"ix":3,"x":"var $bm_rt;\n$bm_rt = comp('69-document-scan-outline').layer('Color & Stroke Change').effect('Primary')('Color');"},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":31.3,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.070588235294,0.074509803922,0.192156862745,1],"ix":4,"x":"var $bm_rt;\n$bm_rt = comp('69-document-scan-outline').layer('Color & Stroke Change').effect('Primary')('Color');"},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-0.504,-0.503],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":91,"st":0,"bm":0}]}],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"lordicon.com Outlines","cl":"com","sr":1,"ks":{"o":{"a":0,"k":20,"ix":11,"x":"var $bm_rt;\nvar checkbox = thisComp.layer('02092020').effect('02092020002')('Checkbox');\nif (checkbox == 1) {\n $bm_rt = 20;\n} else {\n $bm_rt = 0;\n}\n;"},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[249.934,481.369,0],"ix":2,"l":2},"a":{"a":0,"k":[79.934,0.369,0],"ix":1,"l":2},"s":{"a":0,"k":[265.159,265.159,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[1.415,0],[11.014,0],[11.014,-2.523],[4.656,-2.523],[4.656,-14.809],[1.415,-14.809]],"c":true},"ix":2},"nm":"l","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"l","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-3.938],[-1.62,-1.723],[-1.949,0],[-1.641,1.846],[0,2.154],[1.579,1.805],[1.579,0]],"o":[[0,1.354],[1.354,1.415],[1.231,0],[1.21,-1.354],[0,-1.456],[-1.456,-1.641],[-5.333,0]],"v":[[11.167,-7.199],[12.992,-1.661],[18.243,0.369],[23.514,-1.743],[25.381,-7.548],[23.494,-13.127],[18.284,-15.137]],"c":true},"ix":2},"nm":"o","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,1.415],[-0.841,1.026],[-1.19,0],[-0.615,-1.825],[0,-0.718],[0.492,-0.738],[1.292,0],[0.451,0.615]],"o":[[0,-1.682],[0.595,-0.759],[1.518,0],[0.308,0.902],[0,2.359],[-0.595,0.923],[-1.477,0],[-0.882,-1.149]],"v":[[14.49,-7.302],[15.577,-11.609],[18.305,-12.86],[21.689,-10.235],[22.058,-7.589],[21.053,-3.343],[18.284,-1.969],[15.597,-3.159]],"c":true},"ix":2},"nm":"o","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"o","np":5,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[-0.287,-0.841],[-0.144,-0.82],[0,0],[0.164,0.656],[0.226,1.743],[2.236,0.205],[0,2.769],[0.923,0.8],[1.641,-0.021],[0,0]],"o":[[0,0],[0,0],[0,0],[0.533,0],[0.205,0.574],[0,0],[-0.164,-0.246],[-0.103,-0.41],[-0.267,-1.928],[0.718,-0.205],[0,-0.964],[-1.19,-1.026],[0,0],[0,0]],"v":[[27.381,0],[30.622,0],[30.622,-5.989],[33.411,-5.989],[35.011,-5.148],[35.811,0],[39.318,0],[38.867,-1.067],[38.416,-3.938],[35.749,-7.343],[38.847,-10.973],[37.554,-13.824],[33.063,-14.829],[27.381,-14.829]],"c":true},"ix":2},"nm":"r","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-0.492,-0.349],[0,-1.005],[0.226,-0.164],[0.369,0],[0,0]],"o":[[0,0],[1.005,0],[0.287,0.185],[0,1.046],[-0.513,0.41],[0,0],[0,0]],"v":[[30.519,-12.491],[32.652,-12.491],[34.744,-12.142],[35.524,-10.481],[34.703,-8.758],[33.083,-8.348],[30.519,-8.348]],"c":true},"ix":2},"nm":"r","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"r","np":5,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-0.554,0.103],[0,4.553],[1.866,1.374],[0.82,0],[0,0]],"o":[[0,0],[1.497,0],[2.81,-0.513],[0,-2.113],[-1.784,-1.313],[0,0],[0,0]],"v":[[41.068,0],[45.683,0],[48.349,-0.164],[53.6,-7.609],[51.077,-13.434],[45.97,-14.768],[41.068,-14.788]],"c":true},"ix":2},"nm":"d","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,0],[-0.656,-0.185],[0,-2.092],[1.251,-1.251],[1.354,0],[0.349,0.021]],"o":[[1.825,-0.082],[1.99,0.554],[0,0.718],[-0.923,0.923],[-0.369,0],[0,0]],"v":[[44.288,-12.388],[47.611,-12.183],[50.318,-7.609],[48.985,-3.425],[45.539,-2.4],[44.288,-2.441]],"c":true},"ix":2},"nm":"d","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"d","np":5,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[55.669,0],[58.849,0],[58.849,-14.87],[55.669,-14.87]],"c":true},"ix":2},"nm":"i","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"i","np":3,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[3.241,0],[0,-4.697],[-5.107,0],[-1.313,1.354],[-0.062,0.882],[0,0],[1.333,0],[0,0.882],[-2.359,0],[-0.062,-0.513]],"o":[[0,-2.954],[-4.164,0],[0,3.671],[1.354,0],[1.19,-1.231],[0,0],[-0.062,1.969],[-3.097,0],[0,-3.056],[2.154,0],[0,0]],"v":[[73.104,-9.989],[67.587,-14.911],[60.798,-7.097],[67.566,0.349],[71.894,-1.313],[73.227,-4.799],[69.884,-4.799],[67.218,-1.99],[64.121,-7.076],[67.464,-12.593],[69.864,-9.989]],"c":true},"ix":2},"nm":"c","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"c","np":3,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-3.938],[-1.62,-1.723],[-1.949,0],[-1.641,1.846],[0,2.154],[1.579,1.805],[1.579,0]],"o":[[0,1.354],[1.354,1.415],[1.231,0],[1.21,-1.354],[0,-1.456],[-1.456,-1.641],[-5.333,0]],"v":[[74.546,-7.199],[76.372,-1.661],[81.622,0.369],[86.894,-1.743],[88.76,-7.548],[86.873,-13.127],[81.663,-15.137]],"c":true},"ix":2},"nm":"o","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,1.415],[-0.841,1.026],[-1.19,0],[-0.615,-1.825],[0,-0.718],[0.492,-0.738],[1.292,0],[0.451,0.615]],"o":[[0,-1.682],[0.595,-0.759],[1.518,0],[0.308,0.902],[0,2.359],[-0.595,0.923],[-1.477,0],[-0.882,-1.149]],"v":[[77.869,-7.302],[78.956,-11.609],[81.684,-12.86],[85.068,-10.235],[85.437,-7.589],[84.432,-3.343],[81.663,-1.969],[78.977,-3.159]],"c":true},"ix":2},"nm":"o","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"o","np":5,"cix":2,"bm":0,"ix":7,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[91.007,0],[94.001,0],[94.001,-12.306],[99.744,0],[104.113,0],[104.113,-14.829],[101.159,-14.829],[101.159,-3.159],[95.601,-14.829],[91.007,-14.829]],"c":true},"ix":2},"nm":"n","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"n","np":3,"cix":2,"bm":0,"ix":8,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[106.893,0],[109.497,0],[109.497,-2.728],[106.893,-2.728]],"c":true},"ix":2},"nm":".","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":".","np":3,"cix":2,"bm":0,"ix":9,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[3.241,0],[0,-4.697],[-5.107,0],[-1.313,1.354],[-0.062,0.882],[0,0],[1.333,0],[0,0.882],[-2.359,0],[-0.062,-0.513]],"o":[[0,-2.954],[-4.164,0],[0,3.671],[1.354,0],[1.19,-1.231],[0,0],[-0.062,1.969],[-3.097,0],[0,-3.056],[2.154,0],[0,0]],"v":[[124.04,-9.989],[118.523,-14.911],[111.734,-7.097],[118.502,0.349],[122.83,-1.313],[124.163,-4.799],[120.82,-4.799],[118.154,-1.99],[115.057,-7.076],[118.4,-12.593],[120.8,-9.989]],"c":true},"ix":2},"nm":"c","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"c","np":3,"cix":2,"bm":0,"ix":10,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-3.938],[-1.62,-1.723],[-1.949,0],[-1.641,1.846],[0,2.154],[1.579,1.805],[1.579,0]],"o":[[0,1.354],[1.354,1.415],[1.231,0],[1.21,-1.354],[0,-1.456],[-1.456,-1.641],[-5.333,0]],"v":[[125.482,-7.199],[127.308,-1.661],[132.558,0.369],[137.829,-1.743],[139.696,-7.548],[137.809,-13.127],[132.599,-15.137]],"c":true},"ix":2},"nm":"o","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,1.415],[-0.841,1.026],[-1.19,0],[-0.615,-1.825],[0,-0.718],[0.492,-0.738],[1.292,0],[0.451,0.615]],"o":[[0,-1.682],[0.595,-0.759],[1.518,0],[0.308,0.902],[0,2.359],[-0.595,0.923],[-1.477,0],[-0.882,-1.149]],"v":[[128.805,-7.302],[129.892,-11.609],[132.62,-12.86],[136.004,-10.235],[136.373,-7.589],[135.368,-3.343],[132.599,-1.969],[129.912,-3.159]],"c":true},"ix":2},"nm":"o","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"o","np":5,"cix":2,"bm":0,"ix":11,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[141.696,0],[144.67,0],[144.67,-12.716],[148.629,0],[151.254,0],[155.295,-12.716],[155.295,0],[158.453,0],[158.453,-14.829],[153.408,-14.829],[150.024,-4.041],[146.885,-14.829],[141.696,-14.829]],"c":true},"ix":2},"nm":"m","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"m","np":3,"cix":2,"bm":0,"ix":12,"mn":"ADBE Vector Group","hd":false}],"ip":2.5,"op":25,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":3,"nm":"02092020","sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-105,15,0],"ix":2,"l":2},"a":{"a":0,"k":[60,60,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"02092020002","np":3,"mn":"ADBE Checkbox Control","ix":1,"en":1,"ef":[{"ty":7,"nm":"Checkbox","mn":"ADBE Checkbox Control-0001","ix":1,"v":{"a":0,"k":0,"ix":1}}]}],"ip":0,"op":300,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":3,"nm":"Color & Stroke Change","sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-55,-102,0],"ix":2,"l":2,"x":"var $bm_rt;\n$bm_rt = effect('Axis')('Point');"},"a":{"a":0,"k":[50,50,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2,"x":"var $bm_rt;\nvar temp;\ntemp = effect('Scale')('Slider');\n$bm_rt = [\n temp,\n temp\n];"}},"ao":0,"ef":[{"ty":5,"nm":"Primary","np":3,"mn":"ADBE Color Control","ix":1,"en":1,"ef":[{"ty":2,"nm":"Color","mn":"ADBE Color Control-0001","ix":1,"v":{"a":0,"k":[1,1,1],"ix":1}}]},{"ty":5,"nm":"Axis","np":3,"mn":"ADBE Point Control","ix":2,"en":1,"ef":[{"ty":3,"nm":"Point","mn":"ADBE Point Control-0001","ix":1,"v":{"a":0,"k":[250,250],"ix":1}}]},{"ty":5,"nm":"Scale","np":3,"mn":"ADBE Slider Control","ix":3,"en":1,"ef":[{"ty":0,"nm":"Slider","mn":"ADBE Slider Control-0001","ix":1,"v":{"a":0,"k":100,"ix":1}}]},{"ty":5,"nm":"State-Intro","np":3,"mn":"ADBE Slider Control","ix":4,"en":1,"ef":[{"ty":0,"nm":"Slider","mn":"ADBE Slider Control-0001","ix":1,"v":{"a":0,"k":0,"ix":1}}]},{"ty":5,"nm":"State-Hover","np":3,"mn":"ADBE Slider Control","ix":5,"en":1,"ef":[{"ty":0,"nm":"Slider","mn":"ADBE Slider Control-0001","ix":1,"v":{"a":0,"k":1,"ix":1}}]},{"ty":5,"nm":"State-Morph-Scan-OK","np":3,"mn":"ADBE Slider Control","ix":6,"en":1,"ef":[{"ty":0,"nm":"Slider","mn":"ADBE Slider Control-0001","ix":1,"v":{"a":0,"k":0,"ix":1}}]},{"ty":5,"nm":"State-Morph-Scan-WRONG","np":3,"mn":"ADBE Slider Control","ix":7,"en":1,"ef":[{"ty":0,"nm":"Slider","mn":"ADBE Slider Control-0001","ix":1,"v":{"a":0,"k":0,"ix":1}}]},{"ty":5,"nm":"State-Loop","np":3,"mn":"ADBE Slider Control","ix":8,"en":1,"ef":[{"ty":0,"nm":"Slider","mn":"ADBE Slider Control-0001","ix":1,"v":{"a":0,"k":0,"ix":1}}]}],"ip":0,"op":300,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":0,"nm":"in-scan","parent":3,"refId":"comp_0","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11,"x":"var $bm_rt;\n$bm_rt = $bm_mul(thisComp.layer('Color & Stroke Change').effect('State-Intro')('Slider'), 100);"},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[50,50,0],"ix":2,"l":2},"a":{"a":0,"k":[250,250,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"w":500,"h":500,"ip":0,"op":101,"st":0,"bm":0},{"ddd":0,"ind":5,"ty":0,"nm":"hover-scan","parent":3,"refId":"comp_1","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11,"x":"var $bm_rt;\n$bm_rt = $bm_mul(thisComp.layer('Color & Stroke Change').effect('State-Hover')('Slider'), 100);"},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[50,50,0],"ix":2,"l":2},"a":{"a":0,"k":[250,250,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"w":500,"h":500,"ip":0,"op":101,"st":0,"bm":0},{"ddd":0,"ind":6,"ty":0,"nm":"morph-scan-OK","parent":3,"refId":"comp_2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11,"x":"var $bm_rt;\n$bm_rt = $bm_mul(thisComp.layer('Color & Stroke Change').effect('State-Morph-Scan-OK')('Slider'), 100);"},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[50,50,0],"ix":2,"l":2},"a":{"a":0,"k":[250,250,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"w":500,"h":500,"ip":0,"op":101,"st":0,"bm":0},{"ddd":0,"ind":7,"ty":0,"nm":"morph-scan-WRONG","parent":3,"refId":"comp_3","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11,"x":"var $bm_rt;\n$bm_rt = $bm_mul(thisComp.layer('Color & Stroke Change').effect('State-Morph-Scan-WRONG')('Slider'), 100);"},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[50,50,0],"ix":2,"l":2},"a":{"a":0,"k":[250,250,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"w":500,"h":500,"ip":0,"op":101,"st":0,"bm":0},{"ddd":0,"ind":8,"ty":0,"nm":"loop-scan","parent":3,"refId":"comp_4","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11,"x":"var $bm_rt;\n$bm_rt = $bm_mul(thisComp.layer('Color & Stroke Change').effect('State-Loop')('Slider'), 100);"},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[50,50,0],"ix":2,"l":2},"a":{"a":0,"k":[250,250,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"w":500,"h":500,"ip":0,"op":101,"st":0,"bm":0}],"markers":[]} \ No newline at end of file diff --git a/frontend/src/components/v2/EmptyState/EmptyState.tsx b/frontend/src/components/v2/EmptyState/EmptyState.tsx index 1c4c3f734..bb6be9afa 100644 --- a/frontend/src/components/v2/EmptyState/EmptyState.tsx +++ b/frontend/src/components/v2/EmptyState/EmptyState.tsx @@ -25,7 +25,7 @@ export const EmptyState = ({ className )} > - +
{title}
{children}
diff --git a/frontend/src/layouts/AppLayout/AppLayout.tsx b/frontend/src/layouts/AppLayout/AppLayout.tsx index 4a9be6d6b..1449a736a 100644 --- a/frontend/src/layouts/AppLayout/AppLayout.tsx +++ b/frontend/src/layouts/AppLayout/AppLayout.tsx @@ -408,24 +408,12 @@ export const AppLayout = ({ children }: LayoutProps) => { } icon="system-outline-168-view-headline" > Audit Logs - - - } - icon="system-outline-82-extension" - > - Audit Logs - - - { + + + + Secret Scanning + + + {t("common.head-title", { title: t("billing.title") })} +
diff --git a/frontend/src/pages/org/[id]/secret-scanning/index.tsx b/frontend/src/pages/org/[id]/secret-scanning/index.tsx new file mode 100644 index 000000000..adf632d1e --- /dev/null +++ b/frontend/src/pages/org/[id]/secret-scanning/index.tsx @@ -0,0 +1,85 @@ +import { useEffect, useState } from "react"; +import Head from "next/head"; +import { useRouter } from "next/router" + +import { Button } from "@app/components/v2"; +import { SecretScanningLogsTable } from "@app/views/SecretScanning/components"; + +import createNewIntegrationSession from "../../../api/secret-scanning/createSecretScanningSession"; +import getInstallationStatus from "../../../api/secret-scanning/getInstallationStatus"; +import linkGitAppInstallationWithOrganization from "../../../api/secret-scanning/linkGitAppInstallationWithOrganization"; + +export default function SecretScanning() { + const router = useRouter() + const queryParams = router.query + const [integrationEnabled, setIntegrationStatus] = useState(false) + + useEffect(()=>{ + const linkInstallation = async () => { + if (typeof queryParams.state === "string" && typeof queryParams.installation_id === "string"){ + try { + await linkGitAppInstallationWithOrganization(queryParams.installation_id as string, queryParams.state as string) + console.log("installation verification complete") + }catch (e){ + console.log("app installation is stale, start new session", e) + } + } + } + + const fetchInstallationStatus = async () => { + const status = await getInstallationStatus(String(localStorage.getItem("orgData.id"))) + setIntegrationStatus(status) + } + + fetchInstallationStatus() + linkInstallation() + },[queryParams.state, queryParams.installation_id]) + + const generateNewIntegrationSession = async () => { + const session = await createNewIntegrationSession(String(localStorage.getItem("orgData.id"))) + router.push(`https://github.com/apps/infisical-radar/installations/new?state=${session.sessionId}`) + } + + return ( +
+ + Secret scanning + + + +
+
+
Secret Scanning
+
Automatically monitor your GitHub activity and prevent secret leaks
+
+
+
Secret Scanning Status: {integrationEnabled ?

Enabled

:

Not enabled

}
+
{integrationEnabled ?

Your GitHub organization is connected to Infisical, and is being continuously monitored for secret leaks.

:

Connect your GitHub organization to Infisical.

}
+
+ {integrationEnabled ? ( +
+
+
+
+
+ ) : ( +
+ +
+ )} +
+ +
+
+
+ ); +} + +SecretScanning.requireAuth = true; diff --git a/frontend/src/pages/secret-scanning.tsx b/frontend/src/pages/secret-scanning.tsx new file mode 100644 index 000000000..6d043461f --- /dev/null +++ b/frontend/src/pages/secret-scanning.tsx @@ -0,0 +1,15 @@ +import { useEffect } from "react"; +import { useRouter } from "next/router" + +export default function SecretScanning() { + const router = useRouter(); + + useEffect(()=>{ + router.push(`${router.asPath.split("secret-scanning")[0]}/org/${localStorage.getItem("orgData.id")}/secret-scanning${router.asPath.split("secret-scanning")[1]}`) + }, []) + + + return
; +} + +SecretScanning.requireAuth = true; \ No newline at end of file diff --git a/frontend/src/pages/secret-scanning/index.tsx b/frontend/src/pages/secret-scanning/index.tsx deleted file mode 100644 index 867f35a39..000000000 --- a/frontend/src/pages/secret-scanning/index.tsx +++ /dev/null @@ -1,156 +0,0 @@ -import { useEffect, useState } from "react"; -import Head from "next/head"; -import { useRouter } from "next/router" - -import createNewIntegrationSession from "../api/secret-scanning/createSecretScanningSession"; -import getInstallationStatus from "../api/secret-scanning/getInstallationStatus"; -import getRisksByOrganization, { GitRisks } from "../api/secret-scanning/getRisksByOrganization"; -import linkGitAppInstallationWithOrganization from "../api/secret-scanning/linkGitAppInstallationWithOrganization"; -import { RiskStatus } from "../api/secret-scanning/updateRiskStatus"; - -export default function SecretScanning() { - const router = useRouter() - const queryParams = router.query - const [integrationEnabled, setIntegrationStatus] = useState(false) - const [gitRisks, setGitRisks] = useState([]); - const [selectedRiskStatus, setSelectedRiskStatus] = useState(""); - - const handleSelectRiskStatusUpdate = (event: any) => { - setSelectedRiskStatus(event.target.value); - }; - - console.log("selectedRiskStatus===>", selectedRiskStatus) - - useEffect(()=>{ - const fetchRisks = async () =>{ - const risks = await getRisksByOrganization(String(localStorage.getItem("orgData.id"))) - setGitRisks(risks) - } - - const linkInstallation = async () => { - if (typeof queryParams.state === "string" && typeof queryParams.installation_id === "string"){ - try { - await linkGitAppInstallationWithOrganization(queryParams.installation_id as string, queryParams.state as string) - console.log("installation verification complete") - }catch (e){ - console.log("app installation is stale, start new session", e) - } - } - } - - const fetchInstallationStatus = async () => { - const status = await getInstallationStatus(String(localStorage.getItem("orgData.id"))) - setIntegrationStatus(status) - } - - fetchInstallationStatus() - linkInstallation() - fetchRisks() - },[queryParams.state, queryParams.installation_id]) - - const generateNewIntegrationSession = async () => { - const session = await createNewIntegrationSession(String(localStorage.getItem("orgData.id"))) - router.push(`https://github.com/apps/infisical-radar/installations/new?state=${session.sessionId}`) - } - - return ( -
- - Secret scanning - - - - {/* */} - -
- {integrationEnabled ? ( - Git app is linked to this organization - ) : ( - - )} -
- - - - - - - - - - - - - - {gitRisks.map((risk) => { - return ( - - - - - - - - - - ); - })} - -
- Date - - Secret Type - - View Risk - - Info - - Status - - Action -
{risk.createdAt}{risk.ruleID} - - View Exposed Secret - - - -
- {risk.file}
-
- {risk.author}
- {risk.email} -
-
- {risk.isResolved ? "Resolved" : "Needs Attention"} - - {risk.isResolved ? "Resolved" : "Needs Attention"} - - -
- -
- ); -} diff --git a/frontend/src/views/SecretScanning/components/SecretScanningLogsTable.tsx b/frontend/src/views/SecretScanning/components/SecretScanningLogsTable.tsx new file mode 100644 index 000000000..fee14b963 --- /dev/null +++ b/frontend/src/views/SecretScanning/components/SecretScanningLogsTable.tsx @@ -0,0 +1,111 @@ +import { useEffect, useState } from "react"; +import { faCheck } from "@fortawesome/free-solid-svg-icons"; + +import { + EmptyState, + Table, + TableContainer, + TableSkeleton, + TBody, + Td, + Th, + THead, + Tr} from "@app/components/v2"; +import getRisksByOrganization, { GitRisks } from "@app/pages/api/secret-scanning/getRisksByOrganization"; +import { RiskStatus } from "@app/pages/api/secret-scanning/updateRiskStatus"; + +export const SecretScanningLogsTable = () => { + const [isLoading, setIsLoading] = useState(false); + const [gitRisks, setGitRisks] = useState([]); + const [selectedRiskStatus, setSelectedRiskStatus] = useState(""); + + const handleSelectRiskStatusUpdate = (event: any) => { + setSelectedRiskStatus(event.target.value); + }; + + useEffect(() => { + const fetchRisks = async () => { + setIsLoading(true); + const risks = await getRisksByOrganization(String(localStorage.getItem("orgData.id"))) + setGitRisks(risks); + setIsLoading(false); + } + + fetchRisks(); + },[]) + + + return ( + + + + + + + + + + + + + + {!isLoading && gitRisks && gitRisks?.map((risk) => { + return ( + + + + + + + + + ); + })} + {isLoading && } + {!isLoading && gitRisks && gitRisks?.length === 0 && ( + + + + )} + +
DateSecret TypeView RiskInfoStatusAction +
{risk.createdAt}{risk.ruleID} + + View Exposed Secret + + + +
+ {risk.file}
+
+ {risk.author}
+ {risk.email} +
+
{risk.isResolved ? "Resolved" : "Needs Attention"} + +
+ +
+
+ ); +} \ No newline at end of file diff --git a/frontend/src/views/SecretScanning/components/index.tsx b/frontend/src/views/SecretScanning/components/index.tsx new file mode 100644 index 000000000..d8a2f5b35 --- /dev/null +++ b/frontend/src/views/SecretScanning/components/index.tsx @@ -0,0 +1 @@ +export { SecretScanningLogsTable } from "./SecretScanningLogsTable"; \ No newline at end of file diff --git a/frontend/src/views/Settings/BillingSettingsPage/BillingSettingsPage.tsx b/frontend/src/views/Settings/BillingSettingsPage/BillingSettingsPage.tsx index 2c074917d..797b95afd 100644 --- a/frontend/src/views/Settings/BillingSettingsPage/BillingSettingsPage.tsx +++ b/frontend/src/views/Settings/BillingSettingsPage/BillingSettingsPage.tsx @@ -7,8 +7,8 @@ import { export const BillingSettingsPage = () => { const { t } = useTranslation(); return ( -
-
+
+

{t("billing.title")}

From 9919d3ee6a14a9733b76e480bd00606c43a412be Mon Sep 17 00:00:00 2001 From: Afrie Irham Date: Sun, 16 Jul 2023 11:05:37 +0800 Subject: [PATCH 05/49] feat: sort cloud and framework integrations alphabetically --- .../CloudIntegrationSection/CloudIntegrationSection.tsx | 4 +++- .../FrameworkIntegrationSection.tsx | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/frontend/src/views/IntegrationsPage/components/CloudIntegrationSection/CloudIntegrationSection.tsx b/frontend/src/views/IntegrationsPage/components/CloudIntegrationSection/CloudIntegrationSection.tsx index 0e927d86c..4ce1bd083 100644 --- a/frontend/src/views/IntegrationsPage/components/CloudIntegrationSection/CloudIntegrationSection.tsx +++ b/frontend/src/views/IntegrationsPage/components/CloudIntegrationSection/CloudIntegrationSection.tsx @@ -31,6 +31,8 @@ export const CloudIntegrationSection = ({ const isEmpty = !isLoading && !cloudIntegrations?.length; + const sortedCloudIntegrations = cloudIntegrations.sort((a, b) => a.name.localeCompare(b.name)); + return (
@@ -43,7 +45,7 @@ export const CloudIntegrationSection = ({ ))} {!isLoading && - cloudIntegrations?.map((cloudIntegration) => ( + sortedCloudIntegrations?.map((cloudIntegration) => (
null} role="button" diff --git a/frontend/src/views/IntegrationsPage/components/FrameworkIntegrationSection/FrameworkIntegrationSection.tsx b/frontend/src/views/IntegrationsPage/components/FrameworkIntegrationSection/FrameworkIntegrationSection.tsx index 9b567eaaa..d77b976bc 100644 --- a/frontend/src/views/IntegrationsPage/components/FrameworkIntegrationSection/FrameworkIntegrationSection.tsx +++ b/frontend/src/views/IntegrationsPage/components/FrameworkIntegrationSection/FrameworkIntegrationSection.tsx @@ -12,6 +12,8 @@ type Props = { export const FrameworkIntegrationSection = ({ frameworks }: Props) => { const { t } = useTranslation(); + const sortedFrameworks = frameworks.sort((a, b) => a.name.localeCompare(b.name)); + return ( <>
@@ -22,7 +24,7 @@ export const FrameworkIntegrationSection = ({ frameworks }: Props) => { className="mx-6 mt-4 grid grid-flow-dense gap-3" style={{ gridTemplateColumns: "repeat(auto-fill, minmax(120px, 1fr))" }} > - {frameworks.map((framework) => ( + {sortedFrameworks.map((framework) => ( Date: Sun, 16 Jul 2023 14:47:35 +0530 Subject: [PATCH 06/49] fixed typo --- docs/documentation/platform/token.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/documentation/platform/token.mdx b/docs/documentation/platform/token.mdx index 1fecb2fef..4d4189159 100644 --- a/docs/documentation/platform/token.mdx +++ b/docs/documentation/platform/token.mdx @@ -10,7 +10,7 @@ An Infisical Token is useful for: It's also useful for CI/CD environments and integrations such as [Docker](/integrations/platforms/docker) and [Docker Compose](/integrations/platforms/docker-compose). -To generate the the token, head over to your project settings as shown below. On creating a service token you can scope it to a path to limit the access. +To generate the token, head over to your project settings as shown below. On creating a service token you can scope it to a path to limit the access. ![token add](../../images/project-token-add.png) From 8c844fb1889bf8c665c19d1481c2254a9a0701e7 Mon Sep 17 00:00:00 2001 From: Maidul Islam Date: Sun, 16 Jul 2023 16:48:36 -0400 Subject: [PATCH 07/49] move secret scanning to main container --- backend/.eslintrc | 8 +- backend/Dockerfile | 4 + backend/package-lock.json | 6404 +++++++++++++---- backend/package.json | 2 + backend/src/config/index.ts | 7 +- .../v1/secretScanningController.ts | 2 +- backend/src/index.ts | 29 +- backend/src/models/gitRisks.ts | 4 + backend/src/models/index.ts | 5 +- .../services/GithubSecretScanningService.ts | 250 + backend/src/services/index.ts | 2 + .../templates/secretLeakIncident.handlebars | 19 + docker-compose.dev.yml | 24 - helm-charts/infisical/templates/_helpers.tpl | 28 - helm-charts/infisical/templates/ingress.yaml | 7 - .../secret-scanning-git-app-deployment.yaml | 69 - nginx/default.dev.conf | 14 - secret-engine/src/index.ts | 2 +- 18 files changed, 5176 insertions(+), 1704 deletions(-) create mode 100644 backend/src/services/GithubSecretScanningService.ts create mode 100644 backend/src/templates/secretLeakIncident.handlebars delete mode 100644 helm-charts/infisical/templates/secret-scanning-git-app-deployment.yaml diff --git a/backend/.eslintrc b/backend/.eslintrc index 2e5f5f719..d236087c1 100644 --- a/backend/.eslintrc +++ b/backend/.eslintrc @@ -10,7 +10,6 @@ "plugin:@typescript-eslint/recommended" ], "rules": { - "@typescript-eslint/no-empty-function": "off", "no-console": 2, "quotes": [ "error", @@ -35,11 +34,6 @@ "argsIgnorePattern": "^_" } ], - "sort-imports": [ - "error", - { - "ignoreDeclarationSort": true - } - ] + "sort-imports": 1 } } \ No newline at end of file diff --git a/backend/Dockerfile b/backend/Dockerfile index 06db22b62..42bb6a263 100644 --- a/backend/Dockerfile +++ b/backend/Dockerfile @@ -19,6 +19,10 @@ RUN npm ci --only-production COPY --from=build /app . +RUN apk add --no-cache bash curl && curl -1sLf \ + 'https://dl.cloudsmith.io/public/infisical/infisical-cli/setup.alpine.sh' | bash \ + && apk add infisical=0.8.1 + HEALTHCHECK --interval=10s --timeout=3s --start-period=10s \ CMD node healthcheck.js diff --git a/backend/package-lock.json b/backend/package-lock.json index 0a4a2db17..488a6819f 100644 --- a/backend/package-lock.json +++ b/backend/package-lock.json @@ -45,6 +45,7 @@ "passport": "^0.6.0", "passport-google-oauth20": "^2.0.0", "posthog-node": "^2.6.0", + "probot": "^12.3.1", "query-string": "^7.1.3", "rate-limit-mongo": "^2.3.2", "rimraf": "^3.0.2", @@ -85,11 +86,21 @@ "jest-junit": "^15.0.0", "nodemon": "^2.0.19", "npm": "^8.19.3", + "smee-client": "^1.2.3", "supertest": "^6.3.3", "ts-jest": "^29.0.3", "ts-node": "^10.9.1" } }, + "node_modules/@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/@ampproject/remapping": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", @@ -194,59 +205,47 @@ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" }, - "node_modules/@aws-sdk/abort-controller": { - "version": "3.347.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/abort-controller/-/abort-controller-3.347.0.tgz", - "integrity": "sha512-P/2qE6ntYEmYG4Ez535nJWZbXqgbkJx8CMz7ChEuEg3Gp3dvVYEKg+iEUEvlqQ2U5dWP5J3ehw5po9t86IsVPQ==", - "dependencies": { - "@aws-sdk/types": "3.347.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, "node_modules/@aws-sdk/client-cognito-identity": { - "version": "3.347.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-cognito-identity/-/client-cognito-identity-3.347.0.tgz", - "integrity": "sha512-Z92GT2SC1y1r0bl3XI6ZH6QMsL2AaG3IR6ORXeiA94OY9/eF/tQT0zDbwn/MZUwJuBnR0CfO8bq7IQgCAguQ4A==", + "version": "3.370.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-cognito-identity/-/client-cognito-identity-3.370.0.tgz", + "integrity": "sha512-/dQFXT8y0WUD/731cdLjCrxNxH7Wtg2uZx7PggevTZs9Yr2fdGPSHehIYfvpCvi59yeG9T2Cl8sFnxXL1OEx4A==", "optional": true, "dependencies": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/client-sts": "3.347.0", - "@aws-sdk/config-resolver": "3.347.0", - "@aws-sdk/credential-provider-node": "3.347.0", - "@aws-sdk/fetch-http-handler": "3.347.0", - "@aws-sdk/hash-node": "3.347.0", - "@aws-sdk/invalid-dependency": "3.347.0", - "@aws-sdk/middleware-content-length": "3.347.0", - "@aws-sdk/middleware-endpoint": "3.347.0", - "@aws-sdk/middleware-host-header": "3.347.0", - "@aws-sdk/middleware-logger": "3.347.0", - "@aws-sdk/middleware-recursion-detection": "3.347.0", - "@aws-sdk/middleware-retry": "3.347.0", - "@aws-sdk/middleware-serde": "3.347.0", - "@aws-sdk/middleware-signing": "3.347.0", - "@aws-sdk/middleware-stack": "3.347.0", - "@aws-sdk/middleware-user-agent": "3.347.0", - "@aws-sdk/node-config-provider": "3.347.0", - "@aws-sdk/node-http-handler": "3.347.0", - "@aws-sdk/smithy-client": "3.347.0", - "@aws-sdk/types": "3.347.0", - "@aws-sdk/url-parser": "3.347.0", - "@aws-sdk/util-base64": "3.310.0", - "@aws-sdk/util-body-length-browser": "3.310.0", - "@aws-sdk/util-body-length-node": "3.310.0", - "@aws-sdk/util-defaults-mode-browser": "3.347.0", - "@aws-sdk/util-defaults-mode-node": "3.347.0", - "@aws-sdk/util-endpoints": "3.347.0", - "@aws-sdk/util-retry": "3.347.0", - "@aws-sdk/util-user-agent-browser": "3.347.0", - "@aws-sdk/util-user-agent-node": "3.347.0", - "@aws-sdk/util-utf8": "3.310.0", - "@smithy/protocol-http": "^1.0.1", - "@smithy/types": "^1.0.0", + "@aws-sdk/client-sts": "3.370.0", + "@aws-sdk/credential-provider-node": "3.370.0", + "@aws-sdk/middleware-host-header": "3.370.0", + "@aws-sdk/middleware-logger": "3.370.0", + "@aws-sdk/middleware-recursion-detection": "3.370.0", + "@aws-sdk/middleware-signing": "3.370.0", + "@aws-sdk/middleware-user-agent": "3.370.0", + "@aws-sdk/types": "3.370.0", + "@aws-sdk/util-endpoints": "3.370.0", + "@aws-sdk/util-user-agent-browser": "3.370.0", + "@aws-sdk/util-user-agent-node": "3.370.0", + "@smithy/config-resolver": "^1.0.1", + "@smithy/fetch-http-handler": "^1.0.1", + "@smithy/hash-node": "^1.0.1", + "@smithy/invalid-dependency": "^1.0.1", + "@smithy/middleware-content-length": "^1.0.1", + "@smithy/middleware-endpoint": "^1.0.2", + "@smithy/middleware-retry": "^1.0.3", + "@smithy/middleware-serde": "^1.0.1", + "@smithy/middleware-stack": "^1.0.1", + "@smithy/node-config-provider": "^1.0.1", + "@smithy/node-http-handler": "^1.0.2", + "@smithy/protocol-http": "^1.1.0", + "@smithy/smithy-client": "^1.0.3", + "@smithy/types": "^1.1.0", + "@smithy/url-parser": "^1.0.1", + "@smithy/util-base64": "^1.0.1", + "@smithy/util-body-length-browser": "^1.0.1", + "@smithy/util-body-length-node": "^1.0.1", + "@smithy/util-defaults-mode-browser": "^1.0.1", + "@smithy/util-defaults-mode-node": "^1.0.1", + "@smithy/util-retry": "^1.0.3", + "@smithy/util-utf8": "^1.0.1", "tslib": "^2.5.0" }, "engines": { @@ -254,45 +253,45 @@ } }, "node_modules/@aws-sdk/client-secrets-manager": { - "version": "3.347.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-secrets-manager/-/client-secrets-manager-3.347.0.tgz", - "integrity": "sha512-lqBBJobdpVGx5OJpI3P52SaOilPkVW9zKVwPndoou8hpPYMMUVbVZ/Q0rSmjXC7wi9VzMB4SlENDM519Hu/tdQ==", + "version": "3.370.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-secrets-manager/-/client-secrets-manager-3.370.0.tgz", + "integrity": "sha512-1o1mpWbI1RyzCQ4cVpHQJnm6PziAJ+ptLt4p+wlN74Z330/nnE0JkK3t9l3CxhPqCIW8VjGbTCno5IzwAXnjPw==", "dependencies": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/client-sts": "3.347.0", - "@aws-sdk/config-resolver": "3.347.0", - "@aws-sdk/credential-provider-node": "3.347.0", - "@aws-sdk/fetch-http-handler": "3.347.0", - "@aws-sdk/hash-node": "3.347.0", - "@aws-sdk/invalid-dependency": "3.347.0", - "@aws-sdk/middleware-content-length": "3.347.0", - "@aws-sdk/middleware-endpoint": "3.347.0", - "@aws-sdk/middleware-host-header": "3.347.0", - "@aws-sdk/middleware-logger": "3.347.0", - "@aws-sdk/middleware-recursion-detection": "3.347.0", - "@aws-sdk/middleware-retry": "3.347.0", - "@aws-sdk/middleware-serde": "3.347.0", - "@aws-sdk/middleware-signing": "3.347.0", - "@aws-sdk/middleware-stack": "3.347.0", - "@aws-sdk/middleware-user-agent": "3.347.0", - "@aws-sdk/node-config-provider": "3.347.0", - "@aws-sdk/node-http-handler": "3.347.0", - "@aws-sdk/smithy-client": "3.347.0", - "@aws-sdk/types": "3.347.0", - "@aws-sdk/url-parser": "3.347.0", - "@aws-sdk/util-base64": "3.310.0", - "@aws-sdk/util-body-length-browser": "3.310.0", - "@aws-sdk/util-body-length-node": "3.310.0", - "@aws-sdk/util-defaults-mode-browser": "3.347.0", - "@aws-sdk/util-defaults-mode-node": "3.347.0", - "@aws-sdk/util-endpoints": "3.347.0", - "@aws-sdk/util-retry": "3.347.0", - "@aws-sdk/util-user-agent-browser": "3.347.0", - "@aws-sdk/util-user-agent-node": "3.347.0", - "@aws-sdk/util-utf8": "3.310.0", - "@smithy/protocol-http": "^1.0.1", - "@smithy/types": "^1.0.0", + "@aws-sdk/client-sts": "3.370.0", + "@aws-sdk/credential-provider-node": "3.370.0", + "@aws-sdk/middleware-host-header": "3.370.0", + "@aws-sdk/middleware-logger": "3.370.0", + "@aws-sdk/middleware-recursion-detection": "3.370.0", + "@aws-sdk/middleware-signing": "3.370.0", + "@aws-sdk/middleware-user-agent": "3.370.0", + "@aws-sdk/types": "3.370.0", + "@aws-sdk/util-endpoints": "3.370.0", + "@aws-sdk/util-user-agent-browser": "3.370.0", + "@aws-sdk/util-user-agent-node": "3.370.0", + "@smithy/config-resolver": "^1.0.1", + "@smithy/fetch-http-handler": "^1.0.1", + "@smithy/hash-node": "^1.0.1", + "@smithy/invalid-dependency": "^1.0.1", + "@smithy/middleware-content-length": "^1.0.1", + "@smithy/middleware-endpoint": "^1.0.2", + "@smithy/middleware-retry": "^1.0.3", + "@smithy/middleware-serde": "^1.0.1", + "@smithy/middleware-stack": "^1.0.1", + "@smithy/node-config-provider": "^1.0.1", + "@smithy/node-http-handler": "^1.0.2", + "@smithy/protocol-http": "^1.1.0", + "@smithy/smithy-client": "^1.0.3", + "@smithy/types": "^1.1.0", + "@smithy/url-parser": "^1.0.1", + "@smithy/util-base64": "^1.0.1", + "@smithy/util-body-length-browser": "^1.0.1", + "@smithy/util-body-length-node": "^1.0.1", + "@smithy/util-defaults-mode-browser": "^1.0.1", + "@smithy/util-defaults-mode-node": "^1.0.1", + "@smithy/util-retry": "^1.0.3", + "@smithy/util-utf8": "^1.0.1", "tslib": "^2.5.0", "uuid": "^8.3.2" }, @@ -301,42 +300,42 @@ } }, "node_modules/@aws-sdk/client-sso": { - "version": "3.347.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.347.0.tgz", - "integrity": "sha512-AZehWCNLUXTrDavsZYRi7d84Uef20ppYJ2FY0KxqrKB3lx89mO29SfSJSC4woeW5+6ooBokq8HtKxw5ImPfRhA==", + "version": "3.370.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.370.0.tgz", + "integrity": "sha512-0Ty1iHuzNxMQtN7nahgkZr4Wcu1XvqGfrQniiGdKKif9jG/4elxsQPiydRuQpFqN6b+bg7wPP7crFP1uTxx2KQ==", "dependencies": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/config-resolver": "3.347.0", - "@aws-sdk/fetch-http-handler": "3.347.0", - "@aws-sdk/hash-node": "3.347.0", - "@aws-sdk/invalid-dependency": "3.347.0", - "@aws-sdk/middleware-content-length": "3.347.0", - "@aws-sdk/middleware-endpoint": "3.347.0", - "@aws-sdk/middleware-host-header": "3.347.0", - "@aws-sdk/middleware-logger": "3.347.0", - "@aws-sdk/middleware-recursion-detection": "3.347.0", - "@aws-sdk/middleware-retry": "3.347.0", - "@aws-sdk/middleware-serde": "3.347.0", - "@aws-sdk/middleware-stack": "3.347.0", - "@aws-sdk/middleware-user-agent": "3.347.0", - "@aws-sdk/node-config-provider": "3.347.0", - "@aws-sdk/node-http-handler": "3.347.0", - "@aws-sdk/smithy-client": "3.347.0", - "@aws-sdk/types": "3.347.0", - "@aws-sdk/url-parser": "3.347.0", - "@aws-sdk/util-base64": "3.310.0", - "@aws-sdk/util-body-length-browser": "3.310.0", - "@aws-sdk/util-body-length-node": "3.310.0", - "@aws-sdk/util-defaults-mode-browser": "3.347.0", - "@aws-sdk/util-defaults-mode-node": "3.347.0", - "@aws-sdk/util-endpoints": "3.347.0", - "@aws-sdk/util-retry": "3.347.0", - "@aws-sdk/util-user-agent-browser": "3.347.0", - "@aws-sdk/util-user-agent-node": "3.347.0", - "@aws-sdk/util-utf8": "3.310.0", - "@smithy/protocol-http": "^1.0.1", - "@smithy/types": "^1.0.0", + "@aws-sdk/middleware-host-header": "3.370.0", + "@aws-sdk/middleware-logger": "3.370.0", + "@aws-sdk/middleware-recursion-detection": "3.370.0", + "@aws-sdk/middleware-user-agent": "3.370.0", + "@aws-sdk/types": "3.370.0", + "@aws-sdk/util-endpoints": "3.370.0", + "@aws-sdk/util-user-agent-browser": "3.370.0", + "@aws-sdk/util-user-agent-node": "3.370.0", + "@smithy/config-resolver": "^1.0.1", + "@smithy/fetch-http-handler": "^1.0.1", + "@smithy/hash-node": "^1.0.1", + "@smithy/invalid-dependency": "^1.0.1", + "@smithy/middleware-content-length": "^1.0.1", + "@smithy/middleware-endpoint": "^1.0.2", + "@smithy/middleware-retry": "^1.0.3", + "@smithy/middleware-serde": "^1.0.1", + "@smithy/middleware-stack": "^1.0.1", + "@smithy/node-config-provider": "^1.0.1", + "@smithy/node-http-handler": "^1.0.2", + "@smithy/protocol-http": "^1.1.0", + "@smithy/smithy-client": "^1.0.3", + "@smithy/types": "^1.1.0", + "@smithy/url-parser": "^1.0.1", + "@smithy/util-base64": "^1.0.1", + "@smithy/util-body-length-browser": "^1.0.1", + "@smithy/util-body-length-node": "^1.0.1", + "@smithy/util-defaults-mode-browser": "^1.0.1", + "@smithy/util-defaults-mode-node": "^1.0.1", + "@smithy/util-retry": "^1.0.3", + "@smithy/util-utf8": "^1.0.1", "tslib": "^2.5.0" }, "engines": { @@ -344,42 +343,42 @@ } }, "node_modules/@aws-sdk/client-sso-oidc": { - "version": "3.347.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.347.0.tgz", - "integrity": "sha512-IBxRfPqb8f9FqpmDbzcRDfoiasj/Y47C4Gj+j3kA5T1XWyGwbDI9QnPW/rnkZTWxLUUG1LSbBNwbPD6TLoff8A==", + "version": "3.370.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.370.0.tgz", + "integrity": "sha512-jAYOO74lmVXylQylqkPrjLzxvUnMKw476JCUTvCO6Q8nv3LzCWd76Ihgv/m9Q4M2Tbqi1iP2roVK5bstsXzEjA==", "dependencies": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/config-resolver": "3.347.0", - "@aws-sdk/fetch-http-handler": "3.347.0", - "@aws-sdk/hash-node": "3.347.0", - "@aws-sdk/invalid-dependency": "3.347.0", - "@aws-sdk/middleware-content-length": "3.347.0", - "@aws-sdk/middleware-endpoint": "3.347.0", - "@aws-sdk/middleware-host-header": "3.347.0", - "@aws-sdk/middleware-logger": "3.347.0", - "@aws-sdk/middleware-recursion-detection": "3.347.0", - "@aws-sdk/middleware-retry": "3.347.0", - "@aws-sdk/middleware-serde": "3.347.0", - "@aws-sdk/middleware-stack": "3.347.0", - "@aws-sdk/middleware-user-agent": "3.347.0", - "@aws-sdk/node-config-provider": "3.347.0", - "@aws-sdk/node-http-handler": "3.347.0", - "@aws-sdk/smithy-client": "3.347.0", - "@aws-sdk/types": "3.347.0", - "@aws-sdk/url-parser": "3.347.0", - "@aws-sdk/util-base64": "3.310.0", - "@aws-sdk/util-body-length-browser": "3.310.0", - "@aws-sdk/util-body-length-node": "3.310.0", - "@aws-sdk/util-defaults-mode-browser": "3.347.0", - "@aws-sdk/util-defaults-mode-node": "3.347.0", - "@aws-sdk/util-endpoints": "3.347.0", - "@aws-sdk/util-retry": "3.347.0", - "@aws-sdk/util-user-agent-browser": "3.347.0", - "@aws-sdk/util-user-agent-node": "3.347.0", - "@aws-sdk/util-utf8": "3.310.0", - "@smithy/protocol-http": "^1.0.1", - "@smithy/types": "^1.0.0", + "@aws-sdk/middleware-host-header": "3.370.0", + "@aws-sdk/middleware-logger": "3.370.0", + "@aws-sdk/middleware-recursion-detection": "3.370.0", + "@aws-sdk/middleware-user-agent": "3.370.0", + "@aws-sdk/types": "3.370.0", + "@aws-sdk/util-endpoints": "3.370.0", + "@aws-sdk/util-user-agent-browser": "3.370.0", + "@aws-sdk/util-user-agent-node": "3.370.0", + "@smithy/config-resolver": "^1.0.1", + "@smithy/fetch-http-handler": "^1.0.1", + "@smithy/hash-node": "^1.0.1", + "@smithy/invalid-dependency": "^1.0.1", + "@smithy/middleware-content-length": "^1.0.1", + "@smithy/middleware-endpoint": "^1.0.2", + "@smithy/middleware-retry": "^1.0.3", + "@smithy/middleware-serde": "^1.0.1", + "@smithy/middleware-stack": "^1.0.1", + "@smithy/node-config-provider": "^1.0.1", + "@smithy/node-http-handler": "^1.0.2", + "@smithy/protocol-http": "^1.1.0", + "@smithy/smithy-client": "^1.0.3", + "@smithy/types": "^1.1.0", + "@smithy/url-parser": "^1.0.1", + "@smithy/util-base64": "^1.0.1", + "@smithy/util-body-length-browser": "^1.0.1", + "@smithy/util-body-length-node": "^1.0.1", + "@smithy/util-defaults-mode-browser": "^1.0.1", + "@smithy/util-defaults-mode-node": "^1.0.1", + "@smithy/util-retry": "^1.0.3", + "@smithy/util-utf8": "^1.0.1", "tslib": "^2.5.0" }, "engines": { @@ -387,60 +386,46 @@ } }, "node_modules/@aws-sdk/client-sts": { - "version": "3.347.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.347.0.tgz", - "integrity": "sha512-QcJCUlzJZLAFTFSuELKd4BF5I5W38TR/m7NX2y1tn2la9JIrWSrz+tj598zfp2V4pJPzRJ1i8RglTZxSRIvsxQ==", + "version": "3.370.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.370.0.tgz", + "integrity": "sha512-utFxOPWIzbN+3kc415Je2o4J72hOLNhgR2Gt5EnRSggC3yOnkC4GzauxG8n7n5gZGBX45eyubHyPOXLOIyoqQA==", "dependencies": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/config-resolver": "3.347.0", - "@aws-sdk/credential-provider-node": "3.347.0", - "@aws-sdk/fetch-http-handler": "3.347.0", - "@aws-sdk/hash-node": "3.347.0", - "@aws-sdk/invalid-dependency": "3.347.0", - "@aws-sdk/middleware-content-length": "3.347.0", - "@aws-sdk/middleware-endpoint": "3.347.0", - "@aws-sdk/middleware-host-header": "3.347.0", - "@aws-sdk/middleware-logger": "3.347.0", - "@aws-sdk/middleware-recursion-detection": "3.347.0", - "@aws-sdk/middleware-retry": "3.347.0", - "@aws-sdk/middleware-sdk-sts": "3.347.0", - "@aws-sdk/middleware-serde": "3.347.0", - "@aws-sdk/middleware-signing": "3.347.0", - "@aws-sdk/middleware-stack": "3.347.0", - "@aws-sdk/middleware-user-agent": "3.347.0", - "@aws-sdk/node-config-provider": "3.347.0", - "@aws-sdk/node-http-handler": "3.347.0", - "@aws-sdk/smithy-client": "3.347.0", - "@aws-sdk/types": "3.347.0", - "@aws-sdk/url-parser": "3.347.0", - "@aws-sdk/util-base64": "3.310.0", - "@aws-sdk/util-body-length-browser": "3.310.0", - "@aws-sdk/util-body-length-node": "3.310.0", - "@aws-sdk/util-defaults-mode-browser": "3.347.0", - "@aws-sdk/util-defaults-mode-node": "3.347.0", - "@aws-sdk/util-endpoints": "3.347.0", - "@aws-sdk/util-retry": "3.347.0", - "@aws-sdk/util-user-agent-browser": "3.347.0", - "@aws-sdk/util-user-agent-node": "3.347.0", - "@aws-sdk/util-utf8": "3.310.0", - "@smithy/protocol-http": "^1.0.1", - "@smithy/types": "^1.0.0", - "fast-xml-parser": "4.1.2", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/config-resolver": { - "version": "3.347.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/config-resolver/-/config-resolver-3.347.0.tgz", - "integrity": "sha512-2ja+Sf/VnUO7IQ3nKbDQ5aumYKKJUaTm/BuVJ29wNho8wYHfuf7wHZV0pDTkB8RF5SH7IpHap7zpZAj39Iq+EA==", - "dependencies": { - "@aws-sdk/types": "3.347.0", - "@aws-sdk/util-config-provider": "3.310.0", - "@aws-sdk/util-middleware": "3.347.0", + "@aws-sdk/credential-provider-node": "3.370.0", + "@aws-sdk/middleware-host-header": "3.370.0", + "@aws-sdk/middleware-logger": "3.370.0", + "@aws-sdk/middleware-recursion-detection": "3.370.0", + "@aws-sdk/middleware-sdk-sts": "3.370.0", + "@aws-sdk/middleware-signing": "3.370.0", + "@aws-sdk/middleware-user-agent": "3.370.0", + "@aws-sdk/types": "3.370.0", + "@aws-sdk/util-endpoints": "3.370.0", + "@aws-sdk/util-user-agent-browser": "3.370.0", + "@aws-sdk/util-user-agent-node": "3.370.0", + "@smithy/config-resolver": "^1.0.1", + "@smithy/fetch-http-handler": "^1.0.1", + "@smithy/hash-node": "^1.0.1", + "@smithy/invalid-dependency": "^1.0.1", + "@smithy/middleware-content-length": "^1.0.1", + "@smithy/middleware-endpoint": "^1.0.2", + "@smithy/middleware-retry": "^1.0.3", + "@smithy/middleware-serde": "^1.0.1", + "@smithy/middleware-stack": "^1.0.1", + "@smithy/node-config-provider": "^1.0.1", + "@smithy/node-http-handler": "^1.0.2", + "@smithy/protocol-http": "^1.1.0", + "@smithy/smithy-client": "^1.0.3", + "@smithy/types": "^1.1.0", + "@smithy/url-parser": "^1.0.1", + "@smithy/util-base64": "^1.0.1", + "@smithy/util-body-length-browser": "^1.0.1", + "@smithy/util-body-length-node": "^1.0.1", + "@smithy/util-defaults-mode-browser": "^1.0.1", + "@smithy/util-defaults-mode-node": "^1.0.1", + "@smithy/util-retry": "^1.0.3", + "@smithy/util-utf8": "^1.0.1", + "fast-xml-parser": "4.2.5", "tslib": "^2.5.0" }, "engines": { @@ -448,14 +433,15 @@ } }, "node_modules/@aws-sdk/credential-provider-cognito-identity": { - "version": "3.347.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.347.0.tgz", - "integrity": "sha512-7NiVVQC51HvomI44OyD+UekZ7qxauJeFGwQILbQ0beAxNuPZL7Ect/jB6A5MeleyqP+sVn8cB7qBMZjFJRhoJA==", + "version": "3.370.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.370.0.tgz", + "integrity": "sha512-OjNAN72+QoyJAmOayi47AlFzpQc4E59LWRE2GKgH0F1pEgr3t34T0/EHusCoxUjOz5mRRXrKjNlHVC7ezOFEcg==", "optional": true, "dependencies": { - "@aws-sdk/client-cognito-identity": "3.347.0", - "@aws-sdk/property-provider": "3.347.0", - "@aws-sdk/types": "3.347.0", + "@aws-sdk/client-cognito-identity": "3.370.0", + "@aws-sdk/types": "3.370.0", + "@smithy/property-provider": "^1.0.1", + "@smithy/types": "^1.1.0", "tslib": "^2.5.0" }, "engines": { @@ -463,27 +449,13 @@ } }, "node_modules/@aws-sdk/credential-provider-env": { - "version": "3.347.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.347.0.tgz", - "integrity": "sha512-UnEM+LKGpXKzw/1WvYEQsC6Wj9PupYZdQOE+e2Dgy2dqk/pVFy4WueRtFXYDT2B41ppv3drdXUuKZRIDVqIgNQ==", + "version": "3.370.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.370.0.tgz", + "integrity": "sha512-raR3yP/4GGbKFRPP5hUBNkEmTnzxI9mEc2vJAJrcv4G4J4i/UP6ELiLInQ5eO2/VcV/CeKGZA3t7d1tsJ+jhCg==", "dependencies": { - "@aws-sdk/property-provider": "3.347.0", - "@aws-sdk/types": "3.347.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/credential-provider-imds": { - "version": "3.347.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-imds/-/credential-provider-imds-3.347.0.tgz", - "integrity": "sha512-7scCy/DCDRLIhlqTxff97LQWDnRwRXji3bxxMg+xWOTTaJe7PWx+etGSbBWaL42vsBHFShQjSLvJryEgoBktpw==", - "dependencies": { - "@aws-sdk/node-config-provider": "3.347.0", - "@aws-sdk/property-provider": "3.347.0", - "@aws-sdk/types": "3.347.0", - "@aws-sdk/url-parser": "3.347.0", + "@aws-sdk/types": "3.370.0", + "@smithy/property-provider": "^1.0.1", + "@smithy/types": "^1.1.0", "tslib": "^2.5.0" }, "engines": { @@ -491,18 +463,19 @@ } }, "node_modules/@aws-sdk/credential-provider-ini": { - "version": "3.347.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.347.0.tgz", - "integrity": "sha512-84TNF34ryabmVbILOq7f+/Jy8tJaskvHdax3X90qxFtXRU11kX0bf5NYL616KT0epR0VGpy50ThfIqvBwxeJfQ==", + "version": "3.370.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.370.0.tgz", + "integrity": "sha512-eJyapFKa4NrC9RfTgxlXnXfS9InG/QMEUPPVL+VhG7YS6nKqetC1digOYgivnEeu+XSKE0DJ7uZuXujN2Y7VAQ==", "dependencies": { - "@aws-sdk/credential-provider-env": "3.347.0", - "@aws-sdk/credential-provider-imds": "3.347.0", - "@aws-sdk/credential-provider-process": "3.347.0", - "@aws-sdk/credential-provider-sso": "3.347.0", - "@aws-sdk/credential-provider-web-identity": "3.347.0", - "@aws-sdk/property-provider": "3.347.0", - "@aws-sdk/shared-ini-file-loader": "3.347.0", - "@aws-sdk/types": "3.347.0", + "@aws-sdk/credential-provider-env": "3.370.0", + "@aws-sdk/credential-provider-process": "3.370.0", + "@aws-sdk/credential-provider-sso": "3.370.0", + "@aws-sdk/credential-provider-web-identity": "3.370.0", + "@aws-sdk/types": "3.370.0", + "@smithy/credential-provider-imds": "^1.0.1", + "@smithy/property-provider": "^1.0.1", + "@smithy/shared-ini-file-loader": "^1.0.1", + "@smithy/types": "^1.1.0", "tslib": "^2.5.0" }, "engines": { @@ -510,19 +483,20 @@ } }, "node_modules/@aws-sdk/credential-provider-node": { - "version": "3.347.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.347.0.tgz", - "integrity": "sha512-ds2uxE0krl94RdQ7bstwafUXdlMeEOPgedhaheVVlj8kH+XqlZdwUUaUv1uoEI9iBzuSjKftUkIHo0xsTiwtaw==", + "version": "3.370.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.370.0.tgz", + "integrity": "sha512-gkFiotBFKE4Fcn8CzQnMeab9TAR06FEAD02T4ZRYW1xGrBJOowmje9dKqdwQFHSPgnWAP+8HoTA8iwbhTLvjNA==", "dependencies": { - "@aws-sdk/credential-provider-env": "3.347.0", - "@aws-sdk/credential-provider-imds": "3.347.0", - "@aws-sdk/credential-provider-ini": "3.347.0", - "@aws-sdk/credential-provider-process": "3.347.0", - "@aws-sdk/credential-provider-sso": "3.347.0", - "@aws-sdk/credential-provider-web-identity": "3.347.0", - "@aws-sdk/property-provider": "3.347.0", - "@aws-sdk/shared-ini-file-loader": "3.347.0", - "@aws-sdk/types": "3.347.0", + "@aws-sdk/credential-provider-env": "3.370.0", + "@aws-sdk/credential-provider-ini": "3.370.0", + "@aws-sdk/credential-provider-process": "3.370.0", + "@aws-sdk/credential-provider-sso": "3.370.0", + "@aws-sdk/credential-provider-web-identity": "3.370.0", + "@aws-sdk/types": "3.370.0", + "@smithy/credential-provider-imds": "^1.0.1", + "@smithy/property-provider": "^1.0.1", + "@smithy/shared-ini-file-loader": "^1.0.1", + "@smithy/types": "^1.1.0", "tslib": "^2.5.0" }, "engines": { @@ -530,13 +504,14 @@ } }, "node_modules/@aws-sdk/credential-provider-process": { - "version": "3.347.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.347.0.tgz", - "integrity": "sha512-yl1z4MsaBdXd4GQ2halIvYds23S67kElyOwz7g8kaQ4kHj+UoYWxz3JVW/DGusM6XmQ9/F67utBrUVA0uhQYyw==", + "version": "3.370.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.370.0.tgz", + "integrity": "sha512-0BKFFZmUO779Xdw3u7wWnoWhYA4zygxJbgGVSyjkOGBvdkbPSTTcdwT1KFkaQy2kOXYeZPl+usVVRXs+ph4ejg==", "dependencies": { - "@aws-sdk/property-provider": "3.347.0", - "@aws-sdk/shared-ini-file-loader": "3.347.0", - "@aws-sdk/types": "3.347.0", + "@aws-sdk/types": "3.370.0", + "@smithy/property-provider": "^1.0.1", + "@smithy/shared-ini-file-loader": "^1.0.1", + "@smithy/types": "^1.1.0", "tslib": "^2.5.0" }, "engines": { @@ -544,15 +519,16 @@ } }, "node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.347.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.347.0.tgz", - "integrity": "sha512-M1d7EnUaJbSNCmNalEbINmtFkc9wJufx7UhKtEeFwSq9KEzOMroH1MEOeiqIw9f/zE8NI/iPkVeEhw123vmBrQ==", + "version": "3.370.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.370.0.tgz", + "integrity": "sha512-PFroYm5hcPSfC/jkZnCI34QFL3I7WVKveVk6/F3fud/cnP8hp6YjA9NiTNbqdFSzsyoiN/+e5fZgNKih8vVPTA==", "dependencies": { - "@aws-sdk/client-sso": "3.347.0", - "@aws-sdk/property-provider": "3.347.0", - "@aws-sdk/shared-ini-file-loader": "3.347.0", - "@aws-sdk/token-providers": "3.347.0", - "@aws-sdk/types": "3.347.0", + "@aws-sdk/client-sso": "3.370.0", + "@aws-sdk/token-providers": "3.370.0", + "@aws-sdk/types": "3.370.0", + "@smithy/property-provider": "^1.0.1", + "@smithy/shared-ini-file-loader": "^1.0.1", + "@smithy/types": "^1.1.0", "tslib": "^2.5.0" }, "engines": { @@ -560,12 +536,13 @@ } }, "node_modules/@aws-sdk/credential-provider-web-identity": { - "version": "3.347.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.347.0.tgz", - "integrity": "sha512-DxoTlVK8lXjS1zVphtz/Ab+jkN/IZor9d6pP2GjJHNoAIIzXfRwwj5C8vr4eTayx/5VJ7GRP91J8GJ2cKly8Qw==", + "version": "3.370.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.370.0.tgz", + "integrity": "sha512-CFaBMLRudwhjv1sDzybNV93IaT85IwS+L8Wq6VRMa0mro1q9rrWsIZO811eF+k0NEPfgU1dLH+8Vc2qhw4SARQ==", "dependencies": { - "@aws-sdk/property-provider": "3.347.0", - "@aws-sdk/types": "3.347.0", + "@aws-sdk/types": "3.370.0", + "@smithy/property-provider": "^1.0.1", + "@smithy/types": "^1.1.0", "tslib": "^2.5.0" }, "engines": { @@ -573,109 +550,25 @@ } }, "node_modules/@aws-sdk/credential-providers": { - "version": "3.347.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-providers/-/credential-providers-3.347.0.tgz", - "integrity": "sha512-ny8tnuLToQIYbS+ztRh4/fViDDV1xk+WuapSK2T1MAIuPvhyD1IDulTyqv6P9ROoNIqt1NAoLctkWxdkLvqyQA==", + "version": "3.370.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-providers/-/credential-providers-3.370.0.tgz", + "integrity": "sha512-K5yUHJPB2QJKWzKoz1YCE2xJDvYL6bvCRyoT0mRPWbITrDjFuWxbe1QXWcMymwQIyzOITAnZq5fvj456KhPATg==", "optional": true, "dependencies": { - "@aws-sdk/client-cognito-identity": "3.347.0", - "@aws-sdk/client-sso": "3.347.0", - "@aws-sdk/client-sts": "3.347.0", - "@aws-sdk/credential-provider-cognito-identity": "3.347.0", - "@aws-sdk/credential-provider-env": "3.347.0", - "@aws-sdk/credential-provider-imds": "3.347.0", - "@aws-sdk/credential-provider-ini": "3.347.0", - "@aws-sdk/credential-provider-node": "3.347.0", - "@aws-sdk/credential-provider-process": "3.347.0", - "@aws-sdk/credential-provider-sso": "3.347.0", - "@aws-sdk/credential-provider-web-identity": "3.347.0", - "@aws-sdk/property-provider": "3.347.0", - "@aws-sdk/types": "3.347.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/eventstream-codec": { - "version": "3.347.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/eventstream-codec/-/eventstream-codec-3.347.0.tgz", - "integrity": "sha512-61q+SyspjsaQ4sdgjizMyRgVph2CiW4aAtfpoH69EJFJfTxTR/OqnZ9Jx/3YiYi0ksrvDenJddYodfWWJqD8/w==", - "dependencies": { - "@aws-crypto/crc32": "3.0.0", - "@aws-sdk/types": "3.347.0", - "@aws-sdk/util-hex-encoding": "3.310.0", - "tslib": "^2.5.0" - } - }, - "node_modules/@aws-sdk/fetch-http-handler": { - "version": "3.347.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/fetch-http-handler/-/fetch-http-handler-3.347.0.tgz", - "integrity": "sha512-sQ5P7ivY8//7wdxfA76LT1sF6V2Tyyz1qF6xXf9sihPN5Q1Y65c+SKpMzXyFSPqWZ82+SQQuDliYZouVyS6kQQ==", - "dependencies": { - "@aws-sdk/protocol-http": "3.347.0", - "@aws-sdk/querystring-builder": "3.347.0", - "@aws-sdk/types": "3.347.0", - "@aws-sdk/util-base64": "3.310.0", - "tslib": "^2.5.0" - } - }, - "node_modules/@aws-sdk/hash-node": { - "version": "3.347.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/hash-node/-/hash-node-3.347.0.tgz", - "integrity": "sha512-96+ml/4EaUaVpzBdOLGOxdoXOjkPgkoJp/0i1fxOJEvl8wdAQSwc3IugVK9wZkCxy2DlENtgOe6DfIOhfffm/g==", - "dependencies": { - "@aws-sdk/types": "3.347.0", - "@aws-sdk/util-buffer-from": "3.310.0", - "@aws-sdk/util-utf8": "3.310.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/invalid-dependency": { - "version": "3.347.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/invalid-dependency/-/invalid-dependency-3.347.0.tgz", - "integrity": "sha512-8imQcwLwqZ/wTJXZqzXT9pGLIksTRckhGLZaXT60tiBOPKuerTsus2L59UstLs5LP8TKaVZKFFSsjRIn9dQdmQ==", - "dependencies": { - "@aws-sdk/types": "3.347.0", - "tslib": "^2.5.0" - } - }, - "node_modules/@aws-sdk/is-array-buffer": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/is-array-buffer/-/is-array-buffer-3.310.0.tgz", - "integrity": "sha512-urnbcCR+h9NWUnmOtet/s4ghvzsidFmspfhYaHAmSRdy9yDjdjBJMFjjsn85A1ODUktztm+cVncXjQ38WCMjMQ==", - "dependencies": { - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/middleware-content-length": { - "version": "3.347.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-content-length/-/middleware-content-length-3.347.0.tgz", - "integrity": "sha512-i4qtWTDImMaDUtwKQPbaZpXsReiwiBomM1cWymCU4bhz81HL01oIxOxOBuiM+3NlDoCSPr3KI6txZSz/8cqXCQ==", - "dependencies": { - "@aws-sdk/protocol-http": "3.347.0", - "@aws-sdk/types": "3.347.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/middleware-endpoint": { - "version": "3.347.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-endpoint/-/middleware-endpoint-3.347.0.tgz", - "integrity": "sha512-unF0c6dMaUL1ffU+37Ugty43DgMnzPWXr/Jup/8GbK5fzzWT5NQq6dj9KHPubMbWeEjQbmczvhv25JuJdK8gNQ==", - "dependencies": { - "@aws-sdk/middleware-serde": "3.347.0", - "@aws-sdk/types": "3.347.0", - "@aws-sdk/url-parser": "3.347.0", - "@aws-sdk/util-middleware": "3.347.0", + "@aws-sdk/client-cognito-identity": "3.370.0", + "@aws-sdk/client-sso": "3.370.0", + "@aws-sdk/client-sts": "3.370.0", + "@aws-sdk/credential-provider-cognito-identity": "3.370.0", + "@aws-sdk/credential-provider-env": "3.370.0", + "@aws-sdk/credential-provider-ini": "3.370.0", + "@aws-sdk/credential-provider-node": "3.370.0", + "@aws-sdk/credential-provider-process": "3.370.0", + "@aws-sdk/credential-provider-sso": "3.370.0", + "@aws-sdk/credential-provider-web-identity": "3.370.0", + "@aws-sdk/types": "3.370.0", + "@smithy/credential-provider-imds": "^1.0.1", + "@smithy/property-provider": "^1.0.1", + "@smithy/types": "^1.1.0", "tslib": "^2.5.0" }, "engines": { @@ -683,12 +576,13 @@ } }, "node_modules/@aws-sdk/middleware-host-header": { - "version": "3.347.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.347.0.tgz", - "integrity": "sha512-kpKmR9OvMlnReqp5sKcJkozbj1wmlblbVSbnQAIkzeQj2xD5dnVR3Nn2ogQKxSmU1Fv7dEroBtrruJ1o3fY38A==", + "version": "3.370.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.370.0.tgz", + "integrity": "sha512-CPXOm/TnOFC7KyXcJglICC7OiA7Kj6mT3ChvEijr56TFOueNHvJdV4aNIFEQy0vGHOWtY12qOWLNto/wYR1BAQ==", "dependencies": { - "@aws-sdk/protocol-http": "3.347.0", - "@aws-sdk/types": "3.347.0", + "@aws-sdk/types": "3.370.0", + "@smithy/protocol-http": "^1.1.0", + "@smithy/types": "^1.1.0", "tslib": "^2.5.0" }, "engines": { @@ -696,11 +590,12 @@ } }, "node_modules/@aws-sdk/middleware-logger": { - "version": "3.347.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.347.0.tgz", - "integrity": "sha512-NYC+Id5UCkVn+3P1t/YtmHt75uED06vwaKyxDy0UmB2K66PZLVtwWbLpVWrhbroaw1bvUHYcRyQ9NIfnVcXQjA==", + "version": "3.370.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.370.0.tgz", + "integrity": "sha512-cQMq9SaZ/ORmTJPCT6VzMML7OxFdQzNkhMAgKpTDl+tdPWynlHF29E5xGoSzROnThHlQPCjogU0NZ8AxI0SWPA==", "dependencies": { - "@aws-sdk/types": "3.347.0", + "@aws-sdk/types": "3.370.0", + "@smithy/types": "^1.1.0", "tslib": "^2.5.0" }, "engines": { @@ -708,54 +603,27 @@ } }, "node_modules/@aws-sdk/middleware-recursion-detection": { - "version": "3.347.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.347.0.tgz", - "integrity": "sha512-qfnSvkFKCAMjMHR31NdsT0gv5Sq/ZHTUD4yQsSLpbVQ6iYAS834lrzXt41iyEHt57Y514uG7F/Xfvude3u4icQ==", + "version": "3.370.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.370.0.tgz", + "integrity": "sha512-L7ZF/w0lAAY/GK1khT8VdoU0XB7nWHk51rl/ecAg64J70dHnMOAg8n+5FZ9fBu/xH1FwUlHOkwlodJOgzLJjtg==", "dependencies": { - "@aws-sdk/protocol-http": "3.347.0", - "@aws-sdk/types": "3.347.0", + "@aws-sdk/types": "3.370.0", + "@smithy/protocol-http": "^1.1.0", + "@smithy/types": "^1.1.0", "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/middleware-retry": { - "version": "3.347.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-retry/-/middleware-retry-3.347.0.tgz", - "integrity": "sha512-CpdM+8dCSbX96agy4FCzOfzDmhNnGBM/pxrgIVLm5nkYTLuXp/d7ubpFEUHULr+4hCd5wakHotMt7yO29NFaVw==", - "dependencies": { - "@aws-sdk/protocol-http": "3.347.0", - "@aws-sdk/service-error-classification": "3.347.0", - "@aws-sdk/types": "3.347.0", - "@aws-sdk/util-middleware": "3.347.0", - "@aws-sdk/util-retry": "3.347.0", - "tslib": "^2.5.0", - "uuid": "^8.3.2" - }, - "engines": { - "node": ">=14.0.0" - } - }, "node_modules/@aws-sdk/middleware-sdk-sts": { - "version": "3.347.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-sts/-/middleware-sdk-sts-3.347.0.tgz", - "integrity": "sha512-38LJ0bkIoVF3W97x6Jyyou72YV9Cfbml4OaDEdnrCOo0EssNZM5d7RhjMvQDwww7/3OBY/BzeOcZKfJlkYUXGw==", + "version": "3.370.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-sts/-/middleware-sdk-sts-3.370.0.tgz", + "integrity": "sha512-ykbsoVy0AJtVbuhAlTAMcaz/tCE3pT8nAp0L7CQQxSoanRCvOux7au0KwMIQVhxgnYid4dWVF6d00SkqU5MXRA==", "dependencies": { - "@aws-sdk/middleware-signing": "3.347.0", - "@aws-sdk/types": "3.347.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/middleware-serde": { - "version": "3.347.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-serde/-/middleware-serde-3.347.0.tgz", - "integrity": "sha512-x5Foi7jRbVJXDu9bHfyCbhYDH5pKK+31MmsSJ3k8rY8keXLBxm2XEEg/AIoV9/TUF9EeVvZ7F1/RmMpJnWQsEg==", - "dependencies": { - "@aws-sdk/types": "3.347.0", + "@aws-sdk/middleware-signing": "3.370.0", + "@aws-sdk/types": "3.370.0", + "@smithy/types": "^1.1.0", "tslib": "^2.5.0" }, "engines": { @@ -763,26 +631,16 @@ } }, "node_modules/@aws-sdk/middleware-signing": { - "version": "3.347.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-signing/-/middleware-signing-3.347.0.tgz", - "integrity": "sha512-zVBF/4MGKnvhAE/J+oAL/VAehiyv+trs2dqSQXwHou9j8eA8Vm8HS2NdOwpkZQchIxTuwFlqSusDuPEdYFbvGw==", - "dependencies": { - "@aws-sdk/property-provider": "3.347.0", - "@aws-sdk/protocol-http": "3.347.0", - "@aws-sdk/signature-v4": "3.347.0", - "@aws-sdk/types": "3.347.0", - "@aws-sdk/util-middleware": "3.347.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/middleware-stack": { - "version": "3.347.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-stack/-/middleware-stack-3.347.0.tgz", - "integrity": "sha512-Izidg4rqtYMcKuvn2UzgEpPLSmyd8ub9+LQ2oIzG3mpIzCBITq7wp40jN1iNkMg+X6KEnX9vdMJIYZsPYMCYuQ==", + "version": "3.370.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-signing/-/middleware-signing-3.370.0.tgz", + "integrity": "sha512-Dwr/RTCWOXdm394wCwICGT2VNOTMRe4IGPsBRJAsM24pm+EEqQzSS3Xu/U/zF4exuxqpMta4wec4QpSarPNTxA==", "dependencies": { + "@aws-sdk/types": "3.370.0", + "@smithy/property-provider": "^1.0.1", + "@smithy/protocol-http": "^1.1.0", + "@smithy/signature-v4": "^1.0.1", + "@smithy/types": "^1.1.0", + "@smithy/util-middleware": "^1.0.1", "tslib": "^2.5.0" }, "engines": { @@ -790,142 +648,14 @@ } }, "node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.347.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.347.0.tgz", - "integrity": "sha512-wJbGN3OE1/daVCrwk49whhIr9E0j1N4gWwN/wi4WuyYIA+5lMUfVp0aGIOvZR+878DxuFz2hQ4XcZVT4K2WvQw==", + "version": "3.370.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.370.0.tgz", + "integrity": "sha512-2+3SB6MtMAq1+gVXhw0Y3ONXuljorh6ijnxgTpv+uQnBW5jHCUiAS8WDYiDEm7i9euJPbvJfM8WUrSMDMU6Cog==", "dependencies": { - "@aws-sdk/protocol-http": "3.347.0", - "@aws-sdk/types": "3.347.0", - "@aws-sdk/util-endpoints": "3.347.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/node-config-provider": { - "version": "3.347.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/node-config-provider/-/node-config-provider-3.347.0.tgz", - "integrity": "sha512-faU93d3+5uTTUcotGgMXF+sJVFjrKh+ufW+CzYKT4yUHammyaIab/IbTPWy2hIolcEGtuPeVoxXw8TXbkh/tuw==", - "dependencies": { - "@aws-sdk/property-provider": "3.347.0", - "@aws-sdk/shared-ini-file-loader": "3.347.0", - "@aws-sdk/types": "3.347.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/node-http-handler": { - "version": "3.347.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/node-http-handler/-/node-http-handler-3.347.0.tgz", - "integrity": "sha512-eluPf3CeeEaPbETsPw7ee0Rb0FP79amu8vdLMrQmkrD+KP4owupUXOEI4drxWJgBSd+3PRowPWCDA8wUtraHKg==", - "dependencies": { - "@aws-sdk/abort-controller": "3.347.0", - "@aws-sdk/protocol-http": "3.347.0", - "@aws-sdk/querystring-builder": "3.347.0", - "@aws-sdk/types": "3.347.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/property-provider": { - "version": "3.347.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/property-provider/-/property-provider-3.347.0.tgz", - "integrity": "sha512-t3nJ8CYPLKAF2v9nIHOHOlF0CviQbTvbFc2L4a+A+EVd/rM4PzL3+3n8ZJsr0h7f6uD04+b5YRFgKgnaqLXlEg==", - "dependencies": { - "@aws-sdk/types": "3.347.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/protocol-http": { - "version": "3.347.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/protocol-http/-/protocol-http-3.347.0.tgz", - "integrity": "sha512-2YdBhc02Wvy03YjhGwUxF0UQgrPWEy8Iq75pfS42N+/0B/+eWX1aQgfjFxIpLg7YSjT5eKtYOQGlYd4MFTgj9g==", - "dependencies": { - "@aws-sdk/types": "3.347.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/querystring-builder": { - "version": "3.347.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/querystring-builder/-/querystring-builder-3.347.0.tgz", - "integrity": "sha512-phtKTe6FXoV02MoPkIVV6owXI8Mwr5IBN3bPoxhcPvJG2AjEmnetSIrhb8kwc4oNhlwfZwH6Jo5ARW/VEWbZtg==", - "dependencies": { - "@aws-sdk/types": "3.347.0", - "@aws-sdk/util-uri-escape": "3.310.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/querystring-parser": { - "version": "3.347.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/querystring-parser/-/querystring-parser-3.347.0.tgz", - "integrity": "sha512-5VXOhfZz78T2W7SuXf2avfjKglx1VZgZgp9Zfhrt/Rq+MTu2D+PZc5zmJHhYigD7x83jLSLogpuInQpFMA9LgA==", - "dependencies": { - "@aws-sdk/types": "3.347.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/service-error-classification": { - "version": "3.347.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/service-error-classification/-/service-error-classification-3.347.0.tgz", - "integrity": "sha512-xZ3MqSY81Oy2gh5g0fCtooAbahqh9VhsF8vcKjVX8+XPbGC8y+kej82+MsMg4gYL8gRFB9u4hgYbNgIS6JTAvg==", - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/shared-ini-file-loader": { - "version": "3.347.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/shared-ini-file-loader/-/shared-ini-file-loader-3.347.0.tgz", - "integrity": "sha512-Xw+zAZQVLb+xMNHChXQ29tzzLqm3AEHsD8JJnlkeFjeMnWQtXdUfOARl5s8NzAppcKQNlVe2gPzjaKjoy2jz1Q==", - "dependencies": { - "@aws-sdk/types": "3.347.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/signature-v4": { - "version": "3.347.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4/-/signature-v4-3.347.0.tgz", - "integrity": "sha512-58Uq1do+VsTHYkP11dTK+DF53fguoNNJL9rHRWhzP+OcYv3/mBMLoS2WPz/x9FO5mBg4ESFsug0I6mXbd36tjw==", - "dependencies": { - "@aws-sdk/eventstream-codec": "3.347.0", - "@aws-sdk/is-array-buffer": "3.310.0", - "@aws-sdk/types": "3.347.0", - "@aws-sdk/util-hex-encoding": "3.310.0", - "@aws-sdk/util-middleware": "3.347.0", - "@aws-sdk/util-uri-escape": "3.310.0", - "@aws-sdk/util-utf8": "3.310.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/smithy-client": { - "version": "3.347.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/smithy-client/-/smithy-client-3.347.0.tgz", - "integrity": "sha512-PaGTDsJLGK0sTjA6YdYQzILRlPRN3uVFyqeBUkfltXssvUzkm8z2t1lz2H4VyJLAhwnG5ZuZTNEV/2mcWrU7JQ==", - "dependencies": { - "@aws-sdk/middleware-stack": "3.347.0", - "@aws-sdk/types": "3.347.0", + "@aws-sdk/types": "3.370.0", + "@aws-sdk/util-endpoints": "3.370.0", + "@smithy/protocol-http": "^1.1.0", + "@smithy/types": "^1.1.0", "tslib": "^2.5.0" }, "engines": { @@ -933,14 +663,15 @@ } }, "node_modules/@aws-sdk/token-providers": { - "version": "3.347.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.347.0.tgz", - "integrity": "sha512-DZS9UWEy105zsaBJTgcvv1U+0jl7j1OzfMpnLf/lEYjEvx/4FqY2Ue/OZUACJorZgm/dWNqrhY17tZXtS/S3ew==", + "version": "3.370.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.370.0.tgz", + "integrity": "sha512-EyR2ZYr+lJeRiZU2/eLR+mlYU9RXLQvNyGFSAekJKgN13Rpq/h0syzXVFLP/RSod/oZenh/fhVZ2HwlZxuGBtQ==", "dependencies": { - "@aws-sdk/client-sso-oidc": "3.347.0", - "@aws-sdk/property-provider": "3.347.0", - "@aws-sdk/shared-ini-file-loader": "3.347.0", - "@aws-sdk/types": "3.347.0", + "@aws-sdk/client-sso-oidc": "3.370.0", + "@aws-sdk/types": "3.370.0", + "@smithy/property-provider": "^1.0.1", + "@smithy/shared-ini-file-loader": "^1.0.1", + "@smithy/types": "^1.1.0", "tslib": "^2.5.0" }, "engines": { @@ -948,127 +679,23 @@ } }, "node_modules/@aws-sdk/types": { - "version": "3.347.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.347.0.tgz", - "integrity": "sha512-GkCMy79mdjU9OTIe5KT58fI/6uqdf8UmMdWqVHmFJ+UpEzOci7L/uw4sOXWo7xpPzLs6cJ7s5ouGZW4GRPmHFA==", + "version": "3.370.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.370.0.tgz", + "integrity": "sha512-8PGMKklSkRKjunFhzM2y5Jm0H2TBu7YRNISdYzXLUHKSP9zlMEYagseKVdmox0zKHf1LXVNuSlUV2b6SRrieCQ==", "dependencies": { + "@smithy/types": "^1.1.0", "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/url-parser": { - "version": "3.347.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/url-parser/-/url-parser-3.347.0.tgz", - "integrity": "sha512-lhrnVjxdV7hl+yCnJfDZOaVLSqKjxN20MIOiijRiqaWGLGEAiSqBreMhL89X1WKCifxAs4zZf9YB9SbdziRpAA==", - "dependencies": { - "@aws-sdk/querystring-parser": "3.347.0", - "@aws-sdk/types": "3.347.0", - "tslib": "^2.5.0" - } - }, - "node_modules/@aws-sdk/util-base64": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-base64/-/util-base64-3.310.0.tgz", - "integrity": "sha512-v3+HBKQvqgdzcbL+pFswlx5HQsd9L6ZTlyPVL2LS9nNXnCcR3XgGz9jRskikRUuUvUXtkSG1J88GAOnJ/apTPg==", - "dependencies": { - "@aws-sdk/util-buffer-from": "3.310.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/util-body-length-browser": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-body-length-browser/-/util-body-length-browser-3.310.0.tgz", - "integrity": "sha512-sxsC3lPBGfpHtNTUoGXMQXLwjmR0zVpx0rSvzTPAuoVILVsp5AU/w5FphNPxD5OVIjNbZv9KsKTuvNTiZjDp9g==", - "dependencies": { - "tslib": "^2.5.0" - } - }, - "node_modules/@aws-sdk/util-body-length-node": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-body-length-node/-/util-body-length-node-3.310.0.tgz", - "integrity": "sha512-2tqGXdyKhyA6w4zz7UPoS8Ip+7sayOg9BwHNidiGm2ikbDxm1YrCfYXvCBdwaJxa4hJfRVz+aL9e+d3GqPI9pQ==", - "dependencies": { - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/util-buffer-from": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-buffer-from/-/util-buffer-from-3.310.0.tgz", - "integrity": "sha512-i6LVeXFtGih5Zs8enLrt+ExXY92QV25jtEnTKHsmlFqFAuL3VBeod6boeMXkN2p9lbSVVQ1sAOOYZOHYbYkntw==", - "dependencies": { - "@aws-sdk/is-array-buffer": "3.310.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/util-config-provider": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-config-provider/-/util-config-provider-3.310.0.tgz", - "integrity": "sha512-xIBaYo8dwiojCw8vnUcIL4Z5tyfb1v3yjqyJKJWV/dqKUFOOS0U591plmXbM+M/QkXyML3ypon1f8+BoaDExrg==", - "dependencies": { - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/util-defaults-mode-browser": { - "version": "3.347.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-defaults-mode-browser/-/util-defaults-mode-browser-3.347.0.tgz", - "integrity": "sha512-+JHFA4reWnW/nMWwrLKqL2Lm/biw/Dzi/Ix54DAkRZ08C462jMKVnUlzAI+TfxQE3YLm99EIa0G7jiEA+p81Qw==", - "dependencies": { - "@aws-sdk/property-provider": "3.347.0", - "@aws-sdk/types": "3.347.0", - "bowser": "^2.11.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/@aws-sdk/util-defaults-mode-node": { - "version": "3.347.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-defaults-mode-node/-/util-defaults-mode-node-3.347.0.tgz", - "integrity": "sha512-A8BzIVhAAZE5WEukoAN2kYebzTc99ZgncbwOmgCCbvdaYlk5tzguR/s+uoT4G0JgQGol/4hAMuJEl7elNgU6RQ==", - "dependencies": { - "@aws-sdk/config-resolver": "3.347.0", - "@aws-sdk/credential-provider-imds": "3.347.0", - "@aws-sdk/node-config-provider": "3.347.0", - "@aws-sdk/property-provider": "3.347.0", - "@aws-sdk/types": "3.347.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">= 10.0.0" - } - }, "node_modules/@aws-sdk/util-endpoints": { - "version": "3.347.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.347.0.tgz", - "integrity": "sha512-/WUkirizeNAqwVj0zkcrqdQ9pUm1HY5kU+qy7xTR0OebkuJauglkmSTMD+56L1JPunWqHhlwCMVRaz5eaJdSEQ==", - "dependencies": { - "@aws-sdk/types": "3.347.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/util-hex-encoding": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-hex-encoding/-/util-hex-encoding-3.310.0.tgz", - "integrity": "sha512-sVN7mcCCDSJ67pI1ZMtk84SKGqyix6/0A1Ab163YKn+lFBQRMKexleZzpYzNGxYzmQS6VanP/cfU7NiLQOaSfA==", + "version": "3.370.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.370.0.tgz", + "integrity": "sha512-5ltVAnM79nRlywwzZN5i8Jp4tk245OCGkKwwXbnDU+gq7zT3CIOsct1wNZvmpfZEPGt/bv7/NyRcjP+7XNsX/g==", "dependencies": { + "@aws-sdk/types": "3.370.0", "tslib": "^2.5.0" }, "engines": { @@ -1086,57 +713,25 @@ "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/util-middleware": { - "version": "3.347.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-middleware/-/util-middleware-3.347.0.tgz", - "integrity": "sha512-8owqUA3ePufeYTUvlzdJ7Z0miLorTwx+rNol5lourGQZ9JXsVMo23+yGA7nOlFuXSGkoKpMOtn6S0BT2bcfeiw==", - "dependencies": { - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/util-retry": { - "version": "3.347.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-retry/-/util-retry-3.347.0.tgz", - "integrity": "sha512-NxnQA0/FHFxriQAeEgBonA43Q9/VPFQa8cfJDuT2A1YZruMasgjcltoZszi1dvoIRWSZsFTW42eY2gdOd0nffQ==", - "dependencies": { - "@aws-sdk/service-error-classification": "3.347.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">= 14.0.0" - } - }, - "node_modules/@aws-sdk/util-uri-escape": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-uri-escape/-/util-uri-escape-3.310.0.tgz", - "integrity": "sha512-drzt+aB2qo2LgtDoiy/3sVG8w63cgLkqFIa2NFlGpUgHFWTXkqtbgf4L5QdjRGKWhmZsnqkbtL7vkSWEcYDJ4Q==", - "dependencies": { - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, "node_modules/@aws-sdk/util-user-agent-browser": { - "version": "3.347.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.347.0.tgz", - "integrity": "sha512-ydxtsKVtQefgbk1Dku1q7pMkjDYThauG9/8mQkZUAVik55OUZw71Zzr3XO8J8RKvQG8lmhPXuAQ0FKAyycc0RA==", + "version": "3.370.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.370.0.tgz", + "integrity": "sha512-028LxYZMQ0DANKhW+AKFQslkScZUeYlPmSphrCIXgdIItRZh6ZJHGzE7J/jDsEntZOrZJsjI4z0zZ5W2idj04w==", "dependencies": { - "@aws-sdk/types": "3.347.0", + "@aws-sdk/types": "3.370.0", + "@smithy/types": "^1.1.0", "bowser": "^2.11.0", "tslib": "^2.5.0" } }, "node_modules/@aws-sdk/util-user-agent-node": { - "version": "3.347.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.347.0.tgz", - "integrity": "sha512-6X0b9qGsbD1s80PmbaB6v1/ZtLfSx6fjRX8caM7NN0y/ObuLoX8LhYnW6WlB2f1+xb4EjaCNgpP/zCf98MXosw==", + "version": "3.370.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.370.0.tgz", + "integrity": "sha512-33vxZUp8vxTT/DGYIR3PivQm07sSRGWI+4fCv63Rt7Q++fO24E0kQtmVAlikRY810I10poD6rwILVtITtFSzkg==", "dependencies": { - "@aws-sdk/node-config-provider": "3.347.0", - "@aws-sdk/types": "3.347.0", + "@aws-sdk/types": "3.370.0", + "@smithy/node-config-provider": "^1.0.1", + "@smithy/types": "^1.1.0", "tslib": "^2.5.0" }, "engines": { @@ -1151,18 +746,6 @@ } } }, - "node_modules/@aws-sdk/util-utf8": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8/-/util-utf8-3.310.0.tgz", - "integrity": "sha512-DnLfFT8uCO22uOJc0pt0DsSNau1GTisngBCDw8jQuWT5CqogMJu4b/uXmwEqfj8B3GX6Xsz8zOd6JpRlPftQoA==", - "dependencies": { - "@aws-sdk/util-buffer-from": "3.310.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, "node_modules/@aws-sdk/util-utf8-browser": { "version": "3.259.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.259.0.tgz", @@ -1229,9 +812,9 @@ "dev": true }, "node_modules/@babel/core/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, "bin": { "semver": "bin/semver.js" @@ -1272,9 +855,9 @@ } }, "node_modules/@babel/helper-compilation-targets/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, "bin": { "semver": "bin/semver.js" @@ -1872,6 +1455,11 @@ "stoppable": "^1.1.0" } }, + "node_modules/@hapi/bourne": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@hapi/bourne/-/bourne-2.1.0.tgz", + "integrity": "sha512-i1BpaNDVLJdRBEKeJWkVO6tYX6DMFBuwMhSuWqLsY4ufeTKGVuV5rBsUhxPayXqnnWHgXUAmWK16H/ykO5Wj4Q==" + }, "node_modules/@humanwhocodes/config-array": { "version": "0.11.8", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", @@ -2639,6 +2227,80 @@ "node": ">= 8" } }, + "node_modules/@octokit/auth-app": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/@octokit/auth-app/-/auth-app-4.0.13.tgz", + "integrity": "sha512-NBQkmR/Zsc+8fWcVIFrwDgNXS7f4XDrkd9LHdi9DPQw1NdGHLviLzRO2ZBwTtepnwHXW5VTrVU9eFGijMUqllg==", + "dependencies": { + "@octokit/auth-oauth-app": "^5.0.0", + "@octokit/auth-oauth-user": "^2.0.0", + "@octokit/request": "^6.0.0", + "@octokit/request-error": "^3.0.0", + "@octokit/types": "^9.0.0", + "deprecation": "^2.3.1", + "lru-cache": "^9.0.0", + "universal-github-app-jwt": "^1.1.1", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@octokit/auth-app/node_modules/lru-cache": { + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-9.1.2.tgz", + "integrity": "sha512-ERJq3FOzJTxBbFjZ7iDs+NiK4VI9Wz+RdrrAB8dio1oV+YvdPzUEE4QNiT2VD51DkIbCYRUUzCRkssXCHqSnKQ==", + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/@octokit/auth-oauth-app": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/@octokit/auth-oauth-app/-/auth-oauth-app-5.0.6.tgz", + "integrity": "sha512-SxyfIBfeFcWd9Z/m1xa4LENTQ3l1y6Nrg31k2Dcb1jS5ov7pmwMJZ6OGX8q3K9slRgVpeAjNA1ipOAMHkieqyw==", + "dependencies": { + "@octokit/auth-oauth-device": "^4.0.0", + "@octokit/auth-oauth-user": "^2.0.0", + "@octokit/request": "^6.0.0", + "@octokit/types": "^9.0.0", + "@types/btoa-lite": "^1.0.0", + "btoa-lite": "^1.0.0", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@octokit/auth-oauth-device": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@octokit/auth-oauth-device/-/auth-oauth-device-4.0.5.tgz", + "integrity": "sha512-XyhoWRTzf2ZX0aZ52a6Ew5S5VBAfwwx1QnC2Np6Et3MWQpZjlREIcbcvVZtkNuXp6Z9EeiSLSDUqm3C+aMEHzQ==", + "dependencies": { + "@octokit/oauth-methods": "^2.0.0", + "@octokit/request": "^6.0.0", + "@octokit/types": "^9.0.0", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@octokit/auth-oauth-user": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@octokit/auth-oauth-user/-/auth-oauth-user-2.1.2.tgz", + "integrity": "sha512-kkRqNmFe7s5GQcojE3nSlF+AzYPpPv7kvP/xYEnE57584pixaFBH8Vovt+w5Y3E4zWUEOxjdLItmBTFAWECPAg==", + "dependencies": { + "@octokit/auth-oauth-device": "^4.0.0", + "@octokit/oauth-methods": "^2.0.0", + "@octokit/request": "^6.0.0", + "@octokit/types": "^9.0.0", + "btoa-lite": "^1.0.0", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/@octokit/auth-token": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-3.0.3.tgz", @@ -2650,6 +2312,18 @@ "node": ">= 14" } }, + "node_modules/@octokit/auth-unauthenticated": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@octokit/auth-unauthenticated/-/auth-unauthenticated-3.0.5.tgz", + "integrity": "sha512-yH2GPFcjrTvDWPwJWWCh0tPPtTL5SMgivgKPA+6v/XmYN6hGQkAto8JtZibSKOpf8ipmeYhLNWQ2UgW0GYILCw==", + "dependencies": { + "@octokit/request-error": "^3.0.0", + "@octokit/types": "^9.0.0" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/@octokit/core": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/@octokit/core/-/core-4.2.1.tgz", @@ -2693,11 +2367,66 @@ "node": ">= 14" } }, + "node_modules/@octokit/oauth-authorization-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@octokit/oauth-authorization-url/-/oauth-authorization-url-5.0.0.tgz", + "integrity": "sha512-y1WhN+ERDZTh0qZ4SR+zotgsQUE1ysKnvBt1hvDRB2WRzYtVKQjn97HEPzoehh66Fj9LwNdlZh+p6TJatT0zzg==", + "engines": { + "node": ">= 14" + } + }, + "node_modules/@octokit/oauth-methods": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@octokit/oauth-methods/-/oauth-methods-2.0.6.tgz", + "integrity": "sha512-l9Uml2iGN2aTWLZcm8hV+neBiFXAQ9+3sKiQe/sgumHlL6HDg0AQ8/l16xX/5jJvfxueqTW5CWbzd0MjnlfHZw==", + "dependencies": { + "@octokit/oauth-authorization-url": "^5.0.0", + "@octokit/request": "^6.2.3", + "@octokit/request-error": "^3.0.3", + "@octokit/types": "^9.0.0", + "btoa-lite": "^1.0.0" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/@octokit/openapi-types": { "version": "17.2.0", "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-17.2.0.tgz", "integrity": "sha512-MazrFNx4plbLsGl+LFesMo96eIXkFgEtaKbnNpdh4aQ0VM10aoylFsTYP1AEjkeoRNZiiPe3T6Gl2Hr8dJWdlQ==" }, + "node_modules/@octokit/plugin-enterprise-compatibility": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-enterprise-compatibility/-/plugin-enterprise-compatibility-1.3.0.tgz", + "integrity": "sha512-h34sMGdEOER/OKrZJ55v26ntdHb9OPfR1fwOx6Q4qYyyhWA104o11h9tFxnS/l41gED6WEI41Vu2G2zHDVC5lQ==", + "dependencies": { + "@octokit/request-error": "^2.1.0", + "@octokit/types": "^6.0.3" + } + }, + "node_modules/@octokit/plugin-enterprise-compatibility/node_modules/@octokit/openapi-types": { + "version": "12.11.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.11.0.tgz", + "integrity": "sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==" + }, + "node_modules/@octokit/plugin-enterprise-compatibility/node_modules/@octokit/request-error": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.1.0.tgz", + "integrity": "sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==", + "dependencies": { + "@octokit/types": "^6.0.3", + "deprecation": "^2.0.0", + "once": "^1.4.0" + } + }, + "node_modules/@octokit/plugin-enterprise-compatibility/node_modules/@octokit/types": { + "version": "6.41.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", + "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", + "dependencies": { + "@octokit/openapi-types": "^12.11.0" + } + }, "node_modules/@octokit/plugin-paginate-rest": { "version": "6.1.2", "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-6.1.2.tgz", @@ -2736,6 +2465,28 @@ "@octokit/core": ">=3" } }, + "node_modules/@octokit/plugin-retry": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/@octokit/plugin-retry/-/plugin-retry-3.0.9.tgz", + "integrity": "sha512-r+fArdP5+TG6l1Rv/C9hVoty6tldw6cE2pRHNGmFPdyfrc696R6JjrQ3d7HdVqGwuzfyrcaLAKD7K8TX8aehUQ==", + "dependencies": { + "@octokit/types": "^6.0.3", + "bottleneck": "^2.15.3" + } + }, + "node_modules/@octokit/plugin-retry/node_modules/@octokit/openapi-types": { + "version": "12.11.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.11.0.tgz", + "integrity": "sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==" + }, + "node_modules/@octokit/plugin-retry/node_modules/@octokit/types": { + "version": "6.41.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", + "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", + "dependencies": { + "@octokit/openapi-types": "^12.11.0" + } + }, "node_modules/@octokit/request": { "version": "6.2.5", "resolved": "https://registry.npmjs.org/@octokit/request/-/request-6.2.5.tgz", @@ -2792,6 +2543,50 @@ "@octokit/openapi-types": "^17.2.0" } }, + "node_modules/@octokit/webhooks": { + "version": "9.26.0", + "resolved": "https://registry.npmjs.org/@octokit/webhooks/-/webhooks-9.26.0.tgz", + "integrity": "sha512-foZlsgrTDwAmD5j2Czn6ji10lbWjGDVsUxTIydjG9KTkAWKJrFapXJgO5SbGxRwfPd3OJdhK3nA2YPqVhxLXqA==", + "dependencies": { + "@octokit/request-error": "^2.0.2", + "@octokit/webhooks-methods": "^2.0.0", + "@octokit/webhooks-types": "5.8.0", + "aggregate-error": "^3.1.0" + } + }, + "node_modules/@octokit/webhooks-methods": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@octokit/webhooks-methods/-/webhooks-methods-2.0.0.tgz", + "integrity": "sha512-35cfQ4YWlnZnmZKmIxlGPUPLtbkF8lr/A/1Sk1eC0ddLMwQN06dOuLc+dI3YLQS+T+MoNt3DIQ0NynwgKPilig==" + }, + "node_modules/@octokit/webhooks-types": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@octokit/webhooks-types/-/webhooks-types-5.8.0.tgz", + "integrity": "sha512-8adktjIb76A7viIdayQSFuBEwOzwhDC+9yxZpKNHjfzrlostHCw0/N7JWpWMObfElwvJMk2fY2l1noENCk9wmw==" + }, + "node_modules/@octokit/webhooks/node_modules/@octokit/openapi-types": { + "version": "12.11.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.11.0.tgz", + "integrity": "sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==" + }, + "node_modules/@octokit/webhooks/node_modules/@octokit/request-error": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.1.0.tgz", + "integrity": "sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==", + "dependencies": { + "@octokit/types": "^6.0.3", + "deprecation": "^2.0.0", + "once": "^1.4.0" + } + }, + "node_modules/@octokit/webhooks/node_modules/@octokit/types": { + "version": "6.41.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", + "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", + "dependencies": { + "@octokit/openapi-types": "^12.11.0" + } + }, "node_modules/@phc/format": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/@phc/format/-/format-1.0.0.tgz", @@ -2809,6 +2604,143 @@ "@maxmind/geoip2-node": "^3.4.0" } }, + "node_modules/@probot/get-private-key": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@probot/get-private-key/-/get-private-key-1.1.1.tgz", + "integrity": "sha512-hOmBNSAhSZc6PaNkTvj6CO9R5J67ODJ+w5XQlDW9w/6mtcpHWK4L+PZcW0YwVM7PpetLZjN6rsKQIR9yqIaWlA==", + "dependencies": { + "@types/is-base64": "^1.1.0", + "is-base64": "^1.1.0" + } + }, + "node_modules/@probot/octokit-plugin-config": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/@probot/octokit-plugin-config/-/octokit-plugin-config-1.1.6.tgz", + "integrity": "sha512-L29wmnFvilzSfWn9tUgItxdLv0LJh2ICjma3FmLr80Spu3wZ9nHyRrKMo9R5/K2m7VuWmgoKnkgRt2zPzAQBEQ==", + "dependencies": { + "@types/js-yaml": "^4.0.5", + "js-yaml": "^4.1.0" + }, + "peerDependencies": { + "@octokit/core": ">=3" + } + }, + "node_modules/@probot/pino": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@probot/pino/-/pino-2.3.5.tgz", + "integrity": "sha512-IiyiNZonMw1dHC4EAdD55y5owV733d9Gll/IKsrLikB7EJ54+eMCOtL/qo+OmgWN9XV3NTDfziEQF2og/OBKog==", + "dependencies": { + "@sentry/node": "^6.0.0", + "pino-pretty": "^6.0.0", + "pump": "^3.0.0", + "readable-stream": "^3.6.0", + "split2": "^4.0.0" + }, + "bin": { + "pino-probot": "cli.js" + } + }, + "node_modules/@probot/pino/node_modules/@sentry/core": { + "version": "6.19.7", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-6.19.7.tgz", + "integrity": "sha512-tOfZ/umqB2AcHPGbIrsFLcvApdTm9ggpi/kQZFkej7kMphjT+SGBiQfYtjyg9jcRW+ilAR4JXC9BGKsdEQ+8Vw==", + "dependencies": { + "@sentry/hub": "6.19.7", + "@sentry/minimal": "6.19.7", + "@sentry/types": "6.19.7", + "@sentry/utils": "6.19.7", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@probot/pino/node_modules/@sentry/node": { + "version": "6.19.7", + "resolved": "https://registry.npmjs.org/@sentry/node/-/node-6.19.7.tgz", + "integrity": "sha512-gtmRC4dAXKODMpHXKfrkfvyBL3cI8y64vEi3fDD046uqYcrWdgoQsffuBbxMAizc6Ez1ia+f0Flue6p15Qaltg==", + "dependencies": { + "@sentry/core": "6.19.7", + "@sentry/hub": "6.19.7", + "@sentry/types": "6.19.7", + "@sentry/utils": "6.19.7", + "cookie": "^0.4.1", + "https-proxy-agent": "^5.0.0", + "lru_map": "^0.3.3", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@probot/pino/node_modules/@sentry/types": { + "version": "6.19.7", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-6.19.7.tgz", + "integrity": "sha512-jH84pDYE+hHIbVnab3Hr+ZXr1v8QABfhx39KknxqKWr2l0oEItzepV0URvbEhB446lk/S/59230dlUUIBGsXbg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/@probot/pino/node_modules/@sentry/utils": { + "version": "6.19.7", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-6.19.7.tgz", + "integrity": "sha512-z95ECmE3i9pbWoXQrD/7PgkBAzJYR+iXtPuTkpBjDKs86O3mT+PXOT3BAn79w2wkn7/i3vOGD2xVr1uiMl26dA==", + "dependencies": { + "@sentry/types": "6.19.7", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@probot/pino/node_modules/colorette": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz", + "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==" + }, + "node_modules/@probot/pino/node_modules/jmespath": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/jmespath/-/jmespath-0.15.0.tgz", + "integrity": "sha512-+kHj8HXArPfpPEKGLZ+kB5ONRTCiGQXo8RQYL0hH8t6pWXUBBK5KkkQmTNOwKK4LEsd0yTsgtjJVm4UBSZea4w==", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/@probot/pino/node_modules/pino-pretty": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/pino-pretty/-/pino-pretty-6.0.0.tgz", + "integrity": "sha512-jyeR2fXXWc68st1DTTM5NhkHlx8p+1fKZMfm84Jwq+jSw08IwAjNaZBZR6ts69hhPOfOjg/NiE1HYW7vBRPL3A==", + "dependencies": { + "@hapi/bourne": "^2.0.0", + "args": "^5.0.1", + "colorette": "^1.3.0", + "dateformat": "^4.5.1", + "fast-safe-stringify": "^2.0.7", + "jmespath": "^0.15.0", + "joycon": "^3.0.0", + "pump": "^3.0.0", + "readable-stream": "^3.6.0", + "rfdc": "^1.3.0", + "split2": "^3.1.1", + "strip-json-comments": "^3.1.1" + }, + "bin": { + "pino-pretty": "bin.js" + } + }, + "node_modules/@probot/pino/node_modules/pino-pretty/node_modules/split2": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz", + "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==", + "dependencies": { + "readable-stream": "^3.0.0" + } + }, + "node_modules/@probot/pino/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, "node_modules/@protobufjs/aspromise": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", @@ -2900,6 +2832,70 @@ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" }, + "node_modules/@sentry/hub": { + "version": "6.19.7", + "resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-6.19.7.tgz", + "integrity": "sha512-y3OtbYFAqKHCWezF0EGGr5lcyI2KbaXW2Ik7Xp8Mu9TxbSTuwTe4rTntwg8ngPjUQU3SUHzgjqVB8qjiGqFXCA==", + "dependencies": { + "@sentry/types": "6.19.7", + "@sentry/utils": "6.19.7", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@sentry/hub/node_modules/@sentry/types": { + "version": "6.19.7", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-6.19.7.tgz", + "integrity": "sha512-jH84pDYE+hHIbVnab3Hr+ZXr1v8QABfhx39KknxqKWr2l0oEItzepV0URvbEhB446lk/S/59230dlUUIBGsXbg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/@sentry/hub/node_modules/@sentry/utils": { + "version": "6.19.7", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-6.19.7.tgz", + "integrity": "sha512-z95ECmE3i9pbWoXQrD/7PgkBAzJYR+iXtPuTkpBjDKs86O3mT+PXOT3BAn79w2wkn7/i3vOGD2xVr1uiMl26dA==", + "dependencies": { + "@sentry/types": "6.19.7", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@sentry/hub/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/@sentry/minimal": { + "version": "6.19.7", + "resolved": "https://registry.npmjs.org/@sentry/minimal/-/minimal-6.19.7.tgz", + "integrity": "sha512-wcYmSJOdvk6VAPx8IcmZgN08XTXRwRtB1aOLZm+MVHjIZIhHoBGZJYTVQS/BWjldsamj2cX3YGbGXNunaCfYJQ==", + "dependencies": { + "@sentry/hub": "6.19.7", + "@sentry/types": "6.19.7", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@sentry/minimal/node_modules/@sentry/types": { + "version": "6.19.7", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-6.19.7.tgz", + "integrity": "sha512-jH84pDYE+hHIbVnab3Hr+ZXr1v8QABfhx39KknxqKWr2l0oEItzepV0URvbEhB446lk/S/59230dlUUIBGsXbg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/@sentry/minimal/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, "node_modules/@sentry/node": { "version": "7.53.1", "resolved": "https://registry.npmjs.org/@sentry/node/-/node-7.53.1.tgz", @@ -2984,12 +2980,296 @@ "@sinonjs/commons": "^3.0.0" } }, - "node_modules/@smithy/protocol-http": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-1.0.1.tgz", - "integrity": "sha512-9OrEn0WfOVtBNYJUjUAn9AOiJ4lzERCJJ/JeZs8E6yajTGxBaFRxUnNBHiNqoDJVg076hY36UmEnPx7xXrvUSg==", + "node_modules/@smithy/abort-controller": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-1.0.2.tgz", + "integrity": "sha512-tb2h0b+JvMee+eAxTmhnyqyNk51UXIK949HnE14lFeezKsVJTB30maan+CO2IMwnig2wVYQH84B5qk6ylmKCuA==", "dependencies": { - "@smithy/types": "^1.0.0", + "@smithy/types": "^1.1.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/config-resolver": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-1.0.2.tgz", + "integrity": "sha512-8Bk7CgnVKg1dn5TgnjwPz2ebhxeR7CjGs5yhVYH3S8x0q8yPZZVWwpRIglwXaf5AZBzJlNO1lh+lUhMf2e73zQ==", + "dependencies": { + "@smithy/types": "^1.1.1", + "@smithy/util-config-provider": "^1.0.2", + "@smithy/util-middleware": "^1.0.2", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/credential-provider-imds": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-1.0.2.tgz", + "integrity": "sha512-fLjCya+JOu2gPJpCiwSUyoLvT8JdNJmOaTOkKYBZoGf7CzqR6lluSyI+eboZnl/V0xqcfcqBG4tgqCISmWS3/w==", + "dependencies": { + "@smithy/node-config-provider": "^1.0.2", + "@smithy/property-provider": "^1.0.2", + "@smithy/types": "^1.1.1", + "@smithy/url-parser": "^1.0.2", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/eventstream-codec": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-1.0.2.tgz", + "integrity": "sha512-eW/XPiLauR1VAgHKxhVvgvHzLROUgTtqat2lgljztbH8uIYWugv7Nz+SgCavB+hWRazv2iYgqrSy74GvxXq/rg==", + "dependencies": { + "@aws-crypto/crc32": "3.0.0", + "@smithy/types": "^1.1.1", + "@smithy/util-hex-encoding": "^1.0.2", + "tslib": "^2.5.0" + } + }, + "node_modules/@smithy/fetch-http-handler": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-1.0.2.tgz", + "integrity": "sha512-kynyofLf62LvR8yYphPPdyHb8fWG3LepFinM/vWUTG2Q1pVpmPCM530ppagp3+q2p+7Ox0UvSqldbKqV/d1BpA==", + "dependencies": { + "@smithy/protocol-http": "^1.1.1", + "@smithy/querystring-builder": "^1.0.2", + "@smithy/types": "^1.1.1", + "@smithy/util-base64": "^1.0.2", + "tslib": "^2.5.0" + } + }, + "node_modules/@smithy/hash-node": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-1.0.2.tgz", + "integrity": "sha512-K6PKhcUNrJXtcesyzhIvNlU7drfIU7u+EMQuGmPw6RQDAg/ufUcfKHz4EcUhFAodUmN+rrejhRG9U6wxjeBOQA==", + "dependencies": { + "@smithy/types": "^1.1.1", + "@smithy/util-buffer-from": "^1.0.2", + "@smithy/util-utf8": "^1.0.2", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/invalid-dependency": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-1.0.2.tgz", + "integrity": "sha512-B1Y3Tsa6dfC+Vvb+BJMhTHOfFieeYzY9jWQSTR1vMwKkxsymD0OIAnEw8rD/RiDj/4E4RPGFdx9Mdgnyd6Bv5Q==", + "dependencies": { + "@smithy/types": "^1.1.1", + "tslib": "^2.5.0" + } + }, + "node_modules/@smithy/is-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-1.0.2.tgz", + "integrity": "sha512-pkyBnsBRpe+c/6ASavqIMRBdRtZNJEVJOEzhpxZ9JoAXiZYbkfaSMRA/O1dUxGdJ653GHONunnZ4xMo/LJ7utQ==", + "dependencies": { + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/middleware-content-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-1.0.2.tgz", + "integrity": "sha512-pa1/SgGIrSmnEr2c9Apw7CdU4l/HW0fK3+LKFCPDYJrzM0JdYpqjQzgxi31P00eAkL0EFBccpus/p1n2GF9urw==", + "dependencies": { + "@smithy/protocol-http": "^1.1.1", + "@smithy/types": "^1.1.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/middleware-endpoint": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-1.0.3.tgz", + "integrity": "sha512-GsWvTXMFjSgl617PCE2km//kIjjtvMRrR2GAuRDIS9sHiLwmkS46VWaVYy+XE7ubEsEtzZ5yK2e8TKDR6Qr5Lw==", + "dependencies": { + "@smithy/middleware-serde": "^1.0.2", + "@smithy/types": "^1.1.1", + "@smithy/url-parser": "^1.0.2", + "@smithy/util-middleware": "^1.0.2", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/middleware-retry": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-1.0.4.tgz", + "integrity": "sha512-G7uRXGFL8c3F7APnoIMTtNAHH8vT4F2qVnAWGAZaervjupaUQuRRHYBLYubK0dWzOZz86BtAXKieJ5p+Ni2Xpg==", + "dependencies": { + "@smithy/protocol-http": "^1.1.1", + "@smithy/service-error-classification": "^1.0.3", + "@smithy/types": "^1.1.1", + "@smithy/util-middleware": "^1.0.2", + "@smithy/util-retry": "^1.0.4", + "tslib": "^2.5.0", + "uuid": "^8.3.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/middleware-serde": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-1.0.2.tgz", + "integrity": "sha512-T4PcdMZF4xme6koUNfjmSZ1MLi7eoFeYCtodQNQpBNsS77TuJt1A6kt5kP/qxrTvfZHyFlj0AubACoaUqgzPeg==", + "dependencies": { + "@smithy/types": "^1.1.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/middleware-stack": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-1.0.2.tgz", + "integrity": "sha512-H7/uAQEcmO+eDqweEFMJ5YrIpsBwmrXSP6HIIbtxKJSQpAcMGY7KrR2FZgZBi1FMnSUOh+rQrbOyj5HQmSeUBA==", + "dependencies": { + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/node-config-provider": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-1.0.2.tgz", + "integrity": "sha512-HU7afWpTToU0wL6KseGDR2zojeyjECQfr8LpjAIeHCYIW7r360ABFf4EaplaJRMVoC3hD9FeltgI3/NtShOqCg==", + "dependencies": { + "@smithy/property-provider": "^1.0.2", + "@smithy/shared-ini-file-loader": "^1.0.2", + "@smithy/types": "^1.1.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/node-http-handler": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-1.0.3.tgz", + "integrity": "sha512-PcPUSzTbIb60VCJCiH0PU0E6bwIekttsIEf5Aoo/M0oTfiqsxHTn0Rcij6QoH6qJy6piGKXzLSegspXg5+Kq6g==", + "dependencies": { + "@smithy/abort-controller": "^1.0.2", + "@smithy/protocol-http": "^1.1.1", + "@smithy/querystring-builder": "^1.0.2", + "@smithy/types": "^1.1.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/property-provider": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-1.0.2.tgz", + "integrity": "sha512-pXDPyzKX8opzt38B205kDgaxda6LHcTfPvTYQZnwP6BAPp1o9puiCPjeUtkKck7Z6IbpXCPUmUQnzkUzWTA42Q==", + "dependencies": { + "@smithy/types": "^1.1.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/protocol-http": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-1.1.1.tgz", + "integrity": "sha512-mFLFa2sSvlUxm55U7B4YCIsJJIMkA6lHxwwqOaBkral1qxFz97rGffP/mmd4JDuin1EnygiO5eNJGgudiUgmDQ==", + "dependencies": { + "@smithy/types": "^1.1.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/querystring-builder": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-1.0.2.tgz", + "integrity": "sha512-6P/xANWrtJhMzTPUR87AbXwSBuz1SDHIfL44TFd/GT3hj6rA+IEv7rftEpPjayUiWRocaNnrCPLvmP31mobOyA==", + "dependencies": { + "@smithy/types": "^1.1.1", + "@smithy/util-uri-escape": "^1.0.2", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/querystring-parser": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-1.0.2.tgz", + "integrity": "sha512-IWxwxjn+KHWRRRB+K2Ngl+plTwo2WSgc2w+DvLy0DQZJh9UGOpw40d6q97/63GBlXIt4TEt5NbcFrO30CKlrsA==", + "dependencies": { + "@smithy/types": "^1.1.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/service-error-classification": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-1.0.3.tgz", + "integrity": "sha512-2eglIYqrtcUnuI71yweu7rSfCgt6kVvRVf0C72VUqrd0LrV1M0BM0eYN+nitp2CHPSdmMI96pi+dU9U/UqAMSA==", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/shared-ini-file-loader": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-1.0.2.tgz", + "integrity": "sha512-bdQj95VN+lCXki+P3EsDyrkpeLn8xDYiOISBGnUG/AGPYJXN8dmp4EhRRR7XOoLoSs8anZHR4UcGEOzFv2jwGw==", + "dependencies": { + "@smithy/types": "^1.1.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/signature-v4": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-1.0.2.tgz", + "integrity": "sha512-rpKUhmCuPmpV5dloUkOb9w1oBnJatvKQEjIHGmkjRGZnC3437MTdzWej9TxkagcZ8NRRJavYnEUixzxM1amFig==", + "dependencies": { + "@smithy/eventstream-codec": "^1.0.2", + "@smithy/is-array-buffer": "^1.0.2", + "@smithy/types": "^1.1.1", + "@smithy/util-hex-encoding": "^1.0.2", + "@smithy/util-middleware": "^1.0.2", + "@smithy/util-uri-escape": "^1.0.2", + "@smithy/util-utf8": "^1.0.2", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/smithy-client": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-1.0.4.tgz", + "integrity": "sha512-gpo0Xl5Nyp9sgymEfpt7oa9P2q/GlM3VmQIdm+FeH0QEdYOQx3OtvwVmBYAMv2FIPWxkMZlsPYRTnEiBTK5TYg==", + "dependencies": { + "@smithy/middleware-stack": "^1.0.2", + "@smithy/types": "^1.1.1", + "@smithy/util-stream": "^1.0.2", "tslib": "^2.5.0" }, "engines": { @@ -2997,9 +3277,9 @@ } }, "node_modules/@smithy/types": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-1.0.0.tgz", - "integrity": "sha512-kc1m5wPBHQCTixwuaOh9vnak/iJm21DrSf9UK6yDE5S3mQQ4u11pqAUiKWnlrZnYkeLfAI9UEHj9OaMT1v5Umg==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-1.1.1.tgz", + "integrity": "sha512-tMpkreknl2gRrniHeBtdgQwaOlo39df8RxSrwsHVNIGXULy5XP6KqgScUw2m12D15wnJCKWxVhCX+wbrBW/y7g==", "dependencies": { "tslib": "^2.5.0" }, @@ -3007,6 +3287,175 @@ "node": ">=14.0.0" } }, + "node_modules/@smithy/url-parser": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-1.0.2.tgz", + "integrity": "sha512-0JRsDMQe53F6EHRWksdcavKDRjyqp8vrjakg8EcCUOa7PaFRRB1SO/xGZdzSlW1RSTWQDEksFMTCEcVEKmAoqA==", + "dependencies": { + "@smithy/querystring-parser": "^1.0.2", + "@smithy/types": "^1.1.1", + "tslib": "^2.5.0" + } + }, + "node_modules/@smithy/util-base64": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-1.0.2.tgz", + "integrity": "sha512-BCm15WILJ3SL93nusoxvJGMVfAMWHZhdeDZPtpAaskozuexd0eF6szdz4kbXaKp38bFCSenA6bkUHqaE3KK0dA==", + "dependencies": { + "@smithy/util-buffer-from": "^1.0.2", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/util-body-length-browser": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-1.0.2.tgz", + "integrity": "sha512-Xh8L06H2anF5BHjSYTg8hx+Itcbf4SQZnVMl4PIkCOsKtneMJoGjPRLy17lEzfoh/GOaa0QxgCP6lRMQWzNl4w==", + "dependencies": { + "tslib": "^2.5.0" + } + }, + "node_modules/@smithy/util-body-length-node": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-1.0.2.tgz", + "integrity": "sha512-nXHbZsUtvZeyfL4Ceds9nmy2Uh2AhWXohG4vWHyjSdmT8cXZlJdmJgnH6SJKDjyUecbu+BpKeVvSrA4cWPSOPA==", + "dependencies": { + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/util-buffer-from": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-1.0.2.tgz", + "integrity": "sha512-lHAYIyrBO9RANrPvccnPjU03MJnWZ66wWuC5GjWWQVfsmPwU6m00aakZkzHdUT6tGCkGacXSgArP5wgTgA+oCw==", + "dependencies": { + "@smithy/is-array-buffer": "^1.0.2", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/util-config-provider": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-1.0.2.tgz", + "integrity": "sha512-HOdmDm+3HUbuYPBABLLHtn8ittuRyy+BSjKOA169H+EMc+IozipvXDydf+gKBRAxUa4dtKQkLraypwppzi+PRw==", + "dependencies": { + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/util-defaults-mode-browser": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-1.0.2.tgz", + "integrity": "sha512-J1u2PO235zxY7dg0+ZqaG96tFg4ehJZ7isGK1pCBEA072qxNPwIpDzUVGnLJkHZvjWEGA8rxIauDtXfB0qxeAg==", + "dependencies": { + "@smithy/property-provider": "^1.0.2", + "@smithy/types": "^1.1.1", + "bowser": "^2.11.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@smithy/util-defaults-mode-node": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-1.0.2.tgz", + "integrity": "sha512-9/BN63rlIsFStvI+AvljMh873Xw6bbI6b19b+PVYXyycQ2DDQImWcjnzRlHW7eP65CCUNGQ6otDLNdBQCgMXqg==", + "dependencies": { + "@smithy/config-resolver": "^1.0.2", + "@smithy/credential-provider-imds": "^1.0.2", + "@smithy/node-config-provider": "^1.0.2", + "@smithy/property-provider": "^1.0.2", + "@smithy/types": "^1.1.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@smithy/util-hex-encoding": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-1.0.2.tgz", + "integrity": "sha512-Bxydb5rMJorMV6AuDDMOxro3BMDdIwtbQKHpwvQFASkmr52BnpDsWlxgpJi8Iq7nk1Bt4E40oE1Isy/7ubHGzg==", + "dependencies": { + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/util-middleware": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-1.0.2.tgz", + "integrity": "sha512-vtXK7GOR2BoseCX8NCGe9SaiZrm9M2lm/RVexFGyPuafTtry9Vyv7hq/vw8ifd/G/pSJ+msByfJVb1642oQHKw==", + "dependencies": { + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/util-retry": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-1.0.4.tgz", + "integrity": "sha512-RnZPVFvRoqdj2EbroDo3OsnnQU8eQ4AlnZTOGusbYKybH3269CFdrZfZJloe60AQjX7di3J6t/79PjwCLO5Khw==", + "dependencies": { + "@smithy/service-error-classification": "^1.0.3", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@smithy/util-stream": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-1.0.2.tgz", + "integrity": "sha512-qyN2M9QFMTz4UCHi6GnBfLOGYKxQZD01Ga6nzaXFFC51HP/QmArU72e4kY50Z/EtW8binPxspP2TAsGbwy9l3A==", + "dependencies": { + "@smithy/fetch-http-handler": "^1.0.2", + "@smithy/node-http-handler": "^1.0.3", + "@smithy/types": "^1.1.1", + "@smithy/util-base64": "^1.0.2", + "@smithy/util-buffer-from": "^1.0.2", + "@smithy/util-hex-encoding": "^1.0.2", + "@smithy/util-utf8": "^1.0.2", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/util-uri-escape": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-1.0.2.tgz", + "integrity": "sha512-k8C0BFNS9HpBMHSgUDnWb1JlCQcFG+PPlVBq9keP4Nfwv6a9Q0yAfASWqUCtzjuMj1hXeLhn/5ADP6JxnID1Pg==", + "dependencies": { + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/util-utf8": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-1.0.2.tgz", + "integrity": "sha512-V4cyjKfJlARui0dMBfWJMQAmJzoW77i4N3EjkH/bwnE2Ngbl4tqD2Y0C/xzpzY/J1BdxeCKxAebVFk8aFCaSCw==", + "dependencies": { + "@smithy/util-buffer-from": "^1.0.2", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, "node_modules/@tsconfig/node10": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", @@ -3091,17 +3540,20 @@ "version": "1.19.2", "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", - "dev": true, "dependencies": { "@types/connect": "*", "@types/node": "*" } }, + "node_modules/@types/btoa-lite": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@types/btoa-lite/-/btoa-lite-1.0.0.tgz", + "integrity": "sha512-wJsiX1tosQ+J5+bY5LrSahHxr2wT+uME5UDwdN1kg4frt40euqA+wzECkmq4t5QbveHiJepfdThgQrPw6KiSlg==" + }, "node_modules/@types/connect": { "version": "3.4.35", "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", - "dev": true, "dependencies": { "@types/node": "*" } @@ -3139,7 +3591,6 @@ "version": "4.17.17", "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.17.tgz", "integrity": "sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q==", - "dev": true, "dependencies": { "@types/body-parser": "*", "@types/express-serve-static-core": "^4.17.33", @@ -3151,7 +3602,6 @@ "version": "4.17.35", "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.35.tgz", "integrity": "sha512-wALWQwrgiB2AWTT91CB62b6Yt0sNHpznUXeZEcnPU3DRdlDIz74x8Qg1UUYKSVFi+va5vKOLYRBI1bRKiLLKIg==", - "dev": true, "dependencies": { "@types/node": "*", "@types/qs": "*", @@ -3168,6 +3618,19 @@ "@types/node": "*" } }, + "node_modules/@types/ioredis": { + "version": "4.28.10", + "resolved": "https://registry.npmjs.org/@types/ioredis/-/ioredis-4.28.10.tgz", + "integrity": "sha512-69LyhUgrXdgcNDv7ogs1qXZomnfOEnSmrmMFqKgt1XMJxmoOSG/u3wYy13yACIfKuMJ8IhKgHafDO3sx19zVQQ==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/is-base64": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@types/is-base64/-/is-base64-1.1.1.tgz", + "integrity": "sha512-JgnGhP+MeSHEQmvxcobcwPEP4Ew56voiq9/0hmP/41lyQ/3gBw/ZCIRy2v+QkEOdeCl58lRcrf6+Y6WMlJGETA==" + }, "node_modules/@types/istanbul-lib-coverage": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", @@ -3202,6 +3665,11 @@ "pretty-format": "^29.0.0" } }, + "node_modules/@types/js-yaml": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-4.0.5.tgz", + "integrity": "sha512-FhpRzf927MNQdRZP0J5DLIdTXhjLYzeUTmLAu69mnVksLH9CJY3IuSeEgbKUki7GQZm0WqDkGzyxju2EZGD2wA==" + }, "node_modules/@types/json-schema": { "version": "7.0.12", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz", @@ -3236,8 +3704,7 @@ "node_modules/@types/mime": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", - "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==", - "dev": true + "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==" }, "node_modules/@types/node": { "version": "18.16.16", @@ -3268,6 +3735,43 @@ "integrity": "sha512-O397rnSS9iQI4OirieAtsDqvCj4+3eY1J+EPdNTKuHuRWIfUoGyzX294o8C4KJYaLqgSrd2o60c5EqCU8Zv02g==", "dev": true }, + "node_modules/@types/pino": { + "version": "6.3.12", + "resolved": "https://registry.npmjs.org/@types/pino/-/pino-6.3.12.tgz", + "integrity": "sha512-dsLRTq8/4UtVSpJgl9aeqHvbh6pzdmjYD3C092SYgLD2TyoCqHpTJk6vp8DvCTGGc7iowZ2MoiYiVUUCcu7muw==", + "dependencies": { + "@types/node": "*", + "@types/pino-pretty": "*", + "@types/pino-std-serializers": "*", + "sonic-boom": "^2.1.0" + } + }, + "node_modules/@types/pino-http": { + "version": "5.8.1", + "resolved": "https://registry.npmjs.org/@types/pino-http/-/pino-http-5.8.1.tgz", + "integrity": "sha512-A9MW6VCnx5ii7s+Fs5aFIw+aSZcBCpsZ/atpxamu8tTsvWFacxSf2Hrn1Ohn1jkVRB/LiPGOapRXcFawDBnDnA==", + "dependencies": { + "@types/pino": "6.3" + } + }, + "node_modules/@types/pino-pretty": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@types/pino-pretty/-/pino-pretty-5.0.0.tgz", + "integrity": "sha512-N1uzqSzioqz8R3AkDbSJwcfDWeI3YMPNapSQQhnB2ISU4NYgUIcAh+hYT5ygqBM+klX4htpEhXMmoJv3J7GrdA==", + "deprecated": "This is a stub types definition. pino-pretty provides its own type definitions, so you do not need this installed.", + "dependencies": { + "pino-pretty": "*" + } + }, + "node_modules/@types/pino-std-serializers": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/pino-std-serializers/-/pino-std-serializers-4.0.0.tgz", + "integrity": "sha512-gXfUZx2xIBbFYozGms53fT0nvkacx/+62c8iTxrEqH5PkIGAQvDbXg2774VWOycMPbqn5YJBQ3BMsg4Li3dWbg==", + "deprecated": "This is a stub types definition. pino-std-serializers provides its own type definitions, so you do not need this installed.", + "dependencies": { + "pino-std-serializers": "*" + } + }, "node_modules/@types/prettier": { "version": "2.7.2", "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.2.tgz", @@ -3277,14 +3781,12 @@ "node_modules/@types/qs": { "version": "6.9.7", "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", - "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", - "dev": true + "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==" }, "node_modules/@types/range-parser": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", - "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", - "dev": true + "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==" }, "node_modules/@types/semver": { "version": "7.5.0", @@ -3296,7 +3798,6 @@ "version": "0.17.1", "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.1.tgz", "integrity": "sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q==", - "dev": true, "dependencies": { "@types/mime": "^1", "@types/node": "*" @@ -3306,7 +3807,6 @@ "version": "1.15.1", "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.1.tgz", "integrity": "sha512-NUo5XNiAdULrJENtJXZZ3fHtfMolzZwczzBbnAeBbqBwG+LaG6YaJtuwzwGSQZ2wsCrxjEhNNjAkKigy3n8teQ==", - "dev": true, "dependencies": { "@types/mime": "*", "@types/node": "*" @@ -3580,6 +4080,17 @@ "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" }, + "node_modules/abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "dependencies": { + "event-target-shim": "^5.0.0" + }, + "engines": { + "node": ">=6.5" + } + }, "node_modules/accepts": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", @@ -3633,6 +4144,18 @@ "node": ">= 6.0.0" } }, + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", @@ -3754,6 +4277,100 @@ "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" }, + "node_modules/args": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/args/-/args-5.0.3.tgz", + "integrity": "sha512-h6k/zfFgusnv3i5TU08KQkVKuCPBtL/PWQbWkHUxvJrZ2nAyeaUupneemcrgn1xmqxPQsPIzwkUhOpoqPDRZuA==", + "dependencies": { + "camelcase": "5.0.0", + "chalk": "2.4.2", + "leven": "2.1.0", + "mri": "1.1.4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/args/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==", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/args/node_modules/camelcase": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.0.0.tgz", + "integrity": "sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/args/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==", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/args/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==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/args/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==" + }, + "node_modules/args/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==", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/args/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==", + "engines": { + "node": ">=4" + } + }, + "node_modules/args/node_modules/leven": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz", + "integrity": "sha512-nvVPLpIHUxCUoRLrFqTgSxXJ614d8AgQoWl7zPe/2VadE8+1dpU3LBhowRuBAcuwruWtOdD8oYC9jDNJjXDPyA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/args/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==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/array-flatten": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", @@ -3801,6 +4418,14 @@ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" }, + "node_modules/atomic-sleep": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/atomic-sleep/-/atomic-sleep-1.0.0.tgz", + "integrity": "sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==", + "engines": { + "node": ">=8.0.0" + } + }, "node_modules/available-typed-arrays": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", @@ -3982,6 +4607,24 @@ "node": ">=6.0.0" } }, + "node_modules/basic-auth": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", + "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", + "dev": true, + "dependencies": { + "safe-buffer": "5.1.2" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/basic-auth/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, "node_modules/bcrypt": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/bcrypt/-/bcrypt-5.1.0.tgz", @@ -4089,6 +4732,11 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, + "node_modules/bottleneck": { + "version": "2.19.5", + "resolved": "https://registry.npmjs.org/bottleneck/-/bottleneck-2.19.5.tgz", + "integrity": "sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw==" + }, "node_modules/bowser": { "version": "2.11.0", "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.11.0.tgz", @@ -4213,6 +4861,11 @@ "node": ">= 0.4.0" } }, + "node_modules/btoa-lite": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/btoa-lite/-/btoa-lite-1.0.0.tgz", + "integrity": "sha512-gvW7InbIyF8AicrqWoptdW08pUxuhq8BEgowNajy9RhiE86fmGAGl+bLKo6oB8QP0CkqHLowfN0oJdKC/J6LbA==" + }, "node_modules/buffer": { "version": "4.9.2", "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", @@ -4415,6 +5068,14 @@ "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==", "dev": true }, + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "engines": { + "node": ">=6" + } + }, "node_modules/cliui": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", @@ -4437,6 +5098,14 @@ "node": ">=0.8" } }, + "node_modules/cluster-key-slot": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.1.2.tgz", + "integrity": "sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", @@ -4509,6 +5178,11 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" }, + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==" + }, "node_modules/colorspace": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/colorspace/-/colorspace-1.1.4.tgz", @@ -4529,6 +5203,14 @@ "node": ">= 0.8" } }, + "node_modules/commander": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", + "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", + "engines": { + "node": ">= 6" + } + }, "node_modules/component-emitter": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", @@ -4681,6 +5363,14 @@ "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.1.1.tgz", "integrity": "sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw==" }, + "node_modules/dateformat": { + "version": "4.6.3", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-4.6.3.tgz", + "integrity": "sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==", + "engines": { + "node": "*" + } + }, "node_modules/debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", @@ -4894,11 +5584,18 @@ "node": ">= 0.8" } }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dependencies": { + "once": "^1.4.0" + } + }, "node_modules/error-ex": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, "dependencies": { "is-arrayish": "^0.2.1" } @@ -5086,7 +5783,6 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true, "bin": { "esparse": "bin/esparse.js", "esvalidate": "bin/esvalidate.js" @@ -5163,6 +5859,14 @@ "node": ">= 0.6" } }, + "node_modules/event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "engines": { + "node": ">=6" + } + }, "node_modules/events": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", @@ -5171,6 +5875,14 @@ "node": ">=0.4.x" } }, + "node_modules/eventsource": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-2.0.2.tgz", + "integrity": "sha512-IzUmBGPR3+oUG9dUeXynyNmf91/3zUSJg1lCktzKw47OXuhco54U3r9B7O4XX+Rb1Itm9OZ2b0RkTs10bICOxA==", + "engines": { + "node": ">=12.0.0" + } + }, "node_modules/execa": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", @@ -5268,6 +5980,19 @@ "express": "^4.16.2" } }, + "node_modules/express-handlebars": { + "version": "6.0.7", + "resolved": "https://registry.npmjs.org/express-handlebars/-/express-handlebars-6.0.7.tgz", + "integrity": "sha512-iYeMFpc/hMD+E6FNAZA5fgWeXnXr4rslOSPkeEV6TwdmpJ5lEXuWX0u9vFYs31P2MURctQq2batR09oeNj0LIg==", + "dependencies": { + "glob": "^8.1.0", + "graceful-fs": "^4.2.10", + "handlebars": "^4.7.7" + }, + "engines": { + "node": ">=v12.22.9" + } + }, "node_modules/express-rate-limit": { "version": "6.7.0", "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-6.7.0.tgz", @@ -5321,6 +6046,11 @@ "node >=0.6.0" ] }, + "node_modules/fast-copy": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/fast-copy/-/fast-copy-3.0.1.tgz", + "integrity": "sha512-Knr7NOtK3HWRYGtHoJrjkaWepqT8thIVGAwt0p0aUs1zqkAzXZV4vo9fFNwyb5fcqK1GKYFYxldQdIDVKhUAfA==" + }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -5367,25 +6097,51 @@ "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", "dev": true }, + "node_modules/fast-redact": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-3.2.0.tgz", + "integrity": "sha512-zaTadChr+NekyzallAMXATXLOR8MNx3zqpZ0MUF2aGf4EathnG0f32VLODNlY8IuGY3HoRO2L6/6fSzNsLaHIw==", + "engines": { + "node": ">=6" + } + }, "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 + "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==" + }, + "node_modules/fast-url-parser": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/fast-url-parser/-/fast-url-parser-1.1.3.tgz", + "integrity": "sha512-5jOCVXADYNuRkKFzNJ0dCCewsZiYo0dz8QNYljkOpFC6r2U4OBmKtvm/Tsuh4w1YYdDqDb31a8TVhBJ2OJKdqQ==", + "dependencies": { + "punycode": "^1.3.2" + } + }, + "node_modules/fast-url-parser/node_modules/punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==" }, "node_modules/fast-xml-parser": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.1.2.tgz", - "integrity": "sha512-CDYeykkle1LiA/uqQyNwYpFbyF6Axec6YapmpUP+/RHWIoR1zKjocdvNaTsxCxZzQ6v9MLXaSYm9Qq0thv0DHg==", + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.2.5.tgz", + "integrity": "sha512-B9/wizE4WngqQftFPmdaMYlXoJlJOYxGQOanC77fq9k8+Z0v5dDSVh+3glErdIROP//s/jgb7ZuxKfB8nVyo0g==", + "funding": [ + { + "type": "paypal", + "url": "https://paypal.me/naturalintelligence" + }, + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], "dependencies": { "strnum": "^1.0.5" }, "bin": { "fxparser": "src/cli/cli.js" - }, - "funding": { - "type": "paypal", - "url": "https://paypal.me/naturalintelligence" } }, "node_modules/fastq": { @@ -5502,6 +6258,11 @@ "node": "^10.12.0 || >=12.0.0" } }, + "node_modules/flatstr": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/flatstr/-/flatstr-1.0.12.tgz", + "integrity": "sha512-4zPxDyhCyiN2wIAtSLI6gc82/EjqZc1onI4Mz/l0pWrAlsSfYH/2ZIcU+e3oA2wDwbzIWNKwa23F8rh6+DRWkw==" + }, "node_modules/flatted": { "version": "3.2.7", "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", @@ -5707,6 +6468,24 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/glob-parent": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", @@ -5719,6 +6498,25 @@ "node": ">=10.13.0" } }, + "node_modules/glob/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/glob/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/globals": { "version": "13.20.0", "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", @@ -5780,8 +6578,7 @@ "node_modules/graceful-fs": { "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" }, "node_modules/grapheme-splitter": { "version": "1.0.4", @@ -5897,6 +6694,15 @@ "node": ">=12.0.0" } }, + "node_modules/help-me": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/help-me/-/help-me-4.2.0.tgz", + "integrity": "sha512-TAOnTB8Tz5Dw8penUuzHVrKNKlCIbwwbHnXraNJxPwf8LRtE2HlM84RYuezMFcwOJmoYOCWVDyJ8TQGxn9PgxA==", + "dependencies": { + "glob": "^8.0.0", + "readable-stream": "^3.6.0" + } + }, "node_modules/hexoid": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/hexoid/-/hexoid-1.0.0.tgz", @@ -6023,6 +6829,14 @@ "node": ">=0.8.19" } }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "engines": { + "node": ">=8" + } + }, "node_modules/infisical-node": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/infisical-node/-/infisical-node-1.2.1.tgz", @@ -6057,6 +6871,31 @@ "node": ">= 0.10" } }, + "node_modules/ioredis": { + "version": "4.28.5", + "resolved": "https://registry.npmjs.org/ioredis/-/ioredis-4.28.5.tgz", + "integrity": "sha512-3GYo0GJtLqgNXj4YhrisLaNNvWSNwSS2wS4OELGfGxH8I69+XfNdnmV1AyN+ZqMh0i7eX+SWjrwFKDBDgfBC1A==", + "dependencies": { + "cluster-key-slot": "^1.1.0", + "debug": "^4.3.1", + "denque": "^1.1.0", + "lodash.defaults": "^4.2.0", + "lodash.flatten": "^4.4.0", + "lodash.isarguments": "^3.1.0", + "p-map": "^2.1.0", + "redis-commands": "1.7.0", + "redis-errors": "^1.2.0", + "redis-parser": "^3.0.0", + "standard-as-callback": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/ioredis" + } + }, "node_modules/ip": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", @@ -6098,8 +6937,16 @@ "node_modules/is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" + }, + "node_modules/is-base64": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-base64/-/is-base64-1.1.0.tgz", + "integrity": "sha512-Nlhg7Z2dVC4/PTvIFkgVVNvPHSO2eR/Yd0XzhGiXCXEvWnptXlXa/clQ8aePPiMuxEGcWfzWbGw2Fe3d+Y3v1g==", + "bin": { + "is_base64": "bin/is-base64", + "is-base64": "bin/is-base64" + } }, "node_modules/is-binary-path": { "version": "2.1.0", @@ -6128,7 +6975,6 @@ "version": "2.12.1", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.1.tgz", "integrity": "sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==", - "dev": true, "dependencies": { "has": "^1.0.3" }, @@ -6291,9 +7137,9 @@ } }, "node_modules/istanbul-lib-instrument/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, "bin": { "semver": "bin/semver.js" @@ -6949,6 +7795,14 @@ "node": ">= 0.6.0" } }, + "node_modules/joycon": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/joycon/-/joycon-3.1.1.tgz", + "integrity": "sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==", + "engines": { + "node": ">=10" + } + }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -6983,6 +7837,11 @@ "node": ">=4" } }, + "node_modules/json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" + }, "node_modules/json-parse-even-better-errors": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", @@ -7140,6 +7999,49 @@ "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", "dev": true }, + "node_modules/load-json-file": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-5.3.0.tgz", + "integrity": "sha512-cJGP40Jc/VXUsp8/OrnyKyTZ1y6v/dphm3bioS+RrKXjK2BB6wHUd6JptZEFDGgGahMT+InnZO5i1Ei9mpC8Bw==", + "dependencies": { + "graceful-fs": "^4.1.15", + "parse-json": "^4.0.0", + "pify": "^4.0.1", + "strip-bom": "^3.0.0", + "type-fest": "^0.3.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/load-json-file/node_modules/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", + "dependencies": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/load-json-file/node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/load-json-file/node_modules/type-fest": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz", + "integrity": "sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==", + "engines": { + "node": ">=6" + } + }, "node_modules/locate-path": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", @@ -7160,6 +8062,21 @@ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, + "node_modules/lodash.defaults": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", + "integrity": "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==" + }, + "node_modules/lodash.flatten": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", + "integrity": "sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==" + }, + "node_modules/lodash.isarguments": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", + "integrity": "sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg==" + }, "node_modules/lodash.memoize": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", @@ -7219,9 +8136,9 @@ } }, "node_modules/make-dir/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "bin": { "semver": "bin/semver.js" } @@ -7499,6 +8416,49 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" }, + "node_modules/morgan": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.10.0.tgz", + "integrity": "sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==", + "dev": true, + "dependencies": { + "basic-auth": "~2.0.1", + "debug": "2.6.9", + "depd": "~2.0.0", + "on-finished": "~2.3.0", + "on-headers": "~1.0.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/morgan/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/morgan/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/morgan/node_modules/on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", + "dev": true, + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/mpath": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.9.0.tgz", @@ -7518,6 +8478,14 @@ "node": ">=12.0.0" } }, + "node_modules/mri": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/mri/-/mri-1.1.4.tgz", + "integrity": "sha512-6y7IjGPm8AzlvoUrwAaw1tLnUBudaS3752vcd8JtrpGGQn+rXIe63LFVHm/YMwtqAuh+LJPCFdlLYPWM1nYn6w==", + "engines": { + "node": ">=4" + } + }, "node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -7686,9 +8654,9 @@ } }, "node_modules/nodemon/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, "bin": { "semver": "bin/semver" @@ -10339,6 +11307,38 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/octokit-auth-probot": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/octokit-auth-probot/-/octokit-auth-probot-1.2.9.tgz", + "integrity": "sha512-mMjw6Y760EwJnW2tSVooJK8BMdsG6D40SoCclnefVf/5yWjaNVquEu8NREBVWb60OwbpnMEz4vREXHB5xdMFYQ==", + "dependencies": { + "@octokit/auth-app": "^4.0.2", + "@octokit/auth-token": "^3.0.0", + "@octokit/auth-unauthenticated": "^3.0.0", + "@octokit/types": "^8.0.0" + }, + "peerDependencies": { + "@octokit/core": ">=3.2" + } + }, + "node_modules/octokit-auth-probot/node_modules/@octokit/openapi-types": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-14.0.0.tgz", + "integrity": "sha512-HNWisMYlR8VCnNurDU6os2ikx0s0VyEjDYHNS/h4cgb8DeOxQ0n72HyinUtdDVxJhFy3FWLGl0DJhfEWk3P5Iw==" + }, + "node_modules/octokit-auth-probot/node_modules/@octokit/types": { + "version": "8.2.1", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-8.2.1.tgz", + "integrity": "sha512-8oWMUji8be66q2B9PmEIUyQm00VPDPun07umUWSaCwxmeaquFBro4Hcc3ruVoDo3zkQyZBlRvhIMEYS3pBhanw==", + "dependencies": { + "@octokit/openapi-types": "^14.0.0" + } + }, + "node_modules/on-exit-leak-free": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/on-exit-leak-free/-/on-exit-leak-free-2.1.0.tgz", + "integrity": "sha512-VuCaZZAjReZ3vUwgOB8LxAosIurDiAW0s13rI1YwmaP++jvcxP77AWoQvenZebpCA2m8WC1/EosPYPMjnRAp/w==" + }, "node_modules/on-finished": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", @@ -10350,6 +11350,15 @@ "node": ">= 0.8" } }, + "node_modules/on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -10393,17 +11402,17 @@ } }, "node_modules/optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", "dev": true, "dependencies": { + "@aashutoshrathi/word-wrap": "^1.2.3", "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", "levn": "^0.4.1", "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" + "type-check": "^0.4.0" }, "engines": { "node": ">= 0.8.0" @@ -10439,11 +11448,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/p-map": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", + "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", + "engines": { + "node": ">=6" + } + }, "node_modules/p-try": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, "engines": { "node": ">=6" } @@ -10570,8 +11586,7 @@ "node_modules/path-parse": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" }, "node_modules/path-to-regexp": { "version": "0.1.7", @@ -10610,6 +11625,236 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, + "node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "engines": { + "node": ">=6" + } + }, + "node_modules/pino": { + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/pino/-/pino-6.14.0.tgz", + "integrity": "sha512-iuhEDel3Z3hF9Jfe44DPXR8l07bhjuFY3GMHIXbjnY9XcafbyDDwl2sN2vw2GjMPf5Nkoe+OFao7ffn9SXaKDg==", + "dependencies": { + "fast-redact": "^3.0.0", + "fast-safe-stringify": "^2.0.8", + "flatstr": "^1.0.12", + "pino-std-serializers": "^3.1.0", + "process-warning": "^1.0.0", + "quick-format-unescaped": "^4.0.3", + "sonic-boom": "^1.0.2" + }, + "bin": { + "pino": "bin.js" + } + }, + "node_modules/pino-abstract-transport": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/pino-abstract-transport/-/pino-abstract-transport-1.0.0.tgz", + "integrity": "sha512-c7vo5OpW4wIS42hUVcT5REsL8ZljsUfBjqV/e2sFxmFEFZiq1XLUp5EYLtuDH6PEHq9W1egWqRbnLUP5FuZmOA==", + "dependencies": { + "readable-stream": "^4.0.0", + "split2": "^4.0.0" + } + }, + "node_modules/pino-abstract-transport/node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/pino-abstract-transport/node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/pino-abstract-transport/node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/pino-abstract-transport/node_modules/readable-stream": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.4.2.tgz", + "integrity": "sha512-Lk/fICSyIhodxy1IDK2HazkeGjSmezAWX2egdtJnYhtzKEsBPJowlI6F6LPb5tqIQILrMbx22S5o3GuJavPusA==", + "dependencies": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/pino-http": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/pino-http/-/pino-http-5.8.0.tgz", + "integrity": "sha512-YwXiyRb9y0WCD1P9PcxuJuh3Dc5qmXde/paJE86UGYRdiFOi828hR9iUGmk5gaw6NBT9gLtKANOHFimvh19U5w==", + "dependencies": { + "fast-url-parser": "^1.1.3", + "pino": "^6.13.0", + "pino-std-serializers": "^4.0.0" + } + }, + "node_modules/pino-http/node_modules/pino-std-serializers": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-4.0.0.tgz", + "integrity": "sha512-cK0pekc1Kjy5w9V2/n+8MkZwusa6EyyxfeQCB799CQRhRt/CqYKiWs5adeu8Shve2ZNffvfC/7J64A2PJo1W/Q==" + }, + "node_modules/pino-pretty": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/pino-pretty/-/pino-pretty-10.0.1.tgz", + "integrity": "sha512-yrn00+jNpkvZX/NrPVCPIVHAfTDy3ahF0PND9tKqZk4j9s+loK8dpzrJj4dGb7i+WLuR50ussuTAiWoMWU+qeA==", + "dependencies": { + "colorette": "^2.0.7", + "dateformat": "^4.6.3", + "fast-copy": "^3.0.0", + "fast-safe-stringify": "^2.1.1", + "help-me": "^4.0.1", + "joycon": "^3.1.1", + "minimist": "^1.2.6", + "on-exit-leak-free": "^2.1.0", + "pino-abstract-transport": "^1.0.0", + "pump": "^3.0.0", + "readable-stream": "^4.0.0", + "secure-json-parse": "^2.4.0", + "sonic-boom": "^3.0.0", + "strip-json-comments": "^3.1.1" + }, + "bin": { + "pino-pretty": "bin.js" + } + }, + "node_modules/pino-pretty/node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/pino-pretty/node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/pino-pretty/node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/pino-pretty/node_modules/readable-stream": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.4.2.tgz", + "integrity": "sha512-Lk/fICSyIhodxy1IDK2HazkeGjSmezAWX2egdtJnYhtzKEsBPJowlI6F6LPb5tqIQILrMbx22S5o3GuJavPusA==", + "dependencies": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/pino-pretty/node_modules/sonic-boom": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-3.3.0.tgz", + "integrity": "sha512-LYxp34KlZ1a2Jb8ZQgFCK3niIHzibdwtwNUWKg0qQRzsDoJ3Gfgkf8KdBTFU3SkejDEIlWwnSnpVdOZIhFMl/g==", + "dependencies": { + "atomic-sleep": "^1.0.0" + } + }, + "node_modules/pino-std-serializers": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-6.2.2.tgz", + "integrity": "sha512-cHjPPsE+vhj/tnhCy/wiMh3M3z3h/j15zHQX+S9GkTBgqJuTuJzYJ4gUyACLhDaJ7kk9ba9iRDmbH2tJU03OiA==" + }, + "node_modules/pino/node_modules/pino-std-serializers": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-3.2.0.tgz", + "integrity": "sha512-EqX4pwDPrt3MuOAAUBMU0Tk5kR/YcCM5fNPEzgCO2zJ5HfX0vbiH9HbJglnyeQsN96Kznae6MWD47pZB5avTrg==" + }, + "node_modules/pino/node_modules/sonic-boom": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-1.4.1.tgz", + "integrity": "sha512-LRHh/A8tpW7ru89lrlkU4AszXt1dbwSjVWguGrmlxE7tawVmDBlI1PILMkXAxJTwqhgsEeTHzj36D5CmHgQmNg==", + "dependencies": { + "atomic-sleep": "^1.0.0", + "flatstr": "^1.0.12" + } + }, "node_modules/pirates": { "version": "4.0.5", "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz", @@ -10619,6 +11864,74 @@ "node": ">= 6" } }, + "node_modules/pkg-conf": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-3.1.0.tgz", + "integrity": "sha512-m0OTbR/5VPNPqO1ph6Fqbj7Hv6QU7gR/tQW40ZqrL1rjgCU85W6C1bJn0BItuJqnR98PWzw7Z8hHeChD1WrgdQ==", + "dependencies": { + "find-up": "^3.0.0", + "load-json-file": "^5.2.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-conf/node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-conf/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-conf/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-conf/node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-conf/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "engines": { + "node": ">=4" + } + }, "node_modules/pkg-dir": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", @@ -10738,11 +12051,344 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/probot": { + "version": "12.3.1", + "resolved": "https://registry.npmjs.org/probot/-/probot-12.3.1.tgz", + "integrity": "sha512-ECSgycmAC0ILEK6cOa+x3QPufP5JybsuohOFCYr3glQU5SkbmypZJE/Sfio9mxAFHK5LCXveIDsfZCxf6ck4JA==", + "dependencies": { + "@octokit/core": "^3.2.4", + "@octokit/plugin-enterprise-compatibility": "^1.2.8", + "@octokit/plugin-paginate-rest": "^2.6.2", + "@octokit/plugin-rest-endpoint-methods": "^5.0.1", + "@octokit/plugin-retry": "^3.0.6", + "@octokit/plugin-throttling": "^3.3.4", + "@octokit/types": "^8.0.0", + "@octokit/webhooks": "^9.8.4", + "@probot/get-private-key": "^1.1.0", + "@probot/octokit-plugin-config": "^1.0.0", + "@probot/pino": "^2.2.0", + "@types/express": "^4.17.9", + "@types/ioredis": "^4.27.1", + "@types/pino": "^6.3.4", + "@types/pino-http": "^5.0.6", + "commander": "^6.2.0", + "deepmerge": "^4.2.2", + "deprecation": "^2.3.1", + "dotenv": "^8.2.0", + "eventsource": "^2.0.2", + "express": "^4.17.1", + "express-handlebars": "^6.0.3", + "ioredis": "^4.27.8", + "js-yaml": "^3.14.1", + "lru-cache": "^6.0.0", + "octokit-auth-probot": "^1.2.2", + "pino": "^6.7.0", + "pino-http": "^5.3.0", + "pkg-conf": "^3.1.0", + "resolve": "^1.19.0", + "semver": "^7.3.4", + "update-dotenv": "^1.1.1", + "uuid": "^8.3.2" + }, + "bin": { + "probot": "bin/probot.js" + }, + "engines": { + "node": ">=10.21" + } + }, + "node_modules/probot/node_modules/@octokit/auth-token": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.5.0.tgz", + "integrity": "sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g==", + "dependencies": { + "@octokit/types": "^6.0.3" + } + }, + "node_modules/probot/node_modules/@octokit/auth-token/node_modules/@octokit/openapi-types": { + "version": "12.11.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.11.0.tgz", + "integrity": "sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==" + }, + "node_modules/probot/node_modules/@octokit/auth-token/node_modules/@octokit/types": { + "version": "6.41.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", + "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", + "dependencies": { + "@octokit/openapi-types": "^12.11.0" + } + }, + "node_modules/probot/node_modules/@octokit/core": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@octokit/core/-/core-3.6.0.tgz", + "integrity": "sha512-7RKRKuA4xTjMhY+eG3jthb3hlZCsOwg3rztWh75Xc+ShDWOfDDATWbeZpAHBNRpm4Tv9WgBMOy1zEJYXG6NJ7Q==", + "dependencies": { + "@octokit/auth-token": "^2.4.4", + "@octokit/graphql": "^4.5.8", + "@octokit/request": "^5.6.3", + "@octokit/request-error": "^2.0.5", + "@octokit/types": "^6.0.3", + "before-after-hook": "^2.2.0", + "universal-user-agent": "^6.0.0" + } + }, + "node_modules/probot/node_modules/@octokit/core/node_modules/@octokit/openapi-types": { + "version": "12.11.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.11.0.tgz", + "integrity": "sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==" + }, + "node_modules/probot/node_modules/@octokit/core/node_modules/@octokit/types": { + "version": "6.41.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", + "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", + "dependencies": { + "@octokit/openapi-types": "^12.11.0" + } + }, + "node_modules/probot/node_modules/@octokit/endpoint": { + "version": "6.0.12", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.12.tgz", + "integrity": "sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA==", + "dependencies": { + "@octokit/types": "^6.0.3", + "is-plain-object": "^5.0.0", + "universal-user-agent": "^6.0.0" + } + }, + "node_modules/probot/node_modules/@octokit/endpoint/node_modules/@octokit/openapi-types": { + "version": "12.11.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.11.0.tgz", + "integrity": "sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==" + }, + "node_modules/probot/node_modules/@octokit/endpoint/node_modules/@octokit/types": { + "version": "6.41.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", + "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", + "dependencies": { + "@octokit/openapi-types": "^12.11.0" + } + }, + "node_modules/probot/node_modules/@octokit/graphql": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.8.0.tgz", + "integrity": "sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg==", + "dependencies": { + "@octokit/request": "^5.6.0", + "@octokit/types": "^6.0.3", + "universal-user-agent": "^6.0.0" + } + }, + "node_modules/probot/node_modules/@octokit/graphql/node_modules/@octokit/openapi-types": { + "version": "12.11.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.11.0.tgz", + "integrity": "sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==" + }, + "node_modules/probot/node_modules/@octokit/graphql/node_modules/@octokit/types": { + "version": "6.41.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", + "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", + "dependencies": { + "@octokit/openapi-types": "^12.11.0" + } + }, + "node_modules/probot/node_modules/@octokit/openapi-types": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-14.0.0.tgz", + "integrity": "sha512-HNWisMYlR8VCnNurDU6os2ikx0s0VyEjDYHNS/h4cgb8DeOxQ0n72HyinUtdDVxJhFy3FWLGl0DJhfEWk3P5Iw==" + }, + "node_modules/probot/node_modules/@octokit/plugin-paginate-rest": { + "version": "2.21.3", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.21.3.tgz", + "integrity": "sha512-aCZTEf0y2h3OLbrgKkrfFdjRL6eSOo8komneVQJnYecAxIej7Bafor2xhuDJOIFau4pk0i/P28/XgtbyPF0ZHw==", + "dependencies": { + "@octokit/types": "^6.40.0" + }, + "peerDependencies": { + "@octokit/core": ">=2" + } + }, + "node_modules/probot/node_modules/@octokit/plugin-paginate-rest/node_modules/@octokit/openapi-types": { + "version": "12.11.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.11.0.tgz", + "integrity": "sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==" + }, + "node_modules/probot/node_modules/@octokit/plugin-paginate-rest/node_modules/@octokit/types": { + "version": "6.41.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", + "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", + "dependencies": { + "@octokit/openapi-types": "^12.11.0" + } + }, + "node_modules/probot/node_modules/@octokit/plugin-rest-endpoint-methods": { + "version": "5.16.2", + "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.16.2.tgz", + "integrity": "sha512-8QFz29Fg5jDuTPXVtey05BLm7OB+M8fnvE64RNegzX7U+5NUXcOcnpTIK0YfSHBg8gYd0oxIq3IZTe9SfPZiRw==", + "dependencies": { + "@octokit/types": "^6.39.0", + "deprecation": "^2.3.1" + }, + "peerDependencies": { + "@octokit/core": ">=3" + } + }, + "node_modules/probot/node_modules/@octokit/plugin-rest-endpoint-methods/node_modules/@octokit/openapi-types": { + "version": "12.11.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.11.0.tgz", + "integrity": "sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==" + }, + "node_modules/probot/node_modules/@octokit/plugin-rest-endpoint-methods/node_modules/@octokit/types": { + "version": "6.41.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", + "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", + "dependencies": { + "@octokit/openapi-types": "^12.11.0" + } + }, + "node_modules/probot/node_modules/@octokit/plugin-throttling": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-throttling/-/plugin-throttling-3.7.0.tgz", + "integrity": "sha512-qrKT1Yl/KuwGSC6/oHpLBot3ooC9rq0/ryDYBCpkRtoj+R8T47xTMDT6Tk2CxWopFota/8Pi/2SqArqwC0JPow==", + "dependencies": { + "@octokit/types": "^6.0.1", + "bottleneck": "^2.15.3" + }, + "peerDependencies": { + "@octokit/core": "^3.5.0" + } + }, + "node_modules/probot/node_modules/@octokit/plugin-throttling/node_modules/@octokit/openapi-types": { + "version": "12.11.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.11.0.tgz", + "integrity": "sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==" + }, + "node_modules/probot/node_modules/@octokit/plugin-throttling/node_modules/@octokit/types": { + "version": "6.41.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", + "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", + "dependencies": { + "@octokit/openapi-types": "^12.11.0" + } + }, + "node_modules/probot/node_modules/@octokit/request": { + "version": "5.6.3", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.6.3.tgz", + "integrity": "sha512-bFJl0I1KVc9jYTe9tdGGpAMPy32dLBXXo1dS/YwSCTL/2nd9XeHsY616RE3HPXDVk+a+dBuzyz5YdlXwcDTr2A==", + "dependencies": { + "@octokit/endpoint": "^6.0.1", + "@octokit/request-error": "^2.1.0", + "@octokit/types": "^6.16.1", + "is-plain-object": "^5.0.0", + "node-fetch": "^2.6.7", + "universal-user-agent": "^6.0.0" + } + }, + "node_modules/probot/node_modules/@octokit/request-error": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.1.0.tgz", + "integrity": "sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==", + "dependencies": { + "@octokit/types": "^6.0.3", + "deprecation": "^2.0.0", + "once": "^1.4.0" + } + }, + "node_modules/probot/node_modules/@octokit/request-error/node_modules/@octokit/openapi-types": { + "version": "12.11.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.11.0.tgz", + "integrity": "sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==" + }, + "node_modules/probot/node_modules/@octokit/request-error/node_modules/@octokit/types": { + "version": "6.41.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", + "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", + "dependencies": { + "@octokit/openapi-types": "^12.11.0" + } + }, + "node_modules/probot/node_modules/@octokit/request/node_modules/@octokit/openapi-types": { + "version": "12.11.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.11.0.tgz", + "integrity": "sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==" + }, + "node_modules/probot/node_modules/@octokit/request/node_modules/@octokit/types": { + "version": "6.41.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", + "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", + "dependencies": { + "@octokit/openapi-types": "^12.11.0" + } + }, + "node_modules/probot/node_modules/@octokit/types": { + "version": "8.2.1", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-8.2.1.tgz", + "integrity": "sha512-8oWMUji8be66q2B9PmEIUyQm00VPDPun07umUWSaCwxmeaquFBro4Hcc3ruVoDo3zkQyZBlRvhIMEYS3pBhanw==", + "dependencies": { + "@octokit/openapi-types": "^14.0.0" + } + }, + "node_modules/probot/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/probot/node_modules/dotenv": { + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz", + "integrity": "sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==", + "engines": { + "node": ">=10" + } + }, + "node_modules/probot/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/probot/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==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/probot/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "engines": { + "node": ">= 0.6.0" + } + }, "node_modules/process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" }, + "node_modules/process-warning": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-1.0.0.tgz", + "integrity": "sha512-du4wfLyj4yCZq1VupnVSZmRsPJsNuxoDQFdCFHLaYiEbFBD7QE0a+I4D7hOxrVnh78QE/YipFAj9lXHiXocV+Q==" + }, "node_modules/prompts": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", @@ -10804,6 +12450,15 @@ "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==", "dev": true }, + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, "node_modules/punycode": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", @@ -10888,6 +12543,11 @@ } ] }, + "node_modules/quick-format-unescaped": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz", + "integrity": "sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==" + }, "node_modules/quick-lru": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", @@ -11017,6 +12677,30 @@ "node": ">=8.10.0" } }, + "node_modules/redis-commands": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/redis-commands/-/redis-commands-1.7.0.tgz", + "integrity": "sha512-nJWqw3bTFy21hX/CPKHth6sfhZbdiHP6bTawSgQBlKOVRG7EZkfHbbHwQJnrE4vsQf0CMNE+3gJ4Fmm16vdVlQ==" + }, + "node_modules/redis-errors": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/redis-errors/-/redis-errors-1.2.0.tgz", + "integrity": "sha512-1qny3OExCf0UvUV/5wpYKf2YwPcOqXzkwKKSmKHiE6ZMQs5heeE/c8eXK+PNllPvmjgAbfnsbpkGZWy8cBpn9w==", + "engines": { + "node": ">=4" + } + }, + "node_modules/redis-parser": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redis-parser/-/redis-parser-3.0.0.tgz", + "integrity": "sha512-DJnGAeenTdpMEH6uAJRK/uiyEIH9WVsUmoLwzudwGJUwZPp80PDBWPHXSAGNPwNvIXAbe7MSUB1zQFugFml66A==", + "dependencies": { + "redis-errors": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/regenerator-runtime": { "version": "0.13.11", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", @@ -11043,7 +12727,6 @@ "version": "1.22.2", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", - "dev": true, "dependencies": { "is-core-module": "^2.11.0", "path-parse": "^1.0.7", @@ -11105,6 +12788,11 @@ "node": ">=0.10.0" } }, + "node_modules/rfdc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", + "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==" + }, "node_modules/rimraf": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", @@ -11219,10 +12907,15 @@ "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.1.tgz", "integrity": "sha512-8I2a3LovHTOpm7NV5yOyO8IHqgVsfK4+UuySrXU8YXkSRX7k6hCV9b3HrkKCr3nMpgj+0bmocaJJWpvp1oc7ZA==" }, + "node_modules/secure-json-parse": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-2.7.0.tgz", + "integrity": "sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==" + }, "node_modules/semver": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.1.tgz", - "integrity": "sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dependencies": { "lru-cache": "^6.0.0" }, @@ -11428,6 +13121,71 @@ "npm": ">= 3.0.0" } }, + "node_modules/smee-client": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/smee-client/-/smee-client-1.2.3.tgz", + "integrity": "sha512-uDrU8u9/Ln7aRXyzGHgVaNUS8onHZZeSwQjCdkMoSL7U85xI+l+Y2NgjibkMJAyXkW7IAbb8rw9RMHIjS6lAwA==", + "dev": true, + "dependencies": { + "commander": "^2.19.0", + "eventsource": "^1.1.0", + "morgan": "^1.9.1", + "superagent": "^7.1.3", + "validator": "^13.7.0" + }, + "bin": { + "smee": "bin/smee.js" + } + }, + "node_modules/smee-client/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "node_modules/smee-client/node_modules/eventsource": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.1.2.tgz", + "integrity": "sha512-xAH3zWhgO2/3KIniEKYPr8plNSzlGINOUqYj0m0u7AB81iRw8b/3E73W6AuU+6klLbaSFmZnaETQ2lXPfAydrA==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/smee-client/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/smee-client/node_modules/superagent": { + "version": "7.1.5", + "resolved": "https://registry.npmjs.org/superagent/-/superagent-7.1.5.tgz", + "integrity": "sha512-HQYyGuDRFGmZ6GNC4hq2f37KnsY9Lr0/R1marNZTgMweVDQLTLJJ6DGQ9Tj/xVVs5HEnop9EMmTbywb5P30aqw==", + "dev": true, + "dependencies": { + "component-emitter": "^1.3.0", + "cookiejar": "^2.1.3", + "debug": "^4.3.4", + "fast-safe-stringify": "^2.1.1", + "form-data": "^4.0.0", + "formidable": "^2.0.1", + "methods": "^1.1.2", + "mime": "^2.5.0", + "qs": "^6.10.3", + "readable-stream": "^3.6.0", + "semver": "^7.3.7" + }, + "engines": { + "node": ">=6.4.0 <13 || >=14" + } + }, "node_modules/snappy": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/snappy/-/snappy-7.1.1.tgz", @@ -11469,6 +13227,14 @@ "npm": ">= 3.0.0" } }, + "node_modules/sonic-boom": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-2.8.0.tgz", + "integrity": "sha512-kuonw1YOYYNOve5iHdSahXPOK49GqwA+LZhI6Wz/l0rP57iKyXXIHaRagOBHAPmGwJC6od2Z9zgvZ5loSgMlVg==", + "dependencies": { + "atomic-sleep": "^1.0.0" + } + }, "node_modules/source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -11504,11 +13270,18 @@ "node": ">=6" } }, + "node_modules/split2": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", + "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", + "engines": { + "node": ">= 10.x" + } + }, "node_modules/sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" }, "node_modules/stack-trace": { "version": "0.0.10", @@ -11539,6 +13312,11 @@ "node": ">=8" } }, + "node_modules/standard-as-callback": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/standard-as-callback/-/standard-as-callback-2.1.0.tgz", + "integrity": "sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A==" + }, "node_modules/statuses": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", @@ -11631,7 +13409,6 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, "engines": { "node": ">=8" }, @@ -11706,7 +13483,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, "engines": { "node": ">= 0.4" }, @@ -12139,6 +13915,23 @@ "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.12.1.tgz", "integrity": "sha512-hEQt0+ZLDVUMhebKxL4x1BTtDY7bavVofhZ9KZ4aI26X9SRaE+Y3m83XUL1UP2jn8ynjndwCCpEHdUG+9pP1Tw==" }, + "node_modules/universal-github-app-jwt": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/universal-github-app-jwt/-/universal-github-app-jwt-1.1.1.tgz", + "integrity": "sha512-G33RTLrIBMFmlDV4u4CBF7dh71eWwykck4XgaxaIVeZKOYZRAAxvcGMRFTUclVY6xoUPQvO4Ne5wKGxYm/Yy9w==", + "dependencies": { + "@types/jsonwebtoken": "^9.0.0", + "jsonwebtoken": "^9.0.0" + } + }, + "node_modules/universal-github-app-jwt/node_modules/@types/jsonwebtoken": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz", + "integrity": "sha512-drE6uz7QBKq1fYqqoFKTDRdFCPHd5TCub75BM+D+cMx7NU9hUz7SESLfC2fSCXVFMO5Yj8sOWHuGqPgjc+fz0Q==", + "dependencies": { + "@types/node": "*" + } + }, "node_modules/universal-user-agent": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", @@ -12182,6 +13975,14 @@ "browserslist": ">= 4.21.0" } }, + "node_modules/update-dotenv": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/update-dotenv/-/update-dotenv-1.1.1.tgz", + "integrity": "sha512-3cIC18In/t0X/yH793c00qqxcKD8jVCgNOPif/fGQkFpYMGecM9YAc+kaAKXuZsM2dE9I9wFI7KvAuNX22SGMQ==", + "peerDependencies": { + "dotenv": "*" + } + }, "node_modules/uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -12421,15 +14222,6 @@ "node": ">= 6.4.0" } }, - "node_modules/word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/wordwrap": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", @@ -12561,6 +14353,12 @@ } }, "dependencies": { + "@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "dev": true + }, "@ampproject/remapping": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", @@ -12674,737 +14472,434 @@ } } }, - "@aws-sdk/abort-controller": { - "version": "3.347.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/abort-controller/-/abort-controller-3.347.0.tgz", - "integrity": "sha512-P/2qE6ntYEmYG4Ez535nJWZbXqgbkJx8CMz7ChEuEg3Gp3dvVYEKg+iEUEvlqQ2U5dWP5J3ehw5po9t86IsVPQ==", - "requires": { - "@aws-sdk/types": "3.347.0", - "tslib": "^2.5.0" - } - }, "@aws-sdk/client-cognito-identity": { - "version": "3.347.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-cognito-identity/-/client-cognito-identity-3.347.0.tgz", - "integrity": "sha512-Z92GT2SC1y1r0bl3XI6ZH6QMsL2AaG3IR6ORXeiA94OY9/eF/tQT0zDbwn/MZUwJuBnR0CfO8bq7IQgCAguQ4A==", + "version": "3.370.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-cognito-identity/-/client-cognito-identity-3.370.0.tgz", + "integrity": "sha512-/dQFXT8y0WUD/731cdLjCrxNxH7Wtg2uZx7PggevTZs9Yr2fdGPSHehIYfvpCvi59yeG9T2Cl8sFnxXL1OEx4A==", "optional": true, "requires": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/client-sts": "3.347.0", - "@aws-sdk/config-resolver": "3.347.0", - "@aws-sdk/credential-provider-node": "3.347.0", - "@aws-sdk/fetch-http-handler": "3.347.0", - "@aws-sdk/hash-node": "3.347.0", - "@aws-sdk/invalid-dependency": "3.347.0", - "@aws-sdk/middleware-content-length": "3.347.0", - "@aws-sdk/middleware-endpoint": "3.347.0", - "@aws-sdk/middleware-host-header": "3.347.0", - "@aws-sdk/middleware-logger": "3.347.0", - "@aws-sdk/middleware-recursion-detection": "3.347.0", - "@aws-sdk/middleware-retry": "3.347.0", - "@aws-sdk/middleware-serde": "3.347.0", - "@aws-sdk/middleware-signing": "3.347.0", - "@aws-sdk/middleware-stack": "3.347.0", - "@aws-sdk/middleware-user-agent": "3.347.0", - "@aws-sdk/node-config-provider": "3.347.0", - "@aws-sdk/node-http-handler": "3.347.0", - "@aws-sdk/smithy-client": "3.347.0", - "@aws-sdk/types": "3.347.0", - "@aws-sdk/url-parser": "3.347.0", - "@aws-sdk/util-base64": "3.310.0", - "@aws-sdk/util-body-length-browser": "3.310.0", - "@aws-sdk/util-body-length-node": "3.310.0", - "@aws-sdk/util-defaults-mode-browser": "3.347.0", - "@aws-sdk/util-defaults-mode-node": "3.347.0", - "@aws-sdk/util-endpoints": "3.347.0", - "@aws-sdk/util-retry": "3.347.0", - "@aws-sdk/util-user-agent-browser": "3.347.0", - "@aws-sdk/util-user-agent-node": "3.347.0", - "@aws-sdk/util-utf8": "3.310.0", - "@smithy/protocol-http": "^1.0.1", - "@smithy/types": "^1.0.0", + "@aws-sdk/client-sts": "3.370.0", + "@aws-sdk/credential-provider-node": "3.370.0", + "@aws-sdk/middleware-host-header": "3.370.0", + "@aws-sdk/middleware-logger": "3.370.0", + "@aws-sdk/middleware-recursion-detection": "3.370.0", + "@aws-sdk/middleware-signing": "3.370.0", + "@aws-sdk/middleware-user-agent": "3.370.0", + "@aws-sdk/types": "3.370.0", + "@aws-sdk/util-endpoints": "3.370.0", + "@aws-sdk/util-user-agent-browser": "3.370.0", + "@aws-sdk/util-user-agent-node": "3.370.0", + "@smithy/config-resolver": "^1.0.1", + "@smithy/fetch-http-handler": "^1.0.1", + "@smithy/hash-node": "^1.0.1", + "@smithy/invalid-dependency": "^1.0.1", + "@smithy/middleware-content-length": "^1.0.1", + "@smithy/middleware-endpoint": "^1.0.2", + "@smithy/middleware-retry": "^1.0.3", + "@smithy/middleware-serde": "^1.0.1", + "@smithy/middleware-stack": "^1.0.1", + "@smithy/node-config-provider": "^1.0.1", + "@smithy/node-http-handler": "^1.0.2", + "@smithy/protocol-http": "^1.1.0", + "@smithy/smithy-client": "^1.0.3", + "@smithy/types": "^1.1.0", + "@smithy/url-parser": "^1.0.1", + "@smithy/util-base64": "^1.0.1", + "@smithy/util-body-length-browser": "^1.0.1", + "@smithy/util-body-length-node": "^1.0.1", + "@smithy/util-defaults-mode-browser": "^1.0.1", + "@smithy/util-defaults-mode-node": "^1.0.1", + "@smithy/util-retry": "^1.0.3", + "@smithy/util-utf8": "^1.0.1", "tslib": "^2.5.0" } }, "@aws-sdk/client-secrets-manager": { - "version": "3.347.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-secrets-manager/-/client-secrets-manager-3.347.0.tgz", - "integrity": "sha512-lqBBJobdpVGx5OJpI3P52SaOilPkVW9zKVwPndoou8hpPYMMUVbVZ/Q0rSmjXC7wi9VzMB4SlENDM519Hu/tdQ==", + "version": "3.370.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-secrets-manager/-/client-secrets-manager-3.370.0.tgz", + "integrity": "sha512-1o1mpWbI1RyzCQ4cVpHQJnm6PziAJ+ptLt4p+wlN74Z330/nnE0JkK3t9l3CxhPqCIW8VjGbTCno5IzwAXnjPw==", "requires": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/client-sts": "3.347.0", - "@aws-sdk/config-resolver": "3.347.0", - "@aws-sdk/credential-provider-node": "3.347.0", - "@aws-sdk/fetch-http-handler": "3.347.0", - "@aws-sdk/hash-node": "3.347.0", - "@aws-sdk/invalid-dependency": "3.347.0", - "@aws-sdk/middleware-content-length": "3.347.0", - "@aws-sdk/middleware-endpoint": "3.347.0", - "@aws-sdk/middleware-host-header": "3.347.0", - "@aws-sdk/middleware-logger": "3.347.0", - "@aws-sdk/middleware-recursion-detection": "3.347.0", - "@aws-sdk/middleware-retry": "3.347.0", - "@aws-sdk/middleware-serde": "3.347.0", - "@aws-sdk/middleware-signing": "3.347.0", - "@aws-sdk/middleware-stack": "3.347.0", - "@aws-sdk/middleware-user-agent": "3.347.0", - "@aws-sdk/node-config-provider": "3.347.0", - "@aws-sdk/node-http-handler": "3.347.0", - "@aws-sdk/smithy-client": "3.347.0", - "@aws-sdk/types": "3.347.0", - "@aws-sdk/url-parser": "3.347.0", - "@aws-sdk/util-base64": "3.310.0", - "@aws-sdk/util-body-length-browser": "3.310.0", - "@aws-sdk/util-body-length-node": "3.310.0", - "@aws-sdk/util-defaults-mode-browser": "3.347.0", - "@aws-sdk/util-defaults-mode-node": "3.347.0", - "@aws-sdk/util-endpoints": "3.347.0", - "@aws-sdk/util-retry": "3.347.0", - "@aws-sdk/util-user-agent-browser": "3.347.0", - "@aws-sdk/util-user-agent-node": "3.347.0", - "@aws-sdk/util-utf8": "3.310.0", - "@smithy/protocol-http": "^1.0.1", - "@smithy/types": "^1.0.0", + "@aws-sdk/client-sts": "3.370.0", + "@aws-sdk/credential-provider-node": "3.370.0", + "@aws-sdk/middleware-host-header": "3.370.0", + "@aws-sdk/middleware-logger": "3.370.0", + "@aws-sdk/middleware-recursion-detection": "3.370.0", + "@aws-sdk/middleware-signing": "3.370.0", + "@aws-sdk/middleware-user-agent": "3.370.0", + "@aws-sdk/types": "3.370.0", + "@aws-sdk/util-endpoints": "3.370.0", + "@aws-sdk/util-user-agent-browser": "3.370.0", + "@aws-sdk/util-user-agent-node": "3.370.0", + "@smithy/config-resolver": "^1.0.1", + "@smithy/fetch-http-handler": "^1.0.1", + "@smithy/hash-node": "^1.0.1", + "@smithy/invalid-dependency": "^1.0.1", + "@smithy/middleware-content-length": "^1.0.1", + "@smithy/middleware-endpoint": "^1.0.2", + "@smithy/middleware-retry": "^1.0.3", + "@smithy/middleware-serde": "^1.0.1", + "@smithy/middleware-stack": "^1.0.1", + "@smithy/node-config-provider": "^1.0.1", + "@smithy/node-http-handler": "^1.0.2", + "@smithy/protocol-http": "^1.1.0", + "@smithy/smithy-client": "^1.0.3", + "@smithy/types": "^1.1.0", + "@smithy/url-parser": "^1.0.1", + "@smithy/util-base64": "^1.0.1", + "@smithy/util-body-length-browser": "^1.0.1", + "@smithy/util-body-length-node": "^1.0.1", + "@smithy/util-defaults-mode-browser": "^1.0.1", + "@smithy/util-defaults-mode-node": "^1.0.1", + "@smithy/util-retry": "^1.0.3", + "@smithy/util-utf8": "^1.0.1", "tslib": "^2.5.0", "uuid": "^8.3.2" } }, "@aws-sdk/client-sso": { - "version": "3.347.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.347.0.tgz", - "integrity": "sha512-AZehWCNLUXTrDavsZYRi7d84Uef20ppYJ2FY0KxqrKB3lx89mO29SfSJSC4woeW5+6ooBokq8HtKxw5ImPfRhA==", + "version": "3.370.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.370.0.tgz", + "integrity": "sha512-0Ty1iHuzNxMQtN7nahgkZr4Wcu1XvqGfrQniiGdKKif9jG/4elxsQPiydRuQpFqN6b+bg7wPP7crFP1uTxx2KQ==", "requires": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/config-resolver": "3.347.0", - "@aws-sdk/fetch-http-handler": "3.347.0", - "@aws-sdk/hash-node": "3.347.0", - "@aws-sdk/invalid-dependency": "3.347.0", - "@aws-sdk/middleware-content-length": "3.347.0", - "@aws-sdk/middleware-endpoint": "3.347.0", - "@aws-sdk/middleware-host-header": "3.347.0", - "@aws-sdk/middleware-logger": "3.347.0", - "@aws-sdk/middleware-recursion-detection": "3.347.0", - "@aws-sdk/middleware-retry": "3.347.0", - "@aws-sdk/middleware-serde": "3.347.0", - "@aws-sdk/middleware-stack": "3.347.0", - "@aws-sdk/middleware-user-agent": "3.347.0", - "@aws-sdk/node-config-provider": "3.347.0", - "@aws-sdk/node-http-handler": "3.347.0", - "@aws-sdk/smithy-client": "3.347.0", - "@aws-sdk/types": "3.347.0", - "@aws-sdk/url-parser": "3.347.0", - "@aws-sdk/util-base64": "3.310.0", - "@aws-sdk/util-body-length-browser": "3.310.0", - "@aws-sdk/util-body-length-node": "3.310.0", - "@aws-sdk/util-defaults-mode-browser": "3.347.0", - "@aws-sdk/util-defaults-mode-node": "3.347.0", - "@aws-sdk/util-endpoints": "3.347.0", - "@aws-sdk/util-retry": "3.347.0", - "@aws-sdk/util-user-agent-browser": "3.347.0", - "@aws-sdk/util-user-agent-node": "3.347.0", - "@aws-sdk/util-utf8": "3.310.0", - "@smithy/protocol-http": "^1.0.1", - "@smithy/types": "^1.0.0", + "@aws-sdk/middleware-host-header": "3.370.0", + "@aws-sdk/middleware-logger": "3.370.0", + "@aws-sdk/middleware-recursion-detection": "3.370.0", + "@aws-sdk/middleware-user-agent": "3.370.0", + "@aws-sdk/types": "3.370.0", + "@aws-sdk/util-endpoints": "3.370.0", + "@aws-sdk/util-user-agent-browser": "3.370.0", + "@aws-sdk/util-user-agent-node": "3.370.0", + "@smithy/config-resolver": "^1.0.1", + "@smithy/fetch-http-handler": "^1.0.1", + "@smithy/hash-node": "^1.0.1", + "@smithy/invalid-dependency": "^1.0.1", + "@smithy/middleware-content-length": "^1.0.1", + "@smithy/middleware-endpoint": "^1.0.2", + "@smithy/middleware-retry": "^1.0.3", + "@smithy/middleware-serde": "^1.0.1", + "@smithy/middleware-stack": "^1.0.1", + "@smithy/node-config-provider": "^1.0.1", + "@smithy/node-http-handler": "^1.0.2", + "@smithy/protocol-http": "^1.1.0", + "@smithy/smithy-client": "^1.0.3", + "@smithy/types": "^1.1.0", + "@smithy/url-parser": "^1.0.1", + "@smithy/util-base64": "^1.0.1", + "@smithy/util-body-length-browser": "^1.0.1", + "@smithy/util-body-length-node": "^1.0.1", + "@smithy/util-defaults-mode-browser": "^1.0.1", + "@smithy/util-defaults-mode-node": "^1.0.1", + "@smithy/util-retry": "^1.0.3", + "@smithy/util-utf8": "^1.0.1", "tslib": "^2.5.0" } }, "@aws-sdk/client-sso-oidc": { - "version": "3.347.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.347.0.tgz", - "integrity": "sha512-IBxRfPqb8f9FqpmDbzcRDfoiasj/Y47C4Gj+j3kA5T1XWyGwbDI9QnPW/rnkZTWxLUUG1LSbBNwbPD6TLoff8A==", + "version": "3.370.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.370.0.tgz", + "integrity": "sha512-jAYOO74lmVXylQylqkPrjLzxvUnMKw476JCUTvCO6Q8nv3LzCWd76Ihgv/m9Q4M2Tbqi1iP2roVK5bstsXzEjA==", "requires": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/config-resolver": "3.347.0", - "@aws-sdk/fetch-http-handler": "3.347.0", - "@aws-sdk/hash-node": "3.347.0", - "@aws-sdk/invalid-dependency": "3.347.0", - "@aws-sdk/middleware-content-length": "3.347.0", - "@aws-sdk/middleware-endpoint": "3.347.0", - "@aws-sdk/middleware-host-header": "3.347.0", - "@aws-sdk/middleware-logger": "3.347.0", - "@aws-sdk/middleware-recursion-detection": "3.347.0", - "@aws-sdk/middleware-retry": "3.347.0", - "@aws-sdk/middleware-serde": "3.347.0", - "@aws-sdk/middleware-stack": "3.347.0", - "@aws-sdk/middleware-user-agent": "3.347.0", - "@aws-sdk/node-config-provider": "3.347.0", - "@aws-sdk/node-http-handler": "3.347.0", - "@aws-sdk/smithy-client": "3.347.0", - "@aws-sdk/types": "3.347.0", - "@aws-sdk/url-parser": "3.347.0", - "@aws-sdk/util-base64": "3.310.0", - "@aws-sdk/util-body-length-browser": "3.310.0", - "@aws-sdk/util-body-length-node": "3.310.0", - "@aws-sdk/util-defaults-mode-browser": "3.347.0", - "@aws-sdk/util-defaults-mode-node": "3.347.0", - "@aws-sdk/util-endpoints": "3.347.0", - "@aws-sdk/util-retry": "3.347.0", - "@aws-sdk/util-user-agent-browser": "3.347.0", - "@aws-sdk/util-user-agent-node": "3.347.0", - "@aws-sdk/util-utf8": "3.310.0", - "@smithy/protocol-http": "^1.0.1", - "@smithy/types": "^1.0.0", + "@aws-sdk/middleware-host-header": "3.370.0", + "@aws-sdk/middleware-logger": "3.370.0", + "@aws-sdk/middleware-recursion-detection": "3.370.0", + "@aws-sdk/middleware-user-agent": "3.370.0", + "@aws-sdk/types": "3.370.0", + "@aws-sdk/util-endpoints": "3.370.0", + "@aws-sdk/util-user-agent-browser": "3.370.0", + "@aws-sdk/util-user-agent-node": "3.370.0", + "@smithy/config-resolver": "^1.0.1", + "@smithy/fetch-http-handler": "^1.0.1", + "@smithy/hash-node": "^1.0.1", + "@smithy/invalid-dependency": "^1.0.1", + "@smithy/middleware-content-length": "^1.0.1", + "@smithy/middleware-endpoint": "^1.0.2", + "@smithy/middleware-retry": "^1.0.3", + "@smithy/middleware-serde": "^1.0.1", + "@smithy/middleware-stack": "^1.0.1", + "@smithy/node-config-provider": "^1.0.1", + "@smithy/node-http-handler": "^1.0.2", + "@smithy/protocol-http": "^1.1.0", + "@smithy/smithy-client": "^1.0.3", + "@smithy/types": "^1.1.0", + "@smithy/url-parser": "^1.0.1", + "@smithy/util-base64": "^1.0.1", + "@smithy/util-body-length-browser": "^1.0.1", + "@smithy/util-body-length-node": "^1.0.1", + "@smithy/util-defaults-mode-browser": "^1.0.1", + "@smithy/util-defaults-mode-node": "^1.0.1", + "@smithy/util-retry": "^1.0.3", + "@smithy/util-utf8": "^1.0.1", "tslib": "^2.5.0" } }, "@aws-sdk/client-sts": { - "version": "3.347.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.347.0.tgz", - "integrity": "sha512-QcJCUlzJZLAFTFSuELKd4BF5I5W38TR/m7NX2y1tn2la9JIrWSrz+tj598zfp2V4pJPzRJ1i8RglTZxSRIvsxQ==", + "version": "3.370.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.370.0.tgz", + "integrity": "sha512-utFxOPWIzbN+3kc415Je2o4J72hOLNhgR2Gt5EnRSggC3yOnkC4GzauxG8n7n5gZGBX45eyubHyPOXLOIyoqQA==", "requires": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/config-resolver": "3.347.0", - "@aws-sdk/credential-provider-node": "3.347.0", - "@aws-sdk/fetch-http-handler": "3.347.0", - "@aws-sdk/hash-node": "3.347.0", - "@aws-sdk/invalid-dependency": "3.347.0", - "@aws-sdk/middleware-content-length": "3.347.0", - "@aws-sdk/middleware-endpoint": "3.347.0", - "@aws-sdk/middleware-host-header": "3.347.0", - "@aws-sdk/middleware-logger": "3.347.0", - "@aws-sdk/middleware-recursion-detection": "3.347.0", - "@aws-sdk/middleware-retry": "3.347.0", - "@aws-sdk/middleware-sdk-sts": "3.347.0", - "@aws-sdk/middleware-serde": "3.347.0", - "@aws-sdk/middleware-signing": "3.347.0", - "@aws-sdk/middleware-stack": "3.347.0", - "@aws-sdk/middleware-user-agent": "3.347.0", - "@aws-sdk/node-config-provider": "3.347.0", - "@aws-sdk/node-http-handler": "3.347.0", - "@aws-sdk/smithy-client": "3.347.0", - "@aws-sdk/types": "3.347.0", - "@aws-sdk/url-parser": "3.347.0", - "@aws-sdk/util-base64": "3.310.0", - "@aws-sdk/util-body-length-browser": "3.310.0", - "@aws-sdk/util-body-length-node": "3.310.0", - "@aws-sdk/util-defaults-mode-browser": "3.347.0", - "@aws-sdk/util-defaults-mode-node": "3.347.0", - "@aws-sdk/util-endpoints": "3.347.0", - "@aws-sdk/util-retry": "3.347.0", - "@aws-sdk/util-user-agent-browser": "3.347.0", - "@aws-sdk/util-user-agent-node": "3.347.0", - "@aws-sdk/util-utf8": "3.310.0", - "@smithy/protocol-http": "^1.0.1", - "@smithy/types": "^1.0.0", - "fast-xml-parser": "4.1.2", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/config-resolver": { - "version": "3.347.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/config-resolver/-/config-resolver-3.347.0.tgz", - "integrity": "sha512-2ja+Sf/VnUO7IQ3nKbDQ5aumYKKJUaTm/BuVJ29wNho8wYHfuf7wHZV0pDTkB8RF5SH7IpHap7zpZAj39Iq+EA==", - "requires": { - "@aws-sdk/types": "3.347.0", - "@aws-sdk/util-config-provider": "3.310.0", - "@aws-sdk/util-middleware": "3.347.0", + "@aws-sdk/credential-provider-node": "3.370.0", + "@aws-sdk/middleware-host-header": "3.370.0", + "@aws-sdk/middleware-logger": "3.370.0", + "@aws-sdk/middleware-recursion-detection": "3.370.0", + "@aws-sdk/middleware-sdk-sts": "3.370.0", + "@aws-sdk/middleware-signing": "3.370.0", + "@aws-sdk/middleware-user-agent": "3.370.0", + "@aws-sdk/types": "3.370.0", + "@aws-sdk/util-endpoints": "3.370.0", + "@aws-sdk/util-user-agent-browser": "3.370.0", + "@aws-sdk/util-user-agent-node": "3.370.0", + "@smithy/config-resolver": "^1.0.1", + "@smithy/fetch-http-handler": "^1.0.1", + "@smithy/hash-node": "^1.0.1", + "@smithy/invalid-dependency": "^1.0.1", + "@smithy/middleware-content-length": "^1.0.1", + "@smithy/middleware-endpoint": "^1.0.2", + "@smithy/middleware-retry": "^1.0.3", + "@smithy/middleware-serde": "^1.0.1", + "@smithy/middleware-stack": "^1.0.1", + "@smithy/node-config-provider": "^1.0.1", + "@smithy/node-http-handler": "^1.0.2", + "@smithy/protocol-http": "^1.1.0", + "@smithy/smithy-client": "^1.0.3", + "@smithy/types": "^1.1.0", + "@smithy/url-parser": "^1.0.1", + "@smithy/util-base64": "^1.0.1", + "@smithy/util-body-length-browser": "^1.0.1", + "@smithy/util-body-length-node": "^1.0.1", + "@smithy/util-defaults-mode-browser": "^1.0.1", + "@smithy/util-defaults-mode-node": "^1.0.1", + "@smithy/util-retry": "^1.0.3", + "@smithy/util-utf8": "^1.0.1", + "fast-xml-parser": "4.2.5", "tslib": "^2.5.0" } }, "@aws-sdk/credential-provider-cognito-identity": { - "version": "3.347.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.347.0.tgz", - "integrity": "sha512-7NiVVQC51HvomI44OyD+UekZ7qxauJeFGwQILbQ0beAxNuPZL7Ect/jB6A5MeleyqP+sVn8cB7qBMZjFJRhoJA==", + "version": "3.370.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.370.0.tgz", + "integrity": "sha512-OjNAN72+QoyJAmOayi47AlFzpQc4E59LWRE2GKgH0F1pEgr3t34T0/EHusCoxUjOz5mRRXrKjNlHVC7ezOFEcg==", "optional": true, "requires": { - "@aws-sdk/client-cognito-identity": "3.347.0", - "@aws-sdk/property-provider": "3.347.0", - "@aws-sdk/types": "3.347.0", + "@aws-sdk/client-cognito-identity": "3.370.0", + "@aws-sdk/types": "3.370.0", + "@smithy/property-provider": "^1.0.1", + "@smithy/types": "^1.1.0", "tslib": "^2.5.0" } }, "@aws-sdk/credential-provider-env": { - "version": "3.347.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.347.0.tgz", - "integrity": "sha512-UnEM+LKGpXKzw/1WvYEQsC6Wj9PupYZdQOE+e2Dgy2dqk/pVFy4WueRtFXYDT2B41ppv3drdXUuKZRIDVqIgNQ==", + "version": "3.370.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.370.0.tgz", + "integrity": "sha512-raR3yP/4GGbKFRPP5hUBNkEmTnzxI9mEc2vJAJrcv4G4J4i/UP6ELiLInQ5eO2/VcV/CeKGZA3t7d1tsJ+jhCg==", "requires": { - "@aws-sdk/property-provider": "3.347.0", - "@aws-sdk/types": "3.347.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/credential-provider-imds": { - "version": "3.347.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-imds/-/credential-provider-imds-3.347.0.tgz", - "integrity": "sha512-7scCy/DCDRLIhlqTxff97LQWDnRwRXji3bxxMg+xWOTTaJe7PWx+etGSbBWaL42vsBHFShQjSLvJryEgoBktpw==", - "requires": { - "@aws-sdk/node-config-provider": "3.347.0", - "@aws-sdk/property-provider": "3.347.0", - "@aws-sdk/types": "3.347.0", - "@aws-sdk/url-parser": "3.347.0", + "@aws-sdk/types": "3.370.0", + "@smithy/property-provider": "^1.0.1", + "@smithy/types": "^1.1.0", "tslib": "^2.5.0" } }, "@aws-sdk/credential-provider-ini": { - "version": "3.347.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.347.0.tgz", - "integrity": "sha512-84TNF34ryabmVbILOq7f+/Jy8tJaskvHdax3X90qxFtXRU11kX0bf5NYL616KT0epR0VGpy50ThfIqvBwxeJfQ==", + "version": "3.370.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.370.0.tgz", + "integrity": "sha512-eJyapFKa4NrC9RfTgxlXnXfS9InG/QMEUPPVL+VhG7YS6nKqetC1digOYgivnEeu+XSKE0DJ7uZuXujN2Y7VAQ==", "requires": { - "@aws-sdk/credential-provider-env": "3.347.0", - "@aws-sdk/credential-provider-imds": "3.347.0", - "@aws-sdk/credential-provider-process": "3.347.0", - "@aws-sdk/credential-provider-sso": "3.347.0", - "@aws-sdk/credential-provider-web-identity": "3.347.0", - "@aws-sdk/property-provider": "3.347.0", - "@aws-sdk/shared-ini-file-loader": "3.347.0", - "@aws-sdk/types": "3.347.0", + "@aws-sdk/credential-provider-env": "3.370.0", + "@aws-sdk/credential-provider-process": "3.370.0", + "@aws-sdk/credential-provider-sso": "3.370.0", + "@aws-sdk/credential-provider-web-identity": "3.370.0", + "@aws-sdk/types": "3.370.0", + "@smithy/credential-provider-imds": "^1.0.1", + "@smithy/property-provider": "^1.0.1", + "@smithy/shared-ini-file-loader": "^1.0.1", + "@smithy/types": "^1.1.0", "tslib": "^2.5.0" } }, "@aws-sdk/credential-provider-node": { - "version": "3.347.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.347.0.tgz", - "integrity": "sha512-ds2uxE0krl94RdQ7bstwafUXdlMeEOPgedhaheVVlj8kH+XqlZdwUUaUv1uoEI9iBzuSjKftUkIHo0xsTiwtaw==", + "version": "3.370.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.370.0.tgz", + "integrity": "sha512-gkFiotBFKE4Fcn8CzQnMeab9TAR06FEAD02T4ZRYW1xGrBJOowmje9dKqdwQFHSPgnWAP+8HoTA8iwbhTLvjNA==", "requires": { - "@aws-sdk/credential-provider-env": "3.347.0", - "@aws-sdk/credential-provider-imds": "3.347.0", - "@aws-sdk/credential-provider-ini": "3.347.0", - "@aws-sdk/credential-provider-process": "3.347.0", - "@aws-sdk/credential-provider-sso": "3.347.0", - "@aws-sdk/credential-provider-web-identity": "3.347.0", - "@aws-sdk/property-provider": "3.347.0", - "@aws-sdk/shared-ini-file-loader": "3.347.0", - "@aws-sdk/types": "3.347.0", + "@aws-sdk/credential-provider-env": "3.370.0", + "@aws-sdk/credential-provider-ini": "3.370.0", + "@aws-sdk/credential-provider-process": "3.370.0", + "@aws-sdk/credential-provider-sso": "3.370.0", + "@aws-sdk/credential-provider-web-identity": "3.370.0", + "@aws-sdk/types": "3.370.0", + "@smithy/credential-provider-imds": "^1.0.1", + "@smithy/property-provider": "^1.0.1", + "@smithy/shared-ini-file-loader": "^1.0.1", + "@smithy/types": "^1.1.0", "tslib": "^2.5.0" } }, "@aws-sdk/credential-provider-process": { - "version": "3.347.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.347.0.tgz", - "integrity": "sha512-yl1z4MsaBdXd4GQ2halIvYds23S67kElyOwz7g8kaQ4kHj+UoYWxz3JVW/DGusM6XmQ9/F67utBrUVA0uhQYyw==", + "version": "3.370.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.370.0.tgz", + "integrity": "sha512-0BKFFZmUO779Xdw3u7wWnoWhYA4zygxJbgGVSyjkOGBvdkbPSTTcdwT1KFkaQy2kOXYeZPl+usVVRXs+ph4ejg==", "requires": { - "@aws-sdk/property-provider": "3.347.0", - "@aws-sdk/shared-ini-file-loader": "3.347.0", - "@aws-sdk/types": "3.347.0", + "@aws-sdk/types": "3.370.0", + "@smithy/property-provider": "^1.0.1", + "@smithy/shared-ini-file-loader": "^1.0.1", + "@smithy/types": "^1.1.0", "tslib": "^2.5.0" } }, "@aws-sdk/credential-provider-sso": { - "version": "3.347.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.347.0.tgz", - "integrity": "sha512-M1d7EnUaJbSNCmNalEbINmtFkc9wJufx7UhKtEeFwSq9KEzOMroH1MEOeiqIw9f/zE8NI/iPkVeEhw123vmBrQ==", + "version": "3.370.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.370.0.tgz", + "integrity": "sha512-PFroYm5hcPSfC/jkZnCI34QFL3I7WVKveVk6/F3fud/cnP8hp6YjA9NiTNbqdFSzsyoiN/+e5fZgNKih8vVPTA==", "requires": { - "@aws-sdk/client-sso": "3.347.0", - "@aws-sdk/property-provider": "3.347.0", - "@aws-sdk/shared-ini-file-loader": "3.347.0", - "@aws-sdk/token-providers": "3.347.0", - "@aws-sdk/types": "3.347.0", + "@aws-sdk/client-sso": "3.370.0", + "@aws-sdk/token-providers": "3.370.0", + "@aws-sdk/types": "3.370.0", + "@smithy/property-provider": "^1.0.1", + "@smithy/shared-ini-file-loader": "^1.0.1", + "@smithy/types": "^1.1.0", "tslib": "^2.5.0" } }, "@aws-sdk/credential-provider-web-identity": { - "version": "3.347.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.347.0.tgz", - "integrity": "sha512-DxoTlVK8lXjS1zVphtz/Ab+jkN/IZor9d6pP2GjJHNoAIIzXfRwwj5C8vr4eTayx/5VJ7GRP91J8GJ2cKly8Qw==", + "version": "3.370.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.370.0.tgz", + "integrity": "sha512-CFaBMLRudwhjv1sDzybNV93IaT85IwS+L8Wq6VRMa0mro1q9rrWsIZO811eF+k0NEPfgU1dLH+8Vc2qhw4SARQ==", "requires": { - "@aws-sdk/property-provider": "3.347.0", - "@aws-sdk/types": "3.347.0", + "@aws-sdk/types": "3.370.0", + "@smithy/property-provider": "^1.0.1", + "@smithy/types": "^1.1.0", "tslib": "^2.5.0" } }, "@aws-sdk/credential-providers": { - "version": "3.347.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-providers/-/credential-providers-3.347.0.tgz", - "integrity": "sha512-ny8tnuLToQIYbS+ztRh4/fViDDV1xk+WuapSK2T1MAIuPvhyD1IDulTyqv6P9ROoNIqt1NAoLctkWxdkLvqyQA==", + "version": "3.370.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-providers/-/credential-providers-3.370.0.tgz", + "integrity": "sha512-K5yUHJPB2QJKWzKoz1YCE2xJDvYL6bvCRyoT0mRPWbITrDjFuWxbe1QXWcMymwQIyzOITAnZq5fvj456KhPATg==", "optional": true, "requires": { - "@aws-sdk/client-cognito-identity": "3.347.0", - "@aws-sdk/client-sso": "3.347.0", - "@aws-sdk/client-sts": "3.347.0", - "@aws-sdk/credential-provider-cognito-identity": "3.347.0", - "@aws-sdk/credential-provider-env": "3.347.0", - "@aws-sdk/credential-provider-imds": "3.347.0", - "@aws-sdk/credential-provider-ini": "3.347.0", - "@aws-sdk/credential-provider-node": "3.347.0", - "@aws-sdk/credential-provider-process": "3.347.0", - "@aws-sdk/credential-provider-sso": "3.347.0", - "@aws-sdk/credential-provider-web-identity": "3.347.0", - "@aws-sdk/property-provider": "3.347.0", - "@aws-sdk/types": "3.347.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/eventstream-codec": { - "version": "3.347.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/eventstream-codec/-/eventstream-codec-3.347.0.tgz", - "integrity": "sha512-61q+SyspjsaQ4sdgjizMyRgVph2CiW4aAtfpoH69EJFJfTxTR/OqnZ9Jx/3YiYi0ksrvDenJddYodfWWJqD8/w==", - "requires": { - "@aws-crypto/crc32": "3.0.0", - "@aws-sdk/types": "3.347.0", - "@aws-sdk/util-hex-encoding": "3.310.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/fetch-http-handler": { - "version": "3.347.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/fetch-http-handler/-/fetch-http-handler-3.347.0.tgz", - "integrity": "sha512-sQ5P7ivY8//7wdxfA76LT1sF6V2Tyyz1qF6xXf9sihPN5Q1Y65c+SKpMzXyFSPqWZ82+SQQuDliYZouVyS6kQQ==", - "requires": { - "@aws-sdk/protocol-http": "3.347.0", - "@aws-sdk/querystring-builder": "3.347.0", - "@aws-sdk/types": "3.347.0", - "@aws-sdk/util-base64": "3.310.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/hash-node": { - "version": "3.347.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/hash-node/-/hash-node-3.347.0.tgz", - "integrity": "sha512-96+ml/4EaUaVpzBdOLGOxdoXOjkPgkoJp/0i1fxOJEvl8wdAQSwc3IugVK9wZkCxy2DlENtgOe6DfIOhfffm/g==", - "requires": { - "@aws-sdk/types": "3.347.0", - "@aws-sdk/util-buffer-from": "3.310.0", - "@aws-sdk/util-utf8": "3.310.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/invalid-dependency": { - "version": "3.347.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/invalid-dependency/-/invalid-dependency-3.347.0.tgz", - "integrity": "sha512-8imQcwLwqZ/wTJXZqzXT9pGLIksTRckhGLZaXT60tiBOPKuerTsus2L59UstLs5LP8TKaVZKFFSsjRIn9dQdmQ==", - "requires": { - "@aws-sdk/types": "3.347.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/is-array-buffer": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/is-array-buffer/-/is-array-buffer-3.310.0.tgz", - "integrity": "sha512-urnbcCR+h9NWUnmOtet/s4ghvzsidFmspfhYaHAmSRdy9yDjdjBJMFjjsn85A1ODUktztm+cVncXjQ38WCMjMQ==", - "requires": { - "tslib": "^2.5.0" - } - }, - "@aws-sdk/middleware-content-length": { - "version": "3.347.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-content-length/-/middleware-content-length-3.347.0.tgz", - "integrity": "sha512-i4qtWTDImMaDUtwKQPbaZpXsReiwiBomM1cWymCU4bhz81HL01oIxOxOBuiM+3NlDoCSPr3KI6txZSz/8cqXCQ==", - "requires": { - "@aws-sdk/protocol-http": "3.347.0", - "@aws-sdk/types": "3.347.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/middleware-endpoint": { - "version": "3.347.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-endpoint/-/middleware-endpoint-3.347.0.tgz", - "integrity": "sha512-unF0c6dMaUL1ffU+37Ugty43DgMnzPWXr/Jup/8GbK5fzzWT5NQq6dj9KHPubMbWeEjQbmczvhv25JuJdK8gNQ==", - "requires": { - "@aws-sdk/middleware-serde": "3.347.0", - "@aws-sdk/types": "3.347.0", - "@aws-sdk/url-parser": "3.347.0", - "@aws-sdk/util-middleware": "3.347.0", + "@aws-sdk/client-cognito-identity": "3.370.0", + "@aws-sdk/client-sso": "3.370.0", + "@aws-sdk/client-sts": "3.370.0", + "@aws-sdk/credential-provider-cognito-identity": "3.370.0", + "@aws-sdk/credential-provider-env": "3.370.0", + "@aws-sdk/credential-provider-ini": "3.370.0", + "@aws-sdk/credential-provider-node": "3.370.0", + "@aws-sdk/credential-provider-process": "3.370.0", + "@aws-sdk/credential-provider-sso": "3.370.0", + "@aws-sdk/credential-provider-web-identity": "3.370.0", + "@aws-sdk/types": "3.370.0", + "@smithy/credential-provider-imds": "^1.0.1", + "@smithy/property-provider": "^1.0.1", + "@smithy/types": "^1.1.0", "tslib": "^2.5.0" } }, "@aws-sdk/middleware-host-header": { - "version": "3.347.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.347.0.tgz", - "integrity": "sha512-kpKmR9OvMlnReqp5sKcJkozbj1wmlblbVSbnQAIkzeQj2xD5dnVR3Nn2ogQKxSmU1Fv7dEroBtrruJ1o3fY38A==", + "version": "3.370.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.370.0.tgz", + "integrity": "sha512-CPXOm/TnOFC7KyXcJglICC7OiA7Kj6mT3ChvEijr56TFOueNHvJdV4aNIFEQy0vGHOWtY12qOWLNto/wYR1BAQ==", "requires": { - "@aws-sdk/protocol-http": "3.347.0", - "@aws-sdk/types": "3.347.0", + "@aws-sdk/types": "3.370.0", + "@smithy/protocol-http": "^1.1.0", + "@smithy/types": "^1.1.0", "tslib": "^2.5.0" } }, "@aws-sdk/middleware-logger": { - "version": "3.347.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.347.0.tgz", - "integrity": "sha512-NYC+Id5UCkVn+3P1t/YtmHt75uED06vwaKyxDy0UmB2K66PZLVtwWbLpVWrhbroaw1bvUHYcRyQ9NIfnVcXQjA==", + "version": "3.370.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.370.0.tgz", + "integrity": "sha512-cQMq9SaZ/ORmTJPCT6VzMML7OxFdQzNkhMAgKpTDl+tdPWynlHF29E5xGoSzROnThHlQPCjogU0NZ8AxI0SWPA==", "requires": { - "@aws-sdk/types": "3.347.0", + "@aws-sdk/types": "3.370.0", + "@smithy/types": "^1.1.0", "tslib": "^2.5.0" } }, "@aws-sdk/middleware-recursion-detection": { - "version": "3.347.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.347.0.tgz", - "integrity": "sha512-qfnSvkFKCAMjMHR31NdsT0gv5Sq/ZHTUD4yQsSLpbVQ6iYAS834lrzXt41iyEHt57Y514uG7F/Xfvude3u4icQ==", + "version": "3.370.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.370.0.tgz", + "integrity": "sha512-L7ZF/w0lAAY/GK1khT8VdoU0XB7nWHk51rl/ecAg64J70dHnMOAg8n+5FZ9fBu/xH1FwUlHOkwlodJOgzLJjtg==", "requires": { - "@aws-sdk/protocol-http": "3.347.0", - "@aws-sdk/types": "3.347.0", + "@aws-sdk/types": "3.370.0", + "@smithy/protocol-http": "^1.1.0", + "@smithy/types": "^1.1.0", "tslib": "^2.5.0" } }, - "@aws-sdk/middleware-retry": { - "version": "3.347.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-retry/-/middleware-retry-3.347.0.tgz", - "integrity": "sha512-CpdM+8dCSbX96agy4FCzOfzDmhNnGBM/pxrgIVLm5nkYTLuXp/d7ubpFEUHULr+4hCd5wakHotMt7yO29NFaVw==", - "requires": { - "@aws-sdk/protocol-http": "3.347.0", - "@aws-sdk/service-error-classification": "3.347.0", - "@aws-sdk/types": "3.347.0", - "@aws-sdk/util-middleware": "3.347.0", - "@aws-sdk/util-retry": "3.347.0", - "tslib": "^2.5.0", - "uuid": "^8.3.2" - } - }, "@aws-sdk/middleware-sdk-sts": { - "version": "3.347.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-sts/-/middleware-sdk-sts-3.347.0.tgz", - "integrity": "sha512-38LJ0bkIoVF3W97x6Jyyou72YV9Cfbml4OaDEdnrCOo0EssNZM5d7RhjMvQDwww7/3OBY/BzeOcZKfJlkYUXGw==", + "version": "3.370.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-sts/-/middleware-sdk-sts-3.370.0.tgz", + "integrity": "sha512-ykbsoVy0AJtVbuhAlTAMcaz/tCE3pT8nAp0L7CQQxSoanRCvOux7au0KwMIQVhxgnYid4dWVF6d00SkqU5MXRA==", "requires": { - "@aws-sdk/middleware-signing": "3.347.0", - "@aws-sdk/types": "3.347.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/middleware-serde": { - "version": "3.347.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-serde/-/middleware-serde-3.347.0.tgz", - "integrity": "sha512-x5Foi7jRbVJXDu9bHfyCbhYDH5pKK+31MmsSJ3k8rY8keXLBxm2XEEg/AIoV9/TUF9EeVvZ7F1/RmMpJnWQsEg==", - "requires": { - "@aws-sdk/types": "3.347.0", + "@aws-sdk/middleware-signing": "3.370.0", + "@aws-sdk/types": "3.370.0", + "@smithy/types": "^1.1.0", "tslib": "^2.5.0" } }, "@aws-sdk/middleware-signing": { - "version": "3.347.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-signing/-/middleware-signing-3.347.0.tgz", - "integrity": "sha512-zVBF/4MGKnvhAE/J+oAL/VAehiyv+trs2dqSQXwHou9j8eA8Vm8HS2NdOwpkZQchIxTuwFlqSusDuPEdYFbvGw==", - "requires": { - "@aws-sdk/property-provider": "3.347.0", - "@aws-sdk/protocol-http": "3.347.0", - "@aws-sdk/signature-v4": "3.347.0", - "@aws-sdk/types": "3.347.0", - "@aws-sdk/util-middleware": "3.347.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/middleware-stack": { - "version": "3.347.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-stack/-/middleware-stack-3.347.0.tgz", - "integrity": "sha512-Izidg4rqtYMcKuvn2UzgEpPLSmyd8ub9+LQ2oIzG3mpIzCBITq7wp40jN1iNkMg+X6KEnX9vdMJIYZsPYMCYuQ==", + "version": "3.370.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-signing/-/middleware-signing-3.370.0.tgz", + "integrity": "sha512-Dwr/RTCWOXdm394wCwICGT2VNOTMRe4IGPsBRJAsM24pm+EEqQzSS3Xu/U/zF4exuxqpMta4wec4QpSarPNTxA==", "requires": { + "@aws-sdk/types": "3.370.0", + "@smithy/property-provider": "^1.0.1", + "@smithy/protocol-http": "^1.1.0", + "@smithy/signature-v4": "^1.0.1", + "@smithy/types": "^1.1.0", + "@smithy/util-middleware": "^1.0.1", "tslib": "^2.5.0" } }, "@aws-sdk/middleware-user-agent": { - "version": "3.347.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.347.0.tgz", - "integrity": "sha512-wJbGN3OE1/daVCrwk49whhIr9E0j1N4gWwN/wi4WuyYIA+5lMUfVp0aGIOvZR+878DxuFz2hQ4XcZVT4K2WvQw==", + "version": "3.370.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.370.0.tgz", + "integrity": "sha512-2+3SB6MtMAq1+gVXhw0Y3ONXuljorh6ijnxgTpv+uQnBW5jHCUiAS8WDYiDEm7i9euJPbvJfM8WUrSMDMU6Cog==", "requires": { - "@aws-sdk/protocol-http": "3.347.0", - "@aws-sdk/types": "3.347.0", - "@aws-sdk/util-endpoints": "3.347.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/node-config-provider": { - "version": "3.347.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/node-config-provider/-/node-config-provider-3.347.0.tgz", - "integrity": "sha512-faU93d3+5uTTUcotGgMXF+sJVFjrKh+ufW+CzYKT4yUHammyaIab/IbTPWy2hIolcEGtuPeVoxXw8TXbkh/tuw==", - "requires": { - "@aws-sdk/property-provider": "3.347.0", - "@aws-sdk/shared-ini-file-loader": "3.347.0", - "@aws-sdk/types": "3.347.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/node-http-handler": { - "version": "3.347.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/node-http-handler/-/node-http-handler-3.347.0.tgz", - "integrity": "sha512-eluPf3CeeEaPbETsPw7ee0Rb0FP79amu8vdLMrQmkrD+KP4owupUXOEI4drxWJgBSd+3PRowPWCDA8wUtraHKg==", - "requires": { - "@aws-sdk/abort-controller": "3.347.0", - "@aws-sdk/protocol-http": "3.347.0", - "@aws-sdk/querystring-builder": "3.347.0", - "@aws-sdk/types": "3.347.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/property-provider": { - "version": "3.347.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/property-provider/-/property-provider-3.347.0.tgz", - "integrity": "sha512-t3nJ8CYPLKAF2v9nIHOHOlF0CviQbTvbFc2L4a+A+EVd/rM4PzL3+3n8ZJsr0h7f6uD04+b5YRFgKgnaqLXlEg==", - "requires": { - "@aws-sdk/types": "3.347.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/protocol-http": { - "version": "3.347.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/protocol-http/-/protocol-http-3.347.0.tgz", - "integrity": "sha512-2YdBhc02Wvy03YjhGwUxF0UQgrPWEy8Iq75pfS42N+/0B/+eWX1aQgfjFxIpLg7YSjT5eKtYOQGlYd4MFTgj9g==", - "requires": { - "@aws-sdk/types": "3.347.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/querystring-builder": { - "version": "3.347.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/querystring-builder/-/querystring-builder-3.347.0.tgz", - "integrity": "sha512-phtKTe6FXoV02MoPkIVV6owXI8Mwr5IBN3bPoxhcPvJG2AjEmnetSIrhb8kwc4oNhlwfZwH6Jo5ARW/VEWbZtg==", - "requires": { - "@aws-sdk/types": "3.347.0", - "@aws-sdk/util-uri-escape": "3.310.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/querystring-parser": { - "version": "3.347.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/querystring-parser/-/querystring-parser-3.347.0.tgz", - "integrity": "sha512-5VXOhfZz78T2W7SuXf2avfjKglx1VZgZgp9Zfhrt/Rq+MTu2D+PZc5zmJHhYigD7x83jLSLogpuInQpFMA9LgA==", - "requires": { - "@aws-sdk/types": "3.347.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/service-error-classification": { - "version": "3.347.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/service-error-classification/-/service-error-classification-3.347.0.tgz", - "integrity": "sha512-xZ3MqSY81Oy2gh5g0fCtooAbahqh9VhsF8vcKjVX8+XPbGC8y+kej82+MsMg4gYL8gRFB9u4hgYbNgIS6JTAvg==" - }, - "@aws-sdk/shared-ini-file-loader": { - "version": "3.347.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/shared-ini-file-loader/-/shared-ini-file-loader-3.347.0.tgz", - "integrity": "sha512-Xw+zAZQVLb+xMNHChXQ29tzzLqm3AEHsD8JJnlkeFjeMnWQtXdUfOARl5s8NzAppcKQNlVe2gPzjaKjoy2jz1Q==", - "requires": { - "@aws-sdk/types": "3.347.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/signature-v4": { - "version": "3.347.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4/-/signature-v4-3.347.0.tgz", - "integrity": "sha512-58Uq1do+VsTHYkP11dTK+DF53fguoNNJL9rHRWhzP+OcYv3/mBMLoS2WPz/x9FO5mBg4ESFsug0I6mXbd36tjw==", - "requires": { - "@aws-sdk/eventstream-codec": "3.347.0", - "@aws-sdk/is-array-buffer": "3.310.0", - "@aws-sdk/types": "3.347.0", - "@aws-sdk/util-hex-encoding": "3.310.0", - "@aws-sdk/util-middleware": "3.347.0", - "@aws-sdk/util-uri-escape": "3.310.0", - "@aws-sdk/util-utf8": "3.310.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/smithy-client": { - "version": "3.347.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/smithy-client/-/smithy-client-3.347.0.tgz", - "integrity": "sha512-PaGTDsJLGK0sTjA6YdYQzILRlPRN3uVFyqeBUkfltXssvUzkm8z2t1lz2H4VyJLAhwnG5ZuZTNEV/2mcWrU7JQ==", - "requires": { - "@aws-sdk/middleware-stack": "3.347.0", - "@aws-sdk/types": "3.347.0", + "@aws-sdk/types": "3.370.0", + "@aws-sdk/util-endpoints": "3.370.0", + "@smithy/protocol-http": "^1.1.0", + "@smithy/types": "^1.1.0", "tslib": "^2.5.0" } }, "@aws-sdk/token-providers": { - "version": "3.347.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.347.0.tgz", - "integrity": "sha512-DZS9UWEy105zsaBJTgcvv1U+0jl7j1OzfMpnLf/lEYjEvx/4FqY2Ue/OZUACJorZgm/dWNqrhY17tZXtS/S3ew==", + "version": "3.370.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.370.0.tgz", + "integrity": "sha512-EyR2ZYr+lJeRiZU2/eLR+mlYU9RXLQvNyGFSAekJKgN13Rpq/h0syzXVFLP/RSod/oZenh/fhVZ2HwlZxuGBtQ==", "requires": { - "@aws-sdk/client-sso-oidc": "3.347.0", - "@aws-sdk/property-provider": "3.347.0", - "@aws-sdk/shared-ini-file-loader": "3.347.0", - "@aws-sdk/types": "3.347.0", + "@aws-sdk/client-sso-oidc": "3.370.0", + "@aws-sdk/types": "3.370.0", + "@smithy/property-provider": "^1.0.1", + "@smithy/shared-ini-file-loader": "^1.0.1", + "@smithy/types": "^1.1.0", "tslib": "^2.5.0" } }, "@aws-sdk/types": { - "version": "3.347.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.347.0.tgz", - "integrity": "sha512-GkCMy79mdjU9OTIe5KT58fI/6uqdf8UmMdWqVHmFJ+UpEzOci7L/uw4sOXWo7xpPzLs6cJ7s5ouGZW4GRPmHFA==", + "version": "3.370.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.370.0.tgz", + "integrity": "sha512-8PGMKklSkRKjunFhzM2y5Jm0H2TBu7YRNISdYzXLUHKSP9zlMEYagseKVdmox0zKHf1LXVNuSlUV2b6SRrieCQ==", "requires": { - "tslib": "^2.5.0" - } - }, - "@aws-sdk/url-parser": { - "version": "3.347.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/url-parser/-/url-parser-3.347.0.tgz", - "integrity": "sha512-lhrnVjxdV7hl+yCnJfDZOaVLSqKjxN20MIOiijRiqaWGLGEAiSqBreMhL89X1WKCifxAs4zZf9YB9SbdziRpAA==", - "requires": { - "@aws-sdk/querystring-parser": "3.347.0", - "@aws-sdk/types": "3.347.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/util-base64": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-base64/-/util-base64-3.310.0.tgz", - "integrity": "sha512-v3+HBKQvqgdzcbL+pFswlx5HQsd9L6ZTlyPVL2LS9nNXnCcR3XgGz9jRskikRUuUvUXtkSG1J88GAOnJ/apTPg==", - "requires": { - "@aws-sdk/util-buffer-from": "3.310.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/util-body-length-browser": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-body-length-browser/-/util-body-length-browser-3.310.0.tgz", - "integrity": "sha512-sxsC3lPBGfpHtNTUoGXMQXLwjmR0zVpx0rSvzTPAuoVILVsp5AU/w5FphNPxD5OVIjNbZv9KsKTuvNTiZjDp9g==", - "requires": { - "tslib": "^2.5.0" - } - }, - "@aws-sdk/util-body-length-node": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-body-length-node/-/util-body-length-node-3.310.0.tgz", - "integrity": "sha512-2tqGXdyKhyA6w4zz7UPoS8Ip+7sayOg9BwHNidiGm2ikbDxm1YrCfYXvCBdwaJxa4hJfRVz+aL9e+d3GqPI9pQ==", - "requires": { - "tslib": "^2.5.0" - } - }, - "@aws-sdk/util-buffer-from": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-buffer-from/-/util-buffer-from-3.310.0.tgz", - "integrity": "sha512-i6LVeXFtGih5Zs8enLrt+ExXY92QV25jtEnTKHsmlFqFAuL3VBeod6boeMXkN2p9lbSVVQ1sAOOYZOHYbYkntw==", - "requires": { - "@aws-sdk/is-array-buffer": "3.310.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/util-config-provider": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-config-provider/-/util-config-provider-3.310.0.tgz", - "integrity": "sha512-xIBaYo8dwiojCw8vnUcIL4Z5tyfb1v3yjqyJKJWV/dqKUFOOS0U591plmXbM+M/QkXyML3ypon1f8+BoaDExrg==", - "requires": { - "tslib": "^2.5.0" - } - }, - "@aws-sdk/util-defaults-mode-browser": { - "version": "3.347.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-defaults-mode-browser/-/util-defaults-mode-browser-3.347.0.tgz", - "integrity": "sha512-+JHFA4reWnW/nMWwrLKqL2Lm/biw/Dzi/Ix54DAkRZ08C462jMKVnUlzAI+TfxQE3YLm99EIa0G7jiEA+p81Qw==", - "requires": { - "@aws-sdk/property-provider": "3.347.0", - "@aws-sdk/types": "3.347.0", - "bowser": "^2.11.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/util-defaults-mode-node": { - "version": "3.347.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-defaults-mode-node/-/util-defaults-mode-node-3.347.0.tgz", - "integrity": "sha512-A8BzIVhAAZE5WEukoAN2kYebzTc99ZgncbwOmgCCbvdaYlk5tzguR/s+uoT4G0JgQGol/4hAMuJEl7elNgU6RQ==", - "requires": { - "@aws-sdk/config-resolver": "3.347.0", - "@aws-sdk/credential-provider-imds": "3.347.0", - "@aws-sdk/node-config-provider": "3.347.0", - "@aws-sdk/property-provider": "3.347.0", - "@aws-sdk/types": "3.347.0", + "@smithy/types": "^1.1.0", "tslib": "^2.5.0" } }, "@aws-sdk/util-endpoints": { - "version": "3.347.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.347.0.tgz", - "integrity": "sha512-/WUkirizeNAqwVj0zkcrqdQ9pUm1HY5kU+qy7xTR0OebkuJauglkmSTMD+56L1JPunWqHhlwCMVRaz5eaJdSEQ==", - "requires": { - "@aws-sdk/types": "3.347.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/util-hex-encoding": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-hex-encoding/-/util-hex-encoding-3.310.0.tgz", - "integrity": "sha512-sVN7mcCCDSJ67pI1ZMtk84SKGqyix6/0A1Ab163YKn+lFBQRMKexleZzpYzNGxYzmQS6VanP/cfU7NiLQOaSfA==", + "version": "3.370.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.370.0.tgz", + "integrity": "sha512-5ltVAnM79nRlywwzZN5i8Jp4tk245OCGkKwwXbnDU+gq7zT3CIOsct1wNZvmpfZEPGt/bv7/NyRcjP+7XNsX/g==", "requires": { + "@aws-sdk/types": "3.370.0", "tslib": "^2.5.0" } }, @@ -13416,57 +14911,25 @@ "tslib": "^2.5.0" } }, - "@aws-sdk/util-middleware": { - "version": "3.347.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-middleware/-/util-middleware-3.347.0.tgz", - "integrity": "sha512-8owqUA3ePufeYTUvlzdJ7Z0miLorTwx+rNol5lourGQZ9JXsVMo23+yGA7nOlFuXSGkoKpMOtn6S0BT2bcfeiw==", - "requires": { - "tslib": "^2.5.0" - } - }, - "@aws-sdk/util-retry": { - "version": "3.347.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-retry/-/util-retry-3.347.0.tgz", - "integrity": "sha512-NxnQA0/FHFxriQAeEgBonA43Q9/VPFQa8cfJDuT2A1YZruMasgjcltoZszi1dvoIRWSZsFTW42eY2gdOd0nffQ==", - "requires": { - "@aws-sdk/service-error-classification": "3.347.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/util-uri-escape": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-uri-escape/-/util-uri-escape-3.310.0.tgz", - "integrity": "sha512-drzt+aB2qo2LgtDoiy/3sVG8w63cgLkqFIa2NFlGpUgHFWTXkqtbgf4L5QdjRGKWhmZsnqkbtL7vkSWEcYDJ4Q==", - "requires": { - "tslib": "^2.5.0" - } - }, "@aws-sdk/util-user-agent-browser": { - "version": "3.347.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.347.0.tgz", - "integrity": "sha512-ydxtsKVtQefgbk1Dku1q7pMkjDYThauG9/8mQkZUAVik55OUZw71Zzr3XO8J8RKvQG8lmhPXuAQ0FKAyycc0RA==", + "version": "3.370.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.370.0.tgz", + "integrity": "sha512-028LxYZMQ0DANKhW+AKFQslkScZUeYlPmSphrCIXgdIItRZh6ZJHGzE7J/jDsEntZOrZJsjI4z0zZ5W2idj04w==", "requires": { - "@aws-sdk/types": "3.347.0", + "@aws-sdk/types": "3.370.0", + "@smithy/types": "^1.1.0", "bowser": "^2.11.0", "tslib": "^2.5.0" } }, "@aws-sdk/util-user-agent-node": { - "version": "3.347.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.347.0.tgz", - "integrity": "sha512-6X0b9qGsbD1s80PmbaB6v1/ZtLfSx6fjRX8caM7NN0y/ObuLoX8LhYnW6WlB2f1+xb4EjaCNgpP/zCf98MXosw==", + "version": "3.370.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.370.0.tgz", + "integrity": "sha512-33vxZUp8vxTT/DGYIR3PivQm07sSRGWI+4fCv63Rt7Q++fO24E0kQtmVAlikRY810I10poD6rwILVtITtFSzkg==", "requires": { - "@aws-sdk/node-config-provider": "3.347.0", - "@aws-sdk/types": "3.347.0", - "tslib": "^2.5.0" - } - }, - "@aws-sdk/util-utf8": { - "version": "3.310.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8/-/util-utf8-3.310.0.tgz", - "integrity": "sha512-DnLfFT8uCO22uOJc0pt0DsSNau1GTisngBCDw8jQuWT5CqogMJu4b/uXmwEqfj8B3GX6Xsz8zOd6JpRlPftQoA==", - "requires": { - "@aws-sdk/util-buffer-from": "3.310.0", + "@aws-sdk/types": "3.370.0", + "@smithy/node-config-provider": "^1.0.1", + "@smithy/types": "^1.1.0", "tslib": "^2.5.0" } }, @@ -13523,9 +14986,9 @@ "dev": true }, "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true } } @@ -13556,9 +15019,9 @@ }, "dependencies": { "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true } } @@ -14011,6 +15474,11 @@ "stoppable": "^1.1.0" } }, + "@hapi/bourne": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@hapi/bourne/-/bourne-2.1.0.tgz", + "integrity": "sha512-i1BpaNDVLJdRBEKeJWkVO6tYX6DMFBuwMhSuWqLsY4ufeTKGVuV5rBsUhxPayXqnnWHgXUAmWK16H/ykO5Wj4Q==" + }, "@humanwhocodes/config-array": { "version": "0.11.8", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", @@ -14542,6 +16010,67 @@ "fastq": "^1.6.0" } }, + "@octokit/auth-app": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/@octokit/auth-app/-/auth-app-4.0.13.tgz", + "integrity": "sha512-NBQkmR/Zsc+8fWcVIFrwDgNXS7f4XDrkd9LHdi9DPQw1NdGHLviLzRO2ZBwTtepnwHXW5VTrVU9eFGijMUqllg==", + "requires": { + "@octokit/auth-oauth-app": "^5.0.0", + "@octokit/auth-oauth-user": "^2.0.0", + "@octokit/request": "^6.0.0", + "@octokit/request-error": "^3.0.0", + "@octokit/types": "^9.0.0", + "deprecation": "^2.3.1", + "lru-cache": "^9.0.0", + "universal-github-app-jwt": "^1.1.1", + "universal-user-agent": "^6.0.0" + }, + "dependencies": { + "lru-cache": { + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-9.1.2.tgz", + "integrity": "sha512-ERJq3FOzJTxBbFjZ7iDs+NiK4VI9Wz+RdrrAB8dio1oV+YvdPzUEE4QNiT2VD51DkIbCYRUUzCRkssXCHqSnKQ==" + } + } + }, + "@octokit/auth-oauth-app": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/@octokit/auth-oauth-app/-/auth-oauth-app-5.0.6.tgz", + "integrity": "sha512-SxyfIBfeFcWd9Z/m1xa4LENTQ3l1y6Nrg31k2Dcb1jS5ov7pmwMJZ6OGX8q3K9slRgVpeAjNA1ipOAMHkieqyw==", + "requires": { + "@octokit/auth-oauth-device": "^4.0.0", + "@octokit/auth-oauth-user": "^2.0.0", + "@octokit/request": "^6.0.0", + "@octokit/types": "^9.0.0", + "@types/btoa-lite": "^1.0.0", + "btoa-lite": "^1.0.0", + "universal-user-agent": "^6.0.0" + } + }, + "@octokit/auth-oauth-device": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@octokit/auth-oauth-device/-/auth-oauth-device-4.0.5.tgz", + "integrity": "sha512-XyhoWRTzf2ZX0aZ52a6Ew5S5VBAfwwx1QnC2Np6Et3MWQpZjlREIcbcvVZtkNuXp6Z9EeiSLSDUqm3C+aMEHzQ==", + "requires": { + "@octokit/oauth-methods": "^2.0.0", + "@octokit/request": "^6.0.0", + "@octokit/types": "^9.0.0", + "universal-user-agent": "^6.0.0" + } + }, + "@octokit/auth-oauth-user": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@octokit/auth-oauth-user/-/auth-oauth-user-2.1.2.tgz", + "integrity": "sha512-kkRqNmFe7s5GQcojE3nSlF+AzYPpPv7kvP/xYEnE57584pixaFBH8Vovt+w5Y3E4zWUEOxjdLItmBTFAWECPAg==", + "requires": { + "@octokit/auth-oauth-device": "^4.0.0", + "@octokit/oauth-methods": "^2.0.0", + "@octokit/request": "^6.0.0", + "@octokit/types": "^9.0.0", + "btoa-lite": "^1.0.0", + "universal-user-agent": "^6.0.0" + } + }, "@octokit/auth-token": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-3.0.3.tgz", @@ -14550,6 +16079,15 @@ "@octokit/types": "^9.0.0" } }, + "@octokit/auth-unauthenticated": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@octokit/auth-unauthenticated/-/auth-unauthenticated-3.0.5.tgz", + "integrity": "sha512-yH2GPFcjrTvDWPwJWWCh0tPPtTL5SMgivgKPA+6v/XmYN6hGQkAto8JtZibSKOpf8ipmeYhLNWQ2UgW0GYILCw==", + "requires": { + "@octokit/request-error": "^3.0.0", + "@octokit/types": "^9.0.0" + } + }, "@octokit/core": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/@octokit/core/-/core-4.2.1.tgz", @@ -14584,11 +16122,62 @@ "universal-user-agent": "^6.0.0" } }, + "@octokit/oauth-authorization-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@octokit/oauth-authorization-url/-/oauth-authorization-url-5.0.0.tgz", + "integrity": "sha512-y1WhN+ERDZTh0qZ4SR+zotgsQUE1ysKnvBt1hvDRB2WRzYtVKQjn97HEPzoehh66Fj9LwNdlZh+p6TJatT0zzg==" + }, + "@octokit/oauth-methods": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@octokit/oauth-methods/-/oauth-methods-2.0.6.tgz", + "integrity": "sha512-l9Uml2iGN2aTWLZcm8hV+neBiFXAQ9+3sKiQe/sgumHlL6HDg0AQ8/l16xX/5jJvfxueqTW5CWbzd0MjnlfHZw==", + "requires": { + "@octokit/oauth-authorization-url": "^5.0.0", + "@octokit/request": "^6.2.3", + "@octokit/request-error": "^3.0.3", + "@octokit/types": "^9.0.0", + "btoa-lite": "^1.0.0" + } + }, "@octokit/openapi-types": { "version": "17.2.0", "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-17.2.0.tgz", "integrity": "sha512-MazrFNx4plbLsGl+LFesMo96eIXkFgEtaKbnNpdh4aQ0VM10aoylFsTYP1AEjkeoRNZiiPe3T6Gl2Hr8dJWdlQ==" }, + "@octokit/plugin-enterprise-compatibility": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-enterprise-compatibility/-/plugin-enterprise-compatibility-1.3.0.tgz", + "integrity": "sha512-h34sMGdEOER/OKrZJ55v26ntdHb9OPfR1fwOx6Q4qYyyhWA104o11h9tFxnS/l41gED6WEI41Vu2G2zHDVC5lQ==", + "requires": { + "@octokit/request-error": "^2.1.0", + "@octokit/types": "^6.0.3" + }, + "dependencies": { + "@octokit/openapi-types": { + "version": "12.11.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.11.0.tgz", + "integrity": "sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==" + }, + "@octokit/request-error": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.1.0.tgz", + "integrity": "sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==", + "requires": { + "@octokit/types": "^6.0.3", + "deprecation": "^2.0.0", + "once": "^1.4.0" + } + }, + "@octokit/types": { + "version": "6.41.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", + "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", + "requires": { + "@octokit/openapi-types": "^12.11.0" + } + } + } + }, "@octokit/plugin-paginate-rest": { "version": "6.1.2", "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-6.1.2.tgz", @@ -14613,6 +16202,30 @@ "deprecation": "^2.3.1" } }, + "@octokit/plugin-retry": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/@octokit/plugin-retry/-/plugin-retry-3.0.9.tgz", + "integrity": "sha512-r+fArdP5+TG6l1Rv/C9hVoty6tldw6cE2pRHNGmFPdyfrc696R6JjrQ3d7HdVqGwuzfyrcaLAKD7K8TX8aehUQ==", + "requires": { + "@octokit/types": "^6.0.3", + "bottleneck": "^2.15.3" + }, + "dependencies": { + "@octokit/openapi-types": { + "version": "12.11.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.11.0.tgz", + "integrity": "sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==" + }, + "@octokit/types": { + "version": "6.41.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", + "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", + "requires": { + "@octokit/openapi-types": "^12.11.0" + } + } + } + }, "@octokit/request": { "version": "6.2.5", "resolved": "https://registry.npmjs.org/@octokit/request/-/request-6.2.5.tgz", @@ -14660,6 +16273,52 @@ "@octokit/openapi-types": "^17.2.0" } }, + "@octokit/webhooks": { + "version": "9.26.0", + "resolved": "https://registry.npmjs.org/@octokit/webhooks/-/webhooks-9.26.0.tgz", + "integrity": "sha512-foZlsgrTDwAmD5j2Czn6ji10lbWjGDVsUxTIydjG9KTkAWKJrFapXJgO5SbGxRwfPd3OJdhK3nA2YPqVhxLXqA==", + "requires": { + "@octokit/request-error": "^2.0.2", + "@octokit/webhooks-methods": "^2.0.0", + "@octokit/webhooks-types": "5.8.0", + "aggregate-error": "^3.1.0" + }, + "dependencies": { + "@octokit/openapi-types": { + "version": "12.11.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.11.0.tgz", + "integrity": "sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==" + }, + "@octokit/request-error": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.1.0.tgz", + "integrity": "sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==", + "requires": { + "@octokit/types": "^6.0.3", + "deprecation": "^2.0.0", + "once": "^1.4.0" + } + }, + "@octokit/types": { + "version": "6.41.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", + "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", + "requires": { + "@octokit/openapi-types": "^12.11.0" + } + } + } + }, + "@octokit/webhooks-methods": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@octokit/webhooks-methods/-/webhooks-methods-2.0.0.tgz", + "integrity": "sha512-35cfQ4YWlnZnmZKmIxlGPUPLtbkF8lr/A/1Sk1eC0ddLMwQN06dOuLc+dI3YLQS+T+MoNt3DIQ0NynwgKPilig==" + }, + "@octokit/webhooks-types": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@octokit/webhooks-types/-/webhooks-types-5.8.0.tgz", + "integrity": "sha512-8adktjIb76A7viIdayQSFuBEwOzwhDC+9yxZpKNHjfzrlostHCw0/N7JWpWMObfElwvJMk2fY2l1noENCk9wmw==" + }, "@phc/format": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/@phc/format/-/format-1.0.0.tgz", @@ -14674,6 +16333,123 @@ "@maxmind/geoip2-node": "^3.4.0" } }, + "@probot/get-private-key": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@probot/get-private-key/-/get-private-key-1.1.1.tgz", + "integrity": "sha512-hOmBNSAhSZc6PaNkTvj6CO9R5J67ODJ+w5XQlDW9w/6mtcpHWK4L+PZcW0YwVM7PpetLZjN6rsKQIR9yqIaWlA==", + "requires": { + "@types/is-base64": "^1.1.0", + "is-base64": "^1.1.0" + } + }, + "@probot/octokit-plugin-config": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/@probot/octokit-plugin-config/-/octokit-plugin-config-1.1.6.tgz", + "integrity": "sha512-L29wmnFvilzSfWn9tUgItxdLv0LJh2ICjma3FmLr80Spu3wZ9nHyRrKMo9R5/K2m7VuWmgoKnkgRt2zPzAQBEQ==", + "requires": { + "@types/js-yaml": "^4.0.5", + "js-yaml": "^4.1.0" + } + }, + "@probot/pino": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@probot/pino/-/pino-2.3.5.tgz", + "integrity": "sha512-IiyiNZonMw1dHC4EAdD55y5owV733d9Gll/IKsrLikB7EJ54+eMCOtL/qo+OmgWN9XV3NTDfziEQF2og/OBKog==", + "requires": { + "@sentry/node": "^6.0.0", + "pino-pretty": "^6.0.0", + "pump": "^3.0.0", + "readable-stream": "^3.6.0", + "split2": "^4.0.0" + }, + "dependencies": { + "@sentry/core": { + "version": "6.19.7", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-6.19.7.tgz", + "integrity": "sha512-tOfZ/umqB2AcHPGbIrsFLcvApdTm9ggpi/kQZFkej7kMphjT+SGBiQfYtjyg9jcRW+ilAR4JXC9BGKsdEQ+8Vw==", + "requires": { + "@sentry/hub": "6.19.7", + "@sentry/minimal": "6.19.7", + "@sentry/types": "6.19.7", + "@sentry/utils": "6.19.7", + "tslib": "^1.9.3" + } + }, + "@sentry/node": { + "version": "6.19.7", + "resolved": "https://registry.npmjs.org/@sentry/node/-/node-6.19.7.tgz", + "integrity": "sha512-gtmRC4dAXKODMpHXKfrkfvyBL3cI8y64vEi3fDD046uqYcrWdgoQsffuBbxMAizc6Ez1ia+f0Flue6p15Qaltg==", + "requires": { + "@sentry/core": "6.19.7", + "@sentry/hub": "6.19.7", + "@sentry/types": "6.19.7", + "@sentry/utils": "6.19.7", + "cookie": "^0.4.1", + "https-proxy-agent": "^5.0.0", + "lru_map": "^0.3.3", + "tslib": "^1.9.3" + } + }, + "@sentry/types": { + "version": "6.19.7", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-6.19.7.tgz", + "integrity": "sha512-jH84pDYE+hHIbVnab3Hr+ZXr1v8QABfhx39KknxqKWr2l0oEItzepV0URvbEhB446lk/S/59230dlUUIBGsXbg==" + }, + "@sentry/utils": { + "version": "6.19.7", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-6.19.7.tgz", + "integrity": "sha512-z95ECmE3i9pbWoXQrD/7PgkBAzJYR+iXtPuTkpBjDKs86O3mT+PXOT3BAn79w2wkn7/i3vOGD2xVr1uiMl26dA==", + "requires": { + "@sentry/types": "6.19.7", + "tslib": "^1.9.3" + } + }, + "colorette": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz", + "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==" + }, + "jmespath": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/jmespath/-/jmespath-0.15.0.tgz", + "integrity": "sha512-+kHj8HXArPfpPEKGLZ+kB5ONRTCiGQXo8RQYL0hH8t6pWXUBBK5KkkQmTNOwKK4LEsd0yTsgtjJVm4UBSZea4w==" + }, + "pino-pretty": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/pino-pretty/-/pino-pretty-6.0.0.tgz", + "integrity": "sha512-jyeR2fXXWc68st1DTTM5NhkHlx8p+1fKZMfm84Jwq+jSw08IwAjNaZBZR6ts69hhPOfOjg/NiE1HYW7vBRPL3A==", + "requires": { + "@hapi/bourne": "^2.0.0", + "args": "^5.0.1", + "colorette": "^1.3.0", + "dateformat": "^4.5.1", + "fast-safe-stringify": "^2.0.7", + "jmespath": "^0.15.0", + "joycon": "^3.0.0", + "pump": "^3.0.0", + "readable-stream": "^3.6.0", + "rfdc": "^1.3.0", + "split2": "^3.1.1", + "strip-json-comments": "^3.1.1" + }, + "dependencies": { + "split2": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz", + "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==", + "requires": { + "readable-stream": "^3.0.0" + } + } + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, "@protobufjs/aspromise": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", @@ -14763,6 +16539,59 @@ } } }, + "@sentry/hub": { + "version": "6.19.7", + "resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-6.19.7.tgz", + "integrity": "sha512-y3OtbYFAqKHCWezF0EGGr5lcyI2KbaXW2Ik7Xp8Mu9TxbSTuwTe4rTntwg8ngPjUQU3SUHzgjqVB8qjiGqFXCA==", + "requires": { + "@sentry/types": "6.19.7", + "@sentry/utils": "6.19.7", + "tslib": "^1.9.3" + }, + "dependencies": { + "@sentry/types": { + "version": "6.19.7", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-6.19.7.tgz", + "integrity": "sha512-jH84pDYE+hHIbVnab3Hr+ZXr1v8QABfhx39KknxqKWr2l0oEItzepV0URvbEhB446lk/S/59230dlUUIBGsXbg==" + }, + "@sentry/utils": { + "version": "6.19.7", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-6.19.7.tgz", + "integrity": "sha512-z95ECmE3i9pbWoXQrD/7PgkBAzJYR+iXtPuTkpBjDKs86O3mT+PXOT3BAn79w2wkn7/i3vOGD2xVr1uiMl26dA==", + "requires": { + "@sentry/types": "6.19.7", + "tslib": "^1.9.3" + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, + "@sentry/minimal": { + "version": "6.19.7", + "resolved": "https://registry.npmjs.org/@sentry/minimal/-/minimal-6.19.7.tgz", + "integrity": "sha512-wcYmSJOdvk6VAPx8IcmZgN08XTXRwRtB1aOLZm+MVHjIZIhHoBGZJYTVQS/BWjldsamj2cX3YGbGXNunaCfYJQ==", + "requires": { + "@sentry/hub": "6.19.7", + "@sentry/types": "6.19.7", + "tslib": "^1.9.3" + }, + "dependencies": { + "@sentry/types": { + "version": "6.19.7", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-6.19.7.tgz", + "integrity": "sha512-jH84pDYE+hHIbVnab3Hr+ZXr1v8QABfhx39KknxqKWr2l0oEItzepV0URvbEhB446lk/S/59230dlUUIBGsXbg==" + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, "@sentry/node": { "version": "7.53.1", "resolved": "https://registry.npmjs.org/@sentry/node/-/node-7.53.1.tgz", @@ -14838,23 +16667,383 @@ "@sinonjs/commons": "^3.0.0" } }, - "@smithy/protocol-http": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-1.0.1.tgz", - "integrity": "sha512-9OrEn0WfOVtBNYJUjUAn9AOiJ4lzERCJJ/JeZs8E6yajTGxBaFRxUnNBHiNqoDJVg076hY36UmEnPx7xXrvUSg==", + "@smithy/abort-controller": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-1.0.2.tgz", + "integrity": "sha512-tb2h0b+JvMee+eAxTmhnyqyNk51UXIK949HnE14lFeezKsVJTB30maan+CO2IMwnig2wVYQH84B5qk6ylmKCuA==", "requires": { - "@smithy/types": "^1.0.0", + "@smithy/types": "^1.1.1", + "tslib": "^2.5.0" + } + }, + "@smithy/config-resolver": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-1.0.2.tgz", + "integrity": "sha512-8Bk7CgnVKg1dn5TgnjwPz2ebhxeR7CjGs5yhVYH3S8x0q8yPZZVWwpRIglwXaf5AZBzJlNO1lh+lUhMf2e73zQ==", + "requires": { + "@smithy/types": "^1.1.1", + "@smithy/util-config-provider": "^1.0.2", + "@smithy/util-middleware": "^1.0.2", + "tslib": "^2.5.0" + } + }, + "@smithy/credential-provider-imds": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-1.0.2.tgz", + "integrity": "sha512-fLjCya+JOu2gPJpCiwSUyoLvT8JdNJmOaTOkKYBZoGf7CzqR6lluSyI+eboZnl/V0xqcfcqBG4tgqCISmWS3/w==", + "requires": { + "@smithy/node-config-provider": "^1.0.2", + "@smithy/property-provider": "^1.0.2", + "@smithy/types": "^1.1.1", + "@smithy/url-parser": "^1.0.2", + "tslib": "^2.5.0" + } + }, + "@smithy/eventstream-codec": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-1.0.2.tgz", + "integrity": "sha512-eW/XPiLauR1VAgHKxhVvgvHzLROUgTtqat2lgljztbH8uIYWugv7Nz+SgCavB+hWRazv2iYgqrSy74GvxXq/rg==", + "requires": { + "@aws-crypto/crc32": "3.0.0", + "@smithy/types": "^1.1.1", + "@smithy/util-hex-encoding": "^1.0.2", + "tslib": "^2.5.0" + } + }, + "@smithy/fetch-http-handler": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-1.0.2.tgz", + "integrity": "sha512-kynyofLf62LvR8yYphPPdyHb8fWG3LepFinM/vWUTG2Q1pVpmPCM530ppagp3+q2p+7Ox0UvSqldbKqV/d1BpA==", + "requires": { + "@smithy/protocol-http": "^1.1.1", + "@smithy/querystring-builder": "^1.0.2", + "@smithy/types": "^1.1.1", + "@smithy/util-base64": "^1.0.2", + "tslib": "^2.5.0" + } + }, + "@smithy/hash-node": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-1.0.2.tgz", + "integrity": "sha512-K6PKhcUNrJXtcesyzhIvNlU7drfIU7u+EMQuGmPw6RQDAg/ufUcfKHz4EcUhFAodUmN+rrejhRG9U6wxjeBOQA==", + "requires": { + "@smithy/types": "^1.1.1", + "@smithy/util-buffer-from": "^1.0.2", + "@smithy/util-utf8": "^1.0.2", + "tslib": "^2.5.0" + } + }, + "@smithy/invalid-dependency": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-1.0.2.tgz", + "integrity": "sha512-B1Y3Tsa6dfC+Vvb+BJMhTHOfFieeYzY9jWQSTR1vMwKkxsymD0OIAnEw8rD/RiDj/4E4RPGFdx9Mdgnyd6Bv5Q==", + "requires": { + "@smithy/types": "^1.1.1", + "tslib": "^2.5.0" + } + }, + "@smithy/is-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-1.0.2.tgz", + "integrity": "sha512-pkyBnsBRpe+c/6ASavqIMRBdRtZNJEVJOEzhpxZ9JoAXiZYbkfaSMRA/O1dUxGdJ653GHONunnZ4xMo/LJ7utQ==", + "requires": { + "tslib": "^2.5.0" + } + }, + "@smithy/middleware-content-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-1.0.2.tgz", + "integrity": "sha512-pa1/SgGIrSmnEr2c9Apw7CdU4l/HW0fK3+LKFCPDYJrzM0JdYpqjQzgxi31P00eAkL0EFBccpus/p1n2GF9urw==", + "requires": { + "@smithy/protocol-http": "^1.1.1", + "@smithy/types": "^1.1.1", + "tslib": "^2.5.0" + } + }, + "@smithy/middleware-endpoint": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-1.0.3.tgz", + "integrity": "sha512-GsWvTXMFjSgl617PCE2km//kIjjtvMRrR2GAuRDIS9sHiLwmkS46VWaVYy+XE7ubEsEtzZ5yK2e8TKDR6Qr5Lw==", + "requires": { + "@smithy/middleware-serde": "^1.0.2", + "@smithy/types": "^1.1.1", + "@smithy/url-parser": "^1.0.2", + "@smithy/util-middleware": "^1.0.2", + "tslib": "^2.5.0" + } + }, + "@smithy/middleware-retry": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-1.0.4.tgz", + "integrity": "sha512-G7uRXGFL8c3F7APnoIMTtNAHH8vT4F2qVnAWGAZaervjupaUQuRRHYBLYubK0dWzOZz86BtAXKieJ5p+Ni2Xpg==", + "requires": { + "@smithy/protocol-http": "^1.1.1", + "@smithy/service-error-classification": "^1.0.3", + "@smithy/types": "^1.1.1", + "@smithy/util-middleware": "^1.0.2", + "@smithy/util-retry": "^1.0.4", + "tslib": "^2.5.0", + "uuid": "^8.3.2" + } + }, + "@smithy/middleware-serde": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-1.0.2.tgz", + "integrity": "sha512-T4PcdMZF4xme6koUNfjmSZ1MLi7eoFeYCtodQNQpBNsS77TuJt1A6kt5kP/qxrTvfZHyFlj0AubACoaUqgzPeg==", + "requires": { + "@smithy/types": "^1.1.1", + "tslib": "^2.5.0" + } + }, + "@smithy/middleware-stack": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-1.0.2.tgz", + "integrity": "sha512-H7/uAQEcmO+eDqweEFMJ5YrIpsBwmrXSP6HIIbtxKJSQpAcMGY7KrR2FZgZBi1FMnSUOh+rQrbOyj5HQmSeUBA==", + "requires": { + "tslib": "^2.5.0" + } + }, + "@smithy/node-config-provider": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-1.0.2.tgz", + "integrity": "sha512-HU7afWpTToU0wL6KseGDR2zojeyjECQfr8LpjAIeHCYIW7r360ABFf4EaplaJRMVoC3hD9FeltgI3/NtShOqCg==", + "requires": { + "@smithy/property-provider": "^1.0.2", + "@smithy/shared-ini-file-loader": "^1.0.2", + "@smithy/types": "^1.1.1", + "tslib": "^2.5.0" + } + }, + "@smithy/node-http-handler": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-1.0.3.tgz", + "integrity": "sha512-PcPUSzTbIb60VCJCiH0PU0E6bwIekttsIEf5Aoo/M0oTfiqsxHTn0Rcij6QoH6qJy6piGKXzLSegspXg5+Kq6g==", + "requires": { + "@smithy/abort-controller": "^1.0.2", + "@smithy/protocol-http": "^1.1.1", + "@smithy/querystring-builder": "^1.0.2", + "@smithy/types": "^1.1.1", + "tslib": "^2.5.0" + } + }, + "@smithy/property-provider": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-1.0.2.tgz", + "integrity": "sha512-pXDPyzKX8opzt38B205kDgaxda6LHcTfPvTYQZnwP6BAPp1o9puiCPjeUtkKck7Z6IbpXCPUmUQnzkUzWTA42Q==", + "requires": { + "@smithy/types": "^1.1.1", + "tslib": "^2.5.0" + } + }, + "@smithy/protocol-http": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-1.1.1.tgz", + "integrity": "sha512-mFLFa2sSvlUxm55U7B4YCIsJJIMkA6lHxwwqOaBkral1qxFz97rGffP/mmd4JDuin1EnygiO5eNJGgudiUgmDQ==", + "requires": { + "@smithy/types": "^1.1.1", + "tslib": "^2.5.0" + } + }, + "@smithy/querystring-builder": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-1.0.2.tgz", + "integrity": "sha512-6P/xANWrtJhMzTPUR87AbXwSBuz1SDHIfL44TFd/GT3hj6rA+IEv7rftEpPjayUiWRocaNnrCPLvmP31mobOyA==", + "requires": { + "@smithy/types": "^1.1.1", + "@smithy/util-uri-escape": "^1.0.2", + "tslib": "^2.5.0" + } + }, + "@smithy/querystring-parser": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-1.0.2.tgz", + "integrity": "sha512-IWxwxjn+KHWRRRB+K2Ngl+plTwo2WSgc2w+DvLy0DQZJh9UGOpw40d6q97/63GBlXIt4TEt5NbcFrO30CKlrsA==", + "requires": { + "@smithy/types": "^1.1.1", + "tslib": "^2.5.0" + } + }, + "@smithy/service-error-classification": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-1.0.3.tgz", + "integrity": "sha512-2eglIYqrtcUnuI71yweu7rSfCgt6kVvRVf0C72VUqrd0LrV1M0BM0eYN+nitp2CHPSdmMI96pi+dU9U/UqAMSA==" + }, + "@smithy/shared-ini-file-loader": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-1.0.2.tgz", + "integrity": "sha512-bdQj95VN+lCXki+P3EsDyrkpeLn8xDYiOISBGnUG/AGPYJXN8dmp4EhRRR7XOoLoSs8anZHR4UcGEOzFv2jwGw==", + "requires": { + "@smithy/types": "^1.1.1", + "tslib": "^2.5.0" + } + }, + "@smithy/signature-v4": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-1.0.2.tgz", + "integrity": "sha512-rpKUhmCuPmpV5dloUkOb9w1oBnJatvKQEjIHGmkjRGZnC3437MTdzWej9TxkagcZ8NRRJavYnEUixzxM1amFig==", + "requires": { + "@smithy/eventstream-codec": "^1.0.2", + "@smithy/is-array-buffer": "^1.0.2", + "@smithy/types": "^1.1.1", + "@smithy/util-hex-encoding": "^1.0.2", + "@smithy/util-middleware": "^1.0.2", + "@smithy/util-uri-escape": "^1.0.2", + "@smithy/util-utf8": "^1.0.2", + "tslib": "^2.5.0" + } + }, + "@smithy/smithy-client": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-1.0.4.tgz", + "integrity": "sha512-gpo0Xl5Nyp9sgymEfpt7oa9P2q/GlM3VmQIdm+FeH0QEdYOQx3OtvwVmBYAMv2FIPWxkMZlsPYRTnEiBTK5TYg==", + "requires": { + "@smithy/middleware-stack": "^1.0.2", + "@smithy/types": "^1.1.1", + "@smithy/util-stream": "^1.0.2", "tslib": "^2.5.0" } }, "@smithy/types": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-1.0.0.tgz", - "integrity": "sha512-kc1m5wPBHQCTixwuaOh9vnak/iJm21DrSf9UK6yDE5S3mQQ4u11pqAUiKWnlrZnYkeLfAI9UEHj9OaMT1v5Umg==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-1.1.1.tgz", + "integrity": "sha512-tMpkreknl2gRrniHeBtdgQwaOlo39df8RxSrwsHVNIGXULy5XP6KqgScUw2m12D15wnJCKWxVhCX+wbrBW/y7g==", "requires": { "tslib": "^2.5.0" } }, + "@smithy/url-parser": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-1.0.2.tgz", + "integrity": "sha512-0JRsDMQe53F6EHRWksdcavKDRjyqp8vrjakg8EcCUOa7PaFRRB1SO/xGZdzSlW1RSTWQDEksFMTCEcVEKmAoqA==", + "requires": { + "@smithy/querystring-parser": "^1.0.2", + "@smithy/types": "^1.1.1", + "tslib": "^2.5.0" + } + }, + "@smithy/util-base64": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-1.0.2.tgz", + "integrity": "sha512-BCm15WILJ3SL93nusoxvJGMVfAMWHZhdeDZPtpAaskozuexd0eF6szdz4kbXaKp38bFCSenA6bkUHqaE3KK0dA==", + "requires": { + "@smithy/util-buffer-from": "^1.0.2", + "tslib": "^2.5.0" + } + }, + "@smithy/util-body-length-browser": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-1.0.2.tgz", + "integrity": "sha512-Xh8L06H2anF5BHjSYTg8hx+Itcbf4SQZnVMl4PIkCOsKtneMJoGjPRLy17lEzfoh/GOaa0QxgCP6lRMQWzNl4w==", + "requires": { + "tslib": "^2.5.0" + } + }, + "@smithy/util-body-length-node": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-1.0.2.tgz", + "integrity": "sha512-nXHbZsUtvZeyfL4Ceds9nmy2Uh2AhWXohG4vWHyjSdmT8cXZlJdmJgnH6SJKDjyUecbu+BpKeVvSrA4cWPSOPA==", + "requires": { + "tslib": "^2.5.0" + } + }, + "@smithy/util-buffer-from": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-1.0.2.tgz", + "integrity": "sha512-lHAYIyrBO9RANrPvccnPjU03MJnWZ66wWuC5GjWWQVfsmPwU6m00aakZkzHdUT6tGCkGacXSgArP5wgTgA+oCw==", + "requires": { + "@smithy/is-array-buffer": "^1.0.2", + "tslib": "^2.5.0" + } + }, + "@smithy/util-config-provider": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-1.0.2.tgz", + "integrity": "sha512-HOdmDm+3HUbuYPBABLLHtn8ittuRyy+BSjKOA169H+EMc+IozipvXDydf+gKBRAxUa4dtKQkLraypwppzi+PRw==", + "requires": { + "tslib": "^2.5.0" + } + }, + "@smithy/util-defaults-mode-browser": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-1.0.2.tgz", + "integrity": "sha512-J1u2PO235zxY7dg0+ZqaG96tFg4ehJZ7isGK1pCBEA072qxNPwIpDzUVGnLJkHZvjWEGA8rxIauDtXfB0qxeAg==", + "requires": { + "@smithy/property-provider": "^1.0.2", + "@smithy/types": "^1.1.1", + "bowser": "^2.11.0", + "tslib": "^2.5.0" + } + }, + "@smithy/util-defaults-mode-node": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-1.0.2.tgz", + "integrity": "sha512-9/BN63rlIsFStvI+AvljMh873Xw6bbI6b19b+PVYXyycQ2DDQImWcjnzRlHW7eP65CCUNGQ6otDLNdBQCgMXqg==", + "requires": { + "@smithy/config-resolver": "^1.0.2", + "@smithy/credential-provider-imds": "^1.0.2", + "@smithy/node-config-provider": "^1.0.2", + "@smithy/property-provider": "^1.0.2", + "@smithy/types": "^1.1.1", + "tslib": "^2.5.0" + } + }, + "@smithy/util-hex-encoding": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-1.0.2.tgz", + "integrity": "sha512-Bxydb5rMJorMV6AuDDMOxro3BMDdIwtbQKHpwvQFASkmr52BnpDsWlxgpJi8Iq7nk1Bt4E40oE1Isy/7ubHGzg==", + "requires": { + "tslib": "^2.5.0" + } + }, + "@smithy/util-middleware": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-1.0.2.tgz", + "integrity": "sha512-vtXK7GOR2BoseCX8NCGe9SaiZrm9M2lm/RVexFGyPuafTtry9Vyv7hq/vw8ifd/G/pSJ+msByfJVb1642oQHKw==", + "requires": { + "tslib": "^2.5.0" + } + }, + "@smithy/util-retry": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-1.0.4.tgz", + "integrity": "sha512-RnZPVFvRoqdj2EbroDo3OsnnQU8eQ4AlnZTOGusbYKybH3269CFdrZfZJloe60AQjX7di3J6t/79PjwCLO5Khw==", + "requires": { + "@smithy/service-error-classification": "^1.0.3", + "tslib": "^2.5.0" + } + }, + "@smithy/util-stream": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-1.0.2.tgz", + "integrity": "sha512-qyN2M9QFMTz4UCHi6GnBfLOGYKxQZD01Ga6nzaXFFC51HP/QmArU72e4kY50Z/EtW8binPxspP2TAsGbwy9l3A==", + "requires": { + "@smithy/fetch-http-handler": "^1.0.2", + "@smithy/node-http-handler": "^1.0.3", + "@smithy/types": "^1.1.1", + "@smithy/util-base64": "^1.0.2", + "@smithy/util-buffer-from": "^1.0.2", + "@smithy/util-hex-encoding": "^1.0.2", + "@smithy/util-utf8": "^1.0.2", + "tslib": "^2.5.0" + } + }, + "@smithy/util-uri-escape": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-1.0.2.tgz", + "integrity": "sha512-k8C0BFNS9HpBMHSgUDnWb1JlCQcFG+PPlVBq9keP4Nfwv6a9Q0yAfASWqUCtzjuMj1hXeLhn/5ADP6JxnID1Pg==", + "requires": { + "tslib": "^2.5.0" + } + }, + "@smithy/util-utf8": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-1.0.2.tgz", + "integrity": "sha512-V4cyjKfJlARui0dMBfWJMQAmJzoW77i4N3EjkH/bwnE2Ngbl4tqD2Y0C/xzpzY/J1BdxeCKxAebVFk8aFCaSCw==", + "requires": { + "@smithy/util-buffer-from": "^1.0.2", + "tslib": "^2.5.0" + } + }, "@tsconfig/node10": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", @@ -14939,17 +17128,20 @@ "version": "1.19.2", "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", - "dev": true, "requires": { "@types/connect": "*", "@types/node": "*" } }, + "@types/btoa-lite": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@types/btoa-lite/-/btoa-lite-1.0.0.tgz", + "integrity": "sha512-wJsiX1tosQ+J5+bY5LrSahHxr2wT+uME5UDwdN1kg4frt40euqA+wzECkmq4t5QbveHiJepfdThgQrPw6KiSlg==" + }, "@types/connect": { "version": "3.4.35", "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", - "dev": true, "requires": { "@types/node": "*" } @@ -14987,7 +17179,6 @@ "version": "4.17.17", "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.17.tgz", "integrity": "sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q==", - "dev": true, "requires": { "@types/body-parser": "*", "@types/express-serve-static-core": "^4.17.33", @@ -14999,7 +17190,6 @@ "version": "4.17.35", "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.35.tgz", "integrity": "sha512-wALWQwrgiB2AWTT91CB62b6Yt0sNHpznUXeZEcnPU3DRdlDIz74x8Qg1UUYKSVFi+va5vKOLYRBI1bRKiLLKIg==", - "dev": true, "requires": { "@types/node": "*", "@types/qs": "*", @@ -15016,6 +17206,19 @@ "@types/node": "*" } }, + "@types/ioredis": { + "version": "4.28.10", + "resolved": "https://registry.npmjs.org/@types/ioredis/-/ioredis-4.28.10.tgz", + "integrity": "sha512-69LyhUgrXdgcNDv7ogs1qXZomnfOEnSmrmMFqKgt1XMJxmoOSG/u3wYy13yACIfKuMJ8IhKgHafDO3sx19zVQQ==", + "requires": { + "@types/node": "*" + } + }, + "@types/is-base64": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@types/is-base64/-/is-base64-1.1.1.tgz", + "integrity": "sha512-JgnGhP+MeSHEQmvxcobcwPEP4Ew56voiq9/0hmP/41lyQ/3gBw/ZCIRy2v+QkEOdeCl58lRcrf6+Y6WMlJGETA==" + }, "@types/istanbul-lib-coverage": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", @@ -15050,6 +17253,11 @@ "pretty-format": "^29.0.0" } }, + "@types/js-yaml": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-4.0.5.tgz", + "integrity": "sha512-FhpRzf927MNQdRZP0J5DLIdTXhjLYzeUTmLAu69mnVksLH9CJY3IuSeEgbKUki7GQZm0WqDkGzyxju2EZGD2wA==" + }, "@types/json-schema": { "version": "7.0.12", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz", @@ -15084,8 +17292,7 @@ "@types/mime": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", - "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==", - "dev": true + "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==" }, "@types/node": { "version": "18.16.16", @@ -15116,6 +17323,41 @@ "integrity": "sha512-O397rnSS9iQI4OirieAtsDqvCj4+3eY1J+EPdNTKuHuRWIfUoGyzX294o8C4KJYaLqgSrd2o60c5EqCU8Zv02g==", "dev": true }, + "@types/pino": { + "version": "6.3.12", + "resolved": "https://registry.npmjs.org/@types/pino/-/pino-6.3.12.tgz", + "integrity": "sha512-dsLRTq8/4UtVSpJgl9aeqHvbh6pzdmjYD3C092SYgLD2TyoCqHpTJk6vp8DvCTGGc7iowZ2MoiYiVUUCcu7muw==", + "requires": { + "@types/node": "*", + "@types/pino-pretty": "*", + "@types/pino-std-serializers": "*", + "sonic-boom": "^2.1.0" + } + }, + "@types/pino-http": { + "version": "5.8.1", + "resolved": "https://registry.npmjs.org/@types/pino-http/-/pino-http-5.8.1.tgz", + "integrity": "sha512-A9MW6VCnx5ii7s+Fs5aFIw+aSZcBCpsZ/atpxamu8tTsvWFacxSf2Hrn1Ohn1jkVRB/LiPGOapRXcFawDBnDnA==", + "requires": { + "@types/pino": "6.3" + } + }, + "@types/pino-pretty": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@types/pino-pretty/-/pino-pretty-5.0.0.tgz", + "integrity": "sha512-N1uzqSzioqz8R3AkDbSJwcfDWeI3YMPNapSQQhnB2ISU4NYgUIcAh+hYT5ygqBM+klX4htpEhXMmoJv3J7GrdA==", + "requires": { + "pino-pretty": "*" + } + }, + "@types/pino-std-serializers": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/pino-std-serializers/-/pino-std-serializers-4.0.0.tgz", + "integrity": "sha512-gXfUZx2xIBbFYozGms53fT0nvkacx/+62c8iTxrEqH5PkIGAQvDbXg2774VWOycMPbqn5YJBQ3BMsg4Li3dWbg==", + "requires": { + "pino-std-serializers": "*" + } + }, "@types/prettier": { "version": "2.7.2", "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.2.tgz", @@ -15125,14 +17367,12 @@ "@types/qs": { "version": "6.9.7", "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", - "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", - "dev": true + "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==" }, "@types/range-parser": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", - "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", - "dev": true + "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==" }, "@types/semver": { "version": "7.5.0", @@ -15144,7 +17384,6 @@ "version": "0.17.1", "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.1.tgz", "integrity": "sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q==", - "dev": true, "requires": { "@types/mime": "^1", "@types/node": "*" @@ -15154,7 +17393,6 @@ "version": "1.15.1", "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.1.tgz", "integrity": "sha512-NUo5XNiAdULrJENtJXZZ3fHtfMolzZwczzBbnAeBbqBwG+LaG6YaJtuwzwGSQZ2wsCrxjEhNNjAkKigy3n8teQ==", - "dev": true, "requires": { "@types/mime": "*", "@types/node": "*" @@ -15339,6 +17577,14 @@ "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" }, + "abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "requires": { + "event-target-shim": "^5.0.0" + } + }, "accepts": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", @@ -15375,6 +17621,15 @@ "debug": "4" } }, + "aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "requires": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + } + }, "ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", @@ -15463,6 +17718,78 @@ "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" }, + "args": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/args/-/args-5.0.3.tgz", + "integrity": "sha512-h6k/zfFgusnv3i5TU08KQkVKuCPBtL/PWQbWkHUxvJrZ2nAyeaUupneemcrgn1xmqxPQsPIzwkUhOpoqPDRZuA==", + "requires": { + "camelcase": "5.0.0", + "chalk": "2.4.2", + "leven": "2.1.0", + "mri": "1.1.4" + }, + "dependencies": { + "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==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "camelcase": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.0.0.tgz", + "integrity": "sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA==" + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "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==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "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==" + }, + "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==" + }, + "leven": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz", + "integrity": "sha512-nvVPLpIHUxCUoRLrFqTgSxXJ614d8AgQoWl7zPe/2VadE8+1dpU3LBhowRuBAcuwruWtOdD8oYC9jDNJjXDPyA==" + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, "array-flatten": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", @@ -15501,6 +17828,11 @@ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" }, + "atomic-sleep": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/atomic-sleep/-/atomic-sleep-1.0.0.tgz", + "integrity": "sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==" + }, "available-typed-arrays": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", @@ -15634,6 +17966,23 @@ "resolved": "https://registry.npmjs.org/base64url/-/base64url-3.0.1.tgz", "integrity": "sha512-ir1UPr3dkwexU7FdV8qBBbNDRUhMmIekYMFZfi+C/sLNnRESKPl23nB9b2pltqfOQNnGzsDdId90AEtG5tCx4A==" }, + "basic-auth": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", + "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", + "dev": true, + "requires": { + "safe-buffer": "5.1.2" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + } + } + }, "bcrypt": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/bcrypt/-/bcrypt-5.1.0.tgz", @@ -15734,6 +18083,11 @@ } } }, + "bottleneck": { + "version": "2.19.5", + "resolved": "https://registry.npmjs.org/bottleneck/-/bottleneck-2.19.5.tgz", + "integrity": "sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw==" + }, "bowser": { "version": "2.11.0", "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.11.0.tgz", @@ -15811,6 +18165,11 @@ "resolved": "https://registry.npmjs.org/btoa/-/btoa-1.2.1.tgz", "integrity": "sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g==" }, + "btoa-lite": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/btoa-lite/-/btoa-lite-1.0.0.tgz", + "integrity": "sha512-gvW7InbIyF8AicrqWoptdW08pUxuhq8BEgowNajy9RhiE86fmGAGl+bLKo6oB8QP0CkqHLowfN0oJdKC/J6LbA==" + }, "buffer": { "version": "4.9.2", "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", @@ -15945,6 +18304,11 @@ "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==", "dev": true }, + "clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==" + }, "cliui": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", @@ -15961,6 +18325,11 @@ "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==" }, + "cluster-key-slot": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.1.2.tgz", + "integrity": "sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==" + }, "co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", @@ -16025,6 +18394,11 @@ "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==" }, + "colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==" + }, "colorspace": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/colorspace/-/colorspace-1.1.4.tgz", @@ -16042,6 +18416,11 @@ "delayed-stream": "~1.0.0" } }, + "commander": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", + "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==" + }, "component-emitter": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", @@ -16166,6 +18545,11 @@ "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.1.1.tgz", "integrity": "sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw==" }, + "dateformat": { + "version": "4.6.3", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-4.6.3.tgz", + "integrity": "sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==" + }, "debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", @@ -16322,11 +18706,18 @@ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==" }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "requires": { + "once": "^1.4.0" + } + }, "error-ex": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, "requires": { "is-arrayish": "^0.2.1" } @@ -16458,8 +18849,7 @@ "esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" }, "esquery": { "version": "1.5.0", @@ -16512,11 +18902,21 @@ "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==" }, + "event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==" + }, "events": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", "integrity": "sha512-kEcvvCBByWXGnZy6JUlgAp2gBIUjfCAV6P6TgT1/aaQKcmuAEC4OZTV1I4EWQLz2gxZw76atuVyvHhTxvi0Flw==" }, + "eventsource": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-2.0.2.tgz", + "integrity": "sha512-IzUmBGPR3+oUG9dUeXynyNmf91/3zUSJg1lCktzKw47OXuhco54U3r9B7O4XX+Rb1Itm9OZ2b0RkTs10bICOxA==" + }, "execa": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", @@ -16617,6 +19017,16 @@ "integrity": "sha512-h6aK1da4tpqWSbyCa3FxB/V6Ehd4EEB15zyQq9qe75OZBp0krinNKuH4rAY+S/U/2I36vdLAUFSjQJ+TFmODng==", "requires": {} }, + "express-handlebars": { + "version": "6.0.7", + "resolved": "https://registry.npmjs.org/express-handlebars/-/express-handlebars-6.0.7.tgz", + "integrity": "sha512-iYeMFpc/hMD+E6FNAZA5fgWeXnXr4rslOSPkeEV6TwdmpJ5lEXuWX0u9vFYs31P2MURctQq2batR09oeNj0LIg==", + "requires": { + "glob": "^8.1.0", + "graceful-fs": "^4.2.10", + "handlebars": "^4.7.7" + } + }, "express-rate-limit": { "version": "6.7.0", "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-6.7.0.tgz", @@ -16638,6 +19048,11 @@ "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", "dev": true }, + "fast-copy": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/fast-copy/-/fast-copy-3.0.1.tgz", + "integrity": "sha512-Knr7NOtK3HWRYGtHoJrjkaWepqT8thIVGAwt0p0aUs1zqkAzXZV4vo9fFNwyb5fcqK1GKYFYxldQdIDVKhUAfA==" + }, "fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -16680,16 +19095,35 @@ "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", "dev": true }, + "fast-redact": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-3.2.0.tgz", + "integrity": "sha512-zaTadChr+NekyzallAMXATXLOR8MNx3zqpZ0MUF2aGf4EathnG0f32VLODNlY8IuGY3HoRO2L6/6fSzNsLaHIw==" + }, "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 + "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==" + }, + "fast-url-parser": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/fast-url-parser/-/fast-url-parser-1.1.3.tgz", + "integrity": "sha512-5jOCVXADYNuRkKFzNJ0dCCewsZiYo0dz8QNYljkOpFC6r2U4OBmKtvm/Tsuh4w1YYdDqDb31a8TVhBJ2OJKdqQ==", + "requires": { + "punycode": "^1.3.2" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==" + } + } }, "fast-xml-parser": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.1.2.tgz", - "integrity": "sha512-CDYeykkle1LiA/uqQyNwYpFbyF6Axec6YapmpUP+/RHWIoR1zKjocdvNaTsxCxZzQ6v9MLXaSYm9Qq0thv0DHg==", + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.2.5.tgz", + "integrity": "sha512-B9/wizE4WngqQftFPmdaMYlXoJlJOYxGQOanC77fq9k8+Z0v5dDSVh+3glErdIROP//s/jgb7ZuxKfB8nVyo0g==", "requires": { "strnum": "^1.0.5" } @@ -16789,6 +19223,11 @@ "rimraf": "^3.0.2" } }, + "flatstr": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/flatstr/-/flatstr-1.0.12.tgz", + "integrity": "sha512-4zPxDyhCyiN2wIAtSLI6gc82/EjqZc1onI4Mz/l0pWrAlsSfYH/2ZIcU+e3oA2wDwbzIWNKwa23F8rh6+DRWkw==" + }, "flatted": { "version": "3.2.7", "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", @@ -16936,6 +19375,36 @@ "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", "dev": true }, + "glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "requires": { + "balanced-match": "^1.0.0" + } + }, + "minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "requires": { + "brace-expansion": "^2.0.1" + } + } + } + }, "glob-parent": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", @@ -16987,8 +19456,7 @@ "graceful-fs": { "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" }, "grapheme-splitter": { "version": "1.0.4", @@ -17066,6 +19534,15 @@ "resolved": "https://registry.npmjs.org/helmet/-/helmet-5.1.1.tgz", "integrity": "sha512-/yX0oVZBggA9cLJh8aw3PPCfedBnbd7J2aowjzsaWwZh7/UFY0nccn/aHAggIgWUFfnykX8GKd3a1pSbrmlcVQ==" }, + "help-me": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/help-me/-/help-me-4.2.0.tgz", + "integrity": "sha512-TAOnTB8Tz5Dw8penUuzHVrKNKlCIbwwbHnXraNJxPwf8LRtE2HlM84RYuezMFcwOJmoYOCWVDyJ8TQGxn9PgxA==", + "requires": { + "glob": "^8.0.0", + "readable-stream": "^3.6.0" + } + }, "hexoid": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/hexoid/-/hexoid-1.0.0.tgz", @@ -17156,6 +19633,11 @@ "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true }, + "indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==" + }, "infisical-node": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/infisical-node/-/infisical-node-1.2.1.tgz", @@ -17187,6 +19669,24 @@ "integrity": "sha512-zDml/jzr2PKU9I8J/xyZBQn8rPCAY//UOYNmR01XwNwyfhEWObo2SWfSl1+0tm1u6PhxLwDnfsT/6jB7OUxqFA==", "dev": true }, + "ioredis": { + "version": "4.28.5", + "resolved": "https://registry.npmjs.org/ioredis/-/ioredis-4.28.5.tgz", + "integrity": "sha512-3GYo0GJtLqgNXj4YhrisLaNNvWSNwSS2wS4OELGfGxH8I69+XfNdnmV1AyN+ZqMh0i7eX+SWjrwFKDBDgfBC1A==", + "requires": { + "cluster-key-slot": "^1.1.0", + "debug": "^4.3.1", + "denque": "^1.1.0", + "lodash.defaults": "^4.2.0", + "lodash.flatten": "^4.4.0", + "lodash.isarguments": "^3.1.0", + "p-map": "^2.1.0", + "redis-commands": "1.7.0", + "redis-errors": "^1.2.0", + "redis-parser": "^3.0.0", + "standard-as-callback": "^2.1.0" + } + }, "ip": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", @@ -17219,8 +19719,12 @@ "is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" + }, + "is-base64": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-base64/-/is-base64-1.1.0.tgz", + "integrity": "sha512-Nlhg7Z2dVC4/PTvIFkgVVNvPHSO2eR/Yd0XzhGiXCXEvWnptXlXa/clQ8aePPiMuxEGcWfzWbGw2Fe3d+Y3v1g==" }, "is-binary-path": { "version": "2.1.0", @@ -17240,7 +19744,6 @@ "version": "2.12.1", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.1.tgz", "integrity": "sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==", - "dev": true, "requires": { "has": "^1.0.3" } @@ -17349,9 +19852,9 @@ }, "dependencies": { "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true } } @@ -17858,6 +20361,11 @@ "resolved": "https://registry.npmjs.org/jmespath/-/jmespath-0.16.0.tgz", "integrity": "sha512-9FzQjJ7MATs1tSpnco1K6ayiYE3figslrXA72G2HQ/n76RzvYlofyi5QM+iX4YRs/pu3yzxlVQSST23+dMDknw==" }, + "joycon": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/joycon/-/joycon-3.1.1.tgz", + "integrity": "sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==" + }, "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -17883,6 +20391,11 @@ "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", "dev": true }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" + }, "json-parse-even-better-errors": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", @@ -18015,6 +20528,39 @@ "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", "dev": true }, + "load-json-file": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-5.3.0.tgz", + "integrity": "sha512-cJGP40Jc/VXUsp8/OrnyKyTZ1y6v/dphm3bioS+RrKXjK2BB6wHUd6JptZEFDGgGahMT+InnZO5i1Ei9mpC8Bw==", + "requires": { + "graceful-fs": "^4.1.15", + "parse-json": "^4.0.0", + "pify": "^4.0.1", + "strip-bom": "^3.0.0", + "type-fest": "^0.3.0" + }, + "dependencies": { + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==" + }, + "type-fest": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz", + "integrity": "sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==" + } + } + }, "locate-path": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", @@ -18029,6 +20575,21 @@ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, + "lodash.defaults": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", + "integrity": "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==" + }, + "lodash.flatten": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", + "integrity": "sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==" + }, + "lodash.isarguments": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", + "integrity": "sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg==" + }, "lodash.memoize": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", @@ -18082,9 +20643,9 @@ }, "dependencies": { "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" } } }, @@ -18291,6 +20852,45 @@ } } }, + "morgan": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.10.0.tgz", + "integrity": "sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==", + "dev": true, + "requires": { + "basic-auth": "~2.0.1", + "debug": "2.6.9", + "depd": "~2.0.0", + "on-finished": "~2.3.0", + "on-headers": "~1.0.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + } + } + }, "mpath": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.9.0.tgz", @@ -18304,6 +20904,11 @@ "debug": "4.x" } }, + "mri": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/mri/-/mri-1.1.4.tgz", + "integrity": "sha512-6y7IjGPm8AzlvoUrwAaw1tLnUBudaS3752vcd8JtrpGGQn+rXIe63LFVHm/YMwtqAuh+LJPCFdlLYPWM1nYn6w==" + }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -18429,9 +21034,9 @@ "dev": true }, "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true }, "supports-color": { @@ -20283,6 +22888,37 @@ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==" }, + "octokit-auth-probot": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/octokit-auth-probot/-/octokit-auth-probot-1.2.9.tgz", + "integrity": "sha512-mMjw6Y760EwJnW2tSVooJK8BMdsG6D40SoCclnefVf/5yWjaNVquEu8NREBVWb60OwbpnMEz4vREXHB5xdMFYQ==", + "requires": { + "@octokit/auth-app": "^4.0.2", + "@octokit/auth-token": "^3.0.0", + "@octokit/auth-unauthenticated": "^3.0.0", + "@octokit/types": "^8.0.0" + }, + "dependencies": { + "@octokit/openapi-types": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-14.0.0.tgz", + "integrity": "sha512-HNWisMYlR8VCnNurDU6os2ikx0s0VyEjDYHNS/h4cgb8DeOxQ0n72HyinUtdDVxJhFy3FWLGl0DJhfEWk3P5Iw==" + }, + "@octokit/types": { + "version": "8.2.1", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-8.2.1.tgz", + "integrity": "sha512-8oWMUji8be66q2B9PmEIUyQm00VPDPun07umUWSaCwxmeaquFBro4Hcc3ruVoDo3zkQyZBlRvhIMEYS3pBhanw==", + "requires": { + "@octokit/openapi-types": "^14.0.0" + } + } + } + }, + "on-exit-leak-free": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/on-exit-leak-free/-/on-exit-leak-free-2.1.0.tgz", + "integrity": "sha512-VuCaZZAjReZ3vUwgOB8LxAosIurDiAW0s13rI1YwmaP++jvcxP77AWoQvenZebpCA2m8WC1/EosPYPMjnRAp/w==" + }, "on-finished": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", @@ -20291,6 +22927,12 @@ "ee-first": "1.1.1" } }, + "on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "dev": true + }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -20325,17 +22967,17 @@ } }, "optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", "dev": true, "requires": { + "@aashutoshrathi/word-wrap": "^1.2.3", "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", "levn": "^0.4.1", "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" + "type-check": "^0.4.0" } }, "p-limit": { @@ -20356,11 +22998,15 @@ "p-limit": "^3.0.2" } }, + "p-map": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", + "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==" + }, "p-try": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" }, "parent-module": { "version": "1.0.1", @@ -20443,8 +23089,7 @@ "path-parse": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" }, "path-to-regexp": { "version": "0.1.7", @@ -20474,12 +23119,222 @@ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" + }, + "pino": { + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/pino/-/pino-6.14.0.tgz", + "integrity": "sha512-iuhEDel3Z3hF9Jfe44DPXR8l07bhjuFY3GMHIXbjnY9XcafbyDDwl2sN2vw2GjMPf5Nkoe+OFao7ffn9SXaKDg==", + "requires": { + "fast-redact": "^3.0.0", + "fast-safe-stringify": "^2.0.8", + "flatstr": "^1.0.12", + "pino-std-serializers": "^3.1.0", + "process-warning": "^1.0.0", + "quick-format-unescaped": "^4.0.3", + "sonic-boom": "^1.0.2" + }, + "dependencies": { + "pino-std-serializers": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-3.2.0.tgz", + "integrity": "sha512-EqX4pwDPrt3MuOAAUBMU0Tk5kR/YcCM5fNPEzgCO2zJ5HfX0vbiH9HbJglnyeQsN96Kznae6MWD47pZB5avTrg==" + }, + "sonic-boom": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-1.4.1.tgz", + "integrity": "sha512-LRHh/A8tpW7ru89lrlkU4AszXt1dbwSjVWguGrmlxE7tawVmDBlI1PILMkXAxJTwqhgsEeTHzj36D5CmHgQmNg==", + "requires": { + "atomic-sleep": "^1.0.0", + "flatstr": "^1.0.12" + } + } + } + }, + "pino-abstract-transport": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/pino-abstract-transport/-/pino-abstract-transport-1.0.0.tgz", + "integrity": "sha512-c7vo5OpW4wIS42hUVcT5REsL8ZljsUfBjqV/e2sFxmFEFZiq1XLUp5EYLtuDH6PEHq9W1egWqRbnLUP5FuZmOA==", + "requires": { + "readable-stream": "^4.0.0", + "split2": "^4.0.0" + }, + "dependencies": { + "buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==" + }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" + }, + "readable-stream": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.4.2.tgz", + "integrity": "sha512-Lk/fICSyIhodxy1IDK2HazkeGjSmezAWX2egdtJnYhtzKEsBPJowlI6F6LPb5tqIQILrMbx22S5o3GuJavPusA==", + "requires": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + } + } + } + }, + "pino-http": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/pino-http/-/pino-http-5.8.0.tgz", + "integrity": "sha512-YwXiyRb9y0WCD1P9PcxuJuh3Dc5qmXde/paJE86UGYRdiFOi828hR9iUGmk5gaw6NBT9gLtKANOHFimvh19U5w==", + "requires": { + "fast-url-parser": "^1.1.3", + "pino": "^6.13.0", + "pino-std-serializers": "^4.0.0" + }, + "dependencies": { + "pino-std-serializers": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-4.0.0.tgz", + "integrity": "sha512-cK0pekc1Kjy5w9V2/n+8MkZwusa6EyyxfeQCB799CQRhRt/CqYKiWs5adeu8Shve2ZNffvfC/7J64A2PJo1W/Q==" + } + } + }, + "pino-pretty": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/pino-pretty/-/pino-pretty-10.0.1.tgz", + "integrity": "sha512-yrn00+jNpkvZX/NrPVCPIVHAfTDy3ahF0PND9tKqZk4j9s+loK8dpzrJj4dGb7i+WLuR50ussuTAiWoMWU+qeA==", + "requires": { + "colorette": "^2.0.7", + "dateformat": "^4.6.3", + "fast-copy": "^3.0.0", + "fast-safe-stringify": "^2.1.1", + "help-me": "^4.0.1", + "joycon": "^3.1.1", + "minimist": "^1.2.6", + "on-exit-leak-free": "^2.1.0", + "pino-abstract-transport": "^1.0.0", + "pump": "^3.0.0", + "readable-stream": "^4.0.0", + "secure-json-parse": "^2.4.0", + "sonic-boom": "^3.0.0", + "strip-json-comments": "^3.1.1" + }, + "dependencies": { + "buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==" + }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" + }, + "readable-stream": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.4.2.tgz", + "integrity": "sha512-Lk/fICSyIhodxy1IDK2HazkeGjSmezAWX2egdtJnYhtzKEsBPJowlI6F6LPb5tqIQILrMbx22S5o3GuJavPusA==", + "requires": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + } + }, + "sonic-boom": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-3.3.0.tgz", + "integrity": "sha512-LYxp34KlZ1a2Jb8ZQgFCK3niIHzibdwtwNUWKg0qQRzsDoJ3Gfgkf8KdBTFU3SkejDEIlWwnSnpVdOZIhFMl/g==", + "requires": { + "atomic-sleep": "^1.0.0" + } + } + } + }, + "pino-std-serializers": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-6.2.2.tgz", + "integrity": "sha512-cHjPPsE+vhj/tnhCy/wiMh3M3z3h/j15zHQX+S9GkTBgqJuTuJzYJ4gUyACLhDaJ7kk9ba9iRDmbH2tJU03OiA==" + }, "pirates": { "version": "4.0.5", "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz", "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==", "dev": true }, + "pkg-conf": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-3.1.0.tgz", + "integrity": "sha512-m0OTbR/5VPNPqO1ph6Fqbj7Hv6QU7gR/tQW40ZqrL1rjgCU85W6C1bJn0BItuJqnR98PWzw7Z8hHeChD1WrgdQ==", + "requires": { + "find-up": "^3.0.0", + "load-json-file": "^5.2.0" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "requires": { + "locate-path": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "requires": { + "p-limit": "^2.0.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==" + } + } + }, "pkg-dir": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", @@ -20572,11 +23427,337 @@ } } }, + "probot": { + "version": "12.3.1", + "resolved": "https://registry.npmjs.org/probot/-/probot-12.3.1.tgz", + "integrity": "sha512-ECSgycmAC0ILEK6cOa+x3QPufP5JybsuohOFCYr3glQU5SkbmypZJE/Sfio9mxAFHK5LCXveIDsfZCxf6ck4JA==", + "requires": { + "@octokit/core": "^3.2.4", + "@octokit/plugin-enterprise-compatibility": "^1.2.8", + "@octokit/plugin-paginate-rest": "^2.6.2", + "@octokit/plugin-rest-endpoint-methods": "^5.0.1", + "@octokit/plugin-retry": "^3.0.6", + "@octokit/plugin-throttling": "^3.3.4", + "@octokit/types": "^8.0.0", + "@octokit/webhooks": "^9.8.4", + "@probot/get-private-key": "^1.1.0", + "@probot/octokit-plugin-config": "^1.0.0", + "@probot/pino": "^2.2.0", + "@types/express": "^4.17.9", + "@types/ioredis": "^4.27.1", + "@types/pino": "^6.3.4", + "@types/pino-http": "^5.0.6", + "commander": "^6.2.0", + "deepmerge": "^4.2.2", + "deprecation": "^2.3.1", + "dotenv": "^8.2.0", + "eventsource": "^2.0.2", + "express": "^4.17.1", + "express-handlebars": "^6.0.3", + "ioredis": "^4.27.8", + "js-yaml": "^3.14.1", + "lru-cache": "^6.0.0", + "octokit-auth-probot": "^1.2.2", + "pino": "^6.7.0", + "pino-http": "^5.3.0", + "pkg-conf": "^3.1.0", + "resolve": "^1.19.0", + "semver": "^7.3.4", + "update-dotenv": "^1.1.1", + "uuid": "^8.3.2" + }, + "dependencies": { + "@octokit/auth-token": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.5.0.tgz", + "integrity": "sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g==", + "requires": { + "@octokit/types": "^6.0.3" + }, + "dependencies": { + "@octokit/openapi-types": { + "version": "12.11.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.11.0.tgz", + "integrity": "sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==" + }, + "@octokit/types": { + "version": "6.41.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", + "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", + "requires": { + "@octokit/openapi-types": "^12.11.0" + } + } + } + }, + "@octokit/core": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@octokit/core/-/core-3.6.0.tgz", + "integrity": "sha512-7RKRKuA4xTjMhY+eG3jthb3hlZCsOwg3rztWh75Xc+ShDWOfDDATWbeZpAHBNRpm4Tv9WgBMOy1zEJYXG6NJ7Q==", + "requires": { + "@octokit/auth-token": "^2.4.4", + "@octokit/graphql": "^4.5.8", + "@octokit/request": "^5.6.3", + "@octokit/request-error": "^2.0.5", + "@octokit/types": "^6.0.3", + "before-after-hook": "^2.2.0", + "universal-user-agent": "^6.0.0" + }, + "dependencies": { + "@octokit/openapi-types": { + "version": "12.11.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.11.0.tgz", + "integrity": "sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==" + }, + "@octokit/types": { + "version": "6.41.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", + "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", + "requires": { + "@octokit/openapi-types": "^12.11.0" + } + } + } + }, + "@octokit/endpoint": { + "version": "6.0.12", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.12.tgz", + "integrity": "sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA==", + "requires": { + "@octokit/types": "^6.0.3", + "is-plain-object": "^5.0.0", + "universal-user-agent": "^6.0.0" + }, + "dependencies": { + "@octokit/openapi-types": { + "version": "12.11.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.11.0.tgz", + "integrity": "sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==" + }, + "@octokit/types": { + "version": "6.41.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", + "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", + "requires": { + "@octokit/openapi-types": "^12.11.0" + } + } + } + }, + "@octokit/graphql": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.8.0.tgz", + "integrity": "sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg==", + "requires": { + "@octokit/request": "^5.6.0", + "@octokit/types": "^6.0.3", + "universal-user-agent": "^6.0.0" + }, + "dependencies": { + "@octokit/openapi-types": { + "version": "12.11.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.11.0.tgz", + "integrity": "sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==" + }, + "@octokit/types": { + "version": "6.41.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", + "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", + "requires": { + "@octokit/openapi-types": "^12.11.0" + } + } + } + }, + "@octokit/openapi-types": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-14.0.0.tgz", + "integrity": "sha512-HNWisMYlR8VCnNurDU6os2ikx0s0VyEjDYHNS/h4cgb8DeOxQ0n72HyinUtdDVxJhFy3FWLGl0DJhfEWk3P5Iw==" + }, + "@octokit/plugin-paginate-rest": { + "version": "2.21.3", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.21.3.tgz", + "integrity": "sha512-aCZTEf0y2h3OLbrgKkrfFdjRL6eSOo8komneVQJnYecAxIej7Bafor2xhuDJOIFau4pk0i/P28/XgtbyPF0ZHw==", + "requires": { + "@octokit/types": "^6.40.0" + }, + "dependencies": { + "@octokit/openapi-types": { + "version": "12.11.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.11.0.tgz", + "integrity": "sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==" + }, + "@octokit/types": { + "version": "6.41.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", + "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", + "requires": { + "@octokit/openapi-types": "^12.11.0" + } + } + } + }, + "@octokit/plugin-rest-endpoint-methods": { + "version": "5.16.2", + "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.16.2.tgz", + "integrity": "sha512-8QFz29Fg5jDuTPXVtey05BLm7OB+M8fnvE64RNegzX7U+5NUXcOcnpTIK0YfSHBg8gYd0oxIq3IZTe9SfPZiRw==", + "requires": { + "@octokit/types": "^6.39.0", + "deprecation": "^2.3.1" + }, + "dependencies": { + "@octokit/openapi-types": { + "version": "12.11.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.11.0.tgz", + "integrity": "sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==" + }, + "@octokit/types": { + "version": "6.41.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", + "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", + "requires": { + "@octokit/openapi-types": "^12.11.0" + } + } + } + }, + "@octokit/plugin-throttling": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-throttling/-/plugin-throttling-3.7.0.tgz", + "integrity": "sha512-qrKT1Yl/KuwGSC6/oHpLBot3ooC9rq0/ryDYBCpkRtoj+R8T47xTMDT6Tk2CxWopFota/8Pi/2SqArqwC0JPow==", + "requires": { + "@octokit/types": "^6.0.1", + "bottleneck": "^2.15.3" + }, + "dependencies": { + "@octokit/openapi-types": { + "version": "12.11.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.11.0.tgz", + "integrity": "sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==" + }, + "@octokit/types": { + "version": "6.41.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", + "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", + "requires": { + "@octokit/openapi-types": "^12.11.0" + } + } + } + }, + "@octokit/request": { + "version": "5.6.3", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.6.3.tgz", + "integrity": "sha512-bFJl0I1KVc9jYTe9tdGGpAMPy32dLBXXo1dS/YwSCTL/2nd9XeHsY616RE3HPXDVk+a+dBuzyz5YdlXwcDTr2A==", + "requires": { + "@octokit/endpoint": "^6.0.1", + "@octokit/request-error": "^2.1.0", + "@octokit/types": "^6.16.1", + "is-plain-object": "^5.0.0", + "node-fetch": "^2.6.7", + "universal-user-agent": "^6.0.0" + }, + "dependencies": { + "@octokit/openapi-types": { + "version": "12.11.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.11.0.tgz", + "integrity": "sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==" + }, + "@octokit/types": { + "version": "6.41.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", + "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", + "requires": { + "@octokit/openapi-types": "^12.11.0" + } + } + } + }, + "@octokit/request-error": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.1.0.tgz", + "integrity": "sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==", + "requires": { + "@octokit/types": "^6.0.3", + "deprecation": "^2.0.0", + "once": "^1.4.0" + }, + "dependencies": { + "@octokit/openapi-types": { + "version": "12.11.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.11.0.tgz", + "integrity": "sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==" + }, + "@octokit/types": { + "version": "6.41.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", + "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", + "requires": { + "@octokit/openapi-types": "^12.11.0" + } + } + } + }, + "@octokit/types": { + "version": "8.2.1", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-8.2.1.tgz", + "integrity": "sha512-8oWMUji8be66q2B9PmEIUyQm00VPDPun07umUWSaCwxmeaquFBro4Hcc3ruVoDo3zkQyZBlRvhIMEYS3pBhanw==", + "requires": { + "@octokit/openapi-types": "^14.0.0" + } + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "dotenv": { + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz", + "integrity": "sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==" + }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "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==", + "requires": { + "yallist": "^4.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + } + } + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==" + }, "process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" }, + "process-warning": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-1.0.0.tgz", + "integrity": "sha512-du4wfLyj4yCZq1VupnVSZmRsPJsNuxoDQFdCFHLaYiEbFBD7QE0a+I4D7hOxrVnh78QE/YipFAj9lXHiXocV+Q==" + }, "prompts": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", @@ -20627,6 +23808,15 @@ "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==", "dev": true }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, "punycode": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", @@ -20668,6 +23858,11 @@ "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", "dev": true }, + "quick-format-unescaped": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz", + "integrity": "sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==" + }, "quick-lru": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", @@ -20753,6 +23948,24 @@ "picomatch": "^2.2.1" } }, + "redis-commands": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/redis-commands/-/redis-commands-1.7.0.tgz", + "integrity": "sha512-nJWqw3bTFy21hX/CPKHth6sfhZbdiHP6bTawSgQBlKOVRG7EZkfHbbHwQJnrE4vsQf0CMNE+3gJ4Fmm16vdVlQ==" + }, + "redis-errors": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/redis-errors/-/redis-errors-1.2.0.tgz", + "integrity": "sha512-1qny3OExCf0UvUV/5wpYKf2YwPcOqXzkwKKSmKHiE6ZMQs5heeE/c8eXK+PNllPvmjgAbfnsbpkGZWy8cBpn9w==" + }, + "redis-parser": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redis-parser/-/redis-parser-3.0.0.tgz", + "integrity": "sha512-DJnGAeenTdpMEH6uAJRK/uiyEIH9WVsUmoLwzudwGJUwZPp80PDBWPHXSAGNPwNvIXAbe7MSUB1zQFugFml66A==", + "requires": { + "redis-errors": "^1.0.0" + } + }, "regenerator-runtime": { "version": "0.13.11", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", @@ -20773,7 +23986,6 @@ "version": "1.22.2", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", - "dev": true, "requires": { "is-core-module": "^2.11.0", "path-parse": "^1.0.7", @@ -20815,6 +24027,11 @@ "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", "dev": true }, + "rfdc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", + "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==" + }, "rimraf": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", @@ -20885,10 +24102,15 @@ "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.1.tgz", "integrity": "sha512-8I2a3LovHTOpm7NV5yOyO8IHqgVsfK4+UuySrXU8YXkSRX7k6hCV9b3HrkKCr3nMpgj+0bmocaJJWpvp1oc7ZA==" }, + "secure-json-parse": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-2.7.0.tgz", + "integrity": "sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==" + }, "semver": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.1.tgz", - "integrity": "sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "requires": { "lru-cache": "^6.0.0" }, @@ -21064,6 +24286,58 @@ "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==" }, + "smee-client": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/smee-client/-/smee-client-1.2.3.tgz", + "integrity": "sha512-uDrU8u9/Ln7aRXyzGHgVaNUS8onHZZeSwQjCdkMoSL7U85xI+l+Y2NgjibkMJAyXkW7IAbb8rw9RMHIjS6lAwA==", + "dev": true, + "requires": { + "commander": "^2.19.0", + "eventsource": "^1.1.0", + "morgan": "^1.9.1", + "superagent": "^7.1.3", + "validator": "^13.7.0" + }, + "dependencies": { + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "eventsource": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.1.2.tgz", + "integrity": "sha512-xAH3zWhgO2/3KIniEKYPr8plNSzlGINOUqYj0m0u7AB81iRw8b/3E73W6AuU+6klLbaSFmZnaETQ2lXPfAydrA==", + "dev": true + }, + "mime": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "dev": true + }, + "superagent": { + "version": "7.1.5", + "resolved": "https://registry.npmjs.org/superagent/-/superagent-7.1.5.tgz", + "integrity": "sha512-HQYyGuDRFGmZ6GNC4hq2f37KnsY9Lr0/R1marNZTgMweVDQLTLJJ6DGQ9Tj/xVVs5HEnop9EMmTbywb5P30aqw==", + "dev": true, + "requires": { + "component-emitter": "^1.3.0", + "cookiejar": "^2.1.3", + "debug": "^4.3.4", + "fast-safe-stringify": "^2.1.1", + "form-data": "^4.0.0", + "formidable": "^2.0.1", + "methods": "^1.1.2", + "mime": "^2.5.0", + "qs": "^6.10.3", + "readable-stream": "^3.6.0", + "semver": "^7.3.7" + } + } + } + }, "snappy": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/snappy/-/snappy-7.1.1.tgz", @@ -21094,6 +24368,14 @@ "smart-buffer": "^4.2.0" } }, + "sonic-boom": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-2.8.0.tgz", + "integrity": "sha512-kuonw1YOYYNOve5iHdSahXPOK49GqwA+LZhI6Wz/l0rP57iKyXXIHaRagOBHAPmGwJC6od2Z9zgvZ5loSgMlVg==", + "requires": { + "atomic-sleep": "^1.0.0" + } + }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -21123,11 +24405,15 @@ "resolved": "https://registry.npmjs.org/split-on-first/-/split-on-first-1.1.0.tgz", "integrity": "sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==" }, + "split2": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", + "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==" + }, "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" }, "stack-trace": { "version": "0.0.10", @@ -21151,6 +24437,11 @@ } } }, + "standard-as-callback": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/standard-as-callback/-/standard-as-callback-2.1.0.tgz", + "integrity": "sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A==" + }, "statuses": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", @@ -21217,8 +24508,7 @@ "strip-json-comments": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==" }, "strnum": { "version": "1.0.5", @@ -21273,8 +24563,7 @@ "supports-preserve-symlinks-flag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" }, "swagger-autogen": { "version": "2.23.1", @@ -21574,6 +24863,25 @@ "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.12.1.tgz", "integrity": "sha512-hEQt0+ZLDVUMhebKxL4x1BTtDY7bavVofhZ9KZ4aI26X9SRaE+Y3m83XUL1UP2jn8ynjndwCCpEHdUG+9pP1Tw==" }, + "universal-github-app-jwt": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/universal-github-app-jwt/-/universal-github-app-jwt-1.1.1.tgz", + "integrity": "sha512-G33RTLrIBMFmlDV4u4CBF7dh71eWwykck4XgaxaIVeZKOYZRAAxvcGMRFTUclVY6xoUPQvO4Ne5wKGxYm/Yy9w==", + "requires": { + "@types/jsonwebtoken": "^9.0.0", + "jsonwebtoken": "^9.0.0" + }, + "dependencies": { + "@types/jsonwebtoken": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz", + "integrity": "sha512-drE6uz7QBKq1fYqqoFKTDRdFCPHd5TCub75BM+D+cMx7NU9hUz7SESLfC2fSCXVFMO5Yj8sOWHuGqPgjc+fz0Q==", + "requires": { + "@types/node": "*" + } + } + } + }, "universal-user-agent": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", @@ -21594,6 +24902,12 @@ "picocolors": "^1.0.0" } }, + "update-dotenv": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/update-dotenv/-/update-dotenv-1.1.1.tgz", + "integrity": "sha512-3cIC18In/t0X/yH793c00qqxcKD8jVCgNOPif/fGQkFpYMGecM9YAc+kaAKXuZsM2dE9I9wFI7KvAuNX22SGMQ==", + "requires": {} + }, "uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -21790,12 +25104,6 @@ "triple-beam": "^1.3.0" } }, - "word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true - }, "wordwrap": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", diff --git a/backend/package.json b/backend/package.json index 0c0f0642d..a6cf3aa70 100644 --- a/backend/package.json +++ b/backend/package.json @@ -36,6 +36,7 @@ "passport": "^0.6.0", "passport-google-oauth20": "^2.0.0", "posthog-node": "^2.6.0", + "probot": "^12.3.1", "query-string": "^7.1.3", "rate-limit-mongo": "^2.3.2", "rimraf": "^3.0.2", @@ -103,6 +104,7 @@ "jest-junit": "^15.0.0", "nodemon": "^2.0.19", "npm": "^8.19.3", + "smee-client": "^1.2.3", "supertest": "^6.3.3", "ts-jest": "^29.0.3", "ts-node": "^10.9.1" diff --git a/backend/src/config/index.ts b/backend/src/config/index.ts index e023a12c8..bcbb715ad 100644 --- a/backend/src/config/index.ts +++ b/backend/src/config/index.ts @@ -10,7 +10,7 @@ export const getEncryptionKey = async () => { return secretValue === "" ? undefined : secretValue; } export const getRootEncryptionKey = async () => { - const secretValue = (await client.getSecret("ROOT_ENCRYPTION_KEY")).secretValue; + const secretValue = (await client.getSecret("ROOT_ENCRYPTION_KEY")).secretValue; return secretValue === "" ? undefined : secretValue; } export const getInviteOnlySignup = async () => (await client.getSecret("INVITE_ONLY_SIGNUP")).secretValue === "true" @@ -57,6 +57,11 @@ export const getSmtpPassword = async () => (await client.getSecret("SMTP_PASSWOR export const getSmtpFromAddress = async () => (await client.getSecret("SMTP_FROM_ADDRESS")).secretValue; export const getSmtpFromName = async () => (await client.getSecret("SMTP_FROM_NAME")).secretValue || "Infisical"; +export const getSecretScanningWebhookProxy = async () => (await client.getSecret("SECRET_SCANNING_WEBHOOK_PROXY")).secretValue; +export const getSecretScanningWebhookSecret = async () => (await client.getSecret("SECRET_SCANNING_WEBHOOK_SECRET")).secretValue; +export const getSecretScanningGitAppId = async () => (await client.getSecret("SECRET_SCANNING_GIT_APP_ID")).secretValue; +export const getSecretScanningPrivateKey = async () => (await client.getSecret("SECRET_SCANNING_PRIVATE_KEY")).secretValue; + export const getLicenseKey = async () => { const secretValue = (await client.getSecret("LICENSE_KEY")).secretValue; return secretValue === "" ? undefined : secretValue; diff --git a/backend/src/controllers/v1/secretScanningController.ts b/backend/src/controllers/v1/secretScanningController.ts index 6de6b1483..43ddc1a67 100644 --- a/backend/src/controllers/v1/secretScanningController.ts +++ b/backend/src/controllers/v1/secretScanningController.ts @@ -72,7 +72,7 @@ export const getCurrentOrganizationInstallationStatus = async (req: Request, res export const getRisksForOrganization = async (req: Request, res: Response) => { const { organizationId } = req.params - const risks = await GitRisks.find({ organization: organizationId, status: STATUS_UNRESOLVED }).lean() + const risks = await GitRisks.find({ organization: organizationId, status: STATUS_UNRESOLVED }).sort({ createdAt: -1 }).lean() res.json({ risks: risks }) diff --git a/backend/src/index.ts b/backend/src/index.ts index 851d151aa..93bdb937c 100644 --- a/backend/src/index.ts +++ b/backend/src/index.ts @@ -5,11 +5,12 @@ import express from "express"; require("express-async-errors"); import helmet from "helmet"; import cors from "cors"; -import { DatabaseService } from "./services"; +import { DatabaseService, GithubSecretScanningService } from "./services"; import { EELicenseService } from "./ee/services"; import { setUpHealthEndpoint } from "./services/health"; import cookieParser from "cookie-parser"; import swaggerUi = require("swagger-ui-express"); +import { Probot, createNodeMiddleware } from "probot"; // eslint-disable-next-line @typescript-eslint/no-var-requires const swaggerFile = require("../spec.json"); // eslint-disable-next-line @typescript-eslint/no-var-requires @@ -44,9 +45,9 @@ import { } from "./routes/v1"; import { auth as v2AuthRouter, + organizations as v2OrganizationsRouter, signup as v2SignupRouter, users as v2UsersRouter, - organizations as v2OrganizationsRouter, workspace as v2WorkspaceRouter, secret as v2SecretRouter, // begin to phase out secrets as v2SecretsRouter, @@ -65,10 +66,12 @@ import { healthCheck } from "./routes/status"; import { getLogger } from "./utils/logger"; import { RouteNotFoundError } from "./utils/errors"; import { requestErrorHandler } from "./middleware/requestErrorHandler"; -import { getNodeEnv, getPort, getSiteURL } from "./config"; +import { getNodeEnv, getPort, getSecretScanningGitAppId, getSecretScanningPrivateKey, getSecretScanningWebhookProxy, getSecretScanningWebhookSecret, getSiteURL } from "./config"; import { setup } from "./utils/setup"; +const SmeeClient = require('smee-client') // eslint-disable-line const main = async () => { + await setup(); await EELicenseService.initGlobalFeatureSet(); @@ -84,6 +87,26 @@ const main = async () => { }) ); + if (await getSecretScanningGitAppId()) { + const probot = new Probot({ + appId: await getSecretScanningGitAppId(), + privateKey: await getSecretScanningPrivateKey(), + secret: await getSecretScanningWebhookSecret(), + }); + + if ((await getNodeEnv()) != "production") { + const smee = new SmeeClient({ + source: await getSecretScanningWebhookProxy(), + target: "http://backend:4000/ss-webhook", + logger: console + }) + + smee.start() + } + + app.use(createNodeMiddleware(GithubSecretScanningService, { probot, webhooksPath: "/ss-webhook" })); // secret scanning webhook + } + if ((await getNodeEnv()) === "production") { // enable app-wide rate-limiting + helmet security // in production diff --git a/backend/src/models/gitRisks.ts b/backend/src/models/gitRisks.ts index 6262dbf30..0fd1ffd38 100644 --- a/backend/src/models/gitRisks.ts +++ b/backend/src/models/gitRisks.ts @@ -25,6 +25,7 @@ export type GitRisks = { tags: string[]; ruleID: string; fingerprint: string; + fingerPrintWithoutCommitId: string isFalsePositive: boolean; // New field for marking risks as false positives isResolved: boolean; // New field for marking risks as resolved @@ -94,6 +95,9 @@ const gitRisks = new Schema({ type: String, unique: true }, + fingerPrintWithoutCommitId: { + type: String, + }, isFalsePositive: { type: Boolean, default: false diff --git a/backend/src/models/index.ts b/backend/src/models/index.ts index bf997811a..10e460520 100644 --- a/backend/src/models/index.ts +++ b/backend/src/models/index.ts @@ -16,13 +16,14 @@ import ServiceAccountKey, { IServiceAccountKey } from "./serviceAccountKey"; // import ServiceAccountOrganizationPermission, { IServiceAccountOrganizationPermission } from "./serviceAccountOrganizationPermission"; // new import ServiceAccountWorkspacePermission, { IServiceAccountWorkspacePermission } from "./serviceAccountWorkspacePermission"; // new import TokenData, { ITokenData } from "./tokenData"; -import User,{ AuthProvider, IUser } from "./user"; +import User, { AuthProvider, IUser } from "./user"; import UserAction, { IUserAction } from "./userAction"; import Workspace, { IWorkspace } from "./workspace"; import ServiceTokenData, { IServiceTokenData } from "./serviceTokenData"; import APIKeyData, { IAPIKeyData } from "./apiKeyData"; import LoginSRPDetail, { ILoginSRPDetail } from "./loginSRPDetail"; import TokenVersion, { ITokenVersion } from "./tokenVersion"; +import GitRisks, { STATUS_RESOLVED_FALSE_POSITIVE } from "./gitRisks"; export { AuthProvider, @@ -76,4 +77,6 @@ export { ILoginSRPDetail, TokenVersion, ITokenVersion, + GitRisks, + STATUS_RESOLVED_FALSE_POSITIVE }; diff --git a/backend/src/services/GithubSecretScanningService.ts b/backend/src/services/GithubSecretScanningService.ts new file mode 100644 index 000000000..48426ea26 --- /dev/null +++ b/backend/src/services/GithubSecretScanningService.ts @@ -0,0 +1,250 @@ +import { Probot } from "probot"; +import { exec } from "child_process"; +import { mkdir, readFile, rm, writeFile } from "fs"; +import { tmpdir } from "os"; +import { join } from "path" +import GitRisks, { STATUS_RESOLVED_FALSE_POSITIVE } from "../models/gitRisks"; +import GitAppOrganizationInstallation from "../models/gitAppOrganizationInstallation"; +import MembershipOrg from "../models/membershipOrg"; +import { ADMIN, OWNER } from "../variables"; +import User from "../models/user"; +import { sendMail } from "../helpers"; + +type SecretMatch = { + Description: string; + StartLine: number; + EndLine: number; + StartColumn: number; + EndColumn: number; + Match: string; + Secret: string; + File: string; + SymlinkFile: string; + Commit: string; + Entropy: number; + Author: string; + Email: string; + Date: string; + Message: string; + Tags: string[]; + RuleID: string; + Fingerprint: string; + FingerPrintWithoutCommitId: string +}; + +export default async (app: Probot) => { + app.on("installation.deleted", async (context) => { + const { payload } = context; + const { installation, repositories } = payload; + if (installation.repository_selection == "all") { + await GitRisks.deleteMany({ installationId: installation.id }) + await GitAppOrganizationInstallation.deleteOne({ installationId: installation.id }) + } else { + if (repositories) { + for (const repository of repositories) { + await GitRisks.deleteMany({ repositoryId: repository.id }) + } + } + } + }) + + app.on("push", async (context) => { + const { payload } = context; + const { commits, repository, installation, pusher } = payload; + const [owner, repo] = repository.full_name.split("/"); + + if (!commits || !repository || !installation || !pusher) { + return + } + + const installationLinkToOrgExists = await GitAppOrganizationInstallation.findOne({ installationId: installation?.id }).lean() + if (!installationLinkToOrgExists) { + return + } + + const allFindingsByFingerprint: { [key: string]: SecretMatch; } = {} + + for (const commit of commits) { + for (const filepath of [...commit.added, ...commit.modified]) { + try { + const fileContentsResponse = await context.octokit.repos.getContent({ + owner, + repo, + path: filepath, + }); + + const data: any = fileContentsResponse.data; + const fileContent = Buffer.from(data.content, "base64").toString(); + + const findings = await scanContentAndGetFindings(`\n${fileContent}`) // extra line to count lines correctly + + for (const finding of findings) { + const fingerPrintWithCommitId = `${commit.id}:${filepath}:${finding.RuleID}:${finding.StartLine}` + const fingerPrintWithoutCommitId = `${filepath}:${finding.RuleID}:${finding.StartLine}` + finding.Fingerprint = fingerPrintWithCommitId + finding.FingerPrintWithoutCommitId = fingerPrintWithoutCommitId + finding.Commit = commit.id + finding.File = filepath + finding.Author = commit.author.name + finding.Email = commit?.author?.email ? commit?.author?.email : "" + + allFindingsByFingerprint[fingerPrintWithCommitId] = finding + } + + } catch (error) { + console.error(`Error fetching content for ${filepath}`, error); // eslint-disable-line + } + } + } + + // change to update + const noneFalsePositiveFindings: { [key: string]: SecretMatch; } = {} + + for (const key in allFindingsByFingerprint) { + const risk = await GitRisks.findOneAndUpdate({ fingerprint: allFindingsByFingerprint[key].Fingerprint }, + { + ...convertKeysToLowercase(allFindingsByFingerprint[key]), + installationId: installation.id, + organization: installationLinkToOrgExists.organizationId, + repositoryFullName: repository.full_name, + repositoryId: repository.id + }, { + upsert: true + }).lean() + + if (risk?.status == STATUS_RESOLVED_FALSE_POSITIVE) { + noneFalsePositiveFindings[key] = { ...convertKeysToLowercase(allFindingsByFingerprint[key]) } + } + + } + // get emails of admins + const adminsOfWork = await MembershipOrg.find({ + organization: installationLinkToOrgExists.organizationId, + $or: [ + { role: OWNER }, + { role: ADMIN } + ] + }).lean() + + const userEmails = await User.find({ + _id: { + $in: [adminsOfWork.map(orgMembership => orgMembership.user)] + } + }).select("email").lean() + + const adminOrOwnerEmails = userEmails.map(userObject => userObject.email) + + + // TODO + // don't notify if the risk is marked as false positive + + // loop through each finding and check if the finger print without commit has a status of false positive, if so don't add it to the list of risks that need to be notified + + + + + await sendMail({ + template: "secretLeakIncident.handlebars", + subjectLine: `Incident alert: leaked secrets found in Github repository ${repository.full_name}`, + recipients: ["pusher.email", ...adminOrOwnerEmails], + substitutions: { + numberOfSecrets: Object.keys(allFindingsByFingerprint).length, + pusher_email: pusher.email, + pusher_name: pusher.name + } + }); + }); +}; + +async function scanContentAndGetFindings(textContent: string): Promise { + const tempFolder = await createTempFolder(); + const filePath = join(tempFolder, "content.txt"); + const findingsPath = join(tempFolder, "findings.json"); + + try { + await writeTextToFile(filePath, textContent); + await runInfisicalScan(filePath, findingsPath); + const findingsData = await readFindingsFile(findingsPath); + return JSON.parse(findingsData); + } finally { + await deleteTempFolder(tempFolder); + } +} + +function createTempFolder(): Promise { + return new Promise((resolve, reject) => { + const tempDir = tmpdir() + const tempFolderName = Math.random().toString(36).substring(2); + const tempFolderPath = join(tempDir, tempFolderName); + + mkdir(tempFolderPath, (err: any) => { + if (err) { + reject(err); + } else { + resolve(tempFolderPath); + } + }); + }); +} + +function writeTextToFile(filePath: string, content: string): Promise { + return new Promise((resolve, reject) => { + writeFile(filePath, content, (err) => { + if (err) { + reject(err); + } else { + resolve(); + } + }); + }); +} + +function runInfisicalScan(inputPath: string, outputPath: string): Promise { + return new Promise((resolve, reject) => { + const command = `cat "${inputPath}" | infisical scan --exit-code=77 --pipe -r "${outputPath}"`; + exec(command, (error) => { + if (error && error.code != 77) { + reject(error); + } else { + resolve(); + } + }); + }); +} + +function readFindingsFile(filePath: string): Promise { + return new Promise((resolve, reject) => { + readFile(filePath, "utf8", (err, data) => { + if (err) { + reject(err); + } else { + resolve(data); + } + }); + }); +} + +function deleteTempFolder(folderPath: string): Promise { + return new Promise((resolve, reject) => { + rm(folderPath, { recursive: true }, (err) => { + if (err) { + reject(err); + } else { + resolve(); + } + }); + }); +} + +function convertKeysToLowercase(obj: T): T { + const convertedObj = {} as T; + + for (const key in obj) { + if (Object.prototype.hasOwnProperty.call(obj, key)) { + const lowercaseKey = key.charAt(0).toLowerCase() + key.slice(1); + convertedObj[lowercaseKey as keyof T] = obj[key]; + } + } + + return convertedObj; +} \ No newline at end of file diff --git a/backend/src/services/index.ts b/backend/src/services/index.ts index ad83bf510..707b0d0ad 100644 --- a/backend/src/services/index.ts +++ b/backend/src/services/index.ts @@ -6,6 +6,7 @@ import EventService from "./EventService"; import IntegrationService from "./IntegrationService"; import TokenService from "./TokenService"; import SecretService from "./SecretService"; +import GithubSecretScanningService from "./GithubSecretScanningService" export { TelemetryService, @@ -15,4 +16,5 @@ export { IntegrationService, TokenService, SecretService, + GithubSecretScanningService } \ No newline at end of file diff --git a/backend/src/templates/secretLeakIncident.handlebars b/backend/src/templates/secretLeakIncident.handlebars new file mode 100644 index 000000000..e3ef0b569 --- /dev/null +++ b/backend/src/templates/secretLeakIncident.handlebars @@ -0,0 +1,19 @@ + + + + + + + Incident alert: secret leaked + + + +

Infisical has uncovered {{numberOfSecrets}} secret(s) from your recent push

+

View leaked secrets

+

One or more secret leaks have been detected in a recent commit pushed by {{pusher_name}} ({{pusher_email}}). If + the secrets are test secrets, please mark them as false positives in the Infisical dashboard. + Otherwise, please rotate the secrets immediately.

+ + + \ No newline at end of file diff --git a/docker-compose.dev.yml b/docker-compose.dev.yml index 460ac27d0..8ffa7c3e9 100644 --- a/docker-compose.dev.yml +++ b/docker-compose.dev.yml @@ -58,30 +58,6 @@ services: networks: - infisical-dev - git-app: - container_name: infisical-dev-git-app - restart: unless-stopped - depends_on: - - mongo - - smtp-server - - backend - - frontend - volumes: - - ./secret-engine/src:/app/src/ # mounted whole src to avoid missing reload on new files - ports: - - "3005:3005" - build: - context: ./secret-engine - dockerfile: Dockerfile.dev - env_file: ./secret-engine/.env - environment: - - NODE_ENV=development - - MONGO_URL=mongodb://root:example@mongo:27017/?authSource=admin - networks: - - infisical-dev - extra_hosts: - - "host.docker.internal:host-gateway" - mongo: image: mongo container_name: infisical-dev-mongo diff --git a/helm-charts/infisical/templates/_helpers.tpl b/helm-charts/infisical/templates/_helpers.tpl index ac07d327c..500edea33 100644 --- a/helm-charts/infisical/templates/_helpers.tpl +++ b/helm-charts/infisical/templates/_helpers.tpl @@ -51,16 +51,6 @@ component: {{ .Values.frontend.name | quote }} {{ include "infisical.common.matchLabels" . }} {{- end -}} -{{- define "infisical.secretScanningGitApp.labels" -}} -{{ include "infisical.secretScanningGitApp.matchLabels" . }} -{{ include "infisical.common.metaLabels" . }} -{{- end -}} - -{{- define "infisical.secretScanningGitApp.matchLabels" -}} -component: {{ .Values.secretScanningGitApp.name | quote }} -{{ include "infisical.common.matchLabels" . }} -{{- end -}} - {{- define "infisical.mongodb.labels" -}} {{ include "infisical.mongodb.matchLabels" . }} {{ include "infisical.common.metaLabels" . }} @@ -122,24 +112,6 @@ We truncate at 63 chars because some Kubernetes name fields are limited to this {{- end -}} {{- end -}} - -{{/* -Create a fully qualified secretScanningGitApp name. -We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). -*/}} -{{- define "infisical.secretScanningGitApp.fullname" -}} -{{- if .Values.secretScanningGitApp.fullnameOverride -}} -{{- .Values.secretScanningGitApp.fullnameOverride | trunc 63 | trimSuffix "-" -}} -{{- else -}} -{{- $name := default .Chart.Name .Values.nameOverride -}} -{{- if contains $name .Release.Name -}} -{{- printf "%s-%s" .Release.Name .Values.secretScanningGitApp.name | trunc 63 | trimSuffix "-" -}} -{{- else -}} -{{- printf "%s-%s-%s" .Release.Name $name .Values.secretScanningGitApp.name | trunc 63 | trimSuffix "-" -}} -{{- end -}} -{{- end -}} -{{- end -}} - {{/* Create the mongodb connection string. */}} diff --git a/helm-charts/infisical/templates/ingress.yaml b/helm-charts/infisical/templates/ingress.yaml index c27703956..a675fa2ff 100644 --- a/helm-charts/infisical/templates/ingress.yaml +++ b/helm-charts/infisical/templates/ingress.yaml @@ -44,13 +44,6 @@ spec: name: {{ include "infisical.backend.fullname" . }} port: number: 4000 - - path: {{ $ingress.secretScanningGitApp.path }} - pathType: {{ $ingress.secretScanningGitApp.pathType }} - backend: - service: - name: {{ include "infisical.secretScanningGitApp.fullname" . }} - port: - number: 3001 {{- if $ingress.hostName }} host: {{ $ingress.hostName }} {{- end }} diff --git a/helm-charts/infisical/templates/secret-scanning-git-app-deployment.yaml b/helm-charts/infisical/templates/secret-scanning-git-app-deployment.yaml deleted file mode 100644 index 78a5fecf5..000000000 --- a/helm-charts/infisical/templates/secret-scanning-git-app-deployment.yaml +++ /dev/null @@ -1,69 +0,0 @@ -{{- $secretScanningGitApp := .Values.secretScanningGitApp }} -{{- $backend := .Values.backend }} -{{- if .Values.secretScanningGitApp.enabled }} -apiVersion: apps/v1 -kind: Deployment -metadata: - name: {{ include "infisical.secretScanningGitApp.fullname" . }} - annotations: - updatedAt: {{ now | date "2006-01-01 MST 15:04:05" | quote }} - {{- with $secretScanningGitApp.deploymentAnnotations }} - {{- toYaml . | nindent 4 }} - {{- end }} - labels: - {{- include "infisical.secretScanningGitApp.labels" . | nindent 4 }} -spec: - replicas: {{ $secretScanningGitApp.replicaCount }} - selector: - matchLabels: - {{- include "infisical.secretScanningGitApp.matchLabels" . | nindent 6 }} - template: - metadata: - labels: - {{- include "infisical.secretScanningGitApp.matchLabels" . | nindent 8 }} - annotations: - updatedAt: {{ now | date "2006-01-01 MST 15:04:05" | quote }} - {{- with $secretScanningGitApp.podAnnotations }} - {{- toYaml . | nindent 8 }} - {{- end }} - spec: - containers: - - name: {{ template "infisical.name" . }}-{{ $secretScanningGitApp.name }} - image: "{{ $secretScanningGitApp.image.repository }}:{{ $secretScanningGitApp.image.tag | default "latest" }}" - imagePullPolicy: {{ $secretScanningGitApp.image.pullPolicy }} - readinessProbe: - httpGet: - path: / - port: 3000 - initialDelaySeconds: 10 - periodSeconds: 10 - ports: - - containerPort: 3000 - envFrom: - - secretRef: - name: {{ $backend.kubeSecretRef | default (include "infisical.backend.fullname" .) }} -{{- end }} ---- -{{- if .Values.secretScanningGitApp.enabled }} -apiVersion: v1 -kind: Service -metadata: - name: {{ include "infisical.secretScanningGitApp.fullname" . }} - labels: - {{- include "infisical.secretScanningGitApp.labels" . | nindent 4 }} - {{- with $secretScanningGitApp.service.annotations }} - annotations: - {{- toYaml . | nindent 4 }} - {{- end }} -spec: - type: {{ $secretScanningGitApp.service.type }} - selector: - {{- include "infisical.secretScanningGitApp.matchLabels" . | nindent 8 }} - ports: - - protocol: TCP - port: 3001 - targetPort: 3000 # container port - {{- if eq $secretScanningGitApp.service.type "NodePort" }} - nodePort: {{ $secretScanningGitApp.service.nodePort }} - {{- end }} -{{- end }} \ No newline at end of file diff --git a/nginx/default.dev.conf b/nginx/default.dev.conf index 6e2ab9bc9..94c5d7b67 100644 --- a/nginx/default.dev.conf +++ b/nginx/default.dev.conf @@ -13,20 +13,6 @@ server { proxy_cookie_path / "/; secure; HttpOnly; SameSite=strict"; } - - location /git-app-api { - proxy_set_header X-Real-RIP $remote_addr; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - - proxy_set_header Host $http_host; - proxy_set_header X-NginX-Proxy true; - - proxy_pass http://git-app:3005/; - proxy_redirect off; - # proxy_redirect http://localhost:8080/ http://frontend.example.com/; - - proxy_cookie_path / "/; secure; HttpOnly; SameSite=strict"; - } location / { include /etc/nginx/mime.types; diff --git a/secret-engine/src/index.ts b/secret-engine/src/index.ts index 00c7d2eb0..98ecabfa0 100644 --- a/secret-engine/src/index.ts +++ b/secret-engine/src/index.ts @@ -32,7 +32,7 @@ type SecretMatch = { Fingerprint: string; }; -export = async (app: Probot) => { +export const GithubSecretScanningApp = async (app: Probot) => { // connect to DB initDatabase() From 53abce578031e86253ac8fe0cba8a093e2a64e78 Mon Sep 17 00:00:00 2001 From: Maidul Islam Date: Sun, 16 Jul 2023 16:51:01 -0400 Subject: [PATCH 08/49] remove secret engine folder --- secret-engine/.dockerignore | 13 - secret-engine/.env.example | 9 - secret-engine/.eslintrc | 14 - secret-engine/.gitignore | 7 - secret-engine/CODE_OF_CONDUCT.md | 73 - secret-engine/CONTRIBUTING.md | 39 - secret-engine/Dockerfile | 15 - secret-engine/Dockerfile.dev | 13 - secret-engine/LICENSE | 15 - secret-engine/README.md | 33 - secret-engine/app.yml | 134 - secret-engine/jest.config.js | 9 - secret-engine/package-lock.json | 14650 ---------------- secret-engine/package.json | 44 - secret-engine/src/helper/nodemailer.ts | 45 - secret-engine/src/index.ts | 284 - .../models/gitAppOrganizationInstallation.ts | 31 - secret-engine/src/models/gitRisks.ts | 147 - secret-engine/src/models/membershipOrg.ts | 56 - secret-engine/src/models/user.ts | 116 - secret-engine/src/service/smtp.ts | 77 - .../templates/secretLeakIncident.handlebars | 19 - secret-engine/tsconfig.json | 71 - 23 files changed, 15914 deletions(-) delete mode 100644 secret-engine/.dockerignore delete mode 100644 secret-engine/.env.example delete mode 100644 secret-engine/.eslintrc delete mode 100644 secret-engine/.gitignore delete mode 100644 secret-engine/CODE_OF_CONDUCT.md delete mode 100644 secret-engine/CONTRIBUTING.md delete mode 100644 secret-engine/Dockerfile delete mode 100644 secret-engine/Dockerfile.dev delete mode 100644 secret-engine/LICENSE delete mode 100644 secret-engine/README.md delete mode 100644 secret-engine/app.yml delete mode 100644 secret-engine/jest.config.js delete mode 100644 secret-engine/package-lock.json delete mode 100644 secret-engine/package.json delete mode 100644 secret-engine/src/helper/nodemailer.ts delete mode 100644 secret-engine/src/index.ts delete mode 100644 secret-engine/src/models/gitAppOrganizationInstallation.ts delete mode 100644 secret-engine/src/models/gitRisks.ts delete mode 100644 secret-engine/src/models/membershipOrg.ts delete mode 100644 secret-engine/src/models/user.ts delete mode 100644 secret-engine/src/service/smtp.ts delete mode 100644 secret-engine/src/templates/secretLeakIncident.handlebars delete mode 100644 secret-engine/tsconfig.json diff --git a/secret-engine/.dockerignore b/secret-engine/.dockerignore deleted file mode 100644 index 88fe8b202..000000000 --- a/secret-engine/.dockerignore +++ /dev/null @@ -1,13 +0,0 @@ -**/node_modules/ -**/.git -**/README.md -**/LICENSE -**/.vscode -**/npm-debug.log -**/coverage -**/.env -**/.editorconfig -**/dist -**/lib -**/*.pem -Dockerfile diff --git a/secret-engine/.env.example b/secret-engine/.env.example deleted file mode 100644 index 6e106aa9d..000000000 --- a/secret-engine/.env.example +++ /dev/null @@ -1,9 +0,0 @@ -# The ID of your GitHub App -APP_ID= -WEBHOOK_SECRET=development - -# Use `trace` to get verbose logging or `info` to show less -LOG_LEVEL=debug - -# Go to https://smee.io/new set this to the URL that you are redirected to. -WEBHOOK_PROXY_URL= diff --git a/secret-engine/.eslintrc b/secret-engine/.eslintrc deleted file mode 100644 index d66289aa9..000000000 --- a/secret-engine/.eslintrc +++ /dev/null @@ -1,14 +0,0 @@ -{ - "parser": "@typescript-eslint/parser", - "parserOptions": { - "sourceType": "module", - "ecmaVersion": 2020 - }, - "plugins": [ - "@typescript-eslint" - ], - // "extends": [ - // "eslint:recommended", - // "plugin:@typescript-eslint/recommended" - // ] -} \ No newline at end of file diff --git a/secret-engine/.gitignore b/secret-engine/.gitignore deleted file mode 100644 index b3d906d52..000000000 --- a/secret-engine/.gitignore +++ /dev/null @@ -1,7 +0,0 @@ -node_modules -npm-debug.log -*.pem -!mock-cert.pem -.env -coverage -lib diff --git a/secret-engine/CODE_OF_CONDUCT.md b/secret-engine/CODE_OF_CONDUCT.md deleted file mode 100644 index 203ff8f13..000000000 --- a/secret-engine/CODE_OF_CONDUCT.md +++ /dev/null @@ -1,73 +0,0 @@ -# Contributor Covenant Code of Conduct - -## Our Pledge - -In the interest of fostering an open and welcoming environment, we as -contributors and maintainers pledge to making participation in our project and -our community a harassment-free experience for everyone, regardless of age, body -size, disability, ethnicity, gender identity and expression, level of experience, -education, socio-economic status, nationality, personal appearance, race, -religion, or sexual identity and orientation. - -## Our Standards - -Examples of behavior that contributes to creating a positive environment -include: - -- Using welcoming and inclusive language -- Being respectful of differing viewpoints and experiences -- Gracefully accepting constructive criticism -- Focusing on what is best for the community -- Showing empathy towards other community members - -Examples of unacceptable behavior by participants include: - -- The use of sexualized language or imagery and unwelcome sexual attention or - advances -- Trolling, insulting/derogatory comments, and personal or political attacks -- Public or private harassment -- Publishing others' private information, such as a physical or electronic - address, without explicit permission -- Other conduct which could reasonably be considered inappropriate in a - professional setting - -## Our Responsibilities - -Project maintainers are responsible for clarifying the standards of acceptable -behavior and are expected to take appropriate and fair corrective action in -response to any instances of unacceptable behavior. - -Project maintainers have the right and responsibility to remove, edit, or -reject comments, commits, code, wiki edits, issues, and other contributions -that are not aligned to this Code of Conduct, or to ban temporarily or -permanently any contributor for other behaviors that they deem inappropriate, -threatening, offensive, or harmful. - -## Scope - -This Code of Conduct applies both within project spaces and in public spaces -when an individual is representing the project or its community. Examples of -representing a project or community include using an official project e-mail -address, posting via an official social media account, or acting as an appointed -representative at an online or offline event. Representation of a project may be -further defined and clarified by project maintainers. - -## Enforcement - -Instances of abusive, harassing, or otherwise unacceptable behavior may be -reported by contacting the project team at . All -complaints will be reviewed and investigated and will result in a response that -is deemed necessary and appropriate to the circumstances. The project team is -obligated to maintain confidentiality with regard to the reporter of an incident. -Further details of specific enforcement policies may be posted separately. - -Project maintainers who do not follow or enforce the Code of Conduct in good -faith may face temporary or permanent repercussions as determined by other -members of the project's leadership. - -## Attribution - -This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, -available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html - -[homepage]: https://www.contributor-covenant.org diff --git a/secret-engine/CONTRIBUTING.md b/secret-engine/CONTRIBUTING.md deleted file mode 100644 index f6ebb8125..000000000 --- a/secret-engine/CONTRIBUTING.md +++ /dev/null @@ -1,39 +0,0 @@ -## Contributing - -[fork]: /fork -[pr]: /compare -[code-of-conduct]: CODE_OF_CONDUCT.md - -Hi there! We're thrilled that you'd like to contribute to this project. Your help is essential for keeping it great. - -Please note that this project is released with a [Contributor Code of Conduct][code-of-conduct]. By participating in this project you agree to abide by its terms. - -## Issues and PRs - -If you have suggestions for how this project could be improved, or want to report a bug, open an issue! We'd love all and any contributions. If you have questions, too, we'd love to hear them. - -We'd also love PRs. If you're thinking of a large PR, we advise opening up an issue first to talk about it, though! Look at the links below if you're not sure how to open a PR. - -## Submitting a pull request - -1. [Fork][fork] and clone the repository. -1. Configure and install the dependencies: `npm install`. -1. Make sure the tests pass on your machine: `npm test`, note: these tests also apply the linter, so there's no need to lint separately. -1. Create a new branch: `git checkout -b my-branch-name`. -1. Make your change, add tests, and make sure the tests still pass. -1. Push to your fork and [submit a pull request][pr]. -1. Pat your self on the back and wait for your pull request to be reviewed and merged. - -Here are a few things you can do that will increase the likelihood of your pull request being accepted: - -- Write and update tests. -- Keep your changes as focused as possible. If there are multiple changes you would like to make that are not dependent upon each other, consider submitting them as separate pull requests. -- Write a [good commit message](http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html). - -Work in Progress pull requests are also welcome to get feedback early on, or if there is something blocked you. - -## Resources - -- [How to Contribute to Open Source](https://opensource.guide/how-to-contribute/) -- [Using Pull Requests](https://help.github.com/articles/about-pull-requests/) -- [GitHub Help](https://help.github.com) diff --git a/secret-engine/Dockerfile b/secret-engine/Dockerfile deleted file mode 100644 index 32189a70b..000000000 --- a/secret-engine/Dockerfile +++ /dev/null @@ -1,15 +0,0 @@ -FROM node:18-slim -WORKDIR /usr/src/app -COPY package.json package-lock.json ./ -RUN npm ci --production -RUN npm cache clean --force -ENV NODE_ENV="production" -COPY . . - -RUN apt-get update && apt-get install -y bash curl && curl -1sLf \ - 'https://dl.cloudsmith.io/public/infisical/infisical-cli/setup.deb.sh' | bash \ - && apt-get update && apt-get install -y infisical=0.8.1 - -RUN npm run build - -CMD [ "npm", "run", "start:prod" ] diff --git a/secret-engine/Dockerfile.dev b/secret-engine/Dockerfile.dev deleted file mode 100644 index 52745d9ce..000000000 --- a/secret-engine/Dockerfile.dev +++ /dev/null @@ -1,13 +0,0 @@ -FROM node:18-slim -WORKDIR app/ -COPY package.json package-lock.json ./ -RUN npm ci -RUN npm cache clean --force -COPY . . - -RUN apt-get update && apt-get install -y bash curl && curl -1sLf \ - 'https://dl.cloudsmith.io/public/infisical/infisical-cli/setup.deb.sh' | bash \ - && apt-get update && apt-get install -y infisical=0.8.1 - - -CMD [ "npm", "run", "start:dev" ] diff --git a/secret-engine/LICENSE b/secret-engine/LICENSE deleted file mode 100644 index 929df0bac..000000000 --- a/secret-engine/LICENSE +++ /dev/null @@ -1,15 +0,0 @@ -ISC License - -Copyright (c) 2023, Maidul Islam - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF -OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/secret-engine/README.md b/secret-engine/README.md deleted file mode 100644 index f70e2afd0..000000000 --- a/secret-engine/README.md +++ /dev/null @@ -1,33 +0,0 @@ -# secret-engine - -> A GitHub App built with [Probot](https://github.com/probot/probot) that Infisical secret engine - -## Setup - -```sh -# Install dependencies -npm install - -# Run the bot -npm start -``` - -## Docker - -```sh -# 1. Build container -docker build -t secret-engine . - -# 2. Start container -docker run -e APP_ID= -e PRIVATE_KEY= secret-engine -``` - -## Contributing - -If you have suggestions for how secret-engine could be improved, or want to report a bug, open an issue! We'd love all and any contributions. - -For more, check out the [Contributing Guide](CONTRIBUTING.md). - -## License - -[ISC](LICENSE) © 2023 Maidul Islam diff --git a/secret-engine/app.yml b/secret-engine/app.yml deleted file mode 100644 index 8121db9fa..000000000 --- a/secret-engine/app.yml +++ /dev/null @@ -1,134 +0,0 @@ -# This is a GitHub App Manifest. These settings will be used by default when -# initially configuring your GitHub App. -# -# NOTE: changing this file will not update your GitHub App settings. -# You must visit github.com/settings/apps/your-app-name to edit them. -# -# Read more about configuring your GitHub App: -# https://probot.github.io/docs/development/#configuring-a-github-app -# -# Read more about GitHub App Manifests: -# https://developer.github.com/apps/building-github-apps/creating-github-apps-from-a-manifest/ - -# The list of events the GitHub App subscribes to. -# Uncomment the event names below to enable them. -default_events: - - check_run - # - check_suite - # - commit_comment - # - create - # - delete - # - deployment - # - deployment_status - # - fork - # - gollum - # - issue_comment - # - issues - - push - # - label - # - milestone - # - member - # - membership - # - org_block - # - organization - # - page_build - # - project - # - project_card - # - project_column - # - public - - pull_request -# - pull_request_review -# - pull_request_review_comment -# - release -# - repository -# - repository_import -# - status -# - team -# - team_add -# - watch - -# The set of permissions needed by the GitHub App. The format of the object uses -# the permission name for the key (for example, issues) and the access type for -# the value (for example, write). -# Valid values are `read`, `write`, and `none` -default_permissions: - # Repository creation, deletion, settings, teams, and collaborators. - # https://developer.github.com/v3/apps/permissions/#permission-on-administration - # administration: read - - # Checks on code. - # https://developer.github.com/v3/apps/permissions/#permission-on-checks - checks: write - - # Repository contents, commits, branches, downloads, releases, and merges. - # https://developer.github.com/v3/apps/permissions/#permission-on-contents - contents: read - - # Deployments and deployment statuses. - # https://developer.github.com/v3/apps/permissions/#permission-on-deployments - # deployments: read - - # Issues and related comments, assignees, labels, and milestones. - # https://developer.github.com/v3/apps/permissions/#permission-on-issues - issues: write - - # Search repositories, list collaborators, and access repository metadata. - # https://developer.github.com/v3/apps/permissions/#metadata-permissions - metadata: read - - # Retrieve Pages statuses, configuration, and builds, as well as create new builds. - # https://developer.github.com/v3/apps/permissions/#permission-on-pages - # pages: read - - # Pull requests and related comments, assignees, labels, milestones, and merges. - # https://developer.github.com/v3/apps/permissions/#permission-on-pull-requests - pull_requests: write - - # Manage the post-receive hooks for a repository. - # https://developer.github.com/v3/apps/permissions/#permission-on-repository-hooks - # repository_hooks: read - - # Manage repository projects, columns, and cards. - # https://developer.github.com/v3/apps/permissions/#permission-on-repository-projects - # repository_projects: read - - # Retrieve security vulnerability alerts. - # https://developer.github.com/v4/object/repositoryvulnerabilityalert/ - # vulnerability_alerts: read - - # Commit statuses. - # https://developer.github.com/v3/apps/permissions/#permission-on-statuses - # statuses: read - - # Organization members and teams. - # https://developer.github.com/v3/apps/permissions/#permission-on-members - # members: read - - # View and manage users blocked by the organization. - # https://developer.github.com/v3/apps/permissions/#permission-on-organization-user-blocking - # organization_user_blocking: read - - # Manage organization projects, columns, and cards. - # https://developer.github.com/v3/apps/permissions/#permission-on-organization-projects - # organization_projects: read - - # Manage team discussions and related comments. - # https://developer.github.com/v3/apps/permissions/#permission-on-team-discussions - # team_discussions: read - - # Manage the post-receive hooks for an organization. - # https://developer.github.com/v3/apps/permissions/#permission-on-organization-hooks - # organization_hooks: read - - # Get notified of, and update, content references. - # https://developer.github.com/v3/apps/permissions/ - # organization_administration: read -# The name of the GitHub App. Defaults to the name specified in package.json -name: Infisical Radar -# The homepage of your GitHub App. -url: https://infisical.com/radar -# A description of the GitHub App. -description: Scan your commits for leaked secrets -# Set to true when your GitHub App is available to the public or false when it is only accessible to the owner of the app. -# Default: true -# public: false diff --git a/secret-engine/jest.config.js b/secret-engine/jest.config.js deleted file mode 100644 index 9ee81b0f3..000000000 --- a/secret-engine/jest.config.js +++ /dev/null @@ -1,9 +0,0 @@ -module.exports = { - roots: ["/src/", "/test/"], - transform: { - "^.+\\.tsx?$": "ts-jest", - }, - testRegex: "(/__tests__/.*|\\.(test|spec))\\.[tj]sx?$", - moduleFileExtensions: ["ts", "tsx", "js", "jsx", "json", "node"], - testEnvironment: "node", -}; diff --git a/secret-engine/package-lock.json b/secret-engine/package-lock.json deleted file mode 100644 index 658dbed54..000000000 --- a/secret-engine/package-lock.json +++ /dev/null @@ -1,14650 +0,0 @@ -{ - "name": "secret-engine", - "version": "1.0.0", - "lockfileVersion": 2, - "requires": true, - "packages": { - "": { - "name": "secret-engine", - "version": "1.0.0", - "license": "ISC", - "dependencies": { - "handlebars": "^4.7.7", - "mongoose": "^7.3.1", - "nodemailer": "^6.9.3", - "probot": "^12.2.4", - "ts-node": "^10.9.1" - }, - "devDependencies": { - "@types/jest": "^29.0.0", - "@types/node": "^18.0.0", - "@typescript-eslint/eslint-plugin": "^5.61.0", - "@typescript-eslint/parser": "^5.61.0", - "eslint": "^8.44.0", - "jest": "^29.0.0", - "nock": "^13.0.5", - "nodemon": "^2.0.22", - "smee-client": "^1.2.2", - "ts-jest": "^29.0.0", - "typescript": "^4.1.3" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/@aashutoshrathi/word-wrap": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", - "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "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, - "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.22.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.5.tgz", - "integrity": "sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==", - "dev": true, - "dependencies": { - "@babel/highlight": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/compat-data": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.5.tgz", - "integrity": "sha512-4Jc/YuIaYqKnDDz892kPIledykKg12Aw1PYX5i/TY28anJtacvM1Rrr8wbieB9GfEJwlzqT0hUEao0CxEebiDA==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.5.tgz", - "integrity": "sha512-SBuTAjg91A3eKOvD+bPEz3LlhHZRNu1nFOVts9lzDJTXshHTjII0BAtDS3Y2DAkdZdDKWVZGVwkDfc4Clxn1dg==", - "dev": true, - "dependencies": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.22.5", - "@babel/generator": "^7.22.5", - "@babel/helper-compilation-targets": "^7.22.5", - "@babel/helper-module-transforms": "^7.22.5", - "@babel/helpers": "^7.22.5", - "@babel/parser": "^7.22.5", - "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.5", - "@babel/types": "^7.22.5", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.2", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@babel/core/node_modules/convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "dev": true - }, - "node_modules/@babel/generator": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.5.tgz", - "integrity": "sha512-+lcUbnTRhd0jOewtFSedLyiPsD5tswKkbgcezOqqWFUVNEwoUTlpPOBmvhG7OXWLR4jMdv0czPGH5XbflnD1EA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.5", - "@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-compilation-targets": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.5.tgz", - "integrity": "sha512-Ji+ywpHeuqxB8WDxraCiqR0xfhYjiDE/e6k7FuIaANnoOFxAHskHChz4vA1mJC9Lbm01s1PVAGhQY4FUKSkGZw==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.22.5", - "@babel/helper-validator-option": "^7.22.5", - "browserslist": "^4.21.3", - "lru-cache": "^5.1.1", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-environment-visitor": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.5.tgz", - "integrity": "sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-function-name": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.22.5.tgz", - "integrity": "sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==", - "dev": true, - "dependencies": { - "@babel/template": "^7.22.5", - "@babel/types": "^7.22.5" - }, - "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, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-imports": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.5.tgz", - "integrity": "sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.5.tgz", - "integrity": "sha512-+hGKDt/Ze8GFExiVHno/2dvG5IdstpzCq0y4Qc9OJ25D4q3pKfiIP/4Vp3/JvhDkLKsDK2api3q3fpIgiIF5bw==", - "dev": true, - "dependencies": { - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-module-imports": "^7.22.5", - "@babel/helper-simple-access": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.5", - "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.5", - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.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, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.5.tgz", - "integrity": "sha512-thqK5QFghPKWLhAV321lxF95yCg2K3Ob5yw+M3VHWfdia0IkPXUtoLH8x/6Fh486QUvzhb8YOWHChTVen2/PoQ==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-string-parser": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", - "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz", - "integrity": "sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-option": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz", - "integrity": "sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.5.tgz", - "integrity": "sha512-pSXRmfE1vzcUIDFQcSGA5Mr+GxBV9oiRKDuDxXvWQQBCh8HoIjs/2DlDB7H8smac1IVrB9/xdXj2N3Wol9Cr+Q==", - "dev": true, - "dependencies": { - "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.5", - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.5.tgz", - "integrity": "sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.22.5", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight/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, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/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, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/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, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/@babel/highlight/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 - }, - "node_modules/@babel/highlight/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, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@babel/highlight/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, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/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, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/parser": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.5.tgz", - "integrity": "sha512-DFZMC9LJUG9PLOclRC32G63UXwzqS2koQC8dkx+PLdmt1xSePYpbT/NbsrJy8Q/muXz7o/h/d4A7Fuyixm559Q==", - "dev": true, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-bigint": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", - "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-import-meta": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", - "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.22.5.tgz", - "integrity": "sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==", - "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-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.22.5.tgz", - "integrity": "sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==", - "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/template": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.5.tgz", - "integrity": "sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.22.5", - "@babel/parser": "^7.22.5", - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.5.tgz", - "integrity": "sha512-7DuIjPgERaNo6r+PZwItpjCZEa5vyw4eJGufeLxrPdBXBoLcCJCIasvK6pK/9DVNrLZTLFhUGqaC6X/PA007TQ==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.22.5", - "@babel/generator": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-function-name": "^7.22.5", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.5", - "@babel/parser": "^7.22.5", - "@babel/types": "^7.22.5", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/types": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.5.tgz", - "integrity": "sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==", - "dev": true, - "dependencies": { - "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.5", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@bcoe/v8-coverage": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", - "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", - "dev": true - }, - "node_modules/@cspotcode/source-map-support": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", - "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", - "dependencies": { - "@jridgewell/trace-mapping": "0.3.9" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", - "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", - "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "node_modules/@eslint-community/eslint-utils": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", - "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" - } - }, - "node_modules/@eslint-community/regexpp": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.1.tgz", - "integrity": "sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==", - "dev": true, - "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.0.tgz", - "integrity": "sha512-Lj7DECXqIVCqnqjjHMPna4vn6GJcMgul/wuS0je9OZ9gsL0zzDpKPVtcG1HaDVc+9y+qgXneTeUMbCqXJNpH1A==", - "dev": true, - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.6.0", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@eslint/eslintrc/node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "13.20.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", - "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", - "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@eslint/eslintrc/node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/@eslint/eslintrc/node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@eslint/js": { - "version": "8.44.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.44.0.tgz", - "integrity": "sha512-Ag+9YM4ocKQx9AarydN0KY2j0ErMHNIocPDrVo8zAE44xLTjEtz81OdR68/cydGtk6m6jDb5Za3r2useMzYmSw==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/@hapi/bourne": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@hapi/bourne/-/bourne-2.1.0.tgz", - "integrity": "sha512-i1BpaNDVLJdRBEKeJWkVO6tYX6DMFBuwMhSuWqLsY4ufeTKGVuV5rBsUhxPayXqnnWHgXUAmWK16H/ykO5Wj4Q==" - }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.10.tgz", - "integrity": "sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==", - "dev": true, - "dependencies": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.5" - }, - "engines": { - "node": ">=10.10.0" - } - }, - "node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true, - "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", - "dev": true - }, - "node_modules/@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", - "dev": true, - "dependencies": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/console": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.5.0.tgz", - "integrity": "sha512-NEpkObxPwyw/XxZVLPmAGKE89IQRp4puc6IQRPru6JKd1M3fW9v1xM1AnzIJE65hbCkzQAdnL8P47e9hzhiYLQ==", - "dev": true, - "dependencies": { - "@jest/types": "^29.5.0", - "@types/node": "*", - "chalk": "^4.0.0", - "jest-message-util": "^29.5.0", - "jest-util": "^29.5.0", - "slash": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/core": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.5.0.tgz", - "integrity": "sha512-28UzQc7ulUrOQw1IsN/kv1QES3q2kkbl/wGslyhAclqZ/8cMdB5M68BffkIdSJgKBUt50d3hbwJ92XESlE7LiQ==", - "dev": true, - "dependencies": { - "@jest/console": "^29.5.0", - "@jest/reporters": "^29.5.0", - "@jest/test-result": "^29.5.0", - "@jest/transform": "^29.5.0", - "@jest/types": "^29.5.0", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "jest-changed-files": "^29.5.0", - "jest-config": "^29.5.0", - "jest-haste-map": "^29.5.0", - "jest-message-util": "^29.5.0", - "jest-regex-util": "^29.4.3", - "jest-resolve": "^29.5.0", - "jest-resolve-dependencies": "^29.5.0", - "jest-runner": "^29.5.0", - "jest-runtime": "^29.5.0", - "jest-snapshot": "^29.5.0", - "jest-util": "^29.5.0", - "jest-validate": "^29.5.0", - "jest-watcher": "^29.5.0", - "micromatch": "^4.0.4", - "pretty-format": "^29.5.0", - "slash": "^3.0.0", - "strip-ansi": "^6.0.0" - }, - "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/core/node_modules/jest-config": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.5.0.tgz", - "integrity": "sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==", - "dev": true, - "dependencies": { - "@babel/core": "^7.11.6", - "@jest/test-sequencer": "^29.5.0", - "@jest/types": "^29.5.0", - "babel-jest": "^29.5.0", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "deepmerge": "^4.2.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-circus": "^29.5.0", - "jest-environment-node": "^29.5.0", - "jest-get-type": "^29.4.3", - "jest-regex-util": "^29.4.3", - "jest-resolve": "^29.5.0", - "jest-runner": "^29.5.0", - "jest-util": "^29.5.0", - "jest-validate": "^29.5.0", - "micromatch": "^4.0.4", - "parse-json": "^5.2.0", - "pretty-format": "^29.5.0", - "slash": "^3.0.0", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "@types/node": "*", - "ts-node": ">=9.0.0" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "ts-node": { - "optional": true - } - } - }, - "node_modules/@jest/core/node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@jest/environment": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.5.0.tgz", - "integrity": "sha512-5FXw2+wD29YU1d4I2htpRX7jYnAyTRjP2CsXQdo9SAM8g3ifxWPSV0HnClSn71xwctr0U3oZIIH+dtbfmnbXVQ==", - "dev": true, - "dependencies": { - "@jest/fake-timers": "^29.5.0", - "@jest/types": "^29.5.0", - "@types/node": "*", - "jest-mock": "^29.5.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/expect": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.5.0.tgz", - "integrity": "sha512-PueDR2HGihN3ciUNGr4uelropW7rqUfTiOn+8u0leg/42UhblPxHkfoh0Ruu3I9Y1962P3u2DY4+h7GVTSVU6g==", - "dev": true, - "dependencies": { - "expect": "^29.5.0", - "jest-snapshot": "^29.5.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/expect-utils": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.5.0.tgz", - "integrity": "sha512-fmKzsidoXQT2KwnrwE0SQq3uj8Z763vzR8LnLBwC2qYWEFpjX8daRsk6rHUM1QvNlEW/UJXNXm59ztmJJWs2Mg==", - "dev": true, - "dependencies": { - "jest-get-type": "^29.4.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/fake-timers": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.5.0.tgz", - "integrity": "sha512-9ARvuAAQcBwDAqOnglWq2zwNIRUDtk/SCkp/ToGEhFv5r86K21l+VEs0qNTaXtyiY0lEePl3kylijSYJQqdbDg==", - "dev": true, - "dependencies": { - "@jest/types": "^29.5.0", - "@sinonjs/fake-timers": "^10.0.2", - "@types/node": "*", - "jest-message-util": "^29.5.0", - "jest-mock": "^29.5.0", - "jest-util": "^29.5.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/globals": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.5.0.tgz", - "integrity": "sha512-S02y0qMWGihdzNbUiqSAiKSpSozSuHX5UYc7QbnHP+D9Lyw8DgGGCinrN9uSuHPeKgSSzvPom2q1nAtBvUsvPQ==", - "dev": true, - "dependencies": { - "@jest/environment": "^29.5.0", - "@jest/expect": "^29.5.0", - "@jest/types": "^29.5.0", - "jest-mock": "^29.5.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/reporters": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.5.0.tgz", - "integrity": "sha512-D05STXqj/M8bP9hQNSICtPqz97u7ffGzZu+9XLucXhkOFBqKcXe04JLZOgIekOxdb73MAoBUFnqvf7MCpKk5OA==", - "dev": true, - "dependencies": { - "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^29.5.0", - "@jest/test-result": "^29.5.0", - "@jest/transform": "^29.5.0", - "@jest/types": "^29.5.0", - "@jridgewell/trace-mapping": "^0.3.15", - "@types/node": "*", - "chalk": "^4.0.0", - "collect-v8-coverage": "^1.0.0", - "exit": "^0.1.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^5.1.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.1.3", - "jest-message-util": "^29.5.0", - "jest-util": "^29.5.0", - "jest-worker": "^29.5.0", - "slash": "^3.0.0", - "string-length": "^4.0.1", - "strip-ansi": "^6.0.0", - "v8-to-istanbul": "^9.0.1" - }, - "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/schemas": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.4.3.tgz", - "integrity": "sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg==", - "dev": true, - "dependencies": { - "@sinclair/typebox": "^0.25.16" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/source-map": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.4.3.tgz", - "integrity": "sha512-qyt/mb6rLyd9j1jUts4EQncvS6Yy3PM9HghnNv86QBlV+zdL2inCdK1tuVlL+J+lpiw2BI67qXOrX3UurBqQ1w==", - "dev": true, - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.15", - "callsites": "^3.0.0", - "graceful-fs": "^4.2.9" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/test-result": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.5.0.tgz", - "integrity": "sha512-fGl4rfitnbfLsrfx1uUpDEESS7zM8JdgZgOCQuxQvL1Sn/I6ijeAVQWGfXI9zb1i9Mzo495cIpVZhA0yr60PkQ==", - "dev": true, - "dependencies": { - "@jest/console": "^29.5.0", - "@jest/types": "^29.5.0", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/test-sequencer": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.5.0.tgz", - "integrity": "sha512-yPafQEcKjkSfDXyvtgiV4pevSeyuA6MQr6ZIdVkWJly9vkqjnFfcfhRQqpD5whjoU8EORki752xQmjaqoFjzMQ==", - "dev": true, - "dependencies": { - "@jest/test-result": "^29.5.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.5.0", - "slash": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/transform": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.5.0.tgz", - "integrity": "sha512-8vbeZWqLJOvHaDfeMuoHITGKSz5qWc9u04lnWrQE3VyuSw604PzQM824ZeX9XSjUCeDiE3GuxZe5UKa8J61NQw==", - "dev": true, - "dependencies": { - "@babel/core": "^7.11.6", - "@jest/types": "^29.5.0", - "@jridgewell/trace-mapping": "^0.3.15", - "babel-plugin-istanbul": "^6.1.1", - "chalk": "^4.0.0", - "convert-source-map": "^2.0.0", - "fast-json-stable-stringify": "^2.1.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.5.0", - "jest-regex-util": "^29.4.3", - "jest-util": "^29.5.0", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", - "slash": "^3.0.0", - "write-file-atomic": "^4.0.2" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/types": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.5.0.tgz", - "integrity": "sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==", - "dev": true, - "dependencies": { - "@jest/schemas": "^29.4.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.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, - "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.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", - "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, - "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==" - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.18", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz", - "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==", - "dev": true, - "dependencies": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" - } - }, - "node_modules/@jridgewell/trace-mapping/node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", - "dev": true - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@octokit/auth-app": { - "version": "4.0.13", - "resolved": "https://registry.npmjs.org/@octokit/auth-app/-/auth-app-4.0.13.tgz", - "integrity": "sha512-NBQkmR/Zsc+8fWcVIFrwDgNXS7f4XDrkd9LHdi9DPQw1NdGHLviLzRO2ZBwTtepnwHXW5VTrVU9eFGijMUqllg==", - "dependencies": { - "@octokit/auth-oauth-app": "^5.0.0", - "@octokit/auth-oauth-user": "^2.0.0", - "@octokit/request": "^6.0.0", - "@octokit/request-error": "^3.0.0", - "@octokit/types": "^9.0.0", - "deprecation": "^2.3.1", - "lru-cache": "^9.0.0", - "universal-github-app-jwt": "^1.1.1", - "universal-user-agent": "^6.0.0" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/@octokit/auth-app/node_modules/@octokit/endpoint": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-7.0.6.tgz", - "integrity": "sha512-5L4fseVRUsDFGR00tMWD/Trdeeihn999rTMGRMC1G/Ldi1uWlWJzI98H4Iak5DB/RVvQuyMYKqSK/R6mbSOQyg==", - "dependencies": { - "@octokit/types": "^9.0.0", - "is-plain-object": "^5.0.0", - "universal-user-agent": "^6.0.0" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/@octokit/auth-app/node_modules/@octokit/openapi-types": { - "version": "18.0.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-18.0.0.tgz", - "integrity": "sha512-V8GImKs3TeQRxRtXFpG2wl19V7444NIOTDF24AWuIbmNaNYOQMWRbjcGDXV5B+0n887fgDcuMNOmlul+k+oJtw==" - }, - "node_modules/@octokit/auth-app/node_modules/@octokit/request": { - "version": "6.2.8", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-6.2.8.tgz", - "integrity": "sha512-ow4+pkVQ+6XVVsekSYBzJC0VTVvh/FCTUUgTsboGq+DTeWdyIFV8WSCdo0RIxk6wSkBTHqIK1mYuY7nOBXOchw==", - "dependencies": { - "@octokit/endpoint": "^7.0.0", - "@octokit/request-error": "^3.0.0", - "@octokit/types": "^9.0.0", - "is-plain-object": "^5.0.0", - "node-fetch": "^2.6.7", - "universal-user-agent": "^6.0.0" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/@octokit/auth-app/node_modules/@octokit/request-error": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-3.0.3.tgz", - "integrity": "sha512-crqw3V5Iy2uOU5Np+8M/YexTlT8zxCfI+qu+LxUB7SZpje4Qmx3mub5DfEKSO8Ylyk0aogi6TYdf6kxzh2BguQ==", - "dependencies": { - "@octokit/types": "^9.0.0", - "deprecation": "^2.0.0", - "once": "^1.4.0" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/@octokit/auth-app/node_modules/@octokit/types": { - "version": "9.3.2", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-9.3.2.tgz", - "integrity": "sha512-D4iHGTdAnEEVsB8fl95m1hiz7D5YiRdQ9b/OEb3BYRVwbLsGHcRVPz+u+BgRLNk0Q0/4iZCBqDN96j2XNxfXrA==", - "dependencies": { - "@octokit/openapi-types": "^18.0.0" - } - }, - "node_modules/@octokit/auth-app/node_modules/lru-cache": { - "version": "9.1.2", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-9.1.2.tgz", - "integrity": "sha512-ERJq3FOzJTxBbFjZ7iDs+NiK4VI9Wz+RdrrAB8dio1oV+YvdPzUEE4QNiT2VD51DkIbCYRUUzCRkssXCHqSnKQ==", - "engines": { - "node": "14 || >=16.14" - } - }, - "node_modules/@octokit/auth-oauth-app": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/@octokit/auth-oauth-app/-/auth-oauth-app-5.0.6.tgz", - "integrity": "sha512-SxyfIBfeFcWd9Z/m1xa4LENTQ3l1y6Nrg31k2Dcb1jS5ov7pmwMJZ6OGX8q3K9slRgVpeAjNA1ipOAMHkieqyw==", - "dependencies": { - "@octokit/auth-oauth-device": "^4.0.0", - "@octokit/auth-oauth-user": "^2.0.0", - "@octokit/request": "^6.0.0", - "@octokit/types": "^9.0.0", - "@types/btoa-lite": "^1.0.0", - "btoa-lite": "^1.0.0", - "universal-user-agent": "^6.0.0" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/@octokit/auth-oauth-app/node_modules/@octokit/endpoint": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-7.0.6.tgz", - "integrity": "sha512-5L4fseVRUsDFGR00tMWD/Trdeeihn999rTMGRMC1G/Ldi1uWlWJzI98H4Iak5DB/RVvQuyMYKqSK/R6mbSOQyg==", - "dependencies": { - "@octokit/types": "^9.0.0", - "is-plain-object": "^5.0.0", - "universal-user-agent": "^6.0.0" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/@octokit/auth-oauth-app/node_modules/@octokit/openapi-types": { - "version": "18.0.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-18.0.0.tgz", - "integrity": "sha512-V8GImKs3TeQRxRtXFpG2wl19V7444NIOTDF24AWuIbmNaNYOQMWRbjcGDXV5B+0n887fgDcuMNOmlul+k+oJtw==" - }, - "node_modules/@octokit/auth-oauth-app/node_modules/@octokit/request": { - "version": "6.2.8", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-6.2.8.tgz", - "integrity": "sha512-ow4+pkVQ+6XVVsekSYBzJC0VTVvh/FCTUUgTsboGq+DTeWdyIFV8WSCdo0RIxk6wSkBTHqIK1mYuY7nOBXOchw==", - "dependencies": { - "@octokit/endpoint": "^7.0.0", - "@octokit/request-error": "^3.0.0", - "@octokit/types": "^9.0.0", - "is-plain-object": "^5.0.0", - "node-fetch": "^2.6.7", - "universal-user-agent": "^6.0.0" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/@octokit/auth-oauth-app/node_modules/@octokit/request-error": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-3.0.3.tgz", - "integrity": "sha512-crqw3V5Iy2uOU5Np+8M/YexTlT8zxCfI+qu+LxUB7SZpje4Qmx3mub5DfEKSO8Ylyk0aogi6TYdf6kxzh2BguQ==", - "dependencies": { - "@octokit/types": "^9.0.0", - "deprecation": "^2.0.0", - "once": "^1.4.0" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/@octokit/auth-oauth-app/node_modules/@octokit/types": { - "version": "9.3.2", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-9.3.2.tgz", - "integrity": "sha512-D4iHGTdAnEEVsB8fl95m1hiz7D5YiRdQ9b/OEb3BYRVwbLsGHcRVPz+u+BgRLNk0Q0/4iZCBqDN96j2XNxfXrA==", - "dependencies": { - "@octokit/openapi-types": "^18.0.0" - } - }, - "node_modules/@octokit/auth-oauth-device": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@octokit/auth-oauth-device/-/auth-oauth-device-4.0.5.tgz", - "integrity": "sha512-XyhoWRTzf2ZX0aZ52a6Ew5S5VBAfwwx1QnC2Np6Et3MWQpZjlREIcbcvVZtkNuXp6Z9EeiSLSDUqm3C+aMEHzQ==", - "dependencies": { - "@octokit/oauth-methods": "^2.0.0", - "@octokit/request": "^6.0.0", - "@octokit/types": "^9.0.0", - "universal-user-agent": "^6.0.0" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/@octokit/auth-oauth-device/node_modules/@octokit/endpoint": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-7.0.6.tgz", - "integrity": "sha512-5L4fseVRUsDFGR00tMWD/Trdeeihn999rTMGRMC1G/Ldi1uWlWJzI98H4Iak5DB/RVvQuyMYKqSK/R6mbSOQyg==", - "dependencies": { - "@octokit/types": "^9.0.0", - "is-plain-object": "^5.0.0", - "universal-user-agent": "^6.0.0" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/@octokit/auth-oauth-device/node_modules/@octokit/openapi-types": { - "version": "18.0.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-18.0.0.tgz", - "integrity": "sha512-V8GImKs3TeQRxRtXFpG2wl19V7444NIOTDF24AWuIbmNaNYOQMWRbjcGDXV5B+0n887fgDcuMNOmlul+k+oJtw==" - }, - "node_modules/@octokit/auth-oauth-device/node_modules/@octokit/request": { - "version": "6.2.8", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-6.2.8.tgz", - "integrity": "sha512-ow4+pkVQ+6XVVsekSYBzJC0VTVvh/FCTUUgTsboGq+DTeWdyIFV8WSCdo0RIxk6wSkBTHqIK1mYuY7nOBXOchw==", - "dependencies": { - "@octokit/endpoint": "^7.0.0", - "@octokit/request-error": "^3.0.0", - "@octokit/types": "^9.0.0", - "is-plain-object": "^5.0.0", - "node-fetch": "^2.6.7", - "universal-user-agent": "^6.0.0" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/@octokit/auth-oauth-device/node_modules/@octokit/request-error": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-3.0.3.tgz", - "integrity": "sha512-crqw3V5Iy2uOU5Np+8M/YexTlT8zxCfI+qu+LxUB7SZpje4Qmx3mub5DfEKSO8Ylyk0aogi6TYdf6kxzh2BguQ==", - "dependencies": { - "@octokit/types": "^9.0.0", - "deprecation": "^2.0.0", - "once": "^1.4.0" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/@octokit/auth-oauth-device/node_modules/@octokit/types": { - "version": "9.3.2", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-9.3.2.tgz", - "integrity": "sha512-D4iHGTdAnEEVsB8fl95m1hiz7D5YiRdQ9b/OEb3BYRVwbLsGHcRVPz+u+BgRLNk0Q0/4iZCBqDN96j2XNxfXrA==", - "dependencies": { - "@octokit/openapi-types": "^18.0.0" - } - }, - "node_modules/@octokit/auth-oauth-user": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@octokit/auth-oauth-user/-/auth-oauth-user-2.1.2.tgz", - "integrity": "sha512-kkRqNmFe7s5GQcojE3nSlF+AzYPpPv7kvP/xYEnE57584pixaFBH8Vovt+w5Y3E4zWUEOxjdLItmBTFAWECPAg==", - "dependencies": { - "@octokit/auth-oauth-device": "^4.0.0", - "@octokit/oauth-methods": "^2.0.0", - "@octokit/request": "^6.0.0", - "@octokit/types": "^9.0.0", - "btoa-lite": "^1.0.0", - "universal-user-agent": "^6.0.0" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/@octokit/auth-oauth-user/node_modules/@octokit/endpoint": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-7.0.6.tgz", - "integrity": "sha512-5L4fseVRUsDFGR00tMWD/Trdeeihn999rTMGRMC1G/Ldi1uWlWJzI98H4Iak5DB/RVvQuyMYKqSK/R6mbSOQyg==", - "dependencies": { - "@octokit/types": "^9.0.0", - "is-plain-object": "^5.0.0", - "universal-user-agent": "^6.0.0" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/@octokit/auth-oauth-user/node_modules/@octokit/openapi-types": { - "version": "18.0.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-18.0.0.tgz", - "integrity": "sha512-V8GImKs3TeQRxRtXFpG2wl19V7444NIOTDF24AWuIbmNaNYOQMWRbjcGDXV5B+0n887fgDcuMNOmlul+k+oJtw==" - }, - "node_modules/@octokit/auth-oauth-user/node_modules/@octokit/request": { - "version": "6.2.8", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-6.2.8.tgz", - "integrity": "sha512-ow4+pkVQ+6XVVsekSYBzJC0VTVvh/FCTUUgTsboGq+DTeWdyIFV8WSCdo0RIxk6wSkBTHqIK1mYuY7nOBXOchw==", - "dependencies": { - "@octokit/endpoint": "^7.0.0", - "@octokit/request-error": "^3.0.0", - "@octokit/types": "^9.0.0", - "is-plain-object": "^5.0.0", - "node-fetch": "^2.6.7", - "universal-user-agent": "^6.0.0" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/@octokit/auth-oauth-user/node_modules/@octokit/request-error": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-3.0.3.tgz", - "integrity": "sha512-crqw3V5Iy2uOU5Np+8M/YexTlT8zxCfI+qu+LxUB7SZpje4Qmx3mub5DfEKSO8Ylyk0aogi6TYdf6kxzh2BguQ==", - "dependencies": { - "@octokit/types": "^9.0.0", - "deprecation": "^2.0.0", - "once": "^1.4.0" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/@octokit/auth-oauth-user/node_modules/@octokit/types": { - "version": "9.3.2", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-9.3.2.tgz", - "integrity": "sha512-D4iHGTdAnEEVsB8fl95m1hiz7D5YiRdQ9b/OEb3BYRVwbLsGHcRVPz+u+BgRLNk0Q0/4iZCBqDN96j2XNxfXrA==", - "dependencies": { - "@octokit/openapi-types": "^18.0.0" - } - }, - "node_modules/@octokit/auth-token": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.5.0.tgz", - "integrity": "sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g==", - "dependencies": { - "@octokit/types": "^6.0.3" - } - }, - "node_modules/@octokit/auth-token/node_modules/@octokit/openapi-types": { - "version": "12.11.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.11.0.tgz", - "integrity": "sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==" - }, - "node_modules/@octokit/auth-token/node_modules/@octokit/types": { - "version": "6.41.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", - "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", - "dependencies": { - "@octokit/openapi-types": "^12.11.0" - } - }, - "node_modules/@octokit/auth-unauthenticated": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@octokit/auth-unauthenticated/-/auth-unauthenticated-3.0.5.tgz", - "integrity": "sha512-yH2GPFcjrTvDWPwJWWCh0tPPtTL5SMgivgKPA+6v/XmYN6hGQkAto8JtZibSKOpf8ipmeYhLNWQ2UgW0GYILCw==", - "dependencies": { - "@octokit/request-error": "^3.0.0", - "@octokit/types": "^9.0.0" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/@octokit/auth-unauthenticated/node_modules/@octokit/openapi-types": { - "version": "18.0.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-18.0.0.tgz", - "integrity": "sha512-V8GImKs3TeQRxRtXFpG2wl19V7444NIOTDF24AWuIbmNaNYOQMWRbjcGDXV5B+0n887fgDcuMNOmlul+k+oJtw==" - }, - "node_modules/@octokit/auth-unauthenticated/node_modules/@octokit/request-error": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-3.0.3.tgz", - "integrity": "sha512-crqw3V5Iy2uOU5Np+8M/YexTlT8zxCfI+qu+LxUB7SZpje4Qmx3mub5DfEKSO8Ylyk0aogi6TYdf6kxzh2BguQ==", - "dependencies": { - "@octokit/types": "^9.0.0", - "deprecation": "^2.0.0", - "once": "^1.4.0" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/@octokit/auth-unauthenticated/node_modules/@octokit/types": { - "version": "9.3.2", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-9.3.2.tgz", - "integrity": "sha512-D4iHGTdAnEEVsB8fl95m1hiz7D5YiRdQ9b/OEb3BYRVwbLsGHcRVPz+u+BgRLNk0Q0/4iZCBqDN96j2XNxfXrA==", - "dependencies": { - "@octokit/openapi-types": "^18.0.0" - } - }, - "node_modules/@octokit/core": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@octokit/core/-/core-3.6.0.tgz", - "integrity": "sha512-7RKRKuA4xTjMhY+eG3jthb3hlZCsOwg3rztWh75Xc+ShDWOfDDATWbeZpAHBNRpm4Tv9WgBMOy1zEJYXG6NJ7Q==", - "dependencies": { - "@octokit/auth-token": "^2.4.4", - "@octokit/graphql": "^4.5.8", - "@octokit/request": "^5.6.3", - "@octokit/request-error": "^2.0.5", - "@octokit/types": "^6.0.3", - "before-after-hook": "^2.2.0", - "universal-user-agent": "^6.0.0" - } - }, - "node_modules/@octokit/core/node_modules/@octokit/openapi-types": { - "version": "12.11.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.11.0.tgz", - "integrity": "sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==" - }, - "node_modules/@octokit/core/node_modules/@octokit/types": { - "version": "6.41.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", - "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", - "dependencies": { - "@octokit/openapi-types": "^12.11.0" - } - }, - "node_modules/@octokit/endpoint": { - "version": "6.0.12", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.12.tgz", - "integrity": "sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA==", - "dependencies": { - "@octokit/types": "^6.0.3", - "is-plain-object": "^5.0.0", - "universal-user-agent": "^6.0.0" - } - }, - "node_modules/@octokit/endpoint/node_modules/@octokit/openapi-types": { - "version": "12.11.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.11.0.tgz", - "integrity": "sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==" - }, - "node_modules/@octokit/endpoint/node_modules/@octokit/types": { - "version": "6.41.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", - "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", - "dependencies": { - "@octokit/openapi-types": "^12.11.0" - } - }, - "node_modules/@octokit/graphql": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.8.0.tgz", - "integrity": "sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg==", - "dependencies": { - "@octokit/request": "^5.6.0", - "@octokit/types": "^6.0.3", - "universal-user-agent": "^6.0.0" - } - }, - "node_modules/@octokit/graphql/node_modules/@octokit/openapi-types": { - "version": "12.11.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.11.0.tgz", - "integrity": "sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==" - }, - "node_modules/@octokit/graphql/node_modules/@octokit/types": { - "version": "6.41.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", - "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", - "dependencies": { - "@octokit/openapi-types": "^12.11.0" - } - }, - "node_modules/@octokit/oauth-authorization-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@octokit/oauth-authorization-url/-/oauth-authorization-url-5.0.0.tgz", - "integrity": "sha512-y1WhN+ERDZTh0qZ4SR+zotgsQUE1ysKnvBt1hvDRB2WRzYtVKQjn97HEPzoehh66Fj9LwNdlZh+p6TJatT0zzg==", - "engines": { - "node": ">= 14" - } - }, - "node_modules/@octokit/oauth-methods": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@octokit/oauth-methods/-/oauth-methods-2.0.6.tgz", - "integrity": "sha512-l9Uml2iGN2aTWLZcm8hV+neBiFXAQ9+3sKiQe/sgumHlL6HDg0AQ8/l16xX/5jJvfxueqTW5CWbzd0MjnlfHZw==", - "dependencies": { - "@octokit/oauth-authorization-url": "^5.0.0", - "@octokit/request": "^6.2.3", - "@octokit/request-error": "^3.0.3", - "@octokit/types": "^9.0.0", - "btoa-lite": "^1.0.0" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/@octokit/oauth-methods/node_modules/@octokit/endpoint": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-7.0.6.tgz", - "integrity": "sha512-5L4fseVRUsDFGR00tMWD/Trdeeihn999rTMGRMC1G/Ldi1uWlWJzI98H4Iak5DB/RVvQuyMYKqSK/R6mbSOQyg==", - "dependencies": { - "@octokit/types": "^9.0.0", - "is-plain-object": "^5.0.0", - "universal-user-agent": "^6.0.0" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/@octokit/oauth-methods/node_modules/@octokit/openapi-types": { - "version": "18.0.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-18.0.0.tgz", - "integrity": "sha512-V8GImKs3TeQRxRtXFpG2wl19V7444NIOTDF24AWuIbmNaNYOQMWRbjcGDXV5B+0n887fgDcuMNOmlul+k+oJtw==" - }, - "node_modules/@octokit/oauth-methods/node_modules/@octokit/request": { - "version": "6.2.8", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-6.2.8.tgz", - "integrity": "sha512-ow4+pkVQ+6XVVsekSYBzJC0VTVvh/FCTUUgTsboGq+DTeWdyIFV8WSCdo0RIxk6wSkBTHqIK1mYuY7nOBXOchw==", - "dependencies": { - "@octokit/endpoint": "^7.0.0", - "@octokit/request-error": "^3.0.0", - "@octokit/types": "^9.0.0", - "is-plain-object": "^5.0.0", - "node-fetch": "^2.6.7", - "universal-user-agent": "^6.0.0" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/@octokit/oauth-methods/node_modules/@octokit/request-error": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-3.0.3.tgz", - "integrity": "sha512-crqw3V5Iy2uOU5Np+8M/YexTlT8zxCfI+qu+LxUB7SZpje4Qmx3mub5DfEKSO8Ylyk0aogi6TYdf6kxzh2BguQ==", - "dependencies": { - "@octokit/types": "^9.0.0", - "deprecation": "^2.0.0", - "once": "^1.4.0" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/@octokit/oauth-methods/node_modules/@octokit/types": { - "version": "9.3.2", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-9.3.2.tgz", - "integrity": "sha512-D4iHGTdAnEEVsB8fl95m1hiz7D5YiRdQ9b/OEb3BYRVwbLsGHcRVPz+u+BgRLNk0Q0/4iZCBqDN96j2XNxfXrA==", - "dependencies": { - "@octokit/openapi-types": "^18.0.0" - } - }, - "node_modules/@octokit/openapi-types": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-14.0.0.tgz", - "integrity": "sha512-HNWisMYlR8VCnNurDU6os2ikx0s0VyEjDYHNS/h4cgb8DeOxQ0n72HyinUtdDVxJhFy3FWLGl0DJhfEWk3P5Iw==" - }, - "node_modules/@octokit/plugin-enterprise-compatibility": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@octokit/plugin-enterprise-compatibility/-/plugin-enterprise-compatibility-1.3.0.tgz", - "integrity": "sha512-h34sMGdEOER/OKrZJ55v26ntdHb9OPfR1fwOx6Q4qYyyhWA104o11h9tFxnS/l41gED6WEI41Vu2G2zHDVC5lQ==", - "dependencies": { - "@octokit/request-error": "^2.1.0", - "@octokit/types": "^6.0.3" - } - }, - "node_modules/@octokit/plugin-enterprise-compatibility/node_modules/@octokit/openapi-types": { - "version": "12.11.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.11.0.tgz", - "integrity": "sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==" - }, - "node_modules/@octokit/plugin-enterprise-compatibility/node_modules/@octokit/types": { - "version": "6.41.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", - "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", - "dependencies": { - "@octokit/openapi-types": "^12.11.0" - } - }, - "node_modules/@octokit/plugin-paginate-rest": { - "version": "2.21.3", - "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.21.3.tgz", - "integrity": "sha512-aCZTEf0y2h3OLbrgKkrfFdjRL6eSOo8komneVQJnYecAxIej7Bafor2xhuDJOIFau4pk0i/P28/XgtbyPF0ZHw==", - "dependencies": { - "@octokit/types": "^6.40.0" - }, - "peerDependencies": { - "@octokit/core": ">=2" - } - }, - "node_modules/@octokit/plugin-paginate-rest/node_modules/@octokit/openapi-types": { - "version": "12.11.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.11.0.tgz", - "integrity": "sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==" - }, - "node_modules/@octokit/plugin-paginate-rest/node_modules/@octokit/types": { - "version": "6.41.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", - "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", - "dependencies": { - "@octokit/openapi-types": "^12.11.0" - } - }, - "node_modules/@octokit/plugin-rest-endpoint-methods": { - "version": "5.16.2", - "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.16.2.tgz", - "integrity": "sha512-8QFz29Fg5jDuTPXVtey05BLm7OB+M8fnvE64RNegzX7U+5NUXcOcnpTIK0YfSHBg8gYd0oxIq3IZTe9SfPZiRw==", - "dependencies": { - "@octokit/types": "^6.39.0", - "deprecation": "^2.3.1" - }, - "peerDependencies": { - "@octokit/core": ">=3" - } - }, - "node_modules/@octokit/plugin-rest-endpoint-methods/node_modules/@octokit/openapi-types": { - "version": "12.11.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.11.0.tgz", - "integrity": "sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==" - }, - "node_modules/@octokit/plugin-rest-endpoint-methods/node_modules/@octokit/types": { - "version": "6.41.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", - "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", - "dependencies": { - "@octokit/openapi-types": "^12.11.0" - } - }, - "node_modules/@octokit/plugin-retry": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/@octokit/plugin-retry/-/plugin-retry-3.0.9.tgz", - "integrity": "sha512-r+fArdP5+TG6l1Rv/C9hVoty6tldw6cE2pRHNGmFPdyfrc696R6JjrQ3d7HdVqGwuzfyrcaLAKD7K8TX8aehUQ==", - "dependencies": { - "@octokit/types": "^6.0.3", - "bottleneck": "^2.15.3" - } - }, - "node_modules/@octokit/plugin-retry/node_modules/@octokit/openapi-types": { - "version": "12.11.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.11.0.tgz", - "integrity": "sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==" - }, - "node_modules/@octokit/plugin-retry/node_modules/@octokit/types": { - "version": "6.41.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", - "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", - "dependencies": { - "@octokit/openapi-types": "^12.11.0" - } - }, - "node_modules/@octokit/plugin-throttling": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/@octokit/plugin-throttling/-/plugin-throttling-3.7.0.tgz", - "integrity": "sha512-qrKT1Yl/KuwGSC6/oHpLBot3ooC9rq0/ryDYBCpkRtoj+R8T47xTMDT6Tk2CxWopFota/8Pi/2SqArqwC0JPow==", - "dependencies": { - "@octokit/types": "^6.0.1", - "bottleneck": "^2.15.3" - }, - "peerDependencies": { - "@octokit/core": "^3.5.0" - } - }, - "node_modules/@octokit/plugin-throttling/node_modules/@octokit/openapi-types": { - "version": "12.11.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.11.0.tgz", - "integrity": "sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==" - }, - "node_modules/@octokit/plugin-throttling/node_modules/@octokit/types": { - "version": "6.41.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", - "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", - "dependencies": { - "@octokit/openapi-types": "^12.11.0" - } - }, - "node_modules/@octokit/request": { - "version": "5.6.3", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.6.3.tgz", - "integrity": "sha512-bFJl0I1KVc9jYTe9tdGGpAMPy32dLBXXo1dS/YwSCTL/2nd9XeHsY616RE3HPXDVk+a+dBuzyz5YdlXwcDTr2A==", - "dependencies": { - "@octokit/endpoint": "^6.0.1", - "@octokit/request-error": "^2.1.0", - "@octokit/types": "^6.16.1", - "is-plain-object": "^5.0.0", - "node-fetch": "^2.6.7", - "universal-user-agent": "^6.0.0" - } - }, - "node_modules/@octokit/request-error": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.1.0.tgz", - "integrity": "sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==", - "dependencies": { - "@octokit/types": "^6.0.3", - "deprecation": "^2.0.0", - "once": "^1.4.0" - } - }, - "node_modules/@octokit/request-error/node_modules/@octokit/openapi-types": { - "version": "12.11.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.11.0.tgz", - "integrity": "sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==" - }, - "node_modules/@octokit/request-error/node_modules/@octokit/types": { - "version": "6.41.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", - "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", - "dependencies": { - "@octokit/openapi-types": "^12.11.0" - } - }, - "node_modules/@octokit/request/node_modules/@octokit/openapi-types": { - "version": "12.11.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.11.0.tgz", - "integrity": "sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==" - }, - "node_modules/@octokit/request/node_modules/@octokit/types": { - "version": "6.41.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", - "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", - "dependencies": { - "@octokit/openapi-types": "^12.11.0" - } - }, - "node_modules/@octokit/types": { - "version": "8.2.1", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-8.2.1.tgz", - "integrity": "sha512-8oWMUji8be66q2B9PmEIUyQm00VPDPun07umUWSaCwxmeaquFBro4Hcc3ruVoDo3zkQyZBlRvhIMEYS3pBhanw==", - "dependencies": { - "@octokit/openapi-types": "^14.0.0" - } - }, - "node_modules/@octokit/webhooks": { - "version": "9.26.0", - "resolved": "https://registry.npmjs.org/@octokit/webhooks/-/webhooks-9.26.0.tgz", - "integrity": "sha512-foZlsgrTDwAmD5j2Czn6ji10lbWjGDVsUxTIydjG9KTkAWKJrFapXJgO5SbGxRwfPd3OJdhK3nA2YPqVhxLXqA==", - "dependencies": { - "@octokit/request-error": "^2.0.2", - "@octokit/webhooks-methods": "^2.0.0", - "@octokit/webhooks-types": "5.8.0", - "aggregate-error": "^3.1.0" - } - }, - "node_modules/@octokit/webhooks-methods": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@octokit/webhooks-methods/-/webhooks-methods-2.0.0.tgz", - "integrity": "sha512-35cfQ4YWlnZnmZKmIxlGPUPLtbkF8lr/A/1Sk1eC0ddLMwQN06dOuLc+dI3YLQS+T+MoNt3DIQ0NynwgKPilig==" - }, - "node_modules/@octokit/webhooks-types": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@octokit/webhooks-types/-/webhooks-types-5.8.0.tgz", - "integrity": "sha512-8adktjIb76A7viIdayQSFuBEwOzwhDC+9yxZpKNHjfzrlostHCw0/N7JWpWMObfElwvJMk2fY2l1noENCk9wmw==" - }, - "node_modules/@probot/get-private-key": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@probot/get-private-key/-/get-private-key-1.1.1.tgz", - "integrity": "sha512-hOmBNSAhSZc6PaNkTvj6CO9R5J67ODJ+w5XQlDW9w/6mtcpHWK4L+PZcW0YwVM7PpetLZjN6rsKQIR9yqIaWlA==", - "dependencies": { - "@types/is-base64": "^1.1.0", - "is-base64": "^1.1.0" - } - }, - "node_modules/@probot/octokit-plugin-config": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/@probot/octokit-plugin-config/-/octokit-plugin-config-1.1.6.tgz", - "integrity": "sha512-L29wmnFvilzSfWn9tUgItxdLv0LJh2ICjma3FmLr80Spu3wZ9nHyRrKMo9R5/K2m7VuWmgoKnkgRt2zPzAQBEQ==", - "dependencies": { - "@types/js-yaml": "^4.0.5", - "js-yaml": "^4.1.0" - }, - "peerDependencies": { - "@octokit/core": ">=3" - } - }, - "node_modules/@probot/octokit-plugin-config/node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" - }, - "node_modules/@probot/octokit-plugin-config/node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/@probot/pino": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/@probot/pino/-/pino-2.3.5.tgz", - "integrity": "sha512-IiyiNZonMw1dHC4EAdD55y5owV733d9Gll/IKsrLikB7EJ54+eMCOtL/qo+OmgWN9XV3NTDfziEQF2og/OBKog==", - "dependencies": { - "@sentry/node": "^6.0.0", - "pino-pretty": "^6.0.0", - "pump": "^3.0.0", - "readable-stream": "^3.6.0", - "split2": "^4.0.0" - }, - "bin": { - "pino-probot": "cli.js" - } - }, - "node_modules/@sentry/core": { - "version": "6.19.7", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-6.19.7.tgz", - "integrity": "sha512-tOfZ/umqB2AcHPGbIrsFLcvApdTm9ggpi/kQZFkej7kMphjT+SGBiQfYtjyg9jcRW+ilAR4JXC9BGKsdEQ+8Vw==", - "dependencies": { - "@sentry/hub": "6.19.7", - "@sentry/minimal": "6.19.7", - "@sentry/types": "6.19.7", - "@sentry/utils": "6.19.7", - "tslib": "^1.9.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@sentry/hub": { - "version": "6.19.7", - "resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-6.19.7.tgz", - "integrity": "sha512-y3OtbYFAqKHCWezF0EGGr5lcyI2KbaXW2Ik7Xp8Mu9TxbSTuwTe4rTntwg8ngPjUQU3SUHzgjqVB8qjiGqFXCA==", - "dependencies": { - "@sentry/types": "6.19.7", - "@sentry/utils": "6.19.7", - "tslib": "^1.9.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@sentry/minimal": { - "version": "6.19.7", - "resolved": "https://registry.npmjs.org/@sentry/minimal/-/minimal-6.19.7.tgz", - "integrity": "sha512-wcYmSJOdvk6VAPx8IcmZgN08XTXRwRtB1aOLZm+MVHjIZIhHoBGZJYTVQS/BWjldsamj2cX3YGbGXNunaCfYJQ==", - "dependencies": { - "@sentry/hub": "6.19.7", - "@sentry/types": "6.19.7", - "tslib": "^1.9.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@sentry/node": { - "version": "6.19.7", - "resolved": "https://registry.npmjs.org/@sentry/node/-/node-6.19.7.tgz", - "integrity": "sha512-gtmRC4dAXKODMpHXKfrkfvyBL3cI8y64vEi3fDD046uqYcrWdgoQsffuBbxMAizc6Ez1ia+f0Flue6p15Qaltg==", - "dependencies": { - "@sentry/core": "6.19.7", - "@sentry/hub": "6.19.7", - "@sentry/types": "6.19.7", - "@sentry/utils": "6.19.7", - "cookie": "^0.4.1", - "https-proxy-agent": "^5.0.0", - "lru_map": "^0.3.3", - "tslib": "^1.9.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@sentry/types": { - "version": "6.19.7", - "resolved": "https://registry.npmjs.org/@sentry/types/-/types-6.19.7.tgz", - "integrity": "sha512-jH84pDYE+hHIbVnab3Hr+ZXr1v8QABfhx39KknxqKWr2l0oEItzepV0URvbEhB446lk/S/59230dlUUIBGsXbg==", - "engines": { - "node": ">=6" - } - }, - "node_modules/@sentry/utils": { - "version": "6.19.7", - "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-6.19.7.tgz", - "integrity": "sha512-z95ECmE3i9pbWoXQrD/7PgkBAzJYR+iXtPuTkpBjDKs86O3mT+PXOT3BAn79w2wkn7/i3vOGD2xVr1uiMl26dA==", - "dependencies": { - "@sentry/types": "6.19.7", - "tslib": "^1.9.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@sinclair/typebox": { - "version": "0.25.24", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.25.24.tgz", - "integrity": "sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ==", - "dev": true - }, - "node_modules/@sinonjs/commons": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.0.tgz", - "integrity": "sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==", - "dev": true, - "dependencies": { - "type-detect": "4.0.8" - } - }, - "node_modules/@sinonjs/fake-timers": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", - "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", - "dev": true, - "dependencies": { - "@sinonjs/commons": "^3.0.0" - } - }, - "node_modules/@tsconfig/node10": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", - "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==" - }, - "node_modules/@tsconfig/node12": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", - "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==" - }, - "node_modules/@tsconfig/node14": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", - "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==" - }, - "node_modules/@tsconfig/node16": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", - "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==" - }, - "node_modules/@types/babel__core": { - "version": "7.20.1", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.1.tgz", - "integrity": "sha512-aACu/U/omhdk15O4Nfb+fHgH/z3QsfQzpnvRZhYhThms83ZnAOZz7zZAWO7mn2yyNQaA4xTO8GLK3uqFU4bYYw==", - "dev": true, - "dependencies": { - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" - } - }, - "node_modules/@types/babel__generator": { - "version": "7.6.4", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz", - "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==", - "dev": true, - "dependencies": { - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__template": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", - "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", - "dev": true, - "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__traverse": { - "version": "7.20.1", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.1.tgz", - "integrity": "sha512-MitHFXnhtgwsGZWtT68URpOvLN4EREih1u3QtQiN4VdAxWKRVvGCSvw/Qth0M0Qq3pJpnGOu5JaM/ydK7OGbqg==", - "dev": true, - "dependencies": { - "@babel/types": "^7.20.7" - } - }, - "node_modules/@types/body-parser": { - "version": "1.19.2", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", - "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", - "dependencies": { - "@types/connect": "*", - "@types/node": "*" - } - }, - "node_modules/@types/btoa-lite": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/btoa-lite/-/btoa-lite-1.0.0.tgz", - "integrity": "sha512-wJsiX1tosQ+J5+bY5LrSahHxr2wT+uME5UDwdN1kg4frt40euqA+wzECkmq4t5QbveHiJepfdThgQrPw6KiSlg==" - }, - "node_modules/@types/connect": { - "version": "3.4.35", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", - "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/express": { - "version": "4.17.17", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.17.tgz", - "integrity": "sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q==", - "dependencies": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.33", - "@types/qs": "*", - "@types/serve-static": "*" - } - }, - "node_modules/@types/express-serve-static-core": { - "version": "4.17.35", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.35.tgz", - "integrity": "sha512-wALWQwrgiB2AWTT91CB62b6Yt0sNHpznUXeZEcnPU3DRdlDIz74x8Qg1UUYKSVFi+va5vKOLYRBI1bRKiLLKIg==", - "dependencies": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*", - "@types/send": "*" - } - }, - "node_modules/@types/graceful-fs": { - "version": "4.1.6", - "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.6.tgz", - "integrity": "sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/ioredis": { - "version": "4.28.10", - "resolved": "https://registry.npmjs.org/@types/ioredis/-/ioredis-4.28.10.tgz", - "integrity": "sha512-69LyhUgrXdgcNDv7ogs1qXZomnfOEnSmrmMFqKgt1XMJxmoOSG/u3wYy13yACIfKuMJ8IhKgHafDO3sx19zVQQ==", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/is-base64": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@types/is-base64/-/is-base64-1.1.1.tgz", - "integrity": "sha512-JgnGhP+MeSHEQmvxcobcwPEP4Ew56voiq9/0hmP/41lyQ/3gBw/ZCIRy2v+QkEOdeCl58lRcrf6+Y6WMlJGETA==" - }, - "node_modules/@types/istanbul-lib-coverage": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", - "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", - "dev": true - }, - "node_modules/@types/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "*" - } - }, - "node_modules/@types/istanbul-reports": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", - "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/@types/jest": { - "version": "29.5.2", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.2.tgz", - "integrity": "sha512-mSoZVJF5YzGVCk+FsDxzDuH7s+SCkzrgKZzf0Z0T2WudhBUPoF6ktoTPC4R0ZoCPCV5xUvuU6ias5NvxcBcMMg==", - "dev": true, - "dependencies": { - "expect": "^29.0.0", - "pretty-format": "^29.0.0" - } - }, - "node_modules/@types/js-yaml": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-4.0.5.tgz", - "integrity": "sha512-FhpRzf927MNQdRZP0J5DLIdTXhjLYzeUTmLAu69mnVksLH9CJY3IuSeEgbKUki7GQZm0WqDkGzyxju2EZGD2wA==" - }, - "node_modules/@types/json-schema": { - "version": "7.0.12", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz", - "integrity": "sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==", - "dev": true - }, - "node_modules/@types/jsonwebtoken": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz", - "integrity": "sha512-drE6uz7QBKq1fYqqoFKTDRdFCPHd5TCub75BM+D+cMx7NU9hUz7SESLfC2fSCXVFMO5Yj8sOWHuGqPgjc+fz0Q==", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/mime": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", - "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==" - }, - "node_modules/@types/node": { - "version": "18.16.18", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.16.18.tgz", - "integrity": "sha512-/aNaQZD0+iSBAGnvvN2Cx92HqE5sZCPZtx2TsK+4nvV23fFe09jVDvpArXr2j9DnYlzuU9WuoykDDc6wqvpNcw==" - }, - "node_modules/@types/pino": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@types/pino/-/pino-6.3.12.tgz", - "integrity": "sha512-dsLRTq8/4UtVSpJgl9aeqHvbh6pzdmjYD3C092SYgLD2TyoCqHpTJk6vp8DvCTGGc7iowZ2MoiYiVUUCcu7muw==", - "dependencies": { - "@types/node": "*", - "@types/pino-pretty": "*", - "@types/pino-std-serializers": "*", - "sonic-boom": "^2.1.0" - } - }, - "node_modules/@types/pino-http": { - "version": "5.8.1", - "resolved": "https://registry.npmjs.org/@types/pino-http/-/pino-http-5.8.1.tgz", - "integrity": "sha512-A9MW6VCnx5ii7s+Fs5aFIw+aSZcBCpsZ/atpxamu8tTsvWFacxSf2Hrn1Ohn1jkVRB/LiPGOapRXcFawDBnDnA==", - "dependencies": { - "@types/pino": "6.3" - } - }, - "node_modules/@types/pino-pretty": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@types/pino-pretty/-/pino-pretty-5.0.0.tgz", - "integrity": "sha512-N1uzqSzioqz8R3AkDbSJwcfDWeI3YMPNapSQQhnB2ISU4NYgUIcAh+hYT5ygqBM+klX4htpEhXMmoJv3J7GrdA==", - "deprecated": "This is a stub types definition. pino-pretty provides its own type definitions, so you do not need this installed.", - "dependencies": { - "pino-pretty": "*" - } - }, - "node_modules/@types/pino-std-serializers": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/pino-std-serializers/-/pino-std-serializers-4.0.0.tgz", - "integrity": "sha512-gXfUZx2xIBbFYozGms53fT0nvkacx/+62c8iTxrEqH5PkIGAQvDbXg2774VWOycMPbqn5YJBQ3BMsg4Li3dWbg==", - "deprecated": "This is a stub types definition. pino-std-serializers provides its own type definitions, so you do not need this installed.", - "dependencies": { - "pino-std-serializers": "*" - } - }, - "node_modules/@types/prettier": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.3.tgz", - "integrity": "sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==", - "dev": true - }, - "node_modules/@types/qs": { - "version": "6.9.7", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", - "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==" - }, - "node_modules/@types/range-parser": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", - "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==" - }, - "node_modules/@types/semver": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.0.tgz", - "integrity": "sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==", - "dev": true - }, - "node_modules/@types/send": { - "version": "0.17.1", - "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.1.tgz", - "integrity": "sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q==", - "dependencies": { - "@types/mime": "^1", - "@types/node": "*" - } - }, - "node_modules/@types/serve-static": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.1.tgz", - "integrity": "sha512-NUo5XNiAdULrJENtJXZZ3fHtfMolzZwczzBbnAeBbqBwG+LaG6YaJtuwzwGSQZ2wsCrxjEhNNjAkKigy3n8teQ==", - "dependencies": { - "@types/mime": "*", - "@types/node": "*" - } - }, - "node_modules/@types/stack-utils": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", - "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", - "dev": true - }, - "node_modules/@types/webidl-conversions": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.0.tgz", - "integrity": "sha512-xTE1E+YF4aWPJJeUzaZI5DRntlkY3+BCVJi0axFptnjGmAoWxkyREIh/XMrfxVLejwQxMCfDXdICo0VLxThrog==" - }, - "node_modules/@types/whatwg-url": { - "version": "8.2.2", - "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-8.2.2.tgz", - "integrity": "sha512-FtQu10RWgn3D9U4aazdwIE2yzphmTJREDqNdODHrbrZmmMqI0vMheC/6NE/J1Yveaj8H+ela+YwWTjq5PGmuhA==", - "dependencies": { - "@types/node": "*", - "@types/webidl-conversions": "*" - } - }, - "node_modules/@types/yargs": { - "version": "17.0.24", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", - "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@types/yargs-parser": { - "version": "21.0.0", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", - "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", - "dev": true - }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.61.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.61.0.tgz", - "integrity": "sha512-A5l/eUAug103qtkwccSCxn8ZRwT+7RXWkFECdA4Cvl1dOlDUgTpAOfSEElZn2uSUxhdDpnCdetrf0jvU4qrL+g==", - "dev": true, - "dependencies": { - "@eslint-community/regexpp": "^4.4.0", - "@typescript-eslint/scope-manager": "5.61.0", - "@typescript-eslint/type-utils": "5.61.0", - "@typescript-eslint/utils": "5.61.0", - "debug": "^4.3.4", - "graphemer": "^1.4.0", - "ignore": "^5.2.0", - "natural-compare-lite": "^1.4.0", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^5.0.0", - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/eslint-plugin/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/@typescript-eslint/eslint-plugin/node_modules/semver": { - "version": "7.5.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz", - "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@typescript-eslint/eslint-plugin/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/@typescript-eslint/parser": { - "version": "5.61.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.61.0.tgz", - "integrity": "sha512-yGr4Sgyh8uO6fSi9hw3jAFXNBHbCtKKFMdX2IkT3ZqpKmtAq3lHS4ixB/COFuAIJpwl9/AqF7j72ZDWYKmIfvg==", - "dev": true, - "dependencies": { - "@typescript-eslint/scope-manager": "5.61.0", - "@typescript-eslint/types": "5.61.0", - "@typescript-eslint/typescript-estree": "5.61.0", - "debug": "^4.3.4" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "5.61.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.61.0.tgz", - "integrity": "sha512-W8VoMjoSg7f7nqAROEmTt6LoBpn81AegP7uKhhW5KzYlehs8VV0ZW0fIDVbcZRcaP3aPSW+JZFua+ysQN+m/Nw==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.61.0", - "@typescript-eslint/visitor-keys": "5.61.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/type-utils": { - "version": "5.61.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.61.0.tgz", - "integrity": "sha512-kk8u//r+oVK2Aj3ph/26XdH0pbAkC2RiSjUYhKD+PExemG4XSjpGFeyZ/QM8lBOa7O8aGOU+/yEbMJgQv/DnCg==", - "dev": true, - "dependencies": { - "@typescript-eslint/typescript-estree": "5.61.0", - "@typescript-eslint/utils": "5.61.0", - "debug": "^4.3.4", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "*" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/types": { - "version": "5.61.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.61.0.tgz", - "integrity": "sha512-ldyueo58KjngXpzloHUog/h9REmHl59G1b3a5Sng1GfBo14BkS3ZbMEb3693gnP1k//97lh7bKsp6/V/0v1veQ==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.61.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.61.0.tgz", - "integrity": "sha512-Fud90PxONnnLZ36oR5ClJBLTLfU4pIWBmnvGwTbEa2cXIqj70AEDEmOmpkFComjBZ/037ueKrOdHuYmSFVD7Rw==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.61.0", - "@typescript-eslint/visitor-keys": "5.61.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/typescript-estree/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/@typescript-eslint/typescript-estree/node_modules/semver": { - "version": "7.5.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz", - "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@typescript-eslint/typescript-estree/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/@typescript-eslint/utils": { - "version": "5.61.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.61.0.tgz", - "integrity": "sha512-mV6O+6VgQmVE6+xzlA91xifndPW9ElFW8vbSF0xCT/czPXVhwDewKila1jOyRwa9AE19zKnrr7Cg5S3pJVrTWQ==", - "dev": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@types/json-schema": "^7.0.9", - "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.61.0", - "@typescript-eslint/types": "5.61.0", - "@typescript-eslint/typescript-estree": "5.61.0", - "eslint-scope": "^5.1.1", - "semver": "^7.3.7" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/@typescript-eslint/utils/node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@typescript-eslint/utils/node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/@typescript-eslint/utils/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/@typescript-eslint/utils/node_modules/semver": { - "version": "7.5.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz", - "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@typescript-eslint/utils/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/@typescript-eslint/visitor-keys": { - "version": "5.61.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.61.0.tgz", - "integrity": "sha512-50XQ5VdbWrX06mQXhy93WywSFZZGsv3EOjq+lqp6WC2t+j3mb6A9xYVdrRxafvK88vg9k9u+CT4l6D8PEatjKg==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.61.0", - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", - "dev": true - }, - "node_modules/accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "dependencies": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/acorn": { - "version": "8.9.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.9.0.tgz", - "integrity": "sha512-jaVNAFBHNLXspO543WnNNPZFRtavh3skAkITqD0/2aeMkKZTN+254PyhwxFYrk3vQ1xfY+2wbesJMs/JC8/PwQ==", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/acorn-walk": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", - "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "dependencies": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, - "dependencies": { - "type-fest": "^0.21.3" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==" - }, - "node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/args": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/args/-/args-5.0.3.tgz", - "integrity": "sha512-h6k/zfFgusnv3i5TU08KQkVKuCPBtL/PWQbWkHUxvJrZ2nAyeaUupneemcrgn1xmqxPQsPIzwkUhOpoqPDRZuA==", - "dependencies": { - "camelcase": "5.0.0", - "chalk": "2.4.2", - "leven": "2.1.0", - "mri": "1.1.4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/args/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==", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/args/node_modules/camelcase": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.0.0.tgz", - "integrity": "sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA==", - "engines": { - "node": ">=6" - } - }, - "node_modules/args/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==", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/args/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==", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/args/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==" - }, - "node_modules/args/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==", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/args/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==", - "engines": { - "node": ">=4" - } - }, - "node_modules/args/node_modules/leven": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz", - "integrity": "sha512-nvVPLpIHUxCUoRLrFqTgSxXJ614d8AgQoWl7zPe/2VadE8+1dpU3LBhowRuBAcuwruWtOdD8oYC9jDNJjXDPyA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/args/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==", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" - }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "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/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/atomic-sleep": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/atomic-sleep/-/atomic-sleep-1.0.0.tgz", - "integrity": "sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==", - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/babel-jest": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.5.0.tgz", - "integrity": "sha512-mA4eCDh5mSo2EcA9xQjVTpmbbNk32Zb3Q3QFQsNhaK56Q+yoXowzFodLux30HRgyOho5rsQ6B0P9QpMkvvnJ0Q==", - "dev": true, - "dependencies": { - "@jest/transform": "^29.5.0", - "@types/babel__core": "^7.1.14", - "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^29.5.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "slash": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.8.0" - } - }, - "node_modules/babel-plugin-istanbul": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", - "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-instrument": "^5.0.4", - "test-exclude": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/babel-plugin-jest-hoist": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.5.0.tgz", - "integrity": "sha512-zSuuuAlTMT4mzLj2nPnUm6fsE6270vdOfnpbJ+RmruU75UhLFvL0N2NgI7xpeS7NaB6hGqmd5pVpGTDYvi4Q3w==", - "dev": true, - "dependencies": { - "@babel/template": "^7.3.3", - "@babel/types": "^7.3.3", - "@types/babel__core": "^7.1.14", - "@types/babel__traverse": "^7.0.6" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/babel-preset-current-node-syntax": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", - "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", - "dev": true, - "dependencies": { - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-bigint": "^7.8.3", - "@babel/plugin-syntax-class-properties": "^7.8.3", - "@babel/plugin-syntax-import-meta": "^7.8.3", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.8.3", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-top-level-await": "^7.8.3" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/babel-preset-jest": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.5.0.tgz", - "integrity": "sha512-JOMloxOqdiBSxMAzjRaH023/vvcaSaec49zvg+2LmNsktC7ei39LTJGw02J+9uUtTZUq6xbLyJ4dxe9sSmIuAg==", - "dev": true, - "dependencies": { - "babel-plugin-jest-hoist": "^29.5.0", - "babel-preset-current-node-syntax": "^1.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" - }, - "node_modules/basic-auth": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", - "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", - "dev": true, - "dependencies": { - "safe-buffer": "5.1.2" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/basic-auth/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "node_modules/before-after-hook": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz", - "integrity": "sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==" - }, - "node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/body-parser": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", - "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", - "dependencies": { - "bytes": "3.1.2", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.11.0", - "raw-body": "2.5.1", - "type-is": "~1.6.18", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/body-parser/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/body-parser/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/bottleneck": { - "version": "2.19.5", - "resolved": "https://registry.npmjs.org/bottleneck/-/bottleneck-2.19.5.tgz", - "integrity": "sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw==" - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browserslist": { - "version": "4.21.9", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.9.tgz", - "integrity": "sha512-M0MFoZzbUrRU4KNfCrDLnvyE7gub+peetoTid3TBIqtunaDJyXlwhakT+/VkvSXcfIzFfK/nkCs4nmyTmxdNSg==", - "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" - } - ], - "dependencies": { - "caniuse-lite": "^1.0.30001503", - "electron-to-chromium": "^1.4.431", - "node-releases": "^2.0.12", - "update-browserslist-db": "^1.0.11" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/bs-logger": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", - "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", - "dev": true, - "dependencies": { - "fast-json-stable-stringify": "2.x" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/bser": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", - "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", - "dev": true, - "dependencies": { - "node-int64": "^0.4.0" - } - }, - "node_modules/bson": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/bson/-/bson-5.3.0.tgz", - "integrity": "sha512-ukmCZMneMlaC5ebPHXIkP8YJzNl5DC41N5MAIvKDqLggdao342t4McltoJBQfQya/nHBWAcSsYRqlXPoQkTJag==", - "engines": { - "node": ">=14.20.1" - } - }, - "node_modules/btoa-lite": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/btoa-lite/-/btoa-lite-1.0.0.tgz", - "integrity": "sha512-gvW7InbIyF8AicrqWoptdW08pUxuhq8BEgowNajy9RhiE86fmGAGl+bLKo6oB8QP0CkqHLowfN0oJdKC/J6LbA==" - }, - "node_modules/buffer-equal-constant-time": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", - "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==" - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true - }, - "node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001505", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001505.tgz", - "integrity": "sha512-jaAOR5zVtxHfL0NjZyflVTtXm3D3J9P15zSJ7HmQF8dSKGA6tqzQq+0ZI3xkjyQj46I4/M0K2GbMpcAFOcbr3A==", - "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" - } - ] - }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/char-regex": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", - "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/ci-info": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", - "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "engines": { - "node": ">=8" - } - }, - "node_modules/cjs-module-lexer": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz", - "integrity": "sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==", - "dev": true - }, - "node_modules/clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "engines": { - "node": ">=6" - } - }, - "node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/cluster-key-slot": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.1.2.tgz", - "integrity": "sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", - "dev": true, - "engines": { - "iojs": ">= 1.0.0", - "node": ">= 0.12.0" - } - }, - "node_modules/collect-v8-coverage": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", - "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==", - "dev": true - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/colorette": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz", - "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==" - }, - "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/commander": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", - "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", - "engines": { - "node": ">= 6" - } - }, - "node_modules/component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", - "dev": true - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true - }, - "node_modules/content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", - "dependencies": { - "safe-buffer": "5.2.1" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/content-type": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", - "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", - "engines": { - "node": ">= 0.6" - } - }, - "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 - }, - "node_modules/cookie": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", - "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie-signature": { - "version": "1.0.6", - "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/create-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", - "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==" - }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/dateformat": { - "version": "4.6.3", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-4.6.3.tgz", - "integrity": "sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==", - "engines": { - "node": "*" - } - }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/dedent": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", - "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", - "dev": true - }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true - }, - "node_modules/deepmerge": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", - "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", - "engines": { - "node": ">=0.10.0" - } - }, - "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/denque": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/denque/-/denque-1.5.1.tgz", - "integrity": "sha512-XwE+iZ4D6ZUB7mfYRMb5wByE8L74HCn30FBN7sWnXksWc1LO1bPDl67pBR9o/kC4z/xSNAwkMYcGgqDV3BE3Hw==", - "engines": { - "node": ">=0.10" - } - }, - "node_modules/depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/deprecation": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", - "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==" - }, - "node_modules/destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/detect-newline": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", - "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", - "dev": true, - "engines": { - "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": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/diff-sequences": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.4.3.tgz", - "integrity": "sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==", - "dev": true, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/dotenv": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz", - "integrity": "sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==", - "engines": { - "node": ">=10" - } - }, - "node_modules/ecdsa-sig-formatter": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", - "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", - "dependencies": { - "safe-buffer": "^5.0.1" - } - }, - "node_modules/ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" - }, - "node_modules/electron-to-chromium": { - "version": "1.4.435", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.435.tgz", - "integrity": "sha512-B0CBWVFhvoQCW/XtjRzgrmqcgVWg6RXOEM/dK59+wFV93BFGR6AeNKc4OyhM+T3IhJaOOG8o/V+33Y2mwJWtzw==", - "dev": true - }, - "node_modules/emittery": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", - "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sindresorhus/emittery?sponsor=1" - } - }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dependencies": { - "once": "^1.4.0" - } - }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" - }, - "node_modules/escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/eslint": { - "version": "8.44.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.44.0.tgz", - "integrity": "sha512-0wpHoUbDUHgNCyvFB5aXLiQVfK9B0at6gUvzy83k4kAsQ/u769TQDX6iKC+aO4upIHO9WSaA3QoXYQDHbNwf1A==", - "dev": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.4.0", - "@eslint/eslintrc": "^2.1.0", - "@eslint/js": "8.44.0", - "@humanwhocodes/config-array": "^0.11.10", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.0", - "eslint-visitor-keys": "^3.4.1", - "espree": "^9.6.0", - "esquery": "^1.4.2", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "graphemer": "^1.4.0", - "ignore": "^5.2.0", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.3", - "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-scope": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.0.tgz", - "integrity": "sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz", - "integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint/node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "node_modules/eslint/node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/eslint/node_modules/globals": { - "version": "13.20.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", - "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", - "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/eslint/node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/espree": { - "version": "9.6.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.0.tgz", - "integrity": "sha512-1FH/IiruXZ84tpUlm0aCUEwMl2Ho5ilqVh0VvQXw+byAz/4SAciyHLlfmL5WYqsvD38oymdUwBss0LtK8m4s/A==", - "dev": true, - "dependencies": { - "acorn": "^8.9.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/esquery": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", - "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", - "dev": true, - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/eventsource": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-2.0.2.tgz", - "integrity": "sha512-IzUmBGPR3+oUG9dUeXynyNmf91/3zUSJg1lCktzKw47OXuhco54U3r9B7O4XX+Rb1Itm9OZ2b0RkTs10bICOxA==", - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/exit": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/expect": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/expect/-/expect-29.5.0.tgz", - "integrity": "sha512-yM7xqUrCO2JdpFo4XpM82t+PJBFybdqoQuJLDGeDX2ij8NZzqRHyu3Hp188/JX7SWqud+7t4MUdvcgGBICMHZg==", - "dev": true, - "dependencies": { - "@jest/expect-utils": "^29.5.0", - "jest-get-type": "^29.4.3", - "jest-matcher-utils": "^29.5.0", - "jest-message-util": "^29.5.0", - "jest-util": "^29.5.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/express": { - "version": "4.18.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", - "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", - "dependencies": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.20.1", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.5.0", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "2.0.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "1.2.0", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.7", - "qs": "6.11.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "0.18.0", - "serve-static": "1.15.0", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/express-handlebars": { - "version": "6.0.7", - "resolved": "https://registry.npmjs.org/express-handlebars/-/express-handlebars-6.0.7.tgz", - "integrity": "sha512-iYeMFpc/hMD+E6FNAZA5fgWeXnXr4rslOSPkeEV6TwdmpJ5lEXuWX0u9vFYs31P2MURctQq2batR09oeNj0LIg==", - "dependencies": { - "glob": "^8.1.0", - "graceful-fs": "^4.2.10", - "handlebars": "^4.7.7" - }, - "engines": { - "node": ">=v12.22.9" - } - }, - "node_modules/express-handlebars/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/express-handlebars/node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/express-handlebars/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/express/node_modules/cookie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/express/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/express/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "node_modules/fast-glob": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.0.tgz", - "integrity": "sha512-ChDuvbOypPuNjO8yIDf36x7BlZX1smcUMTTcyoIjycexOxd6DFsKsg21qVBzEmr3G7fUKIRy2/psii+CIUt7FA==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true - }, - "node_modules/fast-redact": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-3.2.0.tgz", - "integrity": "sha512-zaTadChr+NekyzallAMXATXLOR8MNx3zqpZ0MUF2aGf4EathnG0f32VLODNlY8IuGY3HoRO2L6/6fSzNsLaHIw==", - "engines": { - "node": ">=6" - } - }, - "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==" - }, - "node_modules/fast-url-parser": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/fast-url-parser/-/fast-url-parser-1.1.3.tgz", - "integrity": "sha512-5jOCVXADYNuRkKFzNJ0dCCewsZiYo0dz8QNYljkOpFC6r2U4OBmKtvm/Tsuh4w1YYdDqDb31a8TVhBJ2OJKdqQ==", - "dependencies": { - "punycode": "^1.3.2" - } - }, - "node_modules/fastq": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", - "dev": true, - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/fb-watchman": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", - "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", - "dev": true, - "dependencies": { - "bser": "2.1.1" - } - }, - "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "dependencies": { - "flat-cache": "^3.0.4" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/finalhandler": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", - "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "statuses": "2.0.1", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/finalhandler/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/finalhandler/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dev": true, - "dependencies": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/flatstr": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/flatstr/-/flatstr-1.0.12.tgz", - "integrity": "sha512-4zPxDyhCyiN2wIAtSLI6gc82/EjqZc1onI4Mz/l0pWrAlsSfYH/2ZIcU+e3oA2wDwbzIWNKwa23F8rh6+DRWkw==" - }, - "node_modules/flatted": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", - "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", - "dev": true - }, - "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", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" - }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, - "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, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/get-intrinsic": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", - "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", - "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-package-type": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", - "dev": true, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "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, - "engines": { - "node": ">=4" - } - }, - "node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" - }, - "node_modules/graphemer": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true - }, - "node_modules/handlebars": { - "version": "4.7.7", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", - "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", - "dependencies": { - "minimist": "^1.2.5", - "neo-async": "^2.6.0", - "source-map": "^0.6.1", - "wordwrap": "^1.0.0" - }, - "bin": { - "handlebars": "bin/handlebars" - }, - "engines": { - "node": ">=0.4.7" - }, - "optionalDependencies": { - "uglify-js": "^3.1.4" - } - }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/has-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true - }, - "node_modules/http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "dependencies": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", - "dependencies": { - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "dev": true, - "engines": { - "node": ">=10.17.0" - } - }, - "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/ignore-by-default": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", - "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==", - "dev": true - }, - "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/import-fresh/node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/import-local": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", - "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", - "dev": true, - "dependencies": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - }, - "bin": { - "import-local-fixture": "fixtures/cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "engines": { - "node": ">=8" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "node_modules/ioredis": { - "version": "4.28.5", - "resolved": "https://registry.npmjs.org/ioredis/-/ioredis-4.28.5.tgz", - "integrity": "sha512-3GYo0GJtLqgNXj4YhrisLaNNvWSNwSS2wS4OELGfGxH8I69+XfNdnmV1AyN+ZqMh0i7eX+SWjrwFKDBDgfBC1A==", - "dependencies": { - "cluster-key-slot": "^1.1.0", - "debug": "^4.3.1", - "denque": "^1.1.0", - "lodash.defaults": "^4.2.0", - "lodash.flatten": "^4.4.0", - "lodash.isarguments": "^3.1.0", - "p-map": "^2.1.0", - "redis-commands": "1.7.0", - "redis-errors": "^1.2.0", - "redis-parser": "^3.0.0", - "standard-as-callback": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/ioredis" - } - }, - "node_modules/ip": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", - "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==" - }, - "node_modules/ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" - }, - "node_modules/is-base64": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-base64/-/is-base64-1.1.0.tgz", - "integrity": "sha512-Nlhg7Z2dVC4/PTvIFkgVVNvPHSO2eR/Yd0XzhGiXCXEvWnptXlXa/clQ8aePPiMuxEGcWfzWbGw2Fe3d+Y3v1g==", - "bin": { - "is_base64": "bin/is-base64", - "is-base64": "bin/is-base64" - } - }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-core-module": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.1.tgz", - "integrity": "sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==", - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-generator-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", - "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-plain-object": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", - "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "node_modules/istanbul-lib-coverage": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", - "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-instrument": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", - "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", - "dev": true, - "dependencies": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", - "dev": true, - "dependencies": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^3.0.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-source-maps": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", - "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", - "dev": true, - "dependencies": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-reports": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", - "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", - "dev": true, - "dependencies": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest/-/jest-29.5.0.tgz", - "integrity": "sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==", - "dev": true, - "dependencies": { - "@jest/core": "^29.5.0", - "@jest/types": "^29.5.0", - "import-local": "^3.0.2", - "jest-cli": "^29.5.0" - }, - "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-changed-files": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.5.0.tgz", - "integrity": "sha512-IFG34IUMUaNBIxjQXF/iu7g6EcdMrGRRxaUSw92I/2g2YC6vCdTltl4nHvt7Ci5nSJwXIkCu8Ka1DKF+X7Z1Ag==", - "dev": true, - "dependencies": { - "execa": "^5.0.0", - "p-limit": "^3.1.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-circus": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.5.0.tgz", - "integrity": "sha512-gq/ongqeQKAplVxqJmbeUOJJKkW3dDNPY8PjhJ5G0lBRvu0e3EWGxGy5cI4LAGA7gV2UHCtWBI4EMXK8c9nQKA==", - "dev": true, - "dependencies": { - "@jest/environment": "^29.5.0", - "@jest/expect": "^29.5.0", - "@jest/test-result": "^29.5.0", - "@jest/types": "^29.5.0", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "dedent": "^0.7.0", - "is-generator-fn": "^2.0.0", - "jest-each": "^29.5.0", - "jest-matcher-utils": "^29.5.0", - "jest-message-util": "^29.5.0", - "jest-runtime": "^29.5.0", - "jest-snapshot": "^29.5.0", - "jest-util": "^29.5.0", - "p-limit": "^3.1.0", - "pretty-format": "^29.5.0", - "pure-rand": "^6.0.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-cli": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.5.0.tgz", - "integrity": "sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw==", - "dev": true, - "dependencies": { - "@jest/core": "^29.5.0", - "@jest/test-result": "^29.5.0", - "@jest/types": "^29.5.0", - "chalk": "^4.0.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "import-local": "^3.0.2", - "jest-config": "^29.5.0", - "jest-util": "^29.5.0", - "jest-validate": "^29.5.0", - "prompts": "^2.0.1", - "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-cli/node_modules/jest-config": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.5.0.tgz", - "integrity": "sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==", - "dev": true, - "dependencies": { - "@babel/core": "^7.11.6", - "@jest/test-sequencer": "^29.5.0", - "@jest/types": "^29.5.0", - "babel-jest": "^29.5.0", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "deepmerge": "^4.2.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-circus": "^29.5.0", - "jest-environment-node": "^29.5.0", - "jest-get-type": "^29.4.3", - "jest-regex-util": "^29.4.3", - "jest-resolve": "^29.5.0", - "jest-runner": "^29.5.0", - "jest-util": "^29.5.0", - "jest-validate": "^29.5.0", - "micromatch": "^4.0.4", - "parse-json": "^5.2.0", - "pretty-format": "^29.5.0", - "slash": "^3.0.0", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "@types/node": "*", - "ts-node": ">=9.0.0" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "ts-node": { - "optional": true - } - } - }, - "node_modules/jest-cli/node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/jest-diff": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.5.0.tgz", - "integrity": "sha512-LtxijLLZBduXnHSniy0WMdaHjmQnt3g5sa16W4p0HqukYTTsyTW3GD1q41TyGl5YFXj/5B2U6dlh5FM1LIMgxw==", - "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^29.4.3", - "jest-get-type": "^29.4.3", - "pretty-format": "^29.5.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-docblock": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.4.3.tgz", - "integrity": "sha512-fzdTftThczeSD9nZ3fzA/4KkHtnmllawWrXO69vtI+L9WjEIuXWs4AmyME7lN5hU7dB0sHhuPfcKofRsUb/2Fg==", - "dev": true, - "dependencies": { - "detect-newline": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-each": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.5.0.tgz", - "integrity": "sha512-HM5kIJ1BTnVt+DQZ2ALp3rzXEl+g726csObrW/jpEGl+CDSSQpOJJX2KE/vEg8cxcMXdyEPu6U4QX5eruQv5hA==", - "dev": true, - "dependencies": { - "@jest/types": "^29.5.0", - "chalk": "^4.0.0", - "jest-get-type": "^29.4.3", - "jest-util": "^29.5.0", - "pretty-format": "^29.5.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-environment-node": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.5.0.tgz", - "integrity": "sha512-ExxuIK/+yQ+6PRGaHkKewYtg6hto2uGCgvKdb2nfJfKXgZ17DfXjvbZ+jA1Qt9A8EQSfPnt5FKIfnOO3u1h9qw==", - "dev": true, - "dependencies": { - "@jest/environment": "^29.5.0", - "@jest/fake-timers": "^29.5.0", - "@jest/types": "^29.5.0", - "@types/node": "*", - "jest-mock": "^29.5.0", - "jest-util": "^29.5.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-get-type": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.4.3.tgz", - "integrity": "sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg==", - "dev": true, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-haste-map": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.5.0.tgz", - "integrity": "sha512-IspOPnnBro8YfVYSw6yDRKh/TiCdRngjxeacCps1cQ9cgVN6+10JUcuJ1EabrgYLOATsIAigxA0rLR9x/YlrSA==", - "dev": true, - "dependencies": { - "@jest/types": "^29.5.0", - "@types/graceful-fs": "^4.1.3", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-regex-util": "^29.4.3", - "jest-util": "^29.5.0", - "jest-worker": "^29.5.0", - "micromatch": "^4.0.4", - "walker": "^1.0.8" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "optionalDependencies": { - "fsevents": "^2.3.2" - } - }, - "node_modules/jest-leak-detector": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.5.0.tgz", - "integrity": "sha512-u9YdeeVnghBUtpN5mVxjID7KbkKE1QU4f6uUwuxiY0vYRi9BUCLKlPEZfDGR67ofdFmDz9oPAy2G92Ujrntmow==", - "dev": true, - "dependencies": { - "jest-get-type": "^29.4.3", - "pretty-format": "^29.5.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-matcher-utils": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.5.0.tgz", - "integrity": "sha512-lecRtgm/rjIK0CQ7LPQwzCs2VwW6WAahA55YBuI+xqmhm7LAaxokSB8C97yJeYyT+HvQkH741StzpU41wohhWw==", - "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^29.5.0", - "jest-get-type": "^29.4.3", - "pretty-format": "^29.5.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-message-util": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.5.0.tgz", - "integrity": "sha512-Kijeg9Dag6CKtIDA7O21zNTACqD5MD/8HfIV8pdD94vFyFuer52SigdC3IQMhab3vACxXMiFk+yMHNdbqtyTGA==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.5.0", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^29.5.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-mock": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.5.0.tgz", - "integrity": "sha512-GqOzvdWDE4fAV2bWQLQCkujxYWL7RxjCnj71b5VhDAGOevB3qj3Ovg26A5NI84ZpODxyzaozXLOh2NCgkbvyaw==", - "dev": true, - "dependencies": { - "@jest/types": "^29.5.0", - "@types/node": "*", - "jest-util": "^29.5.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-pnp-resolver": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", - "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", - "dev": true, - "engines": { - "node": ">=6" - }, - "peerDependencies": { - "jest-resolve": "*" - }, - "peerDependenciesMeta": { - "jest-resolve": { - "optional": true - } - } - }, - "node_modules/jest-regex-util": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.4.3.tgz", - "integrity": "sha512-O4FglZaMmWXbGHSQInfXewIsd1LMn9p3ZXB/6r4FOkyhX2/iP/soMG98jGvk/A3HAN78+5VWcBGO0BJAPRh4kg==", - "dev": true, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-resolve": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.5.0.tgz", - "integrity": "sha512-1TzxJ37FQq7J10jPtQjcc+MkCkE3GBpBecsSUWJ0qZNJpmg6m0D9/7II03yJulm3H/fvVjgqLh/k2eYg+ui52w==", - "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.5.0", - "jest-pnp-resolver": "^1.2.2", - "jest-util": "^29.5.0", - "jest-validate": "^29.5.0", - "resolve": "^1.20.0", - "resolve.exports": "^2.0.0", - "slash": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-resolve-dependencies": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.5.0.tgz", - "integrity": "sha512-sjV3GFr0hDJMBpYeUuGduP+YeCRbd7S/ck6IvL3kQ9cpySYKqcqhdLLC2rFwrcL7tz5vYibomBrsFYWkIGGjOg==", - "dev": true, - "dependencies": { - "jest-regex-util": "^29.4.3", - "jest-snapshot": "^29.5.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-runner": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.5.0.tgz", - "integrity": "sha512-m7b6ypERhFghJsslMLhydaXBiLf7+jXy8FwGRHO3BGV1mcQpPbwiqiKUR2zU2NJuNeMenJmlFZCsIqzJCTeGLQ==", - "dev": true, - "dependencies": { - "@jest/console": "^29.5.0", - "@jest/environment": "^29.5.0", - "@jest/test-result": "^29.5.0", - "@jest/transform": "^29.5.0", - "@jest/types": "^29.5.0", - "@types/node": "*", - "chalk": "^4.0.0", - "emittery": "^0.13.1", - "graceful-fs": "^4.2.9", - "jest-docblock": "^29.4.3", - "jest-environment-node": "^29.5.0", - "jest-haste-map": "^29.5.0", - "jest-leak-detector": "^29.5.0", - "jest-message-util": "^29.5.0", - "jest-resolve": "^29.5.0", - "jest-runtime": "^29.5.0", - "jest-util": "^29.5.0", - "jest-watcher": "^29.5.0", - "jest-worker": "^29.5.0", - "p-limit": "^3.1.0", - "source-map-support": "0.5.13" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-runtime": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.5.0.tgz", - "integrity": "sha512-1Hr6Hh7bAgXQP+pln3homOiEZtCDZFqwmle7Ew2j8OlbkIu6uE3Y/etJQG8MLQs3Zy90xrp2C0BRrtPHG4zryw==", - "dev": true, - "dependencies": { - "@jest/environment": "^29.5.0", - "@jest/fake-timers": "^29.5.0", - "@jest/globals": "^29.5.0", - "@jest/source-map": "^29.4.3", - "@jest/test-result": "^29.5.0", - "@jest/transform": "^29.5.0", - "@jest/types": "^29.5.0", - "@types/node": "*", - "chalk": "^4.0.0", - "cjs-module-lexer": "^1.0.0", - "collect-v8-coverage": "^1.0.0", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.5.0", - "jest-message-util": "^29.5.0", - "jest-mock": "^29.5.0", - "jest-regex-util": "^29.4.3", - "jest-resolve": "^29.5.0", - "jest-snapshot": "^29.5.0", - "jest-util": "^29.5.0", - "slash": "^3.0.0", - "strip-bom": "^4.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-snapshot": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.5.0.tgz", - "integrity": "sha512-x7Wolra5V0tt3wRs3/ts3S6ciSQVypgGQlJpz2rsdQYoUKxMxPNaoHMGJN6qAuPJqS+2iQ1ZUn5kl7HCyls84g==", - "dev": true, - "dependencies": { - "@babel/core": "^7.11.6", - "@babel/generator": "^7.7.2", - "@babel/plugin-syntax-jsx": "^7.7.2", - "@babel/plugin-syntax-typescript": "^7.7.2", - "@babel/traverse": "^7.7.2", - "@babel/types": "^7.3.3", - "@jest/expect-utils": "^29.5.0", - "@jest/transform": "^29.5.0", - "@jest/types": "^29.5.0", - "@types/babel__traverse": "^7.0.6", - "@types/prettier": "^2.1.5", - "babel-preset-current-node-syntax": "^1.0.0", - "chalk": "^4.0.0", - "expect": "^29.5.0", - "graceful-fs": "^4.2.9", - "jest-diff": "^29.5.0", - "jest-get-type": "^29.4.3", - "jest-matcher-utils": "^29.5.0", - "jest-message-util": "^29.5.0", - "jest-util": "^29.5.0", - "natural-compare": "^1.4.0", - "pretty-format": "^29.5.0", - "semver": "^7.3.5" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-snapshot/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/jest-snapshot/node_modules/semver": { - "version": "7.5.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.2.tgz", - "integrity": "sha512-SoftuTROv/cRjCze/scjGyiDtcUyxw1rgYQSZY7XTmtR5hX+dm76iDbTH8TkLPHCQmlbQVSSbNZCPM2hb0knnQ==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/jest-snapshot/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/jest-util": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.5.0.tgz", - "integrity": "sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ==", - "dev": true, - "dependencies": { - "@jest/types": "^29.5.0", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-validate": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.5.0.tgz", - "integrity": "sha512-pC26etNIi+y3HV8A+tUGr/lph9B18GnzSRAkPaaZJIE1eFdiYm6/CewuiJQ8/RlfHd1u/8Ioi8/sJ+CmbA+zAQ==", - "dev": true, - "dependencies": { - "@jest/types": "^29.5.0", - "camelcase": "^6.2.0", - "chalk": "^4.0.0", - "jest-get-type": "^29.4.3", - "leven": "^3.1.0", - "pretty-format": "^29.5.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-validate/node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/jest-watcher": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.5.0.tgz", - "integrity": "sha512-KmTojKcapuqYrKDpRwfqcQ3zjMlwu27SYext9pt4GlF5FUgB+7XE1mcCnSm6a4uUpFyQIkb6ZhzZvHl+jiBCiA==", - "dev": true, - "dependencies": { - "@jest/test-result": "^29.5.0", - "@jest/types": "^29.5.0", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "emittery": "^0.13.1", - "jest-util": "^29.5.0", - "string-length": "^4.0.1" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-worker": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.5.0.tgz", - "integrity": "sha512-NcrQnevGoSp4b5kg+akIpthoAFHxPBcb5P6mYPY0fUNT+sSvmtu6jlkEle3anczUKIKEbMxFimk9oTP/tpIPgA==", - "dev": true, - "dependencies": { - "@types/node": "*", - "jest-util": "^29.5.0", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/jmespath": { - "version": "0.15.0", - "resolved": "https://registry.npmjs.org/jmespath/-/jmespath-0.15.0.tgz", - "integrity": "sha512-+kHj8HXArPfpPEKGLZ+kB5ONRTCiGQXo8RQYL0hH8t6pWXUBBK5KkkQmTNOwKK4LEsd0yTsgtjJVm4UBSZea4w==", - "engines": { - "node": ">= 0.6.0" - } - }, - "node_modules/joycon": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/joycon/-/joycon-3.1.1.tgz", - "integrity": "sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==", - "engines": { - "node": ">=10" - } - }, - "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 - }, - "node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true, - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" - }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true - }, - "node_modules/json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", - "dev": true - }, - "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, - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/jsonwebtoken": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.0.tgz", - "integrity": "sha512-tuGfYXxkQGDPnLJ7SibiQgVgeDgfbPq2k2ICcbgqW8WxWLBAxKQM/ZCu/IT8SOSwmaYl4dpTFCW5xZv7YbbWUw==", - "dependencies": { - "jws": "^3.2.2", - "lodash": "^4.17.21", - "ms": "^2.1.1", - "semver": "^7.3.8" - }, - "engines": { - "node": ">=12", - "npm": ">=6" - } - }, - "node_modules/jsonwebtoken/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==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/jsonwebtoken/node_modules/semver": { - "version": "7.5.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.2.tgz", - "integrity": "sha512-SoftuTROv/cRjCze/scjGyiDtcUyxw1rgYQSZY7XTmtR5hX+dm76iDbTH8TkLPHCQmlbQVSSbNZCPM2hb0knnQ==", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/jsonwebtoken/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, - "node_modules/jwa": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", - "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", - "dependencies": { - "buffer-equal-constant-time": "1.0.1", - "ecdsa-sig-formatter": "1.0.11", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/jws": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", - "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", - "dependencies": { - "jwa": "^1.4.1", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/kareem": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.5.1.tgz", - "integrity": "sha512-7jFxRVm+jD+rkq3kY0iZDJfsO2/t4BBPeEb2qKn2lR/9KhuksYk5hxzfRYWMPV8P/x2d0kHD306YyWLzjjH+uA==", - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/kleur": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true - }, - "node_modules/load-json-file": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-5.3.0.tgz", - "integrity": "sha512-cJGP40Jc/VXUsp8/OrnyKyTZ1y6v/dphm3bioS+RrKXjK2BB6wHUd6JptZEFDGgGahMT+InnZO5i1Ei9mpC8Bw==", - "dependencies": { - "graceful-fs": "^4.1.15", - "parse-json": "^4.0.0", - "pify": "^4.0.1", - "strip-bom": "^3.0.0", - "type-fest": "^0.3.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/load-json-file/node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "engines": { - "node": ">=4" - } - }, - "node_modules/load-json-file/node_modules/type-fest": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz", - "integrity": "sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==", - "engines": { - "node": ">=6" - } - }, - "node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, - "node_modules/lodash.defaults": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", - "integrity": "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==" - }, - "node_modules/lodash.flatten": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", - "integrity": "sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==" - }, - "node_modules/lodash.isarguments": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", - "integrity": "sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg==" - }, - "node_modules/lodash.memoize": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", - "dev": true - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true - }, - "node_modules/lru_map": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/lru_map/-/lru_map-0.3.3.tgz", - "integrity": "sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ==" - }, - "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, - "dependencies": { - "yallist": "^3.0.2" - } - }, - "node_modules/make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "dependencies": { - "semver": "^6.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==" - }, - "node_modules/makeerror": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", - "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", - "dev": true, - "dependencies": { - "tmpl": "1.0.5" - } - }, - "node_modules/media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/memory-pager": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz", - "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==", - "optional": true - }, - "node_modules/merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" - }, - "node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/micromatch": { - "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" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/mongodb": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-5.6.0.tgz", - "integrity": "sha512-z8qVs9NfobHJm6uzK56XBZF8XwM9H294iRnB7wNjF0SnY93si5HPziIJn+qqvUR5QOff/4L0gCD6SShdR/GtVQ==", - "dependencies": { - "bson": "^5.3.0", - "mongodb-connection-string-url": "^2.6.0", - "socks": "^2.7.1" - }, - "engines": { - "node": ">=14.20.1" - }, - "optionalDependencies": { - "saslprep": "^1.0.3" - }, - "peerDependencies": { - "@aws-sdk/credential-providers": "^3.201.0", - "mongodb-client-encryption": ">=2.3.0 <3", - "snappy": "^7.2.2" - }, - "peerDependenciesMeta": { - "@aws-sdk/credential-providers": { - "optional": true - }, - "mongodb-client-encryption": { - "optional": true - }, - "snappy": { - "optional": true - } - } - }, - "node_modules/mongodb-connection-string-url": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-2.6.0.tgz", - "integrity": "sha512-WvTZlI9ab0QYtTYnuMLgobULWhokRjtC7db9LtcVfJ+Hsnyr5eo6ZtNAt3Ly24XZScGMelOcGtm7lSn0332tPQ==", - "dependencies": { - "@types/whatwg-url": "^8.2.1", - "whatwg-url": "^11.0.0" - } - }, - "node_modules/mongodb-connection-string-url/node_modules/punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", - "engines": { - "node": ">=6" - } - }, - "node_modules/mongodb-connection-string-url/node_modules/tr46": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", - "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", - "dependencies": { - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/mongodb-connection-string-url/node_modules/webidl-conversions": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", - "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", - "engines": { - "node": ">=12" - } - }, - "node_modules/mongodb-connection-string-url/node_modules/whatwg-url": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", - "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", - "dependencies": { - "tr46": "^3.0.0", - "webidl-conversions": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/mongoose": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-7.3.1.tgz", - "integrity": "sha512-6289bmSIhvR8xMHsYe2/CuzN7wHK+2RHcK7idDdzniCPC5zix5JH0Hc4k3CmXlr/9zQ2250gUQiUWtvDB0vF1Q==", - "dependencies": { - "bson": "^5.3.0", - "kareem": "2.5.1", - "mongodb": "5.6.0", - "mpath": "0.9.0", - "mquery": "5.0.0", - "ms": "2.1.3", - "sift": "16.0.1" - }, - "engines": { - "node": ">=14.20.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mongoose" - } - }, - "node_modules/mongoose/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - }, - "node_modules/morgan": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.10.0.tgz", - "integrity": "sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==", - "dev": true, - "dependencies": { - "basic-auth": "~2.0.1", - "debug": "2.6.9", - "depd": "~2.0.0", - "on-finished": "~2.3.0", - "on-headers": "~1.0.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/morgan/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/morgan/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "node_modules/morgan/node_modules/on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", - "dev": true, - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/mpath": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.9.0.tgz", - "integrity": "sha512-ikJRQTk8hw5DEoFVxHG1Gn9T/xcjtdnOKIU1JTmGjZZlg9LST2mBLmcX3/ICIbgJydT2GOc15RnNy5mHmzfSew==", - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/mquery": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/mquery/-/mquery-5.0.0.tgz", - "integrity": "sha512-iQMncpmEK8R8ncT8HJGsGc9Dsp8xcgYMVSbs5jgnm1lFHTZqMJTUWTDx1LBO8+mK3tPNZWFLBghQEIOULSTHZg==", - "dependencies": { - "debug": "4.x" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/mri": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/mri/-/mri-1.1.4.tgz", - "integrity": "sha512-6y7IjGPm8AzlvoUrwAaw1tLnUBudaS3752vcd8JtrpGGQn+rXIe63LFVHm/YMwtqAuh+LJPCFdlLYPWM1nYn6w==", - "engines": { - "node": ">=4" - } - }, - "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==" - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true - }, - "node_modules/natural-compare-lite": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", - "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", - "dev": true - }, - "node_modules/negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" - }, - "node_modules/nock": { - "version": "13.3.1", - "resolved": "https://registry.npmjs.org/nock/-/nock-13.3.1.tgz", - "integrity": "sha512-vHnopocZuI93p2ccivFyGuUfzjq2fxNyNurp7816mlT5V5HF4SzXu8lvLrVzBbNqzs+ODooZ6OksuSUNM7Njkw==", - "dev": true, - "dependencies": { - "debug": "^4.1.0", - "json-stringify-safe": "^5.0.1", - "lodash": "^4.17.21", - "propagate": "^2.0.0" - }, - "engines": { - "node": ">= 10.13" - } - }, - "node_modules/node-fetch": { - "version": "2.6.11", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.11.tgz", - "integrity": "sha512-4I6pdBY1EthSqDmJkiNk3JIT8cswwR9nfeW/cPdUagJYEQG7R95WRH74wpz7ma8Gh/9dI9FP+OU+0E4FvtA55w==", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/node-int64": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", - "dev": true - }, - "node_modules/node-releases": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.12.tgz", - "integrity": "sha512-QzsYKWhXTWx8h1kIvqfnC++o0pEmpRQA/aenALsL2F4pqNVr7YzcdMlDij5WBnwftRbJCNJL/O7zdKaxKPHqgQ==", - "dev": true - }, - "node_modules/nodemailer": { - "version": "6.9.3", - "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.9.3.tgz", - "integrity": "sha512-fy9v3NgTzBngrMFkDsKEj0r02U7jm6XfC3b52eoNV+GCrGj+s8pt5OqhiJdWKuw51zCTdiNR/IUD1z33LIIGpg==", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/nodemon": { - "version": "2.0.22", - "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.22.tgz", - "integrity": "sha512-B8YqaKMmyuCO7BowF1Z1/mkPqLk6cs/l63Ojtd6otKjMx47Dq1utxfRxcavH1I7VSaL8n5BUaoutadnsX3AAVQ==", - "dev": true, - "dependencies": { - "chokidar": "^3.5.2", - "debug": "^3.2.7", - "ignore-by-default": "^1.0.1", - "minimatch": "^3.1.2", - "pstree.remy": "^1.1.8", - "semver": "^5.7.1", - "simple-update-notifier": "^1.0.7", - "supports-color": "^5.5.0", - "touch": "^3.1.0", - "undefsafe": "^2.0.5" - }, - "bin": { - "nodemon": "bin/nodemon.js" - }, - "engines": { - "node": ">=8.10.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/nodemon" - } - }, - "node_modules/nodemon/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/nodemon/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, - "engines": { - "node": ">=4" - } - }, - "node_modules/nodemon/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/nodemon/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, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/nopt": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", - "integrity": "sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==", - "dev": true, - "dependencies": { - "abbrev": "1" - }, - "bin": { - "nopt": "bin/nopt.js" - }, - "engines": { - "node": "*" - } - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/object-inspect": { - "version": "1.12.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", - "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/octokit-auth-probot": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/octokit-auth-probot/-/octokit-auth-probot-1.2.9.tgz", - "integrity": "sha512-mMjw6Y760EwJnW2tSVooJK8BMdsG6D40SoCclnefVf/5yWjaNVquEu8NREBVWb60OwbpnMEz4vREXHB5xdMFYQ==", - "dependencies": { - "@octokit/auth-app": "^4.0.2", - "@octokit/auth-token": "^3.0.0", - "@octokit/auth-unauthenticated": "^3.0.0", - "@octokit/types": "^8.0.0" - }, - "peerDependencies": { - "@octokit/core": ">=3.2" - } - }, - "node_modules/octokit-auth-probot/node_modules/@octokit/auth-token": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-3.0.4.tgz", - "integrity": "sha512-TWFX7cZF2LXoCvdmJWY7XVPi74aSY0+FfBZNSXEXFkMpjcqsQwDSYVv5FhRFaI0V1ECnwbz4j59T/G+rXNWaIQ==", - "engines": { - "node": ">= 14" - } - }, - "node_modules/on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/on-headers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", - "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/optionator": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", - "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", - "dev": true, - "dependencies": { - "@aashutoshrathi/word-wrap": "^1.2.3", - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/p-locate/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-map": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", - "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", - "engines": { - "node": ">=6" - } - }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "engines": { - "node": ">=6" - } - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", - "dependencies": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" - }, - "node_modules/path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" - }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "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 - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "engines": { - "node": ">=6" - } - }, - "node_modules/pino": { - "version": "6.14.0", - "resolved": "https://registry.npmjs.org/pino/-/pino-6.14.0.tgz", - "integrity": "sha512-iuhEDel3Z3hF9Jfe44DPXR8l07bhjuFY3GMHIXbjnY9XcafbyDDwl2sN2vw2GjMPf5Nkoe+OFao7ffn9SXaKDg==", - "dependencies": { - "fast-redact": "^3.0.0", - "fast-safe-stringify": "^2.0.8", - "flatstr": "^1.0.12", - "pino-std-serializers": "^3.1.0", - "process-warning": "^1.0.0", - "quick-format-unescaped": "^4.0.3", - "sonic-boom": "^1.0.2" - }, - "bin": { - "pino": "bin.js" - } - }, - "node_modules/pino-http": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/pino-http/-/pino-http-5.8.0.tgz", - "integrity": "sha512-YwXiyRb9y0WCD1P9PcxuJuh3Dc5qmXde/paJE86UGYRdiFOi828hR9iUGmk5gaw6NBT9gLtKANOHFimvh19U5w==", - "dependencies": { - "fast-url-parser": "^1.1.3", - "pino": "^6.13.0", - "pino-std-serializers": "^4.0.0" - } - }, - "node_modules/pino-http/node_modules/pino-std-serializers": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-4.0.0.tgz", - "integrity": "sha512-cK0pekc1Kjy5w9V2/n+8MkZwusa6EyyxfeQCB799CQRhRt/CqYKiWs5adeu8Shve2ZNffvfC/7J64A2PJo1W/Q==" - }, - "node_modules/pino-pretty": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/pino-pretty/-/pino-pretty-6.0.0.tgz", - "integrity": "sha512-jyeR2fXXWc68st1DTTM5NhkHlx8p+1fKZMfm84Jwq+jSw08IwAjNaZBZR6ts69hhPOfOjg/NiE1HYW7vBRPL3A==", - "dependencies": { - "@hapi/bourne": "^2.0.0", - "args": "^5.0.1", - "colorette": "^1.3.0", - "dateformat": "^4.5.1", - "fast-safe-stringify": "^2.0.7", - "jmespath": "^0.15.0", - "joycon": "^3.0.0", - "pump": "^3.0.0", - "readable-stream": "^3.6.0", - "rfdc": "^1.3.0", - "split2": "^3.1.1", - "strip-json-comments": "^3.1.1" - }, - "bin": { - "pino-pretty": "bin.js" - } - }, - "node_modules/pino-pretty/node_modules/split2": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz", - "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==", - "dependencies": { - "readable-stream": "^3.0.0" - } - }, - "node_modules/pino-std-serializers": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-6.2.1.tgz", - "integrity": "sha512-wHuWB+CvSVb2XqXM0W/WOYUkVSPbiJb9S5fNB7TBhd8s892Xq910bRxwHtC4l71hgztObTjXL6ZheZXFjhDrDQ==" - }, - "node_modules/pino/node_modules/pino-std-serializers": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-3.2.0.tgz", - "integrity": "sha512-EqX4pwDPrt3MuOAAUBMU0Tk5kR/YcCM5fNPEzgCO2zJ5HfX0vbiH9HbJglnyeQsN96Kznae6MWD47pZB5avTrg==" - }, - "node_modules/pino/node_modules/sonic-boom": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-1.4.1.tgz", - "integrity": "sha512-LRHh/A8tpW7ru89lrlkU4AszXt1dbwSjVWguGrmlxE7tawVmDBlI1PILMkXAxJTwqhgsEeTHzj36D5CmHgQmNg==", - "dependencies": { - "atomic-sleep": "^1.0.0", - "flatstr": "^1.0.12" - } - }, - "node_modules/pirates": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", - "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/pkg-conf": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-3.1.0.tgz", - "integrity": "sha512-m0OTbR/5VPNPqO1ph6Fqbj7Hv6QU7gR/tQW40ZqrL1rjgCU85W6C1bJn0BItuJqnR98PWzw7Z8hHeChD1WrgdQ==", - "dependencies": { - "find-up": "^3.0.0", - "load-json-file": "^5.2.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/pkg-conf/node_modules/find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dependencies": { - "locate-path": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/pkg-conf/node_modules/locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/pkg-conf/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/pkg-conf/node_modules/p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dependencies": { - "p-limit": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/pkg-conf/node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", - "engines": { - "node": ">=4" - } - }, - "node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/pretty-format": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.5.0.tgz", - "integrity": "sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==", - "dev": true, - "dependencies": { - "@jest/schemas": "^29.4.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/probot": { - "version": "12.3.1", - "resolved": "https://registry.npmjs.org/probot/-/probot-12.3.1.tgz", - "integrity": "sha512-ECSgycmAC0ILEK6cOa+x3QPufP5JybsuohOFCYr3glQU5SkbmypZJE/Sfio9mxAFHK5LCXveIDsfZCxf6ck4JA==", - "dependencies": { - "@octokit/core": "^3.2.4", - "@octokit/plugin-enterprise-compatibility": "^1.2.8", - "@octokit/plugin-paginate-rest": "^2.6.2", - "@octokit/plugin-rest-endpoint-methods": "^5.0.1", - "@octokit/plugin-retry": "^3.0.6", - "@octokit/plugin-throttling": "^3.3.4", - "@octokit/types": "^8.0.0", - "@octokit/webhooks": "^9.8.4", - "@probot/get-private-key": "^1.1.0", - "@probot/octokit-plugin-config": "^1.0.0", - "@probot/pino": "^2.2.0", - "@types/express": "^4.17.9", - "@types/ioredis": "^4.27.1", - "@types/pino": "^6.3.4", - "@types/pino-http": "^5.0.6", - "commander": "^6.2.0", - "deepmerge": "^4.2.2", - "deprecation": "^2.3.1", - "dotenv": "^8.2.0", - "eventsource": "^2.0.2", - "express": "^4.17.1", - "express-handlebars": "^6.0.3", - "ioredis": "^4.27.8", - "js-yaml": "^3.14.1", - "lru-cache": "^6.0.0", - "octokit-auth-probot": "^1.2.2", - "pino": "^6.7.0", - "pino-http": "^5.3.0", - "pkg-conf": "^3.1.0", - "resolve": "^1.19.0", - "semver": "^7.3.4", - "update-dotenv": "^1.1.1", - "uuid": "^8.3.2" - }, - "bin": { - "probot": "bin/probot.js" - }, - "engines": { - "node": ">=10.21" - } - }, - "node_modules/probot/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==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/probot/node_modules/semver": { - "version": "7.5.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.2.tgz", - "integrity": "sha512-SoftuTROv/cRjCze/scjGyiDtcUyxw1rgYQSZY7XTmtR5hX+dm76iDbTH8TkLPHCQmlbQVSSbNZCPM2hb0knnQ==", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/probot/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, - "node_modules/process-warning": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-1.0.0.tgz", - "integrity": "sha512-du4wfLyj4yCZq1VupnVSZmRsPJsNuxoDQFdCFHLaYiEbFBD7QE0a+I4D7hOxrVnh78QE/YipFAj9lXHiXocV+Q==" - }, - "node_modules/prompts": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", - "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", - "dev": true, - "dependencies": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/propagate": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/propagate/-/propagate-2.0.1.tgz", - "integrity": "sha512-vGrhOavPSTz4QVNuBNdcNXePNdNMaO1xj9yBeH1ScQPjk/rhg9sSlCXPhMkFuaNNW/syTvYqsnbIJxMBfRbbag==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/proxy-addr": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", - "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", - "dependencies": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/pstree.remy": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", - "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==", - "dev": true - }, - "node_modules/pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==" - }, - "node_modules/pure-rand": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.2.tgz", - "integrity": "sha512-6Yg0ekpKICSjPswYOuC5sku/TSWaRYlA0qsXqJgM/d/4pLPHPuTxK7Nbf7jFKzAeedUhR8C7K9Uv63FBsSo8xQ==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/dubzzz" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fast-check" - } - ] - }, - "node_modules/qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", - "dependencies": { - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "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" - } - ] - }, - "node_modules/quick-format-unescaped": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz", - "integrity": "sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==" - }, - "node_modules/range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/raw-body": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", - "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", - "dev": true - }, - "node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/redis-commands": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/redis-commands/-/redis-commands-1.7.0.tgz", - "integrity": "sha512-nJWqw3bTFy21hX/CPKHth6sfhZbdiHP6bTawSgQBlKOVRG7EZkfHbbHwQJnrE4vsQf0CMNE+3gJ4Fmm16vdVlQ==" - }, - "node_modules/redis-errors": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/redis-errors/-/redis-errors-1.2.0.tgz", - "integrity": "sha512-1qny3OExCf0UvUV/5wpYKf2YwPcOqXzkwKKSmKHiE6ZMQs5heeE/c8eXK+PNllPvmjgAbfnsbpkGZWy8cBpn9w==", - "engines": { - "node": ">=4" - } - }, - "node_modules/redis-parser": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/redis-parser/-/redis-parser-3.0.0.tgz", - "integrity": "sha512-DJnGAeenTdpMEH6uAJRK/uiyEIH9WVsUmoLwzudwGJUwZPp80PDBWPHXSAGNPwNvIXAbe7MSUB1zQFugFml66A==", - "dependencies": { - "redis-errors": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/resolve": { - "version": "1.22.2", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", - "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", - "dependencies": { - "is-core-module": "^2.11.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", - "dev": true, - "dependencies": { - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve.exports": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", - "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true, - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rfdc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", - "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==" - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "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" - } - ], - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "node_modules/saslprep": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz", - "integrity": "sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==", - "optional": true, - "dependencies": { - "sparse-bitfield": "^3.0.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/send": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", - "dependencies": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "2.4.1", - "range-parser": "~1.2.1", - "statuses": "2.0.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/send/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/send/node_modules/debug/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/send/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - }, - "node_modules/serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", - "dependencies": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.18.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/sift": { - "version": "16.0.1", - "resolved": "https://registry.npmjs.org/sift/-/sift-16.0.1.tgz", - "integrity": "sha512-Wv6BjQ5zbhW7VFefWusVP33T/EM0vYikCaQ2qR8yULbsilAT8/wQaXvuQ3ptGLpoKx+lihJE3y2UTgKDyyNHZQ==" - }, - "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true - }, - "node_modules/simple-update-notifier": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-1.1.0.tgz", - "integrity": "sha512-VpsrsJSUcJEseSbMHkrsrAVSdvVS5I96Qo1QAQ4FxQ9wXFcB+pjj7FB7/us9+GcgfW4ziHtYMc1J0PLczb55mg==", - "dev": true, - "dependencies": { - "semver": "~7.0.0" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/simple-update-notifier/node_modules/semver": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", - "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/sisteransi": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", - "dev": true - }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/smart-buffer": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", - "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", - "engines": { - "node": ">= 6.0.0", - "npm": ">= 3.0.0" - } - }, - "node_modules/smee-client": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/smee-client/-/smee-client-1.2.3.tgz", - "integrity": "sha512-uDrU8u9/Ln7aRXyzGHgVaNUS8onHZZeSwQjCdkMoSL7U85xI+l+Y2NgjibkMJAyXkW7IAbb8rw9RMHIjS6lAwA==", - "dev": true, - "dependencies": { - "commander": "^2.19.0", - "eventsource": "^1.1.0", - "morgan": "^1.9.1", - "superagent": "^7.1.3", - "validator": "^13.7.0" - }, - "bin": { - "smee": "bin/smee.js" - } - }, - "node_modules/smee-client/node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, - "node_modules/smee-client/node_modules/eventsource": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.1.2.tgz", - "integrity": "sha512-xAH3zWhgO2/3KIniEKYPr8plNSzlGINOUqYj0m0u7AB81iRw8b/3E73W6AuU+6klLbaSFmZnaETQ2lXPfAydrA==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/socks": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", - "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", - "dependencies": { - "ip": "^2.0.0", - "smart-buffer": "^4.2.0" - }, - "engines": { - "node": ">= 10.13.0", - "npm": ">= 3.0.0" - } - }, - "node_modules/sonic-boom": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-2.8.0.tgz", - "integrity": "sha512-kuonw1YOYYNOve5iHdSahXPOK49GqwA+LZhI6Wz/l0rP57iKyXXIHaRagOBHAPmGwJC6od2Z9zgvZ5loSgMlVg==", - "dependencies": { - "atomic-sleep": "^1.0.0" - } - }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-support": { - "version": "0.5.13", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", - "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", - "dev": true, - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/sparse-bitfield": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", - "integrity": "sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==", - "optional": true, - "dependencies": { - "memory-pager": "^1.0.2" - } - }, - "node_modules/split2": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", - "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", - "engines": { - "node": ">= 10.x" - } - }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" - }, - "node_modules/stack-utils": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", - "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", - "dev": true, - "dependencies": { - "escape-string-regexp": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/standard-as-callback": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/standard-as-callback/-/standard-as-callback-2.1.0.tgz", - "integrity": "sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A==" - }, - "node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/string-length": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", - "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", - "dev": true, - "dependencies": { - "char-regex": "^1.0.2", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-bom": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/superagent": { - "version": "7.1.5", - "resolved": "https://registry.npmjs.org/superagent/-/superagent-7.1.5.tgz", - "integrity": "sha512-HQYyGuDRFGmZ6GNC4hq2f37KnsY9Lr0/R1marNZTgMweVDQLTLJJ6DGQ9Tj/xVVs5HEnop9EMmTbywb5P30aqw==", - "dev": true, - "dependencies": { - "component-emitter": "^1.3.0", - "cookiejar": "^2.1.3", - "debug": "^4.3.4", - "fast-safe-stringify": "^2.1.1", - "form-data": "^4.0.0", - "formidable": "^2.0.1", - "methods": "^1.1.2", - "mime": "^2.5.0", - "qs": "^6.10.3", - "readable-stream": "^3.6.0", - "semver": "^7.3.7" - }, - "engines": { - "node": ">=6.4.0 <13 || >=14" - } - }, - "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/semver": { - "version": "7.5.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.2.tgz", - "integrity": "sha512-SoftuTROv/cRjCze/scjGyiDtcUyxw1rgYQSZY7XTmtR5hX+dm76iDbTH8TkLPHCQmlbQVSSbNZCPM2hb0knnQ==", - "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/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/test-exclude": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", - "dev": true, - "dependencies": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true - }, - "node_modules/tmpl": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", - "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", - "dev": true - }, - "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/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/touch": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", - "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==", - "dev": true, - "dependencies": { - "nopt": "~1.0.10" - }, - "bin": { - "nodetouch": "bin/nodetouch.js" - } - }, - "node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" - }, - "node_modules/ts-jest": { - "version": "29.1.0", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.0.tgz", - "integrity": "sha512-ZhNr7Z4PcYa+JjMl62ir+zPiNJfXJN6E8hSLnaUKhOgqcn8vb3e537cpkd0FuAfRK3sR1LSqM1MOhliXNgOFPA==", - "dev": true, - "dependencies": { - "bs-logger": "0.x", - "fast-json-stable-stringify": "2.x", - "jest-util": "^29.0.0", - "json5": "^2.2.3", - "lodash.memoize": "4.x", - "make-error": "1.x", - "semver": "7.x", - "yargs-parser": "^21.0.1" - }, - "bin": { - "ts-jest": "cli.js" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "@babel/core": ">=7.0.0-beta.0 <8", - "@jest/types": "^29.0.0", - "babel-jest": "^29.0.0", - "jest": "^29.0.0", - "typescript": ">=4.3 <6" - }, - "peerDependenciesMeta": { - "@babel/core": { - "optional": true - }, - "@jest/types": { - "optional": true - }, - "babel-jest": { - "optional": true - }, - "esbuild": { - "optional": true - } - } - }, - "node_modules/ts-jest/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/ts-jest/node_modules/semver": { - "version": "7.5.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.2.tgz", - "integrity": "sha512-SoftuTROv/cRjCze/scjGyiDtcUyxw1rgYQSZY7XTmtR5hX+dm76iDbTH8TkLPHCQmlbQVSSbNZCPM2hb0knnQ==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/ts-jest/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/ts-node": { - "version": "10.9.1", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", - "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", - "dependencies": { - "@cspotcode/source-map-support": "^0.8.0", - "@tsconfig/node10": "^1.0.7", - "@tsconfig/node12": "^1.0.7", - "@tsconfig/node14": "^1.0.0", - "@tsconfig/node16": "^1.0.2", - "acorn": "^8.4.1", - "acorn-walk": "^8.1.1", - "arg": "^4.1.0", - "create-require": "^1.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "v8-compile-cache-lib": "^3.0.1", - "yn": "3.1.1" - }, - "bin": { - "ts-node": "dist/bin.js", - "ts-node-cwd": "dist/bin-cwd.js", - "ts-node-esm": "dist/bin-esm.js", - "ts-node-script": "dist/bin-script.js", - "ts-node-transpile-only": "dist/bin-transpile.js", - "ts-script": "dist/bin-script-deprecated.js" - }, - "peerDependencies": { - "@swc/core": ">=1.2.50", - "@swc/wasm": ">=1.2.50", - "@types/node": "*", - "typescript": ">=2.7" - }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "@swc/wasm": { - "optional": true - } - } - }, - "node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - }, - "node_modules/tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", - "dev": true, - "dependencies": { - "tslib": "^1.8.1" - }, - "engines": { - "node": ">= 6" - }, - "peerDependencies": { - "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" - } - }, - "node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/typescript": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", - "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, - "node_modules/uglify-js": { - "version": "3.17.4", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz", - "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==", - "optional": true, - "bin": { - "uglifyjs": "bin/uglifyjs" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/undefsafe": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", - "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==", - "dev": true - }, - "node_modules/universal-github-app-jwt": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/universal-github-app-jwt/-/universal-github-app-jwt-1.1.1.tgz", - "integrity": "sha512-G33RTLrIBMFmlDV4u4CBF7dh71eWwykck4XgaxaIVeZKOYZRAAxvcGMRFTUclVY6xoUPQvO4Ne5wKGxYm/Yy9w==", - "dependencies": { - "@types/jsonwebtoken": "^9.0.0", - "jsonwebtoken": "^9.0.0" - } - }, - "node_modules/universal-user-agent": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", - "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==" - }, - "node_modules/unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/update-browserslist-db": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", - "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==", - "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" - } - ], - "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" - }, - "bin": { - "update-browserslist-db": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, - "node_modules/update-dotenv": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/update-dotenv/-/update-dotenv-1.1.1.tgz", - "integrity": "sha512-3cIC18In/t0X/yH793c00qqxcKD8jVCgNOPif/fGQkFpYMGecM9YAc+kaAKXuZsM2dE9I9wFI7KvAuNX22SGMQ==", - "peerDependencies": { - "dotenv": "*" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/uri-js/node_modules/punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" - }, - "node_modules/utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/v8-compile-cache-lib": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", - "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==" - }, - "node_modules/v8-to-istanbul": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz", - "integrity": "sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==", - "dev": true, - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.12", - "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^1.6.0" - }, - "engines": { - "node": ">=10.12.0" - } - }, - "node_modules/v8-to-istanbul/node_modules/convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "dev": true - }, - "node_modules/validator": { - "version": "13.9.0", - "resolved": "https://registry.npmjs.org/validator/-/validator-13.9.0.tgz", - "integrity": "sha512-B+dGG8U3fdtM0/aNK4/X8CXq/EcxU2WPrPEkJGslb47qyHsxmbggTWK0yEA4qnYVNF+nxNlN88o14hIcPmSIEA==", - "dev": true, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/walker": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", - "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", - "dev": true, - "dependencies": { - "makeerror": "1.0.12" - } - }, - "node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" - }, - "node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==" - }, - "node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" - }, - "node_modules/write-file-atomic": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", - "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", - "dev": true, - "dependencies": { - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.7" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - }, - "node_modules/yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", - "dev": true, - "dependencies": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "dev": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/yn": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", - "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", - "engines": { - "node": ">=6" - } - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - } - }, - "dependencies": { - "@aashutoshrathi/word-wrap": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", - "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", - "dev": true - }, - "@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, - "requires": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" - } - }, - "@babel/code-frame": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.5.tgz", - "integrity": "sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==", - "dev": true, - "requires": { - "@babel/highlight": "^7.22.5" - } - }, - "@babel/compat-data": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.5.tgz", - "integrity": "sha512-4Jc/YuIaYqKnDDz892kPIledykKg12Aw1PYX5i/TY28anJtacvM1Rrr8wbieB9GfEJwlzqT0hUEao0CxEebiDA==", - "dev": true - }, - "@babel/core": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.5.tgz", - "integrity": "sha512-SBuTAjg91A3eKOvD+bPEz3LlhHZRNu1nFOVts9lzDJTXshHTjII0BAtDS3Y2DAkdZdDKWVZGVwkDfc4Clxn1dg==", - "dev": true, - "requires": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.22.5", - "@babel/generator": "^7.22.5", - "@babel/helper-compilation-targets": "^7.22.5", - "@babel/helper-module-transforms": "^7.22.5", - "@babel/helpers": "^7.22.5", - "@babel/parser": "^7.22.5", - "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.5", - "@babel/types": "^7.22.5", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.2", - "semver": "^6.3.0" - }, - "dependencies": { - "convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "dev": true - } - } - }, - "@babel/generator": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.5.tgz", - "integrity": "sha512-+lcUbnTRhd0jOewtFSedLyiPsD5tswKkbgcezOqqWFUVNEwoUTlpPOBmvhG7OXWLR4jMdv0czPGH5XbflnD1EA==", - "dev": true, - "requires": { - "@babel/types": "^7.22.5", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", - "jsesc": "^2.5.1" - } - }, - "@babel/helper-compilation-targets": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.5.tgz", - "integrity": "sha512-Ji+ywpHeuqxB8WDxraCiqR0xfhYjiDE/e6k7FuIaANnoOFxAHskHChz4vA1mJC9Lbm01s1PVAGhQY4FUKSkGZw==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.22.5", - "@babel/helper-validator-option": "^7.22.5", - "browserslist": "^4.21.3", - "lru-cache": "^5.1.1", - "semver": "^6.3.0" - } - }, - "@babel/helper-environment-visitor": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.5.tgz", - "integrity": "sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==", - "dev": true - }, - "@babel/helper-function-name": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.22.5.tgz", - "integrity": "sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==", - "dev": true, - "requires": { - "@babel/template": "^7.22.5", - "@babel/types": "^7.22.5" - } - }, - "@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, - "requires": { - "@babel/types": "^7.22.5" - } - }, - "@babel/helper-module-imports": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.5.tgz", - "integrity": "sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==", - "dev": true, - "requires": { - "@babel/types": "^7.22.5" - } - }, - "@babel/helper-module-transforms": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.5.tgz", - "integrity": "sha512-+hGKDt/Ze8GFExiVHno/2dvG5IdstpzCq0y4Qc9OJ25D4q3pKfiIP/4Vp3/JvhDkLKsDK2api3q3fpIgiIF5bw==", - "dev": true, - "requires": { - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-module-imports": "^7.22.5", - "@babel/helper-simple-access": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.5", - "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.5", - "@babel/types": "^7.22.5" - } - }, - "@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 - }, - "@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, - "requires": { - "@babel/types": "^7.22.5" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.5.tgz", - "integrity": "sha512-thqK5QFghPKWLhAV321lxF95yCg2K3Ob5yw+M3VHWfdia0IkPXUtoLH8x/6Fh486QUvzhb8YOWHChTVen2/PoQ==", - "dev": true, - "requires": { - "@babel/types": "^7.22.5" - } - }, - "@babel/helper-string-parser": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", - "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", - "dev": true - }, - "@babel/helper-validator-identifier": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz", - "integrity": "sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==", - "dev": true - }, - "@babel/helper-validator-option": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz", - "integrity": "sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==", - "dev": true - }, - "@babel/helpers": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.5.tgz", - "integrity": "sha512-pSXRmfE1vzcUIDFQcSGA5Mr+GxBV9oiRKDuDxXvWQQBCh8HoIjs/2DlDB7H8smac1IVrB9/xdXj2N3Wol9Cr+Q==", - "dev": true, - "requires": { - "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.5", - "@babel/types": "^7.22.5" - } - }, - "@babel/highlight": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.5.tgz", - "integrity": "sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.22.5", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "dependencies": { - "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, - "requires": { - "color-convert": "^1.9.0" - } - }, - "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, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "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, - "requires": { - "color-name": "1.1.3" - } - }, - "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 - }, - "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 - }, - "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 - }, - "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, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "@babel/parser": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.5.tgz", - "integrity": "sha512-DFZMC9LJUG9PLOclRC32G63UXwzqS2koQC8dkx+PLdmt1xSePYpbT/NbsrJy8Q/muXz7o/h/d4A7Fuyixm559Q==", - "dev": true - }, - "@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-bigint": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", - "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-syntax-import-meta": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", - "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-jsx": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.22.5.tgz", - "integrity": "sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.22.5" - } - }, - "@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-syntax-typescript": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.22.5.tgz", - "integrity": "sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.22.5" - } - }, - "@babel/template": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.5.tgz", - "integrity": "sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.22.5", - "@babel/parser": "^7.22.5", - "@babel/types": "^7.22.5" - } - }, - "@babel/traverse": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.5.tgz", - "integrity": "sha512-7DuIjPgERaNo6r+PZwItpjCZEa5vyw4eJGufeLxrPdBXBoLcCJCIasvK6pK/9DVNrLZTLFhUGqaC6X/PA007TQ==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.22.5", - "@babel/generator": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-function-name": "^7.22.5", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.5", - "@babel/parser": "^7.22.5", - "@babel/types": "^7.22.5", - "debug": "^4.1.0", - "globals": "^11.1.0" - } - }, - "@babel/types": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.5.tgz", - "integrity": "sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==", - "dev": true, - "requires": { - "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.5", - "to-fast-properties": "^2.0.0" - } - }, - "@bcoe/v8-coverage": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", - "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", - "dev": true - }, - "@cspotcode/source-map-support": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", - "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", - "requires": { - "@jridgewell/trace-mapping": "0.3.9" - }, - "dependencies": { - "@jridgewell/trace-mapping": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", - "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", - "requires": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - } - } - }, - "@eslint-community/eslint-utils": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", - "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^3.3.0" - } - }, - "@eslint-community/regexpp": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.1.tgz", - "integrity": "sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==", - "dev": true - }, - "@eslint/eslintrc": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.0.tgz", - "integrity": "sha512-Lj7DECXqIVCqnqjjHMPna4vn6GJcMgul/wuS0je9OZ9gsL0zzDpKPVtcG1HaDVc+9y+qgXneTeUMbCqXJNpH1A==", - "dev": true, - "requires": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.6.0", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "dependencies": { - "argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "globals": { - "version": "13.20.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", - "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", - "dev": true, - "requires": { - "type-fest": "^0.20.2" - } - }, - "js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "requires": { - "argparse": "^2.0.1" - } - }, - "type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true - } - } - }, - "@eslint/js": { - "version": "8.44.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.44.0.tgz", - "integrity": "sha512-Ag+9YM4ocKQx9AarydN0KY2j0ErMHNIocPDrVo8zAE44xLTjEtz81OdR68/cydGtk6m6jDb5Za3r2useMzYmSw==", - "dev": true - }, - "@hapi/bourne": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@hapi/bourne/-/bourne-2.1.0.tgz", - "integrity": "sha512-i1BpaNDVLJdRBEKeJWkVO6tYX6DMFBuwMhSuWqLsY4ufeTKGVuV5rBsUhxPayXqnnWHgXUAmWK16H/ykO5Wj4Q==" - }, - "@humanwhocodes/config-array": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.10.tgz", - "integrity": "sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==", - "dev": true, - "requires": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.5" - } - }, - "@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true - }, - "@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", - "dev": true - }, - "@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", - "dev": true, - "requires": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" - } - }, - "@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", - "dev": true - }, - "@jest/console": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.5.0.tgz", - "integrity": "sha512-NEpkObxPwyw/XxZVLPmAGKE89IQRp4puc6IQRPru6JKd1M3fW9v1xM1AnzIJE65hbCkzQAdnL8P47e9hzhiYLQ==", - "dev": true, - "requires": { - "@jest/types": "^29.5.0", - "@types/node": "*", - "chalk": "^4.0.0", - "jest-message-util": "^29.5.0", - "jest-util": "^29.5.0", - "slash": "^3.0.0" - } - }, - "@jest/core": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.5.0.tgz", - "integrity": "sha512-28UzQc7ulUrOQw1IsN/kv1QES3q2kkbl/wGslyhAclqZ/8cMdB5M68BffkIdSJgKBUt50d3hbwJ92XESlE7LiQ==", - "dev": true, - "requires": { - "@jest/console": "^29.5.0", - "@jest/reporters": "^29.5.0", - "@jest/test-result": "^29.5.0", - "@jest/transform": "^29.5.0", - "@jest/types": "^29.5.0", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "jest-changed-files": "^29.5.0", - "jest-config": "^29.5.0", - "jest-haste-map": "^29.5.0", - "jest-message-util": "^29.5.0", - "jest-regex-util": "^29.4.3", - "jest-resolve": "^29.5.0", - "jest-resolve-dependencies": "^29.5.0", - "jest-runner": "^29.5.0", - "jest-runtime": "^29.5.0", - "jest-snapshot": "^29.5.0", - "jest-util": "^29.5.0", - "jest-validate": "^29.5.0", - "jest-watcher": "^29.5.0", - "micromatch": "^4.0.4", - "pretty-format": "^29.5.0", - "slash": "^3.0.0", - "strip-ansi": "^6.0.0" - }, - "dependencies": { - "jest-config": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.5.0.tgz", - "integrity": "sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==", - "dev": true, - "requires": { - "@babel/core": "^7.11.6", - "@jest/test-sequencer": "^29.5.0", - "@jest/types": "^29.5.0", - "babel-jest": "^29.5.0", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "deepmerge": "^4.2.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-circus": "^29.5.0", - "jest-environment-node": "^29.5.0", - "jest-get-type": "^29.4.3", - "jest-regex-util": "^29.4.3", - "jest-resolve": "^29.5.0", - "jest-runner": "^29.5.0", - "jest-util": "^29.5.0", - "jest-validate": "^29.5.0", - "micromatch": "^4.0.4", - "parse-json": "^5.2.0", - "pretty-format": "^29.5.0", - "slash": "^3.0.0", - "strip-json-comments": "^3.1.1" - } - }, - "parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - } - } - } - }, - "@jest/environment": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.5.0.tgz", - "integrity": "sha512-5FXw2+wD29YU1d4I2htpRX7jYnAyTRjP2CsXQdo9SAM8g3ifxWPSV0HnClSn71xwctr0U3oZIIH+dtbfmnbXVQ==", - "dev": true, - "requires": { - "@jest/fake-timers": "^29.5.0", - "@jest/types": "^29.5.0", - "@types/node": "*", - "jest-mock": "^29.5.0" - } - }, - "@jest/expect": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.5.0.tgz", - "integrity": "sha512-PueDR2HGihN3ciUNGr4uelropW7rqUfTiOn+8u0leg/42UhblPxHkfoh0Ruu3I9Y1962P3u2DY4+h7GVTSVU6g==", - "dev": true, - "requires": { - "expect": "^29.5.0", - "jest-snapshot": "^29.5.0" - } - }, - "@jest/expect-utils": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.5.0.tgz", - "integrity": "sha512-fmKzsidoXQT2KwnrwE0SQq3uj8Z763vzR8LnLBwC2qYWEFpjX8daRsk6rHUM1QvNlEW/UJXNXm59ztmJJWs2Mg==", - "dev": true, - "requires": { - "jest-get-type": "^29.4.3" - } - }, - "@jest/fake-timers": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.5.0.tgz", - "integrity": "sha512-9ARvuAAQcBwDAqOnglWq2zwNIRUDtk/SCkp/ToGEhFv5r86K21l+VEs0qNTaXtyiY0lEePl3kylijSYJQqdbDg==", - "dev": true, - "requires": { - "@jest/types": "^29.5.0", - "@sinonjs/fake-timers": "^10.0.2", - "@types/node": "*", - "jest-message-util": "^29.5.0", - "jest-mock": "^29.5.0", - "jest-util": "^29.5.0" - } - }, - "@jest/globals": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.5.0.tgz", - "integrity": "sha512-S02y0qMWGihdzNbUiqSAiKSpSozSuHX5UYc7QbnHP+D9Lyw8DgGGCinrN9uSuHPeKgSSzvPom2q1nAtBvUsvPQ==", - "dev": true, - "requires": { - "@jest/environment": "^29.5.0", - "@jest/expect": "^29.5.0", - "@jest/types": "^29.5.0", - "jest-mock": "^29.5.0" - } - }, - "@jest/reporters": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.5.0.tgz", - "integrity": "sha512-D05STXqj/M8bP9hQNSICtPqz97u7ffGzZu+9XLucXhkOFBqKcXe04JLZOgIekOxdb73MAoBUFnqvf7MCpKk5OA==", - "dev": true, - "requires": { - "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^29.5.0", - "@jest/test-result": "^29.5.0", - "@jest/transform": "^29.5.0", - "@jest/types": "^29.5.0", - "@jridgewell/trace-mapping": "^0.3.15", - "@types/node": "*", - "chalk": "^4.0.0", - "collect-v8-coverage": "^1.0.0", - "exit": "^0.1.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^5.1.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.1.3", - "jest-message-util": "^29.5.0", - "jest-util": "^29.5.0", - "jest-worker": "^29.5.0", - "slash": "^3.0.0", - "string-length": "^4.0.1", - "strip-ansi": "^6.0.0", - "v8-to-istanbul": "^9.0.1" - } - }, - "@jest/schemas": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.4.3.tgz", - "integrity": "sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg==", - "dev": true, - "requires": { - "@sinclair/typebox": "^0.25.16" - } - }, - "@jest/source-map": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.4.3.tgz", - "integrity": "sha512-qyt/mb6rLyd9j1jUts4EQncvS6Yy3PM9HghnNv86QBlV+zdL2inCdK1tuVlL+J+lpiw2BI67qXOrX3UurBqQ1w==", - "dev": true, - "requires": { - "@jridgewell/trace-mapping": "^0.3.15", - "callsites": "^3.0.0", - "graceful-fs": "^4.2.9" - } - }, - "@jest/test-result": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.5.0.tgz", - "integrity": "sha512-fGl4rfitnbfLsrfx1uUpDEESS7zM8JdgZgOCQuxQvL1Sn/I6ijeAVQWGfXI9zb1i9Mzo495cIpVZhA0yr60PkQ==", - "dev": true, - "requires": { - "@jest/console": "^29.5.0", - "@jest/types": "^29.5.0", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" - } - }, - "@jest/test-sequencer": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.5.0.tgz", - "integrity": "sha512-yPafQEcKjkSfDXyvtgiV4pevSeyuA6MQr6ZIdVkWJly9vkqjnFfcfhRQqpD5whjoU8EORki752xQmjaqoFjzMQ==", - "dev": true, - "requires": { - "@jest/test-result": "^29.5.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.5.0", - "slash": "^3.0.0" - } - }, - "@jest/transform": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.5.0.tgz", - "integrity": "sha512-8vbeZWqLJOvHaDfeMuoHITGKSz5qWc9u04lnWrQE3VyuSw604PzQM824ZeX9XSjUCeDiE3GuxZe5UKa8J61NQw==", - "dev": true, - "requires": { - "@babel/core": "^7.11.6", - "@jest/types": "^29.5.0", - "@jridgewell/trace-mapping": "^0.3.15", - "babel-plugin-istanbul": "^6.1.1", - "chalk": "^4.0.0", - "convert-source-map": "^2.0.0", - "fast-json-stable-stringify": "^2.1.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.5.0", - "jest-regex-util": "^29.4.3", - "jest-util": "^29.5.0", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", - "slash": "^3.0.0", - "write-file-atomic": "^4.0.2" - } - }, - "@jest/types": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.5.0.tgz", - "integrity": "sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==", - "dev": true, - "requires": { - "@jest/schemas": "^29.4.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - } - }, - "@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, - "requires": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - } - }, - "@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==" - }, - "@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 - }, - "@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==" - }, - "@jridgewell/trace-mapping": { - "version": "0.3.18", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz", - "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==", - "dev": true, - "requires": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" - }, - "dependencies": { - "@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", - "dev": true - } - } - }, - "@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - } - }, - "@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true - }, - "@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "requires": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - } - }, - "@octokit/auth-app": { - "version": "4.0.13", - "resolved": "https://registry.npmjs.org/@octokit/auth-app/-/auth-app-4.0.13.tgz", - "integrity": "sha512-NBQkmR/Zsc+8fWcVIFrwDgNXS7f4XDrkd9LHdi9DPQw1NdGHLviLzRO2ZBwTtepnwHXW5VTrVU9eFGijMUqllg==", - "requires": { - "@octokit/auth-oauth-app": "^5.0.0", - "@octokit/auth-oauth-user": "^2.0.0", - "@octokit/request": "^6.0.0", - "@octokit/request-error": "^3.0.0", - "@octokit/types": "^9.0.0", - "deprecation": "^2.3.1", - "lru-cache": "^9.0.0", - "universal-github-app-jwt": "^1.1.1", - "universal-user-agent": "^6.0.0" - }, - "dependencies": { - "@octokit/endpoint": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-7.0.6.tgz", - "integrity": "sha512-5L4fseVRUsDFGR00tMWD/Trdeeihn999rTMGRMC1G/Ldi1uWlWJzI98H4Iak5DB/RVvQuyMYKqSK/R6mbSOQyg==", - "requires": { - "@octokit/types": "^9.0.0", - "is-plain-object": "^5.0.0", - "universal-user-agent": "^6.0.0" - } - }, - "@octokit/openapi-types": { - "version": "18.0.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-18.0.0.tgz", - "integrity": "sha512-V8GImKs3TeQRxRtXFpG2wl19V7444NIOTDF24AWuIbmNaNYOQMWRbjcGDXV5B+0n887fgDcuMNOmlul+k+oJtw==" - }, - "@octokit/request": { - "version": "6.2.8", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-6.2.8.tgz", - "integrity": "sha512-ow4+pkVQ+6XVVsekSYBzJC0VTVvh/FCTUUgTsboGq+DTeWdyIFV8WSCdo0RIxk6wSkBTHqIK1mYuY7nOBXOchw==", - "requires": { - "@octokit/endpoint": "^7.0.0", - "@octokit/request-error": "^3.0.0", - "@octokit/types": "^9.0.0", - "is-plain-object": "^5.0.0", - "node-fetch": "^2.6.7", - "universal-user-agent": "^6.0.0" - } - }, - "@octokit/request-error": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-3.0.3.tgz", - "integrity": "sha512-crqw3V5Iy2uOU5Np+8M/YexTlT8zxCfI+qu+LxUB7SZpje4Qmx3mub5DfEKSO8Ylyk0aogi6TYdf6kxzh2BguQ==", - "requires": { - "@octokit/types": "^9.0.0", - "deprecation": "^2.0.0", - "once": "^1.4.0" - } - }, - "@octokit/types": { - "version": "9.3.2", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-9.3.2.tgz", - "integrity": "sha512-D4iHGTdAnEEVsB8fl95m1hiz7D5YiRdQ9b/OEb3BYRVwbLsGHcRVPz+u+BgRLNk0Q0/4iZCBqDN96j2XNxfXrA==", - "requires": { - "@octokit/openapi-types": "^18.0.0" - } - }, - "lru-cache": { - "version": "9.1.2", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-9.1.2.tgz", - "integrity": "sha512-ERJq3FOzJTxBbFjZ7iDs+NiK4VI9Wz+RdrrAB8dio1oV+YvdPzUEE4QNiT2VD51DkIbCYRUUzCRkssXCHqSnKQ==" - } - } - }, - "@octokit/auth-oauth-app": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/@octokit/auth-oauth-app/-/auth-oauth-app-5.0.6.tgz", - "integrity": "sha512-SxyfIBfeFcWd9Z/m1xa4LENTQ3l1y6Nrg31k2Dcb1jS5ov7pmwMJZ6OGX8q3K9slRgVpeAjNA1ipOAMHkieqyw==", - "requires": { - "@octokit/auth-oauth-device": "^4.0.0", - "@octokit/auth-oauth-user": "^2.0.0", - "@octokit/request": "^6.0.0", - "@octokit/types": "^9.0.0", - "@types/btoa-lite": "^1.0.0", - "btoa-lite": "^1.0.0", - "universal-user-agent": "^6.0.0" - }, - "dependencies": { - "@octokit/endpoint": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-7.0.6.tgz", - "integrity": "sha512-5L4fseVRUsDFGR00tMWD/Trdeeihn999rTMGRMC1G/Ldi1uWlWJzI98H4Iak5DB/RVvQuyMYKqSK/R6mbSOQyg==", - "requires": { - "@octokit/types": "^9.0.0", - "is-plain-object": "^5.0.0", - "universal-user-agent": "^6.0.0" - } - }, - "@octokit/openapi-types": { - "version": "18.0.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-18.0.0.tgz", - "integrity": "sha512-V8GImKs3TeQRxRtXFpG2wl19V7444NIOTDF24AWuIbmNaNYOQMWRbjcGDXV5B+0n887fgDcuMNOmlul+k+oJtw==" - }, - "@octokit/request": { - "version": "6.2.8", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-6.2.8.tgz", - "integrity": "sha512-ow4+pkVQ+6XVVsekSYBzJC0VTVvh/FCTUUgTsboGq+DTeWdyIFV8WSCdo0RIxk6wSkBTHqIK1mYuY7nOBXOchw==", - "requires": { - "@octokit/endpoint": "^7.0.0", - "@octokit/request-error": "^3.0.0", - "@octokit/types": "^9.0.0", - "is-plain-object": "^5.0.0", - "node-fetch": "^2.6.7", - "universal-user-agent": "^6.0.0" - } - }, - "@octokit/request-error": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-3.0.3.tgz", - "integrity": "sha512-crqw3V5Iy2uOU5Np+8M/YexTlT8zxCfI+qu+LxUB7SZpje4Qmx3mub5DfEKSO8Ylyk0aogi6TYdf6kxzh2BguQ==", - "requires": { - "@octokit/types": "^9.0.0", - "deprecation": "^2.0.0", - "once": "^1.4.0" - } - }, - "@octokit/types": { - "version": "9.3.2", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-9.3.2.tgz", - "integrity": "sha512-D4iHGTdAnEEVsB8fl95m1hiz7D5YiRdQ9b/OEb3BYRVwbLsGHcRVPz+u+BgRLNk0Q0/4iZCBqDN96j2XNxfXrA==", - "requires": { - "@octokit/openapi-types": "^18.0.0" - } - } - } - }, - "@octokit/auth-oauth-device": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@octokit/auth-oauth-device/-/auth-oauth-device-4.0.5.tgz", - "integrity": "sha512-XyhoWRTzf2ZX0aZ52a6Ew5S5VBAfwwx1QnC2Np6Et3MWQpZjlREIcbcvVZtkNuXp6Z9EeiSLSDUqm3C+aMEHzQ==", - "requires": { - "@octokit/oauth-methods": "^2.0.0", - "@octokit/request": "^6.0.0", - "@octokit/types": "^9.0.0", - "universal-user-agent": "^6.0.0" - }, - "dependencies": { - "@octokit/endpoint": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-7.0.6.tgz", - "integrity": "sha512-5L4fseVRUsDFGR00tMWD/Trdeeihn999rTMGRMC1G/Ldi1uWlWJzI98H4Iak5DB/RVvQuyMYKqSK/R6mbSOQyg==", - "requires": { - "@octokit/types": "^9.0.0", - "is-plain-object": "^5.0.0", - "universal-user-agent": "^6.0.0" - } - }, - "@octokit/openapi-types": { - "version": "18.0.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-18.0.0.tgz", - "integrity": "sha512-V8GImKs3TeQRxRtXFpG2wl19V7444NIOTDF24AWuIbmNaNYOQMWRbjcGDXV5B+0n887fgDcuMNOmlul+k+oJtw==" - }, - "@octokit/request": { - "version": "6.2.8", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-6.2.8.tgz", - "integrity": "sha512-ow4+pkVQ+6XVVsekSYBzJC0VTVvh/FCTUUgTsboGq+DTeWdyIFV8WSCdo0RIxk6wSkBTHqIK1mYuY7nOBXOchw==", - "requires": { - "@octokit/endpoint": "^7.0.0", - "@octokit/request-error": "^3.0.0", - "@octokit/types": "^9.0.0", - "is-plain-object": "^5.0.0", - "node-fetch": "^2.6.7", - "universal-user-agent": "^6.0.0" - } - }, - "@octokit/request-error": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-3.0.3.tgz", - "integrity": "sha512-crqw3V5Iy2uOU5Np+8M/YexTlT8zxCfI+qu+LxUB7SZpje4Qmx3mub5DfEKSO8Ylyk0aogi6TYdf6kxzh2BguQ==", - "requires": { - "@octokit/types": "^9.0.0", - "deprecation": "^2.0.0", - "once": "^1.4.0" - } - }, - "@octokit/types": { - "version": "9.3.2", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-9.3.2.tgz", - "integrity": "sha512-D4iHGTdAnEEVsB8fl95m1hiz7D5YiRdQ9b/OEb3BYRVwbLsGHcRVPz+u+BgRLNk0Q0/4iZCBqDN96j2XNxfXrA==", - "requires": { - "@octokit/openapi-types": "^18.0.0" - } - } - } - }, - "@octokit/auth-oauth-user": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@octokit/auth-oauth-user/-/auth-oauth-user-2.1.2.tgz", - "integrity": "sha512-kkRqNmFe7s5GQcojE3nSlF+AzYPpPv7kvP/xYEnE57584pixaFBH8Vovt+w5Y3E4zWUEOxjdLItmBTFAWECPAg==", - "requires": { - "@octokit/auth-oauth-device": "^4.0.0", - "@octokit/oauth-methods": "^2.0.0", - "@octokit/request": "^6.0.0", - "@octokit/types": "^9.0.0", - "btoa-lite": "^1.0.0", - "universal-user-agent": "^6.0.0" - }, - "dependencies": { - "@octokit/endpoint": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-7.0.6.tgz", - "integrity": "sha512-5L4fseVRUsDFGR00tMWD/Trdeeihn999rTMGRMC1G/Ldi1uWlWJzI98H4Iak5DB/RVvQuyMYKqSK/R6mbSOQyg==", - "requires": { - "@octokit/types": "^9.0.0", - "is-plain-object": "^5.0.0", - "universal-user-agent": "^6.0.0" - } - }, - "@octokit/openapi-types": { - "version": "18.0.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-18.0.0.tgz", - "integrity": "sha512-V8GImKs3TeQRxRtXFpG2wl19V7444NIOTDF24AWuIbmNaNYOQMWRbjcGDXV5B+0n887fgDcuMNOmlul+k+oJtw==" - }, - "@octokit/request": { - "version": "6.2.8", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-6.2.8.tgz", - "integrity": "sha512-ow4+pkVQ+6XVVsekSYBzJC0VTVvh/FCTUUgTsboGq+DTeWdyIFV8WSCdo0RIxk6wSkBTHqIK1mYuY7nOBXOchw==", - "requires": { - "@octokit/endpoint": "^7.0.0", - "@octokit/request-error": "^3.0.0", - "@octokit/types": "^9.0.0", - "is-plain-object": "^5.0.0", - "node-fetch": "^2.6.7", - "universal-user-agent": "^6.0.0" - } - }, - "@octokit/request-error": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-3.0.3.tgz", - "integrity": "sha512-crqw3V5Iy2uOU5Np+8M/YexTlT8zxCfI+qu+LxUB7SZpje4Qmx3mub5DfEKSO8Ylyk0aogi6TYdf6kxzh2BguQ==", - "requires": { - "@octokit/types": "^9.0.0", - "deprecation": "^2.0.0", - "once": "^1.4.0" - } - }, - "@octokit/types": { - "version": "9.3.2", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-9.3.2.tgz", - "integrity": "sha512-D4iHGTdAnEEVsB8fl95m1hiz7D5YiRdQ9b/OEb3BYRVwbLsGHcRVPz+u+BgRLNk0Q0/4iZCBqDN96j2XNxfXrA==", - "requires": { - "@octokit/openapi-types": "^18.0.0" - } - } - } - }, - "@octokit/auth-token": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.5.0.tgz", - "integrity": "sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g==", - "requires": { - "@octokit/types": "^6.0.3" - }, - "dependencies": { - "@octokit/openapi-types": { - "version": "12.11.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.11.0.tgz", - "integrity": "sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==" - }, - "@octokit/types": { - "version": "6.41.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", - "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", - "requires": { - "@octokit/openapi-types": "^12.11.0" - } - } - } - }, - "@octokit/auth-unauthenticated": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@octokit/auth-unauthenticated/-/auth-unauthenticated-3.0.5.tgz", - "integrity": "sha512-yH2GPFcjrTvDWPwJWWCh0tPPtTL5SMgivgKPA+6v/XmYN6hGQkAto8JtZibSKOpf8ipmeYhLNWQ2UgW0GYILCw==", - "requires": { - "@octokit/request-error": "^3.0.0", - "@octokit/types": "^9.0.0" - }, - "dependencies": { - "@octokit/openapi-types": { - "version": "18.0.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-18.0.0.tgz", - "integrity": "sha512-V8GImKs3TeQRxRtXFpG2wl19V7444NIOTDF24AWuIbmNaNYOQMWRbjcGDXV5B+0n887fgDcuMNOmlul+k+oJtw==" - }, - "@octokit/request-error": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-3.0.3.tgz", - "integrity": "sha512-crqw3V5Iy2uOU5Np+8M/YexTlT8zxCfI+qu+LxUB7SZpje4Qmx3mub5DfEKSO8Ylyk0aogi6TYdf6kxzh2BguQ==", - "requires": { - "@octokit/types": "^9.0.0", - "deprecation": "^2.0.0", - "once": "^1.4.0" - } - }, - "@octokit/types": { - "version": "9.3.2", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-9.3.2.tgz", - "integrity": "sha512-D4iHGTdAnEEVsB8fl95m1hiz7D5YiRdQ9b/OEb3BYRVwbLsGHcRVPz+u+BgRLNk0Q0/4iZCBqDN96j2XNxfXrA==", - "requires": { - "@octokit/openapi-types": "^18.0.0" - } - } - } - }, - "@octokit/core": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@octokit/core/-/core-3.6.0.tgz", - "integrity": "sha512-7RKRKuA4xTjMhY+eG3jthb3hlZCsOwg3rztWh75Xc+ShDWOfDDATWbeZpAHBNRpm4Tv9WgBMOy1zEJYXG6NJ7Q==", - "requires": { - "@octokit/auth-token": "^2.4.4", - "@octokit/graphql": "^4.5.8", - "@octokit/request": "^5.6.3", - "@octokit/request-error": "^2.0.5", - "@octokit/types": "^6.0.3", - "before-after-hook": "^2.2.0", - "universal-user-agent": "^6.0.0" - }, - "dependencies": { - "@octokit/openapi-types": { - "version": "12.11.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.11.0.tgz", - "integrity": "sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==" - }, - "@octokit/types": { - "version": "6.41.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", - "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", - "requires": { - "@octokit/openapi-types": "^12.11.0" - } - } - } - }, - "@octokit/endpoint": { - "version": "6.0.12", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.12.tgz", - "integrity": "sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA==", - "requires": { - "@octokit/types": "^6.0.3", - "is-plain-object": "^5.0.0", - "universal-user-agent": "^6.0.0" - }, - "dependencies": { - "@octokit/openapi-types": { - "version": "12.11.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.11.0.tgz", - "integrity": "sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==" - }, - "@octokit/types": { - "version": "6.41.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", - "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", - "requires": { - "@octokit/openapi-types": "^12.11.0" - } - } - } - }, - "@octokit/graphql": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.8.0.tgz", - "integrity": "sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg==", - "requires": { - "@octokit/request": "^5.6.0", - "@octokit/types": "^6.0.3", - "universal-user-agent": "^6.0.0" - }, - "dependencies": { - "@octokit/openapi-types": { - "version": "12.11.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.11.0.tgz", - "integrity": "sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==" - }, - "@octokit/types": { - "version": "6.41.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", - "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", - "requires": { - "@octokit/openapi-types": "^12.11.0" - } - } - } - }, - "@octokit/oauth-authorization-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@octokit/oauth-authorization-url/-/oauth-authorization-url-5.0.0.tgz", - "integrity": "sha512-y1WhN+ERDZTh0qZ4SR+zotgsQUE1ysKnvBt1hvDRB2WRzYtVKQjn97HEPzoehh66Fj9LwNdlZh+p6TJatT0zzg==" - }, - "@octokit/oauth-methods": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@octokit/oauth-methods/-/oauth-methods-2.0.6.tgz", - "integrity": "sha512-l9Uml2iGN2aTWLZcm8hV+neBiFXAQ9+3sKiQe/sgumHlL6HDg0AQ8/l16xX/5jJvfxueqTW5CWbzd0MjnlfHZw==", - "requires": { - "@octokit/oauth-authorization-url": "^5.0.0", - "@octokit/request": "^6.2.3", - "@octokit/request-error": "^3.0.3", - "@octokit/types": "^9.0.0", - "btoa-lite": "^1.0.0" - }, - "dependencies": { - "@octokit/endpoint": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-7.0.6.tgz", - "integrity": "sha512-5L4fseVRUsDFGR00tMWD/Trdeeihn999rTMGRMC1G/Ldi1uWlWJzI98H4Iak5DB/RVvQuyMYKqSK/R6mbSOQyg==", - "requires": { - "@octokit/types": "^9.0.0", - "is-plain-object": "^5.0.0", - "universal-user-agent": "^6.0.0" - } - }, - "@octokit/openapi-types": { - "version": "18.0.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-18.0.0.tgz", - "integrity": "sha512-V8GImKs3TeQRxRtXFpG2wl19V7444NIOTDF24AWuIbmNaNYOQMWRbjcGDXV5B+0n887fgDcuMNOmlul+k+oJtw==" - }, - "@octokit/request": { - "version": "6.2.8", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-6.2.8.tgz", - "integrity": "sha512-ow4+pkVQ+6XVVsekSYBzJC0VTVvh/FCTUUgTsboGq+DTeWdyIFV8WSCdo0RIxk6wSkBTHqIK1mYuY7nOBXOchw==", - "requires": { - "@octokit/endpoint": "^7.0.0", - "@octokit/request-error": "^3.0.0", - "@octokit/types": "^9.0.0", - "is-plain-object": "^5.0.0", - "node-fetch": "^2.6.7", - "universal-user-agent": "^6.0.0" - } - }, - "@octokit/request-error": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-3.0.3.tgz", - "integrity": "sha512-crqw3V5Iy2uOU5Np+8M/YexTlT8zxCfI+qu+LxUB7SZpje4Qmx3mub5DfEKSO8Ylyk0aogi6TYdf6kxzh2BguQ==", - "requires": { - "@octokit/types": "^9.0.0", - "deprecation": "^2.0.0", - "once": "^1.4.0" - } - }, - "@octokit/types": { - "version": "9.3.2", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-9.3.2.tgz", - "integrity": "sha512-D4iHGTdAnEEVsB8fl95m1hiz7D5YiRdQ9b/OEb3BYRVwbLsGHcRVPz+u+BgRLNk0Q0/4iZCBqDN96j2XNxfXrA==", - "requires": { - "@octokit/openapi-types": "^18.0.0" - } - } - } - }, - "@octokit/openapi-types": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-14.0.0.tgz", - "integrity": "sha512-HNWisMYlR8VCnNurDU6os2ikx0s0VyEjDYHNS/h4cgb8DeOxQ0n72HyinUtdDVxJhFy3FWLGl0DJhfEWk3P5Iw==" - }, - "@octokit/plugin-enterprise-compatibility": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@octokit/plugin-enterprise-compatibility/-/plugin-enterprise-compatibility-1.3.0.tgz", - "integrity": "sha512-h34sMGdEOER/OKrZJ55v26ntdHb9OPfR1fwOx6Q4qYyyhWA104o11h9tFxnS/l41gED6WEI41Vu2G2zHDVC5lQ==", - "requires": { - "@octokit/request-error": "^2.1.0", - "@octokit/types": "^6.0.3" - }, - "dependencies": { - "@octokit/openapi-types": { - "version": "12.11.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.11.0.tgz", - "integrity": "sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==" - }, - "@octokit/types": { - "version": "6.41.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", - "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", - "requires": { - "@octokit/openapi-types": "^12.11.0" - } - } - } - }, - "@octokit/plugin-paginate-rest": { - "version": "2.21.3", - "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.21.3.tgz", - "integrity": "sha512-aCZTEf0y2h3OLbrgKkrfFdjRL6eSOo8komneVQJnYecAxIej7Bafor2xhuDJOIFau4pk0i/P28/XgtbyPF0ZHw==", - "requires": { - "@octokit/types": "^6.40.0" - }, - "dependencies": { - "@octokit/openapi-types": { - "version": "12.11.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.11.0.tgz", - "integrity": "sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==" - }, - "@octokit/types": { - "version": "6.41.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", - "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", - "requires": { - "@octokit/openapi-types": "^12.11.0" - } - } - } - }, - "@octokit/plugin-rest-endpoint-methods": { - "version": "5.16.2", - "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.16.2.tgz", - "integrity": "sha512-8QFz29Fg5jDuTPXVtey05BLm7OB+M8fnvE64RNegzX7U+5NUXcOcnpTIK0YfSHBg8gYd0oxIq3IZTe9SfPZiRw==", - "requires": { - "@octokit/types": "^6.39.0", - "deprecation": "^2.3.1" - }, - "dependencies": { - "@octokit/openapi-types": { - "version": "12.11.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.11.0.tgz", - "integrity": "sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==" - }, - "@octokit/types": { - "version": "6.41.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", - "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", - "requires": { - "@octokit/openapi-types": "^12.11.0" - } - } - } - }, - "@octokit/plugin-retry": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/@octokit/plugin-retry/-/plugin-retry-3.0.9.tgz", - "integrity": "sha512-r+fArdP5+TG6l1Rv/C9hVoty6tldw6cE2pRHNGmFPdyfrc696R6JjrQ3d7HdVqGwuzfyrcaLAKD7K8TX8aehUQ==", - "requires": { - "@octokit/types": "^6.0.3", - "bottleneck": "^2.15.3" - }, - "dependencies": { - "@octokit/openapi-types": { - "version": "12.11.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.11.0.tgz", - "integrity": "sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==" - }, - "@octokit/types": { - "version": "6.41.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", - "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", - "requires": { - "@octokit/openapi-types": "^12.11.0" - } - } - } - }, - "@octokit/plugin-throttling": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/@octokit/plugin-throttling/-/plugin-throttling-3.7.0.tgz", - "integrity": "sha512-qrKT1Yl/KuwGSC6/oHpLBot3ooC9rq0/ryDYBCpkRtoj+R8T47xTMDT6Tk2CxWopFota/8Pi/2SqArqwC0JPow==", - "requires": { - "@octokit/types": "^6.0.1", - "bottleneck": "^2.15.3" - }, - "dependencies": { - "@octokit/openapi-types": { - "version": "12.11.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.11.0.tgz", - "integrity": "sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==" - }, - "@octokit/types": { - "version": "6.41.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", - "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", - "requires": { - "@octokit/openapi-types": "^12.11.0" - } - } - } - }, - "@octokit/request": { - "version": "5.6.3", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.6.3.tgz", - "integrity": "sha512-bFJl0I1KVc9jYTe9tdGGpAMPy32dLBXXo1dS/YwSCTL/2nd9XeHsY616RE3HPXDVk+a+dBuzyz5YdlXwcDTr2A==", - "requires": { - "@octokit/endpoint": "^6.0.1", - "@octokit/request-error": "^2.1.0", - "@octokit/types": "^6.16.1", - "is-plain-object": "^5.0.0", - "node-fetch": "^2.6.7", - "universal-user-agent": "^6.0.0" - }, - "dependencies": { - "@octokit/openapi-types": { - "version": "12.11.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.11.0.tgz", - "integrity": "sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==" - }, - "@octokit/types": { - "version": "6.41.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", - "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", - "requires": { - "@octokit/openapi-types": "^12.11.0" - } - } - } - }, - "@octokit/request-error": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.1.0.tgz", - "integrity": "sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==", - "requires": { - "@octokit/types": "^6.0.3", - "deprecation": "^2.0.0", - "once": "^1.4.0" - }, - "dependencies": { - "@octokit/openapi-types": { - "version": "12.11.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.11.0.tgz", - "integrity": "sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==" - }, - "@octokit/types": { - "version": "6.41.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", - "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", - "requires": { - "@octokit/openapi-types": "^12.11.0" - } - } - } - }, - "@octokit/types": { - "version": "8.2.1", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-8.2.1.tgz", - "integrity": "sha512-8oWMUji8be66q2B9PmEIUyQm00VPDPun07umUWSaCwxmeaquFBro4Hcc3ruVoDo3zkQyZBlRvhIMEYS3pBhanw==", - "requires": { - "@octokit/openapi-types": "^14.0.0" - } - }, - "@octokit/webhooks": { - "version": "9.26.0", - "resolved": "https://registry.npmjs.org/@octokit/webhooks/-/webhooks-9.26.0.tgz", - "integrity": "sha512-foZlsgrTDwAmD5j2Czn6ji10lbWjGDVsUxTIydjG9KTkAWKJrFapXJgO5SbGxRwfPd3OJdhK3nA2YPqVhxLXqA==", - "requires": { - "@octokit/request-error": "^2.0.2", - "@octokit/webhooks-methods": "^2.0.0", - "@octokit/webhooks-types": "5.8.0", - "aggregate-error": "^3.1.0" - } - }, - "@octokit/webhooks-methods": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@octokit/webhooks-methods/-/webhooks-methods-2.0.0.tgz", - "integrity": "sha512-35cfQ4YWlnZnmZKmIxlGPUPLtbkF8lr/A/1Sk1eC0ddLMwQN06dOuLc+dI3YLQS+T+MoNt3DIQ0NynwgKPilig==" - }, - "@octokit/webhooks-types": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@octokit/webhooks-types/-/webhooks-types-5.8.0.tgz", - "integrity": "sha512-8adktjIb76A7viIdayQSFuBEwOzwhDC+9yxZpKNHjfzrlostHCw0/N7JWpWMObfElwvJMk2fY2l1noENCk9wmw==" - }, - "@probot/get-private-key": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@probot/get-private-key/-/get-private-key-1.1.1.tgz", - "integrity": "sha512-hOmBNSAhSZc6PaNkTvj6CO9R5J67ODJ+w5XQlDW9w/6mtcpHWK4L+PZcW0YwVM7PpetLZjN6rsKQIR9yqIaWlA==", - "requires": { - "@types/is-base64": "^1.1.0", - "is-base64": "^1.1.0" - } - }, - "@probot/octokit-plugin-config": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/@probot/octokit-plugin-config/-/octokit-plugin-config-1.1.6.tgz", - "integrity": "sha512-L29wmnFvilzSfWn9tUgItxdLv0LJh2ICjma3FmLr80Spu3wZ9nHyRrKMo9R5/K2m7VuWmgoKnkgRt2zPzAQBEQ==", - "requires": { - "@types/js-yaml": "^4.0.5", - "js-yaml": "^4.1.0" - }, - "dependencies": { - "argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" - }, - "js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "requires": { - "argparse": "^2.0.1" - } - } - } - }, - "@probot/pino": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/@probot/pino/-/pino-2.3.5.tgz", - "integrity": "sha512-IiyiNZonMw1dHC4EAdD55y5owV733d9Gll/IKsrLikB7EJ54+eMCOtL/qo+OmgWN9XV3NTDfziEQF2og/OBKog==", - "requires": { - "@sentry/node": "^6.0.0", - "pino-pretty": "^6.0.0", - "pump": "^3.0.0", - "readable-stream": "^3.6.0", - "split2": "^4.0.0" - } - }, - "@sentry/core": { - "version": "6.19.7", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-6.19.7.tgz", - "integrity": "sha512-tOfZ/umqB2AcHPGbIrsFLcvApdTm9ggpi/kQZFkej7kMphjT+SGBiQfYtjyg9jcRW+ilAR4JXC9BGKsdEQ+8Vw==", - "requires": { - "@sentry/hub": "6.19.7", - "@sentry/minimal": "6.19.7", - "@sentry/types": "6.19.7", - "@sentry/utils": "6.19.7", - "tslib": "^1.9.3" - } - }, - "@sentry/hub": { - "version": "6.19.7", - "resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-6.19.7.tgz", - "integrity": "sha512-y3OtbYFAqKHCWezF0EGGr5lcyI2KbaXW2Ik7Xp8Mu9TxbSTuwTe4rTntwg8ngPjUQU3SUHzgjqVB8qjiGqFXCA==", - "requires": { - "@sentry/types": "6.19.7", - "@sentry/utils": "6.19.7", - "tslib": "^1.9.3" - } - }, - "@sentry/minimal": { - "version": "6.19.7", - "resolved": "https://registry.npmjs.org/@sentry/minimal/-/minimal-6.19.7.tgz", - "integrity": "sha512-wcYmSJOdvk6VAPx8IcmZgN08XTXRwRtB1aOLZm+MVHjIZIhHoBGZJYTVQS/BWjldsamj2cX3YGbGXNunaCfYJQ==", - "requires": { - "@sentry/hub": "6.19.7", - "@sentry/types": "6.19.7", - "tslib": "^1.9.3" - } - }, - "@sentry/node": { - "version": "6.19.7", - "resolved": "https://registry.npmjs.org/@sentry/node/-/node-6.19.7.tgz", - "integrity": "sha512-gtmRC4dAXKODMpHXKfrkfvyBL3cI8y64vEi3fDD046uqYcrWdgoQsffuBbxMAizc6Ez1ia+f0Flue6p15Qaltg==", - "requires": { - "@sentry/core": "6.19.7", - "@sentry/hub": "6.19.7", - "@sentry/types": "6.19.7", - "@sentry/utils": "6.19.7", - "cookie": "^0.4.1", - "https-proxy-agent": "^5.0.0", - "lru_map": "^0.3.3", - "tslib": "^1.9.3" - } - }, - "@sentry/types": { - "version": "6.19.7", - "resolved": "https://registry.npmjs.org/@sentry/types/-/types-6.19.7.tgz", - "integrity": "sha512-jH84pDYE+hHIbVnab3Hr+ZXr1v8QABfhx39KknxqKWr2l0oEItzepV0URvbEhB446lk/S/59230dlUUIBGsXbg==" - }, - "@sentry/utils": { - "version": "6.19.7", - "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-6.19.7.tgz", - "integrity": "sha512-z95ECmE3i9pbWoXQrD/7PgkBAzJYR+iXtPuTkpBjDKs86O3mT+PXOT3BAn79w2wkn7/i3vOGD2xVr1uiMl26dA==", - "requires": { - "@sentry/types": "6.19.7", - "tslib": "^1.9.3" - } - }, - "@sinclair/typebox": { - "version": "0.25.24", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.25.24.tgz", - "integrity": "sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ==", - "dev": true - }, - "@sinonjs/commons": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.0.tgz", - "integrity": "sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==", - "dev": true, - "requires": { - "type-detect": "4.0.8" - } - }, - "@sinonjs/fake-timers": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", - "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", - "dev": true, - "requires": { - "@sinonjs/commons": "^3.0.0" - } - }, - "@tsconfig/node10": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", - "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==" - }, - "@tsconfig/node12": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", - "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==" - }, - "@tsconfig/node14": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", - "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==" - }, - "@tsconfig/node16": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", - "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==" - }, - "@types/babel__core": { - "version": "7.20.1", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.1.tgz", - "integrity": "sha512-aACu/U/omhdk15O4Nfb+fHgH/z3QsfQzpnvRZhYhThms83ZnAOZz7zZAWO7mn2yyNQaA4xTO8GLK3uqFU4bYYw==", - "dev": true, - "requires": { - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" - } - }, - "@types/babel__generator": { - "version": "7.6.4", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz", - "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==", - "dev": true, - "requires": { - "@babel/types": "^7.0.0" - } - }, - "@types/babel__template": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", - "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", - "dev": true, - "requires": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "@types/babel__traverse": { - "version": "7.20.1", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.1.tgz", - "integrity": "sha512-MitHFXnhtgwsGZWtT68URpOvLN4EREih1u3QtQiN4VdAxWKRVvGCSvw/Qth0M0Qq3pJpnGOu5JaM/ydK7OGbqg==", - "dev": true, - "requires": { - "@babel/types": "^7.20.7" - } - }, - "@types/body-parser": { - "version": "1.19.2", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", - "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", - "requires": { - "@types/connect": "*", - "@types/node": "*" - } - }, - "@types/btoa-lite": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/btoa-lite/-/btoa-lite-1.0.0.tgz", - "integrity": "sha512-wJsiX1tosQ+J5+bY5LrSahHxr2wT+uME5UDwdN1kg4frt40euqA+wzECkmq4t5QbveHiJepfdThgQrPw6KiSlg==" - }, - "@types/connect": { - "version": "3.4.35", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", - "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", - "requires": { - "@types/node": "*" - } - }, - "@types/express": { - "version": "4.17.17", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.17.tgz", - "integrity": "sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q==", - "requires": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.33", - "@types/qs": "*", - "@types/serve-static": "*" - } - }, - "@types/express-serve-static-core": { - "version": "4.17.35", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.35.tgz", - "integrity": "sha512-wALWQwrgiB2AWTT91CB62b6Yt0sNHpznUXeZEcnPU3DRdlDIz74x8Qg1UUYKSVFi+va5vKOLYRBI1bRKiLLKIg==", - "requires": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*", - "@types/send": "*" - } - }, - "@types/graceful-fs": { - "version": "4.1.6", - "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.6.tgz", - "integrity": "sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/ioredis": { - "version": "4.28.10", - "resolved": "https://registry.npmjs.org/@types/ioredis/-/ioredis-4.28.10.tgz", - "integrity": "sha512-69LyhUgrXdgcNDv7ogs1qXZomnfOEnSmrmMFqKgt1XMJxmoOSG/u3wYy13yACIfKuMJ8IhKgHafDO3sx19zVQQ==", - "requires": { - "@types/node": "*" - } - }, - "@types/is-base64": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@types/is-base64/-/is-base64-1.1.1.tgz", - "integrity": "sha512-JgnGhP+MeSHEQmvxcobcwPEP4Ew56voiq9/0hmP/41lyQ/3gBw/ZCIRy2v+QkEOdeCl58lRcrf6+Y6WMlJGETA==" - }, - "@types/istanbul-lib-coverage": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", - "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", - "dev": true - }, - "@types/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "*" - } - }, - "@types/istanbul-reports": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", - "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", - "dev": true, - "requires": { - "@types/istanbul-lib-report": "*" - } - }, - "@types/jest": { - "version": "29.5.2", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.2.tgz", - "integrity": "sha512-mSoZVJF5YzGVCk+FsDxzDuH7s+SCkzrgKZzf0Z0T2WudhBUPoF6ktoTPC4R0ZoCPCV5xUvuU6ias5NvxcBcMMg==", - "dev": true, - "requires": { - "expect": "^29.0.0", - "pretty-format": "^29.0.0" - } - }, - "@types/js-yaml": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-4.0.5.tgz", - "integrity": "sha512-FhpRzf927MNQdRZP0J5DLIdTXhjLYzeUTmLAu69mnVksLH9CJY3IuSeEgbKUki7GQZm0WqDkGzyxju2EZGD2wA==" - }, - "@types/json-schema": { - "version": "7.0.12", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz", - "integrity": "sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==", - "dev": true - }, - "@types/jsonwebtoken": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz", - "integrity": "sha512-drE6uz7QBKq1fYqqoFKTDRdFCPHd5TCub75BM+D+cMx7NU9hUz7SESLfC2fSCXVFMO5Yj8sOWHuGqPgjc+fz0Q==", - "requires": { - "@types/node": "*" - } - }, - "@types/mime": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", - "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==" - }, - "@types/node": { - "version": "18.16.18", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.16.18.tgz", - "integrity": "sha512-/aNaQZD0+iSBAGnvvN2Cx92HqE5sZCPZtx2TsK+4nvV23fFe09jVDvpArXr2j9DnYlzuU9WuoykDDc6wqvpNcw==" - }, - "@types/pino": { - "version": "6.3.12", - "resolved": "https://registry.npmjs.org/@types/pino/-/pino-6.3.12.tgz", - "integrity": "sha512-dsLRTq8/4UtVSpJgl9aeqHvbh6pzdmjYD3C092SYgLD2TyoCqHpTJk6vp8DvCTGGc7iowZ2MoiYiVUUCcu7muw==", - "requires": { - "@types/node": "*", - "@types/pino-pretty": "*", - "@types/pino-std-serializers": "*", - "sonic-boom": "^2.1.0" - } - }, - "@types/pino-http": { - "version": "5.8.1", - "resolved": "https://registry.npmjs.org/@types/pino-http/-/pino-http-5.8.1.tgz", - "integrity": "sha512-A9MW6VCnx5ii7s+Fs5aFIw+aSZcBCpsZ/atpxamu8tTsvWFacxSf2Hrn1Ohn1jkVRB/LiPGOapRXcFawDBnDnA==", - "requires": { - "@types/pino": "6.3" - } - }, - "@types/pino-pretty": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@types/pino-pretty/-/pino-pretty-5.0.0.tgz", - "integrity": "sha512-N1uzqSzioqz8R3AkDbSJwcfDWeI3YMPNapSQQhnB2ISU4NYgUIcAh+hYT5ygqBM+klX4htpEhXMmoJv3J7GrdA==", - "requires": { - "pino-pretty": "*" - } - }, - "@types/pino-std-serializers": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/pino-std-serializers/-/pino-std-serializers-4.0.0.tgz", - "integrity": "sha512-gXfUZx2xIBbFYozGms53fT0nvkacx/+62c8iTxrEqH5PkIGAQvDbXg2774VWOycMPbqn5YJBQ3BMsg4Li3dWbg==", - "requires": { - "pino-std-serializers": "*" - } - }, - "@types/prettier": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.3.tgz", - "integrity": "sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==", - "dev": true - }, - "@types/qs": { - "version": "6.9.7", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", - "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==" - }, - "@types/range-parser": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", - "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==" - }, - "@types/semver": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.0.tgz", - "integrity": "sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==", - "dev": true - }, - "@types/send": { - "version": "0.17.1", - "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.1.tgz", - "integrity": "sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q==", - "requires": { - "@types/mime": "^1", - "@types/node": "*" - } - }, - "@types/serve-static": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.1.tgz", - "integrity": "sha512-NUo5XNiAdULrJENtJXZZ3fHtfMolzZwczzBbnAeBbqBwG+LaG6YaJtuwzwGSQZ2wsCrxjEhNNjAkKigy3n8teQ==", - "requires": { - "@types/mime": "*", - "@types/node": "*" - } - }, - "@types/stack-utils": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", - "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", - "dev": true - }, - "@types/webidl-conversions": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.0.tgz", - "integrity": "sha512-xTE1E+YF4aWPJJeUzaZI5DRntlkY3+BCVJi0axFptnjGmAoWxkyREIh/XMrfxVLejwQxMCfDXdICo0VLxThrog==" - }, - "@types/whatwg-url": { - "version": "8.2.2", - "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-8.2.2.tgz", - "integrity": "sha512-FtQu10RWgn3D9U4aazdwIE2yzphmTJREDqNdODHrbrZmmMqI0vMheC/6NE/J1Yveaj8H+ela+YwWTjq5PGmuhA==", - "requires": { - "@types/node": "*", - "@types/webidl-conversions": "*" - } - }, - "@types/yargs": { - "version": "17.0.24", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", - "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, - "@types/yargs-parser": { - "version": "21.0.0", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", - "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", - "dev": true - }, - "@typescript-eslint/eslint-plugin": { - "version": "5.61.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.61.0.tgz", - "integrity": "sha512-A5l/eUAug103qtkwccSCxn8ZRwT+7RXWkFECdA4Cvl1dOlDUgTpAOfSEElZn2uSUxhdDpnCdetrf0jvU4qrL+g==", - "dev": true, - "requires": { - "@eslint-community/regexpp": "^4.4.0", - "@typescript-eslint/scope-manager": "5.61.0", - "@typescript-eslint/type-utils": "5.61.0", - "@typescript-eslint/utils": "5.61.0", - "debug": "^4.3.4", - "graphemer": "^1.4.0", - "ignore": "^5.2.0", - "natural-compare-lite": "^1.4.0", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - }, - "dependencies": { - "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, - "requires": { - "yallist": "^4.0.0" - } - }, - "semver": { - "version": "7.5.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz", - "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - } - } - }, - "@typescript-eslint/parser": { - "version": "5.61.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.61.0.tgz", - "integrity": "sha512-yGr4Sgyh8uO6fSi9hw3jAFXNBHbCtKKFMdX2IkT3ZqpKmtAq3lHS4ixB/COFuAIJpwl9/AqF7j72ZDWYKmIfvg==", - "dev": true, - "requires": { - "@typescript-eslint/scope-manager": "5.61.0", - "@typescript-eslint/types": "5.61.0", - "@typescript-eslint/typescript-estree": "5.61.0", - "debug": "^4.3.4" - } - }, - "@typescript-eslint/scope-manager": { - "version": "5.61.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.61.0.tgz", - "integrity": "sha512-W8VoMjoSg7f7nqAROEmTt6LoBpn81AegP7uKhhW5KzYlehs8VV0ZW0fIDVbcZRcaP3aPSW+JZFua+ysQN+m/Nw==", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.61.0", - "@typescript-eslint/visitor-keys": "5.61.0" - } - }, - "@typescript-eslint/type-utils": { - "version": "5.61.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.61.0.tgz", - "integrity": "sha512-kk8u//r+oVK2Aj3ph/26XdH0pbAkC2RiSjUYhKD+PExemG4XSjpGFeyZ/QM8lBOa7O8aGOU+/yEbMJgQv/DnCg==", - "dev": true, - "requires": { - "@typescript-eslint/typescript-estree": "5.61.0", - "@typescript-eslint/utils": "5.61.0", - "debug": "^4.3.4", - "tsutils": "^3.21.0" - } - }, - "@typescript-eslint/types": { - "version": "5.61.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.61.0.tgz", - "integrity": "sha512-ldyueo58KjngXpzloHUog/h9REmHl59G1b3a5Sng1GfBo14BkS3ZbMEb3693gnP1k//97lh7bKsp6/V/0v1veQ==", - "dev": true - }, - "@typescript-eslint/typescript-estree": { - "version": "5.61.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.61.0.tgz", - "integrity": "sha512-Fud90PxONnnLZ36oR5ClJBLTLfU4pIWBmnvGwTbEa2cXIqj70AEDEmOmpkFComjBZ/037ueKrOdHuYmSFVD7Rw==", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.61.0", - "@typescript-eslint/visitor-keys": "5.61.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - }, - "dependencies": { - "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, - "requires": { - "yallist": "^4.0.0" - } - }, - "semver": { - "version": "7.5.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz", - "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - } - } - }, - "@typescript-eslint/utils": { - "version": "5.61.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.61.0.tgz", - "integrity": "sha512-mV6O+6VgQmVE6+xzlA91xifndPW9ElFW8vbSF0xCT/czPXVhwDewKila1jOyRwa9AE19zKnrr7Cg5S3pJVrTWQ==", - "dev": true, - "requires": { - "@eslint-community/eslint-utils": "^4.2.0", - "@types/json-schema": "^7.0.9", - "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.61.0", - "@typescript-eslint/types": "5.61.0", - "@typescript-eslint/typescript-estree": "5.61.0", - "eslint-scope": "^5.1.1", - "semver": "^7.3.7" - }, - "dependencies": { - "eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - } - }, - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true - }, - "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, - "requires": { - "yallist": "^4.0.0" - } - }, - "semver": { - "version": "7.5.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz", - "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - } - } - }, - "@typescript-eslint/visitor-keys": { - "version": "5.61.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.61.0.tgz", - "integrity": "sha512-50XQ5VdbWrX06mQXhy93WywSFZZGsv3EOjq+lqp6WC2t+j3mb6A9xYVdrRxafvK88vg9k9u+CT4l6D8PEatjKg==", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.61.0", - "eslint-visitor-keys": "^3.3.0" - } - }, - "abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", - "dev": true - }, - "accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "requires": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - } - }, - "acorn": { - "version": "8.9.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.9.0.tgz", - "integrity": "sha512-jaVNAFBHNLXspO543WnNNPZFRtavh3skAkITqD0/2aeMkKZTN+254PyhwxFYrk3vQ1xfY+2wbesJMs/JC8/PwQ==" - }, - "acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "requires": {} - }, - "acorn-walk": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", - "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==" - }, - "agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "requires": { - "debug": "4" - } - }, - "aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "requires": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - } - }, - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, - "requires": { - "type-fest": "^0.21.3" - } - }, - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==" - }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "args": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/args/-/args-5.0.3.tgz", - "integrity": "sha512-h6k/zfFgusnv3i5TU08KQkVKuCPBtL/PWQbWkHUxvJrZ2nAyeaUupneemcrgn1xmqxPQsPIzwkUhOpoqPDRZuA==", - "requires": { - "camelcase": "5.0.0", - "chalk": "2.4.2", - "leven": "2.1.0", - "mri": "1.1.4" - }, - "dependencies": { - "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==", - "requires": { - "color-convert": "^1.9.0" - } - }, - "camelcase": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.0.0.tgz", - "integrity": "sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA==" - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "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==", - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" - }, - "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==" - }, - "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==" - }, - "leven": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz", - "integrity": "sha512-nvVPLpIHUxCUoRLrFqTgSxXJ614d8AgQoWl7zPe/2VadE8+1dpU3LBhowRuBAcuwruWtOdD8oYC9jDNJjXDPyA==" - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" - }, - "array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true - }, - "asap": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", - "dev": true - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "dev": true - }, - "atomic-sleep": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/atomic-sleep/-/atomic-sleep-1.0.0.tgz", - "integrity": "sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==" - }, - "babel-jest": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.5.0.tgz", - "integrity": "sha512-mA4eCDh5mSo2EcA9xQjVTpmbbNk32Zb3Q3QFQsNhaK56Q+yoXowzFodLux30HRgyOho5rsQ6B0P9QpMkvvnJ0Q==", - "dev": true, - "requires": { - "@jest/transform": "^29.5.0", - "@types/babel__core": "^7.1.14", - "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^29.5.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "slash": "^3.0.0" - } - }, - "babel-plugin-istanbul": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", - "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-instrument": "^5.0.4", - "test-exclude": "^6.0.0" - } - }, - "babel-plugin-jest-hoist": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.5.0.tgz", - "integrity": "sha512-zSuuuAlTMT4mzLj2nPnUm6fsE6270vdOfnpbJ+RmruU75UhLFvL0N2NgI7xpeS7NaB6hGqmd5pVpGTDYvi4Q3w==", - "dev": true, - "requires": { - "@babel/template": "^7.3.3", - "@babel/types": "^7.3.3", - "@types/babel__core": "^7.1.14", - "@types/babel__traverse": "^7.0.6" - } - }, - "babel-preset-current-node-syntax": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", - "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", - "dev": true, - "requires": { - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-bigint": "^7.8.3", - "@babel/plugin-syntax-class-properties": "^7.8.3", - "@babel/plugin-syntax-import-meta": "^7.8.3", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.8.3", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-top-level-await": "^7.8.3" - } - }, - "babel-preset-jest": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.5.0.tgz", - "integrity": "sha512-JOMloxOqdiBSxMAzjRaH023/vvcaSaec49zvg+2LmNsktC7ei39LTJGw02J+9uUtTZUq6xbLyJ4dxe9sSmIuAg==", - "dev": true, - "requires": { - "babel-plugin-jest-hoist": "^29.5.0", - "babel-preset-current-node-syntax": "^1.0.0" - } - }, - "balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" - }, - "basic-auth": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", - "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", - "dev": true, - "requires": { - "safe-buffer": "5.1.2" - }, - "dependencies": { - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - } - } - }, - "before-after-hook": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz", - "integrity": "sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==" - }, - "binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true - }, - "body-parser": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", - "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", - "requires": { - "bytes": "3.1.2", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.11.0", - "raw-body": "2.5.1", - "type-is": "~1.6.18", - "unpipe": "1.0.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - } - } - }, - "bottleneck": { - "version": "2.19.5", - "resolved": "https://registry.npmjs.org/bottleneck/-/bottleneck-2.19.5.tgz", - "integrity": "sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw==" - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, - "browserslist": { - "version": "4.21.9", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.9.tgz", - "integrity": "sha512-M0MFoZzbUrRU4KNfCrDLnvyE7gub+peetoTid3TBIqtunaDJyXlwhakT+/VkvSXcfIzFfK/nkCs4nmyTmxdNSg==", - "dev": true, - "requires": { - "caniuse-lite": "^1.0.30001503", - "electron-to-chromium": "^1.4.431", - "node-releases": "^2.0.12", - "update-browserslist-db": "^1.0.11" - } - }, - "bs-logger": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", - "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", - "dev": true, - "requires": { - "fast-json-stable-stringify": "2.x" - } - }, - "bser": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", - "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", - "dev": true, - "requires": { - "node-int64": "^0.4.0" - } - }, - "bson": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/bson/-/bson-5.3.0.tgz", - "integrity": "sha512-ukmCZMneMlaC5ebPHXIkP8YJzNl5DC41N5MAIvKDqLggdao342t4McltoJBQfQya/nHBWAcSsYRqlXPoQkTJag==" - }, - "btoa-lite": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/btoa-lite/-/btoa-lite-1.0.0.tgz", - "integrity": "sha512-gvW7InbIyF8AicrqWoptdW08pUxuhq8BEgowNajy9RhiE86fmGAGl+bLKo6oB8QP0CkqHLowfN0oJdKC/J6LbA==" - }, - "buffer-equal-constant-time": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", - "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==" - }, - "buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true - }, - "bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==" - }, - "call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "requires": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - } - }, - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true - }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - }, - "caniuse-lite": { - "version": "1.0.30001505", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001505.tgz", - "integrity": "sha512-jaAOR5zVtxHfL0NjZyflVTtXm3D3J9P15zSJ7HmQF8dSKGA6tqzQq+0ZI3xkjyQj46I4/M0K2GbMpcAFOcbr3A==", - "dev": true - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "char-regex": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", - "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", - "dev": true - }, - "chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "dev": true, - "requires": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "fsevents": "~2.3.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - } - }, - "ci-info": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", - "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", - "dev": true - }, - "cjs-module-lexer": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz", - "integrity": "sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==", - "dev": true - }, - "clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==" - }, - "cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "dev": true, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - } - }, - "cluster-key-slot": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.1.2.tgz", - "integrity": "sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==" - }, - "co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", - "dev": true - }, - "collect-v8-coverage": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", - "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==", - "dev": true - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "colorette": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz", - "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==" - }, - "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, - "requires": { - "delayed-stream": "~1.0.0" - } - }, - "commander": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", - "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==" - }, - "component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true - }, - "content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", - "requires": { - "safe-buffer": "5.2.1" - } - }, - "content-type": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", - "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==" - }, - "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 - }, - "cookie": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", - "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==" - }, - "cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" - }, - "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 - }, - "create-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", - "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==" - }, - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "dateformat": { - "version": "4.6.3", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-4.6.3.tgz", - "integrity": "sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==" - }, - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "requires": { - "ms": "2.1.2" - } - }, - "dedent": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", - "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", - "dev": true - }, - "deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true - }, - "deepmerge": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", - "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==" - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "dev": true - }, - "denque": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/denque/-/denque-1.5.1.tgz", - "integrity": "sha512-XwE+iZ4D6ZUB7mfYRMb5wByE8L74HCn30FBN7sWnXksWc1LO1bPDl67pBR9o/kC4z/xSNAwkMYcGgqDV3BE3Hw==" - }, - "depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" - }, - "deprecation": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", - "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==" - }, - "destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==" - }, - "detect-newline": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", - "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", - "dev": true - }, - "dezalgo": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz", - "integrity": "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==", - "dev": true, - "requires": { - "asap": "^2.0.0", - "wrappy": "1" - } - }, - "diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==" - }, - "diff-sequences": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.4.3.tgz", - "integrity": "sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==", - "dev": true - }, - "dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "requires": { - "path-type": "^4.0.0" - } - }, - "doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "requires": { - "esutils": "^2.0.2" - } - }, - "dotenv": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz", - "integrity": "sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==" - }, - "ecdsa-sig-formatter": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", - "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" - }, - "electron-to-chromium": { - "version": "1.4.435", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.435.tgz", - "integrity": "sha512-B0CBWVFhvoQCW/XtjRzgrmqcgVWg6RXOEM/dK59+wFV93BFGR6AeNKc4OyhM+T3IhJaOOG8o/V+33Y2mwJWtzw==", - "dev": true - }, - "emittery": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", - "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", - "dev": true - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==" - }, - "end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "requires": { - "once": "^1.4.0" - } - }, - "error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true - }, - "escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" - }, - "escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", - "dev": true - }, - "eslint": { - "version": "8.44.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.44.0.tgz", - "integrity": "sha512-0wpHoUbDUHgNCyvFB5aXLiQVfK9B0at6gUvzy83k4kAsQ/u769TQDX6iKC+aO4upIHO9WSaA3QoXYQDHbNwf1A==", - "dev": true, - "requires": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.4.0", - "@eslint/eslintrc": "^2.1.0", - "@eslint/js": "8.44.0", - "@humanwhocodes/config-array": "^0.11.10", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.0", - "eslint-visitor-keys": "^3.4.1", - "espree": "^9.6.0", - "esquery": "^1.4.2", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "graphemer": "^1.4.0", - "ignore": "^5.2.0", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.3", - "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0" - }, - "dependencies": { - "argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true - }, - "find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "requires": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - } - }, - "glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "requires": { - "is-glob": "^4.0.3" - } - }, - "globals": { - "version": "13.20.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", - "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", - "dev": true, - "requires": { - "type-fest": "^0.20.2" - } - }, - "js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "requires": { - "argparse": "^2.0.1" - } - }, - "locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "requires": { - "p-locate": "^5.0.0" - } - }, - "p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "requires": { - "p-limit": "^3.0.2" - } - }, - "type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true - } - } - }, - "eslint-scope": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.0.tgz", - "integrity": "sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - } - }, - "eslint-visitor-keys": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz", - "integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==", - "dev": true - }, - "espree": { - "version": "9.6.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.0.tgz", - "integrity": "sha512-1FH/IiruXZ84tpUlm0aCUEwMl2Ho5ilqVh0VvQXw+byAz/4SAciyHLlfmL5WYqsvD38oymdUwBss0LtK8m4s/A==", - "dev": true, - "requires": { - "acorn": "^8.9.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" - } - }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" - }, - "esquery": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", - "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", - "dev": true, - "requires": { - "estraverse": "^5.1.0" - } - }, - "esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "requires": { - "estraverse": "^5.2.0" - } - }, - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true - }, - "etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==" - }, - "eventsource": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-2.0.2.tgz", - "integrity": "sha512-IzUmBGPR3+oUG9dUeXynyNmf91/3zUSJg1lCktzKw47OXuhco54U3r9B7O4XX+Rb1Itm9OZ2b0RkTs10bICOxA==" - }, - "execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "requires": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - } - }, - "exit": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", - "dev": true - }, - "expect": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/expect/-/expect-29.5.0.tgz", - "integrity": "sha512-yM7xqUrCO2JdpFo4XpM82t+PJBFybdqoQuJLDGeDX2ij8NZzqRHyu3Hp188/JX7SWqud+7t4MUdvcgGBICMHZg==", - "dev": true, - "requires": { - "@jest/expect-utils": "^29.5.0", - "jest-get-type": "^29.4.3", - "jest-matcher-utils": "^29.5.0", - "jest-message-util": "^29.5.0", - "jest-util": "^29.5.0" - } - }, - "express": { - "version": "4.18.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", - "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", - "requires": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.20.1", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.5.0", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "2.0.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "1.2.0", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.7", - "qs": "6.11.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "0.18.0", - "serve-static": "1.15.0", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "dependencies": { - "cookie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==" - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - } - } - }, - "express-handlebars": { - "version": "6.0.7", - "resolved": "https://registry.npmjs.org/express-handlebars/-/express-handlebars-6.0.7.tgz", - "integrity": "sha512-iYeMFpc/hMD+E6FNAZA5fgWeXnXr4rslOSPkeEV6TwdmpJ5lEXuWX0u9vFYs31P2MURctQq2batR09oeNj0LIg==", - "requires": { - "glob": "^8.1.0", - "graceful-fs": "^4.2.10", - "handlebars": "^4.7.7" - }, - "dependencies": { - "brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "requires": { - "balanced-match": "^1.0.0" - } - }, - "glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - } - }, - "minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "requires": { - "brace-expansion": "^2.0.1" - } - } - } - }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "fast-glob": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.0.tgz", - "integrity": "sha512-ChDuvbOypPuNjO8yIDf36x7BlZX1smcUMTTcyoIjycexOxd6DFsKsg21qVBzEmr3G7fUKIRy2/psii+CIUt7FA==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - } - }, - "fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true - }, - "fast-redact": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-3.2.0.tgz", - "integrity": "sha512-zaTadChr+NekyzallAMXATXLOR8MNx3zqpZ0MUF2aGf4EathnG0f32VLODNlY8IuGY3HoRO2L6/6fSzNsLaHIw==" - }, - "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==" - }, - "fast-url-parser": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/fast-url-parser/-/fast-url-parser-1.1.3.tgz", - "integrity": "sha512-5jOCVXADYNuRkKFzNJ0dCCewsZiYo0dz8QNYljkOpFC6r2U4OBmKtvm/Tsuh4w1YYdDqDb31a8TVhBJ2OJKdqQ==", - "requires": { - "punycode": "^1.3.2" - } - }, - "fastq": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", - "dev": true, - "requires": { - "reusify": "^1.0.4" - } - }, - "fb-watchman": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", - "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", - "dev": true, - "requires": { - "bser": "2.1.1" - } - }, - "file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "requires": { - "flat-cache": "^3.0.4" - } - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "finalhandler": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", - "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", - "requires": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "statuses": "2.0.1", - "unpipe": "~1.0.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - } - } - }, - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dev": true, - "requires": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - } - }, - "flatstr": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/flatstr/-/flatstr-1.0.12.tgz", - "integrity": "sha512-4zPxDyhCyiN2wIAtSLI6gc82/EjqZc1onI4Mz/l0pWrAlsSfYH/2ZIcU+e3oA2wDwbzIWNKwa23F8rh6+DRWkw==" - }, - "flatted": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", - "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", - "dev": true - }, - "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, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - } - }, - "formidable": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/formidable/-/formidable-2.1.2.tgz", - "integrity": "sha512-CM3GuJ57US06mlpQ47YcunuUZ9jpm8Vx+P2CGt2j7HpgkKZO/DJYQ0Bobim8G6PFQmK5lOqOOdUXboU+h73A4g==", - "dev": true, - "requires": { - "dezalgo": "^1.0.4", - "hexoid": "^1.0.0", - "once": "^1.4.0", - "qs": "^6.11.0" - } - }, - "forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==" - }, - "fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==" - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" - }, - "fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "optional": true - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, - "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 - }, - "get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true - }, - "get-intrinsic": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", - "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", - "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3" - } - }, - "get-package-type": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", - "dev": true - }, - "get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true - }, - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - }, - "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 - }, - "globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "requires": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - } - }, - "graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" - }, - "graphemer": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true - }, - "handlebars": { - "version": "4.7.7", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", - "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", - "requires": { - "minimist": "^1.2.5", - "neo-async": "^2.6.0", - "source-map": "^0.6.1", - "uglify-js": "^3.1.4", - "wordwrap": "^1.0.0" - } - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "has-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==" - }, - "has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" - }, - "hexoid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/hexoid/-/hexoid-1.0.0.tgz", - "integrity": "sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g==", - "dev": true - }, - "html-escaper": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true - }, - "http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "requires": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" - } - }, - "https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", - "requires": { - "agent-base": "6", - "debug": "4" - } - }, - "human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "dev": true - }, - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", - "dev": true - }, - "ignore-by-default": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", - "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==", - "dev": true - }, - "import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "dependencies": { - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true - } - } - }, - "import-local": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", - "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", - "dev": true, - "requires": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - } - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true - }, - "indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==" - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "ioredis": { - "version": "4.28.5", - "resolved": "https://registry.npmjs.org/ioredis/-/ioredis-4.28.5.tgz", - "integrity": "sha512-3GYo0GJtLqgNXj4YhrisLaNNvWSNwSS2wS4OELGfGxH8I69+XfNdnmV1AyN+ZqMh0i7eX+SWjrwFKDBDgfBC1A==", - "requires": { - "cluster-key-slot": "^1.1.0", - "debug": "^4.3.1", - "denque": "^1.1.0", - "lodash.defaults": "^4.2.0", - "lodash.flatten": "^4.4.0", - "lodash.isarguments": "^3.1.0", - "p-map": "^2.1.0", - "redis-commands": "1.7.0", - "redis-errors": "^1.2.0", - "redis-parser": "^3.0.0", - "standard-as-callback": "^2.1.0" - } - }, - "ip": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", - "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==" - }, - "ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" - }, - "is-base64": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-base64/-/is-base64-1.1.0.tgz", - "integrity": "sha512-Nlhg7Z2dVC4/PTvIFkgVVNvPHSO2eR/Yd0XzhGiXCXEvWnptXlXa/clQ8aePPiMuxEGcWfzWbGw2Fe3d+Y3v1g==" - }, - "is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "requires": { - "binary-extensions": "^2.0.0" - } - }, - "is-core-module": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.1.tgz", - "integrity": "sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==", - "requires": { - "has": "^1.0.3" - } - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "is-generator-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", - "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", - "dev": true - }, - "is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true - }, - "is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true - }, - "is-plain-object": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", - "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==" - }, - "is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "istanbul-lib-coverage": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", - "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", - "dev": true - }, - "istanbul-lib-instrument": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", - "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", - "dev": true, - "requires": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" - } - }, - "istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", - "dev": true, - "requires": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^3.0.0", - "supports-color": "^7.1.0" - } - }, - "istanbul-lib-source-maps": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", - "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", - "dev": true, - "requires": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0", - "source-map": "^0.6.1" - } - }, - "istanbul-reports": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", - "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", - "dev": true, - "requires": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - } - }, - "jest": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest/-/jest-29.5.0.tgz", - "integrity": "sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==", - "dev": true, - "requires": { - "@jest/core": "^29.5.0", - "@jest/types": "^29.5.0", - "import-local": "^3.0.2", - "jest-cli": "^29.5.0" - } - }, - "jest-changed-files": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.5.0.tgz", - "integrity": "sha512-IFG34IUMUaNBIxjQXF/iu7g6EcdMrGRRxaUSw92I/2g2YC6vCdTltl4nHvt7Ci5nSJwXIkCu8Ka1DKF+X7Z1Ag==", - "dev": true, - "requires": { - "execa": "^5.0.0", - "p-limit": "^3.1.0" - } - }, - "jest-circus": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.5.0.tgz", - "integrity": "sha512-gq/ongqeQKAplVxqJmbeUOJJKkW3dDNPY8PjhJ5G0lBRvu0e3EWGxGy5cI4LAGA7gV2UHCtWBI4EMXK8c9nQKA==", - "dev": true, - "requires": { - "@jest/environment": "^29.5.0", - "@jest/expect": "^29.5.0", - "@jest/test-result": "^29.5.0", - "@jest/types": "^29.5.0", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "dedent": "^0.7.0", - "is-generator-fn": "^2.0.0", - "jest-each": "^29.5.0", - "jest-matcher-utils": "^29.5.0", - "jest-message-util": "^29.5.0", - "jest-runtime": "^29.5.0", - "jest-snapshot": "^29.5.0", - "jest-util": "^29.5.0", - "p-limit": "^3.1.0", - "pretty-format": "^29.5.0", - "pure-rand": "^6.0.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - } - }, - "jest-cli": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.5.0.tgz", - "integrity": "sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw==", - "dev": true, - "requires": { - "@jest/core": "^29.5.0", - "@jest/test-result": "^29.5.0", - "@jest/types": "^29.5.0", - "chalk": "^4.0.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "import-local": "^3.0.2", - "jest-config": "^29.5.0", - "jest-util": "^29.5.0", - "jest-validate": "^29.5.0", - "prompts": "^2.0.1", - "yargs": "^17.3.1" - }, - "dependencies": { - "jest-config": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.5.0.tgz", - "integrity": "sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==", - "dev": true, - "requires": { - "@babel/core": "^7.11.6", - "@jest/test-sequencer": "^29.5.0", - "@jest/types": "^29.5.0", - "babel-jest": "^29.5.0", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "deepmerge": "^4.2.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-circus": "^29.5.0", - "jest-environment-node": "^29.5.0", - "jest-get-type": "^29.4.3", - "jest-regex-util": "^29.4.3", - "jest-resolve": "^29.5.0", - "jest-runner": "^29.5.0", - "jest-util": "^29.5.0", - "jest-validate": "^29.5.0", - "micromatch": "^4.0.4", - "parse-json": "^5.2.0", - "pretty-format": "^29.5.0", - "slash": "^3.0.0", - "strip-json-comments": "^3.1.1" - } - }, - "parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - } - } - } - }, - "jest-diff": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.5.0.tgz", - "integrity": "sha512-LtxijLLZBduXnHSniy0WMdaHjmQnt3g5sa16W4p0HqukYTTsyTW3GD1q41TyGl5YFXj/5B2U6dlh5FM1LIMgxw==", - "dev": true, - "requires": { - "chalk": "^4.0.0", - "diff-sequences": "^29.4.3", - "jest-get-type": "^29.4.3", - "pretty-format": "^29.5.0" - } - }, - "jest-docblock": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.4.3.tgz", - "integrity": "sha512-fzdTftThczeSD9nZ3fzA/4KkHtnmllawWrXO69vtI+L9WjEIuXWs4AmyME7lN5hU7dB0sHhuPfcKofRsUb/2Fg==", - "dev": true, - "requires": { - "detect-newline": "^3.0.0" - } - }, - "jest-each": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.5.0.tgz", - "integrity": "sha512-HM5kIJ1BTnVt+DQZ2ALp3rzXEl+g726csObrW/jpEGl+CDSSQpOJJX2KE/vEg8cxcMXdyEPu6U4QX5eruQv5hA==", - "dev": true, - "requires": { - "@jest/types": "^29.5.0", - "chalk": "^4.0.0", - "jest-get-type": "^29.4.3", - "jest-util": "^29.5.0", - "pretty-format": "^29.5.0" - } - }, - "jest-environment-node": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.5.0.tgz", - "integrity": "sha512-ExxuIK/+yQ+6PRGaHkKewYtg6hto2uGCgvKdb2nfJfKXgZ17DfXjvbZ+jA1Qt9A8EQSfPnt5FKIfnOO3u1h9qw==", - "dev": true, - "requires": { - "@jest/environment": "^29.5.0", - "@jest/fake-timers": "^29.5.0", - "@jest/types": "^29.5.0", - "@types/node": "*", - "jest-mock": "^29.5.0", - "jest-util": "^29.5.0" - } - }, - "jest-get-type": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.4.3.tgz", - "integrity": "sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg==", - "dev": true - }, - "jest-haste-map": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.5.0.tgz", - "integrity": "sha512-IspOPnnBro8YfVYSw6yDRKh/TiCdRngjxeacCps1cQ9cgVN6+10JUcuJ1EabrgYLOATsIAigxA0rLR9x/YlrSA==", - "dev": true, - "requires": { - "@jest/types": "^29.5.0", - "@types/graceful-fs": "^4.1.3", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "fsevents": "^2.3.2", - "graceful-fs": "^4.2.9", - "jest-regex-util": "^29.4.3", - "jest-util": "^29.5.0", - "jest-worker": "^29.5.0", - "micromatch": "^4.0.4", - "walker": "^1.0.8" - } - }, - "jest-leak-detector": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.5.0.tgz", - "integrity": "sha512-u9YdeeVnghBUtpN5mVxjID7KbkKE1QU4f6uUwuxiY0vYRi9BUCLKlPEZfDGR67ofdFmDz9oPAy2G92Ujrntmow==", - "dev": true, - "requires": { - "jest-get-type": "^29.4.3", - "pretty-format": "^29.5.0" - } - }, - "jest-matcher-utils": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.5.0.tgz", - "integrity": "sha512-lecRtgm/rjIK0CQ7LPQwzCs2VwW6WAahA55YBuI+xqmhm7LAaxokSB8C97yJeYyT+HvQkH741StzpU41wohhWw==", - "dev": true, - "requires": { - "chalk": "^4.0.0", - "jest-diff": "^29.5.0", - "jest-get-type": "^29.4.3", - "pretty-format": "^29.5.0" - } - }, - "jest-message-util": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.5.0.tgz", - "integrity": "sha512-Kijeg9Dag6CKtIDA7O21zNTACqD5MD/8HfIV8pdD94vFyFuer52SigdC3IQMhab3vACxXMiFk+yMHNdbqtyTGA==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.5.0", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^29.5.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - } - }, - "jest-mock": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.5.0.tgz", - "integrity": "sha512-GqOzvdWDE4fAV2bWQLQCkujxYWL7RxjCnj71b5VhDAGOevB3qj3Ovg26A5NI84ZpODxyzaozXLOh2NCgkbvyaw==", - "dev": true, - "requires": { - "@jest/types": "^29.5.0", - "@types/node": "*", - "jest-util": "^29.5.0" - } - }, - "jest-pnp-resolver": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", - "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", - "dev": true, - "requires": {} - }, - "jest-regex-util": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.4.3.tgz", - "integrity": "sha512-O4FglZaMmWXbGHSQInfXewIsd1LMn9p3ZXB/6r4FOkyhX2/iP/soMG98jGvk/A3HAN78+5VWcBGO0BJAPRh4kg==", - "dev": true - }, - "jest-resolve": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.5.0.tgz", - "integrity": "sha512-1TzxJ37FQq7J10jPtQjcc+MkCkE3GBpBecsSUWJ0qZNJpmg6m0D9/7II03yJulm3H/fvVjgqLh/k2eYg+ui52w==", - "dev": true, - "requires": { - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.5.0", - "jest-pnp-resolver": "^1.2.2", - "jest-util": "^29.5.0", - "jest-validate": "^29.5.0", - "resolve": "^1.20.0", - "resolve.exports": "^2.0.0", - "slash": "^3.0.0" - } - }, - "jest-resolve-dependencies": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.5.0.tgz", - "integrity": "sha512-sjV3GFr0hDJMBpYeUuGduP+YeCRbd7S/ck6IvL3kQ9cpySYKqcqhdLLC2rFwrcL7tz5vYibomBrsFYWkIGGjOg==", - "dev": true, - "requires": { - "jest-regex-util": "^29.4.3", - "jest-snapshot": "^29.5.0" - } - }, - "jest-runner": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.5.0.tgz", - "integrity": "sha512-m7b6ypERhFghJsslMLhydaXBiLf7+jXy8FwGRHO3BGV1mcQpPbwiqiKUR2zU2NJuNeMenJmlFZCsIqzJCTeGLQ==", - "dev": true, - "requires": { - "@jest/console": "^29.5.0", - "@jest/environment": "^29.5.0", - "@jest/test-result": "^29.5.0", - "@jest/transform": "^29.5.0", - "@jest/types": "^29.5.0", - "@types/node": "*", - "chalk": "^4.0.0", - "emittery": "^0.13.1", - "graceful-fs": "^4.2.9", - "jest-docblock": "^29.4.3", - "jest-environment-node": "^29.5.0", - "jest-haste-map": "^29.5.0", - "jest-leak-detector": "^29.5.0", - "jest-message-util": "^29.5.0", - "jest-resolve": "^29.5.0", - "jest-runtime": "^29.5.0", - "jest-util": "^29.5.0", - "jest-watcher": "^29.5.0", - "jest-worker": "^29.5.0", - "p-limit": "^3.1.0", - "source-map-support": "0.5.13" - } - }, - "jest-runtime": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.5.0.tgz", - "integrity": "sha512-1Hr6Hh7bAgXQP+pln3homOiEZtCDZFqwmle7Ew2j8OlbkIu6uE3Y/etJQG8MLQs3Zy90xrp2C0BRrtPHG4zryw==", - "dev": true, - "requires": { - "@jest/environment": "^29.5.0", - "@jest/fake-timers": "^29.5.0", - "@jest/globals": "^29.5.0", - "@jest/source-map": "^29.4.3", - "@jest/test-result": "^29.5.0", - "@jest/transform": "^29.5.0", - "@jest/types": "^29.5.0", - "@types/node": "*", - "chalk": "^4.0.0", - "cjs-module-lexer": "^1.0.0", - "collect-v8-coverage": "^1.0.0", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.5.0", - "jest-message-util": "^29.5.0", - "jest-mock": "^29.5.0", - "jest-regex-util": "^29.4.3", - "jest-resolve": "^29.5.0", - "jest-snapshot": "^29.5.0", - "jest-util": "^29.5.0", - "slash": "^3.0.0", - "strip-bom": "^4.0.0" - } - }, - "jest-snapshot": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.5.0.tgz", - "integrity": "sha512-x7Wolra5V0tt3wRs3/ts3S6ciSQVypgGQlJpz2rsdQYoUKxMxPNaoHMGJN6qAuPJqS+2iQ1ZUn5kl7HCyls84g==", - "dev": true, - "requires": { - "@babel/core": "^7.11.6", - "@babel/generator": "^7.7.2", - "@babel/plugin-syntax-jsx": "^7.7.2", - "@babel/plugin-syntax-typescript": "^7.7.2", - "@babel/traverse": "^7.7.2", - "@babel/types": "^7.3.3", - "@jest/expect-utils": "^29.5.0", - "@jest/transform": "^29.5.0", - "@jest/types": "^29.5.0", - "@types/babel__traverse": "^7.0.6", - "@types/prettier": "^2.1.5", - "babel-preset-current-node-syntax": "^1.0.0", - "chalk": "^4.0.0", - "expect": "^29.5.0", - "graceful-fs": "^4.2.9", - "jest-diff": "^29.5.0", - "jest-get-type": "^29.4.3", - "jest-matcher-utils": "^29.5.0", - "jest-message-util": "^29.5.0", - "jest-util": "^29.5.0", - "natural-compare": "^1.4.0", - "pretty-format": "^29.5.0", - "semver": "^7.3.5" - }, - "dependencies": { - "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, - "requires": { - "yallist": "^4.0.0" - } - }, - "semver": { - "version": "7.5.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.2.tgz", - "integrity": "sha512-SoftuTROv/cRjCze/scjGyiDtcUyxw1rgYQSZY7XTmtR5hX+dm76iDbTH8TkLPHCQmlbQVSSbNZCPM2hb0knnQ==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - } - } - }, - "jest-util": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.5.0.tgz", - "integrity": "sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ==", - "dev": true, - "requires": { - "@jest/types": "^29.5.0", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - } - }, - "jest-validate": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.5.0.tgz", - "integrity": "sha512-pC26etNIi+y3HV8A+tUGr/lph9B18GnzSRAkPaaZJIE1eFdiYm6/CewuiJQ8/RlfHd1u/8Ioi8/sJ+CmbA+zAQ==", - "dev": true, - "requires": { - "@jest/types": "^29.5.0", - "camelcase": "^6.2.0", - "chalk": "^4.0.0", - "jest-get-type": "^29.4.3", - "leven": "^3.1.0", - "pretty-format": "^29.5.0" - }, - "dependencies": { - "camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true - } - } - }, - "jest-watcher": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.5.0.tgz", - "integrity": "sha512-KmTojKcapuqYrKDpRwfqcQ3zjMlwu27SYext9pt4GlF5FUgB+7XE1mcCnSm6a4uUpFyQIkb6ZhzZvHl+jiBCiA==", - "dev": true, - "requires": { - "@jest/test-result": "^29.5.0", - "@jest/types": "^29.5.0", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "emittery": "^0.13.1", - "jest-util": "^29.5.0", - "string-length": "^4.0.1" - } - }, - "jest-worker": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.5.0.tgz", - "integrity": "sha512-NcrQnevGoSp4b5kg+akIpthoAFHxPBcb5P6mYPY0fUNT+sSvmtu6jlkEle3anczUKIKEbMxFimk9oTP/tpIPgA==", - "dev": true, - "requires": { - "@types/node": "*", - "jest-util": "^29.5.0", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "dependencies": { - "supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "jmespath": { - "version": "0.15.0", - "resolved": "https://registry.npmjs.org/jmespath/-/jmespath-0.15.0.tgz", - "integrity": "sha512-+kHj8HXArPfpPEKGLZ+kB5ONRTCiGQXo8RQYL0hH8t6pWXUBBK5KkkQmTNOwKK4LEsd0yTsgtjJVm4UBSZea4w==" - }, - "joycon": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/joycon/-/joycon-3.1.1.tgz", - "integrity": "sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==" - }, - "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 - }, - "js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true - }, - "json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" - }, - "json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true - }, - "json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", - "dev": true - }, - "json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true - }, - "jsonwebtoken": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.0.tgz", - "integrity": "sha512-tuGfYXxkQGDPnLJ7SibiQgVgeDgfbPq2k2ICcbgqW8WxWLBAxKQM/ZCu/IT8SOSwmaYl4dpTFCW5xZv7YbbWUw==", - "requires": { - "jws": "^3.2.2", - "lodash": "^4.17.21", - "ms": "^2.1.1", - "semver": "^7.3.8" - }, - "dependencies": { - "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==", - "requires": { - "yallist": "^4.0.0" - } - }, - "semver": { - "version": "7.5.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.2.tgz", - "integrity": "sha512-SoftuTROv/cRjCze/scjGyiDtcUyxw1rgYQSZY7XTmtR5hX+dm76iDbTH8TkLPHCQmlbQVSSbNZCPM2hb0knnQ==", - "requires": { - "lru-cache": "^6.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - } - } - }, - "jwa": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", - "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", - "requires": { - "buffer-equal-constant-time": "1.0.1", - "ecdsa-sig-formatter": "1.0.11", - "safe-buffer": "^5.0.1" - } - }, - "jws": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", - "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", - "requires": { - "jwa": "^1.4.1", - "safe-buffer": "^5.0.1" - } - }, - "kareem": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.5.1.tgz", - "integrity": "sha512-7jFxRVm+jD+rkq3kY0iZDJfsO2/t4BBPeEb2qKn2lR/9KhuksYk5hxzfRYWMPV8P/x2d0kHD306YyWLzjjH+uA==" - }, - "kleur": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", - "dev": true - }, - "leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", - "dev": true - }, - "levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "requires": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - } - }, - "lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true - }, - "load-json-file": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-5.3.0.tgz", - "integrity": "sha512-cJGP40Jc/VXUsp8/OrnyKyTZ1y6v/dphm3bioS+RrKXjK2BB6wHUd6JptZEFDGgGahMT+InnZO5i1Ei9mpC8Bw==", - "requires": { - "graceful-fs": "^4.1.15", - "parse-json": "^4.0.0", - "pify": "^4.0.1", - "strip-bom": "^3.0.0", - "type-fest": "^0.3.0" - }, - "dependencies": { - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==" - }, - "type-fest": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz", - "integrity": "sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==" - } - } - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, - "lodash.defaults": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", - "integrity": "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==" - }, - "lodash.flatten": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", - "integrity": "sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==" - }, - "lodash.isarguments": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", - "integrity": "sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg==" - }, - "lodash.memoize": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", - "dev": true - }, - "lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true - }, - "lru_map": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/lru_map/-/lru_map-0.3.3.tgz", - "integrity": "sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ==" - }, - "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, - "requires": { - "yallist": "^3.0.2" - } - }, - "make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "requires": { - "semver": "^6.0.0" - } - }, - "make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==" - }, - "makeerror": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", - "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", - "dev": true, - "requires": { - "tmpl": "1.0.5" - } - }, - "media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==" - }, - "memory-pager": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz", - "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==", - "optional": true - }, - "merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" - }, - "merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true - }, - "merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true - }, - "methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==" - }, - "micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, - "requires": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - } - }, - "mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" - }, - "mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" - }, - "mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "requires": { - "mime-db": "1.52.0" - } - }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true - }, - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==" - }, - "mongodb": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-5.6.0.tgz", - "integrity": "sha512-z8qVs9NfobHJm6uzK56XBZF8XwM9H294iRnB7wNjF0SnY93si5HPziIJn+qqvUR5QOff/4L0gCD6SShdR/GtVQ==", - "requires": { - "bson": "^5.3.0", - "mongodb-connection-string-url": "^2.6.0", - "saslprep": "^1.0.3", - "socks": "^2.7.1" - } - }, - "mongodb-connection-string-url": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-2.6.0.tgz", - "integrity": "sha512-WvTZlI9ab0QYtTYnuMLgobULWhokRjtC7db9LtcVfJ+Hsnyr5eo6ZtNAt3Ly24XZScGMelOcGtm7lSn0332tPQ==", - "requires": { - "@types/whatwg-url": "^8.2.1", - "whatwg-url": "^11.0.0" - }, - "dependencies": { - "punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==" - }, - "tr46": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", - "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", - "requires": { - "punycode": "^2.1.1" - } - }, - "webidl-conversions": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", - "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==" - }, - "whatwg-url": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", - "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", - "requires": { - "tr46": "^3.0.0", - "webidl-conversions": "^7.0.0" - } - } - } - }, - "mongoose": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-7.3.1.tgz", - "integrity": "sha512-6289bmSIhvR8xMHsYe2/CuzN7wHK+2RHcK7idDdzniCPC5zix5JH0Hc4k3CmXlr/9zQ2250gUQiUWtvDB0vF1Q==", - "requires": { - "bson": "^5.3.0", - "kareem": "2.5.1", - "mongodb": "5.6.0", - "mpath": "0.9.0", - "mquery": "5.0.0", - "ms": "2.1.3", - "sift": "16.0.1" - }, - "dependencies": { - "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - } - } - }, - "morgan": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.10.0.tgz", - "integrity": "sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==", - "dev": true, - "requires": { - "basic-auth": "~2.0.1", - "debug": "2.6.9", - "depd": "~2.0.0", - "on-finished": "~2.3.0", - "on-headers": "~1.0.2" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", - "dev": true, - "requires": { - "ee-first": "1.1.1" - } - } - } - }, - "mpath": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.9.0.tgz", - "integrity": "sha512-ikJRQTk8hw5DEoFVxHG1Gn9T/xcjtdnOKIU1JTmGjZZlg9LST2mBLmcX3/ICIbgJydT2GOc15RnNy5mHmzfSew==" - }, - "mquery": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/mquery/-/mquery-5.0.0.tgz", - "integrity": "sha512-iQMncpmEK8R8ncT8HJGsGc9Dsp8xcgYMVSbs5jgnm1lFHTZqMJTUWTDx1LBO8+mK3tPNZWFLBghQEIOULSTHZg==", - "requires": { - "debug": "4.x" - } - }, - "mri": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/mri/-/mri-1.1.4.tgz", - "integrity": "sha512-6y7IjGPm8AzlvoUrwAaw1tLnUBudaS3752vcd8JtrpGGQn+rXIe63LFVHm/YMwtqAuh+LJPCFdlLYPWM1nYn6w==" - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true - }, - "natural-compare-lite": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", - "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", - "dev": true - }, - "negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==" - }, - "neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" - }, - "nock": { - "version": "13.3.1", - "resolved": "https://registry.npmjs.org/nock/-/nock-13.3.1.tgz", - "integrity": "sha512-vHnopocZuI93p2ccivFyGuUfzjq2fxNyNurp7816mlT5V5HF4SzXu8lvLrVzBbNqzs+ODooZ6OksuSUNM7Njkw==", - "dev": true, - "requires": { - "debug": "^4.1.0", - "json-stringify-safe": "^5.0.1", - "lodash": "^4.17.21", - "propagate": "^2.0.0" - } - }, - "node-fetch": { - "version": "2.6.11", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.11.tgz", - "integrity": "sha512-4I6pdBY1EthSqDmJkiNk3JIT8cswwR9nfeW/cPdUagJYEQG7R95WRH74wpz7ma8Gh/9dI9FP+OU+0E4FvtA55w==", - "requires": { - "whatwg-url": "^5.0.0" - } - }, - "node-int64": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", - "dev": true - }, - "node-releases": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.12.tgz", - "integrity": "sha512-QzsYKWhXTWx8h1kIvqfnC++o0pEmpRQA/aenALsL2F4pqNVr7YzcdMlDij5WBnwftRbJCNJL/O7zdKaxKPHqgQ==", - "dev": true - }, - "nodemailer": { - "version": "6.9.3", - "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.9.3.tgz", - "integrity": "sha512-fy9v3NgTzBngrMFkDsKEj0r02U7jm6XfC3b52eoNV+GCrGj+s8pt5OqhiJdWKuw51zCTdiNR/IUD1z33LIIGpg==" - }, - "nodemon": { - "version": "2.0.22", - "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.22.tgz", - "integrity": "sha512-B8YqaKMmyuCO7BowF1Z1/mkPqLk6cs/l63Ojtd6otKjMx47Dq1utxfRxcavH1I7VSaL8n5BUaoutadnsX3AAVQ==", - "dev": true, - "requires": { - "chokidar": "^3.5.2", - "debug": "^3.2.7", - "ignore-by-default": "^1.0.1", - "minimatch": "^3.1.2", - "pstree.remy": "^1.1.8", - "semver": "^5.7.1", - "simple-update-notifier": "^1.0.7", - "supports-color": "^5.5.0", - "touch": "^3.1.0", - "undefsafe": "^2.0.5" - }, - "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "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 - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - }, - "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, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "nopt": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", - "integrity": "sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==", - "dev": true, - "requires": { - "abbrev": "1" - } - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true - }, - "npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "requires": { - "path-key": "^3.0.0" - } - }, - "object-inspect": { - "version": "1.12.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", - "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==" - }, - "octokit-auth-probot": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/octokit-auth-probot/-/octokit-auth-probot-1.2.9.tgz", - "integrity": "sha512-mMjw6Y760EwJnW2tSVooJK8BMdsG6D40SoCclnefVf/5yWjaNVquEu8NREBVWb60OwbpnMEz4vREXHB5xdMFYQ==", - "requires": { - "@octokit/auth-app": "^4.0.2", - "@octokit/auth-token": "^3.0.0", - "@octokit/auth-unauthenticated": "^3.0.0", - "@octokit/types": "^8.0.0" - }, - "dependencies": { - "@octokit/auth-token": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-3.0.4.tgz", - "integrity": "sha512-TWFX7cZF2LXoCvdmJWY7XVPi74aSY0+FfBZNSXEXFkMpjcqsQwDSYVv5FhRFaI0V1ECnwbz4j59T/G+rXNWaIQ==" - } - } - }, - "on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "requires": { - "ee-first": "1.1.1" - } - }, - "on-headers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", - "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", - "dev": true - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "requires": { - "wrappy": "1" - } - }, - "onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "requires": { - "mimic-fn": "^2.1.0" - } - }, - "optionator": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", - "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", - "dev": true, - "requires": { - "@aashutoshrathi/word-wrap": "^1.2.3", - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0" - } - }, - "p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "requires": { - "yocto-queue": "^0.1.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - }, - "dependencies": { - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - } - } - }, - "p-map": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", - "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==" - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" - }, - "parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "requires": { - "callsites": "^3.0.0" - } - }, - "parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", - "requires": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - } - }, - "parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, - "path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" - }, - "path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" - }, - "path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true - }, - "picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, - "picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true - }, - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" - }, - "pino": { - "version": "6.14.0", - "resolved": "https://registry.npmjs.org/pino/-/pino-6.14.0.tgz", - "integrity": "sha512-iuhEDel3Z3hF9Jfe44DPXR8l07bhjuFY3GMHIXbjnY9XcafbyDDwl2sN2vw2GjMPf5Nkoe+OFao7ffn9SXaKDg==", - "requires": { - "fast-redact": "^3.0.0", - "fast-safe-stringify": "^2.0.8", - "flatstr": "^1.0.12", - "pino-std-serializers": "^3.1.0", - "process-warning": "^1.0.0", - "quick-format-unescaped": "^4.0.3", - "sonic-boom": "^1.0.2" - }, - "dependencies": { - "pino-std-serializers": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-3.2.0.tgz", - "integrity": "sha512-EqX4pwDPrt3MuOAAUBMU0Tk5kR/YcCM5fNPEzgCO2zJ5HfX0vbiH9HbJglnyeQsN96Kznae6MWD47pZB5avTrg==" - }, - "sonic-boom": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-1.4.1.tgz", - "integrity": "sha512-LRHh/A8tpW7ru89lrlkU4AszXt1dbwSjVWguGrmlxE7tawVmDBlI1PILMkXAxJTwqhgsEeTHzj36D5CmHgQmNg==", - "requires": { - "atomic-sleep": "^1.0.0", - "flatstr": "^1.0.12" - } - } - } - }, - "pino-http": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/pino-http/-/pino-http-5.8.0.tgz", - "integrity": "sha512-YwXiyRb9y0WCD1P9PcxuJuh3Dc5qmXde/paJE86UGYRdiFOi828hR9iUGmk5gaw6NBT9gLtKANOHFimvh19U5w==", - "requires": { - "fast-url-parser": "^1.1.3", - "pino": "^6.13.0", - "pino-std-serializers": "^4.0.0" - }, - "dependencies": { - "pino-std-serializers": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-4.0.0.tgz", - "integrity": "sha512-cK0pekc1Kjy5w9V2/n+8MkZwusa6EyyxfeQCB799CQRhRt/CqYKiWs5adeu8Shve2ZNffvfC/7J64A2PJo1W/Q==" - } - } - }, - "pino-pretty": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/pino-pretty/-/pino-pretty-6.0.0.tgz", - "integrity": "sha512-jyeR2fXXWc68st1DTTM5NhkHlx8p+1fKZMfm84Jwq+jSw08IwAjNaZBZR6ts69hhPOfOjg/NiE1HYW7vBRPL3A==", - "requires": { - "@hapi/bourne": "^2.0.0", - "args": "^5.0.1", - "colorette": "^1.3.0", - "dateformat": "^4.5.1", - "fast-safe-stringify": "^2.0.7", - "jmespath": "^0.15.0", - "joycon": "^3.0.0", - "pump": "^3.0.0", - "readable-stream": "^3.6.0", - "rfdc": "^1.3.0", - "split2": "^3.1.1", - "strip-json-comments": "^3.1.1" - }, - "dependencies": { - "split2": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz", - "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==", - "requires": { - "readable-stream": "^3.0.0" - } - } - } - }, - "pino-std-serializers": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-6.2.1.tgz", - "integrity": "sha512-wHuWB+CvSVb2XqXM0W/WOYUkVSPbiJb9S5fNB7TBhd8s892Xq910bRxwHtC4l71hgztObTjXL6ZheZXFjhDrDQ==" - }, - "pirates": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", - "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", - "dev": true - }, - "pkg-conf": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-3.1.0.tgz", - "integrity": "sha512-m0OTbR/5VPNPqO1ph6Fqbj7Hv6QU7gR/tQW40ZqrL1rjgCU85W6C1bJn0BItuJqnR98PWzw7Z8hHeChD1WrgdQ==", - "requires": { - "find-up": "^3.0.0", - "load-json-file": "^5.2.0" - }, - "dependencies": { - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "requires": { - "locate-path": "^3.0.0" - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "requires": { - "p-limit": "^2.0.0" - } - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==" - } - } - }, - "pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "requires": { - "find-up": "^4.0.0" - } - }, - "prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true - }, - "pretty-format": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.5.0.tgz", - "integrity": "sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==", - "dev": true, - "requires": { - "@jest/schemas": "^29.4.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true - } - } - }, - "probot": { - "version": "12.3.1", - "resolved": "https://registry.npmjs.org/probot/-/probot-12.3.1.tgz", - "integrity": "sha512-ECSgycmAC0ILEK6cOa+x3QPufP5JybsuohOFCYr3glQU5SkbmypZJE/Sfio9mxAFHK5LCXveIDsfZCxf6ck4JA==", - "requires": { - "@octokit/core": "^3.2.4", - "@octokit/plugin-enterprise-compatibility": "^1.2.8", - "@octokit/plugin-paginate-rest": "^2.6.2", - "@octokit/plugin-rest-endpoint-methods": "^5.0.1", - "@octokit/plugin-retry": "^3.0.6", - "@octokit/plugin-throttling": "^3.3.4", - "@octokit/types": "^8.0.0", - "@octokit/webhooks": "^9.8.4", - "@probot/get-private-key": "^1.1.0", - "@probot/octokit-plugin-config": "^1.0.0", - "@probot/pino": "^2.2.0", - "@types/express": "^4.17.9", - "@types/ioredis": "^4.27.1", - "@types/pino": "^6.3.4", - "@types/pino-http": "^5.0.6", - "commander": "^6.2.0", - "deepmerge": "^4.2.2", - "deprecation": "^2.3.1", - "dotenv": "^8.2.0", - "eventsource": "^2.0.2", - "express": "^4.17.1", - "express-handlebars": "^6.0.3", - "ioredis": "^4.27.8", - "js-yaml": "^3.14.1", - "lru-cache": "^6.0.0", - "octokit-auth-probot": "^1.2.2", - "pino": "^6.7.0", - "pino-http": "^5.3.0", - "pkg-conf": "^3.1.0", - "resolve": "^1.19.0", - "semver": "^7.3.4", - "update-dotenv": "^1.1.1", - "uuid": "^8.3.2" - }, - "dependencies": { - "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==", - "requires": { - "yallist": "^4.0.0" - } - }, - "semver": { - "version": "7.5.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.2.tgz", - "integrity": "sha512-SoftuTROv/cRjCze/scjGyiDtcUyxw1rgYQSZY7XTmtR5hX+dm76iDbTH8TkLPHCQmlbQVSSbNZCPM2hb0knnQ==", - "requires": { - "lru-cache": "^6.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - } - } - }, - "process-warning": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-1.0.0.tgz", - "integrity": "sha512-du4wfLyj4yCZq1VupnVSZmRsPJsNuxoDQFdCFHLaYiEbFBD7QE0a+I4D7hOxrVnh78QE/YipFAj9lXHiXocV+Q==" - }, - "prompts": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", - "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", - "dev": true, - "requires": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" - } - }, - "propagate": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/propagate/-/propagate-2.0.1.tgz", - "integrity": "sha512-vGrhOavPSTz4QVNuBNdcNXePNdNMaO1xj9yBeH1ScQPjk/rhg9sSlCXPhMkFuaNNW/syTvYqsnbIJxMBfRbbag==", - "dev": true - }, - "proxy-addr": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", - "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", - "requires": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - } - }, - "pstree.remy": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", - "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==", - "dev": true - }, - "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==" - }, - "pure-rand": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.2.tgz", - "integrity": "sha512-6Yg0ekpKICSjPswYOuC5sku/TSWaRYlA0qsXqJgM/d/4pLPHPuTxK7Nbf7jFKzAeedUhR8C7K9Uv63FBsSo8xQ==", - "dev": true - }, - "qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", - "requires": { - "side-channel": "^1.0.4" - } - }, - "queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true - }, - "quick-format-unescaped": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz", - "integrity": "sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==" - }, - "range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" - }, - "raw-body": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", - "requires": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - } - }, - "react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", - "dev": true - }, - "readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "requires": { - "picomatch": "^2.2.1" - } - }, - "redis-commands": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/redis-commands/-/redis-commands-1.7.0.tgz", - "integrity": "sha512-nJWqw3bTFy21hX/CPKHth6sfhZbdiHP6bTawSgQBlKOVRG7EZkfHbbHwQJnrE4vsQf0CMNE+3gJ4Fmm16vdVlQ==" - }, - "redis-errors": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/redis-errors/-/redis-errors-1.2.0.tgz", - "integrity": "sha512-1qny3OExCf0UvUV/5wpYKf2YwPcOqXzkwKKSmKHiE6ZMQs5heeE/c8eXK+PNllPvmjgAbfnsbpkGZWy8cBpn9w==" - }, - "redis-parser": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/redis-parser/-/redis-parser-3.0.0.tgz", - "integrity": "sha512-DJnGAeenTdpMEH6uAJRK/uiyEIH9WVsUmoLwzudwGJUwZPp80PDBWPHXSAGNPwNvIXAbe7MSUB1zQFugFml66A==", - "requires": { - "redis-errors": "^1.0.0" - } - }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true - }, - "resolve": { - "version": "1.22.2", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", - "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", - "requires": { - "is-core-module": "^2.11.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - } - }, - "resolve-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", - "dev": true, - "requires": { - "resolve-from": "^5.0.0" - } - }, - "resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true - }, - "resolve.exports": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", - "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", - "dev": true - }, - "reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true - }, - "rfdc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", - "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==" - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "requires": { - "queue-microtask": "^1.2.2" - } - }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "saslprep": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz", - "integrity": "sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==", - "optional": true, - "requires": { - "sparse-bitfield": "^3.0.3" - } - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - }, - "send": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", - "requires": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "2.4.1", - "range-parser": "~1.2.1", - "statuses": "2.0.1" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - }, - "dependencies": { - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - } - } - }, - "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - } - } - }, - "serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", - "requires": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.18.0" - } - }, - "setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, - "side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "requires": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - } - }, - "sift": { - "version": "16.0.1", - "resolved": "https://registry.npmjs.org/sift/-/sift-16.0.1.tgz", - "integrity": "sha512-Wv6BjQ5zbhW7VFefWusVP33T/EM0vYikCaQ2qR8yULbsilAT8/wQaXvuQ3ptGLpoKx+lihJE3y2UTgKDyyNHZQ==" - }, - "signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true - }, - "simple-update-notifier": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-1.1.0.tgz", - "integrity": "sha512-VpsrsJSUcJEseSbMHkrsrAVSdvVS5I96Qo1QAQ4FxQ9wXFcB+pjj7FB7/us9+GcgfW4ziHtYMc1J0PLczb55mg==", - "dev": true, - "requires": { - "semver": "~7.0.0" - }, - "dependencies": { - "semver": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", - "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", - "dev": true - } - } - }, - "sisteransi": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", - "dev": true - }, - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true - }, - "smart-buffer": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", - "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==" - }, - "smee-client": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/smee-client/-/smee-client-1.2.3.tgz", - "integrity": "sha512-uDrU8u9/Ln7aRXyzGHgVaNUS8onHZZeSwQjCdkMoSL7U85xI+l+Y2NgjibkMJAyXkW7IAbb8rw9RMHIjS6lAwA==", - "dev": true, - "requires": { - "commander": "^2.19.0", - "eventsource": "^1.1.0", - "morgan": "^1.9.1", - "superagent": "^7.1.3", - "validator": "^13.7.0" - }, - "dependencies": { - "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, - "eventsource": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.1.2.tgz", - "integrity": "sha512-xAH3zWhgO2/3KIniEKYPr8plNSzlGINOUqYj0m0u7AB81iRw8b/3E73W6AuU+6klLbaSFmZnaETQ2lXPfAydrA==", - "dev": true - } - } - }, - "socks": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", - "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", - "requires": { - "ip": "^2.0.0", - "smart-buffer": "^4.2.0" - } - }, - "sonic-boom": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-2.8.0.tgz", - "integrity": "sha512-kuonw1YOYYNOve5iHdSahXPOK49GqwA+LZhI6Wz/l0rP57iKyXXIHaRagOBHAPmGwJC6od2Z9zgvZ5loSgMlVg==", - "requires": { - "atomic-sleep": "^1.0.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - }, - "source-map-support": { - "version": "0.5.13", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", - "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "sparse-bitfield": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", - "integrity": "sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==", - "optional": true, - "requires": { - "memory-pager": "^1.0.2" - } - }, - "split2": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", - "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==" - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" - }, - "stack-utils": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", - "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", - "dev": true, - "requires": { - "escape-string-regexp": "^2.0.0" - } - }, - "standard-as-callback": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/standard-as-callback/-/standard-as-callback-2.1.0.tgz", - "integrity": "sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A==" - }, - "statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==" - }, - "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "requires": { - "safe-buffer": "~5.2.0" - } - }, - "string-length": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", - "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", - "dev": true, - "requires": { - "char-regex": "^1.0.2", - "strip-ansi": "^6.0.0" - } - }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - }, - "strip-bom": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", - "dev": true - }, - "strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true - }, - "strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==" - }, - "superagent": { - "version": "7.1.5", - "resolved": "https://registry.npmjs.org/superagent/-/superagent-7.1.5.tgz", - "integrity": "sha512-HQYyGuDRFGmZ6GNC4hq2f37KnsY9Lr0/R1marNZTgMweVDQLTLJJ6DGQ9Tj/xVVs5HEnop9EMmTbywb5P30aqw==", - "dev": true, - "requires": { - "component-emitter": "^1.3.0", - "cookiejar": "^2.1.3", - "debug": "^4.3.4", - "fast-safe-stringify": "^2.1.1", - "form-data": "^4.0.0", - "formidable": "^2.0.1", - "methods": "^1.1.2", - "mime": "^2.5.0", - "qs": "^6.10.3", - "readable-stream": "^3.6.0", - "semver": "^7.3.7" - }, - "dependencies": { - "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, - "requires": { - "yallist": "^4.0.0" - } - }, - "mime": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", - "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", - "dev": true - }, - "semver": { - "version": "7.5.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.2.tgz", - "integrity": "sha512-SoftuTROv/cRjCze/scjGyiDtcUyxw1rgYQSZY7XTmtR5hX+dm76iDbTH8TkLPHCQmlbQVSSbNZCPM2hb0knnQ==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - } - } - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - }, - "supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" - }, - "test-exclude": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", - "dev": true, - "requires": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" - } - }, - "text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true - }, - "tmpl": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", - "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", - "dev": true - }, - "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 - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } - }, - "toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" - }, - "touch": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", - "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==", - "dev": true, - "requires": { - "nopt": "~1.0.10" - } - }, - "tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" - }, - "ts-jest": { - "version": "29.1.0", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.0.tgz", - "integrity": "sha512-ZhNr7Z4PcYa+JjMl62ir+zPiNJfXJN6E8hSLnaUKhOgqcn8vb3e537cpkd0FuAfRK3sR1LSqM1MOhliXNgOFPA==", - "dev": true, - "requires": { - "bs-logger": "0.x", - "fast-json-stable-stringify": "2.x", - "jest-util": "^29.0.0", - "json5": "^2.2.3", - "lodash.memoize": "4.x", - "make-error": "1.x", - "semver": "7.x", - "yargs-parser": "^21.0.1" - }, - "dependencies": { - "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, - "requires": { - "yallist": "^4.0.0" - } - }, - "semver": { - "version": "7.5.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.2.tgz", - "integrity": "sha512-SoftuTROv/cRjCze/scjGyiDtcUyxw1rgYQSZY7XTmtR5hX+dm76iDbTH8TkLPHCQmlbQVSSbNZCPM2hb0knnQ==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - } - } - }, - "ts-node": { - "version": "10.9.1", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", - "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", - "requires": { - "@cspotcode/source-map-support": "^0.8.0", - "@tsconfig/node10": "^1.0.7", - "@tsconfig/node12": "^1.0.7", - "@tsconfig/node14": "^1.0.0", - "@tsconfig/node16": "^1.0.2", - "acorn": "^8.4.1", - "acorn-walk": "^8.1.1", - "arg": "^4.1.0", - "create-require": "^1.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "v8-compile-cache-lib": "^3.0.1", - "yn": "3.1.1" - } - }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - }, - "tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", - "dev": true, - "requires": { - "tslib": "^1.8.1" - } - }, - "type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "requires": { - "prelude-ls": "^1.2.1" - } - }, - "type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true - }, - "type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true - }, - "type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "requires": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - } - }, - "typescript": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", - "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==" - }, - "uglify-js": { - "version": "3.17.4", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz", - "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==", - "optional": true - }, - "undefsafe": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", - "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==", - "dev": true - }, - "universal-github-app-jwt": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/universal-github-app-jwt/-/universal-github-app-jwt-1.1.1.tgz", - "integrity": "sha512-G33RTLrIBMFmlDV4u4CBF7dh71eWwykck4XgaxaIVeZKOYZRAAxvcGMRFTUclVY6xoUPQvO4Ne5wKGxYm/Yy9w==", - "requires": { - "@types/jsonwebtoken": "^9.0.0", - "jsonwebtoken": "^9.0.0" - } - }, - "universal-user-agent": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", - "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==" - }, - "unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==" - }, - "update-browserslist-db": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", - "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==", - "dev": true, - "requires": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" - } - }, - "update-dotenv": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/update-dotenv/-/update-dotenv-1.1.1.tgz", - "integrity": "sha512-3cIC18In/t0X/yH793c00qqxcKD8jVCgNOPif/fGQkFpYMGecM9YAc+kaAKXuZsM2dE9I9wFI7KvAuNX22SGMQ==", - "requires": {} - }, - "uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "requires": { - "punycode": "^2.1.0" - }, - "dependencies": { - "punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", - "dev": true - } - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" - }, - "utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==" - }, - "uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" - }, - "v8-compile-cache-lib": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", - "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==" - }, - "v8-to-istanbul": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz", - "integrity": "sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==", - "dev": true, - "requires": { - "@jridgewell/trace-mapping": "^0.3.12", - "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^1.6.0" - }, - "dependencies": { - "convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "dev": true - } - } - }, - "validator": { - "version": "13.9.0", - "resolved": "https://registry.npmjs.org/validator/-/validator-13.9.0.tgz", - "integrity": "sha512-B+dGG8U3fdtM0/aNK4/X8CXq/EcxU2WPrPEkJGslb47qyHsxmbggTWK0yEA4qnYVNF+nxNlN88o14hIcPmSIEA==", - "dev": true - }, - "vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==" - }, - "walker": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", - "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", - "dev": true, - "requires": { - "makeerror": "1.0.12" - } - }, - "webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" - }, - "whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "requires": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==" - }, - "wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" - }, - "write-file-atomic": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", - "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", - "dev": true, - "requires": { - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.7" - } - }, - "y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true - }, - "yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - }, - "yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", - "dev": true, - "requires": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" - } - }, - "yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "dev": true - }, - "yn": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", - "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==" - }, - "yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true - } - } -} diff --git a/secret-engine/package.json b/secret-engine/package.json deleted file mode 100644 index c9ed32570..000000000 --- a/secret-engine/package.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "name": "secret-engine", - "version": "1.0.0", - "private": true, - "description": "Infisical secret engine", - "author": "Maidul Islam", - "license": "ISC", - "homepage": "https://github.com//", - "keywords": [ - "probot", - "github", - "probot-app" - ], - "scripts": { - "build": "tsc && cp -R ./src/templates ./lib", - "dev": "npm run build && probot run ./lib/index.js", - "start:dev": "nodemon -e ts,yml --watch './**/*.ts' --exec npm run dev", - "start:prod": "probot run ./lib/index.js", - "test": "jest" - }, - "dependencies": { - "handlebars": "^4.7.7", - "mongoose": "^7.3.1", - "nodemailer": "^6.9.3", - "probot": "^12.2.4", - "ts-node": "^10.9.1" - }, - "devDependencies": { - "@types/jest": "^29.0.0", - "@types/node": "^18.0.0", - "@typescript-eslint/eslint-plugin": "^5.61.0", - "@typescript-eslint/parser": "^5.61.0", - "eslint": "^8.44.0", - "jest": "^29.0.0", - "nock": "^13.0.5", - "nodemon": "^2.0.22", - "smee-client": "^1.2.2", - "ts-jest": "^29.0.0", - "typescript": "^4.1.3" - }, - "engines": { - "node": ">= 10.13.0" - } -} diff --git a/secret-engine/src/helper/nodemailer.ts b/secret-engine/src/helper/nodemailer.ts deleted file mode 100644 index 3aaa2b28a..000000000 --- a/secret-engine/src/helper/nodemailer.ts +++ /dev/null @@ -1,45 +0,0 @@ -import fs from "fs"; -import path from "path"; -import handlebars from "handlebars"; -import nodemailer from "nodemailer"; - -let smtpTransporter: nodemailer.Transporter; - -/** - * @param {Object} obj - * @param {String} obj.template - email template to use from /templates folder (e.g. testEmail.handlebars) - * @param {String[]} obj.subjectLine - email subject line - * @param {String[]} obj.recipients - email addresses of people to send email to - * @param {Object} obj.substitutions - object containing template substitutions - */ -export const sendMail = async ({ - template, - subjectLine, - recipients, - substitutions, -}: { - template: string; - subjectLine: string; - recipients: string[]; - substitutions: any; -}) => { - const smtpConfigured = process.env.SMTP_HOST == "" || process.env.SMTP_HOST == undefined ? false : true - if (smtpConfigured) { - const html = fs.readFileSync( - path.resolve(__dirname, "../templates/" + template), - "utf8" - ); - const temp = handlebars.compile(html); - const htmlToSend = temp(substitutions); - await smtpTransporter.sendMail({ - from: `"${process.env.SMTP_FROM_NAME}" <${process.env.SMTP_FROM_ADDRESS}>`, - to: recipients.join(", "), - subject: subjectLine, - html: htmlToSend, - }); - } -}; - -export const setTransporter = (transporter: nodemailer.Transporter) => { - smtpTransporter = transporter; -}; \ No newline at end of file diff --git a/secret-engine/src/index.ts b/secret-engine/src/index.ts deleted file mode 100644 index 98ecabfa0..000000000 --- a/secret-engine/src/index.ts +++ /dev/null @@ -1,284 +0,0 @@ -import { Probot } from "probot"; -import { exec } from "child_process"; -import { writeFile, readFile, rm, mkdir, } from "fs"; -import { tmpdir } from "os"; -import { join } from "path" -import mongoose from "mongoose"; -import GitRisks, { STATUS_RESOLVED_FALSE_POSITIVE } from "./models/gitRisks"; -import GitAppOrganizationInstallation from "./models/gitAppOrganizationInstallation"; -import { sendMail, setTransporter } from "./helper/nodemailer"; -import { initSmtp } from "./service/smtp"; -import MembershipOrg, { ADMIN, OWNER } from "./models/membershipOrg"; -import User from "./models/user"; - -type SecretMatch = { - Description: string; - StartLine: number; - EndLine: number; - StartColumn: number; - EndColumn: number; - Match: string; - Secret: string; - File: string; - SymlinkFile: string; - Commit: string; - Entropy: number; - Author: string; - Email: string; - Date: string; - Message: string; - Tags: string[]; - RuleID: string; - Fingerprint: string; -}; - -export const GithubSecretScanningApp = async (app: Probot) => { - // connect to DB - initDatabase() - - setTransporter(await initSmtp()); - - app.on("installation.created", async (context) => { - const { payload } = context; - // console.log("payload==>", payload.installation.repository_selection) - }) - - app.on("installation.deleted", async (context) => { - const { payload } = context; - const { installation, repositories } = payload; - if (installation.repository_selection == "all") { - await GitRisks.deleteMany({ installationId: installation.id }) - await GitAppOrganizationInstallation.deleteOne({ installationId: installation.id }) - } else { - for (const repository of repositories) { - await GitRisks.deleteMany({ repositoryId: repository.id }) - } - } - }) - - app.on("push", async (context) => { - const { payload } = context; - const { commits, repository, installation, pusher } = payload; - const [owner, repo] = repository.full_name.split('/'); - - console.log(payload) - const installationLinkToOrgExists = await GitAppOrganizationInstallation.findOne({ installationId: installation.id }).lean() - if (!installationLinkToOrgExists) { - return - } - - const allFindingsByFingerprint: { [key: string]: SecretMatch; } = {} - - for (const commit of commits) { - for (const filepath of [...commit.added, ...commit.modified]) { - try { - const fileContentsResponse = await context.octokit.repos.getContent({ - owner, - repo, - path: filepath, - }); - - const data: any = fileContentsResponse.data; - const fileContent = Buffer.from(data.content, 'base64').toString(); - - const findings = await scanContentAndGetFindings(`\n${fileContent}`) // to count lines correctly - - for (const finding of findings) { - const fingerPrint = `${commit.id}:${filepath}:${finding.RuleID}:${finding.StartLine}` - finding.Fingerprint = fingerPrint - finding.Commit = commit.id - finding.File = filepath - finding.Author = commit.author.name - finding.Email = commit.author.email - allFindingsByFingerprint[fingerPrint] = finding - } - - } catch (error) { - console.error(`Error fetching content for ${filepath}`, error); - } - } - } - - - - // change to update - const noneFalsePositiveFindings = {} - - for (const key in allFindingsByFingerprint) { - const risk = await GitRisks.findOneAndUpdate({ fingerprint: allFindingsByFingerprint[key].Fingerprint }, - { - ...convertKeysToLowercase(allFindingsByFingerprint[key]), - installationId: installation.id, - organization: installationLinkToOrgExists.organizationId, - repositoryFullName: repository.full_name, - repositoryId: repository.id - }, { - upsert: true - }).lean() - - if (risk.status != STATUS_RESOLVED_FALSE_POSITIVE) { - noneFalsePositiveFindings[key] = { ...convertKeysToLowercase(allFindingsByFingerprint[key]) } - } - - } - // get emails of admins - const adminsOfWork = await MembershipOrg.find({ - organization: installationLinkToOrgExists.organizationId, - $or: [ - { role: OWNER }, - { role: ADMIN } - ] - }).lean() - - const userEmails = await User.find({ - _id: { - $in: [adminsOfWork.map(orgMembership => orgMembership.user)] - } - }).select("email").lean() - - const adminOrOwnerEmails = userEmails.map(userObject => userObject.email) - - - // TODO - // don't notify if the risk is marked as false positive - - await sendMail({ - template: "secretLeakIncident.handlebars", - subjectLine: `Incident alert: leaked secrets found in Github repository ${repository.full_name}`, - recipients: [pusher.email, ...adminOrOwnerEmails], - substitutions: { - numberOfSecrets: Object.keys(allFindingsByFingerprint).length, - pusher_email: pusher.email, - pusher_name: pusher.name - } - }); - }); - - app.on(['pull_request.opened', 'pull_request.synchronize'], async (context) => { - const { payload } = context; - const { pull_request } = payload - if (false) { - const check = { - owner: pull_request.head.repo.owner.login, - repo: pull_request.head.repo.name, - name: 'Secret Detection', - head_sha: pull_request.head.sha, - status: 'completed', - conclusion: 'failure', - output: { - title: `X Secrets detected`, - summary: 'We detected potential leaked secret(s) in your pull request.', - }, - }; - return context.octokit.checks.create(check); - } - }); -}; - -async function scanContentAndGetFindings(textContent: string): Promise { - const tempFolder = await createTempFolder(); - const filePath = join(tempFolder, "content.txt"); - const findingsPath = join(tempFolder, "findings.json"); - - try { - await writeTextToFile(filePath, textContent); - await runInfisicalScan(filePath, findingsPath); - const findingsData = await readFindingsFile(findingsPath); - return JSON.parse(findingsData); - } finally { - await deleteTempFolder(tempFolder); - } -} - -function createTempFolder(): Promise { - return new Promise((resolve, reject) => { - const tempDir = tmpdir() - const tempFolderName = Math.random().toString(36).substring(2); - const tempFolderPath = join(tempDir, tempFolderName); - - mkdir(tempFolderPath, (err: any) => { - if (err) { - reject(err); - } else { - resolve(tempFolderPath); - } - }); - }); -} - -function writeTextToFile(filePath: string, content: string): Promise { - return new Promise((resolve, reject) => { - writeFile(filePath, content, (err) => { - if (err) { - reject(err); - } else { - resolve(); - } - }); - }); -} - -function runInfisicalScan(inputPath: string, outputPath: string): Promise { - return new Promise((resolve, reject) => { - const command = `cat "${inputPath}" | infisical scan --exit-code=77 --pipe -r "${outputPath}"`; - exec(command, (error) => { - if (error && error.code != 77) { - reject(error); - } else { - resolve(); - } - }); - }); -} - -function readFindingsFile(filePath: string): Promise { - return new Promise((resolve, reject) => { - readFile(filePath, "utf8", (err, data) => { - if (err) { - reject(err); - } else { - resolve(data); - } - }); - }); -} - -function deleteTempFolder(folderPath: string): Promise { - return new Promise((resolve, reject) => { - rm(folderPath, { recursive: true }, (err) => { - if (err) { - reject(err); - } else { - resolve(); - } - }); - }); -} - -const initDatabase = async () => { - try { - await mongoose.connect(process.env.MONGO_URL); - // allow empty strings to pass the required validator - mongoose.Schema.Types.String.checkRequired(v => typeof v === "string"); - - console.log("Database connection established"); - - } catch (err) { - console.log(`Unable to establish Database connection due to the error.\n${err}`); - } - - return mongoose.connection; -} - -function convertKeysToLowercase(obj: T): T { - const convertedObj = {} as T; - - for (const key in obj) { - if (Object.prototype.hasOwnProperty.call(obj, key)) { - const lowercaseKey = key.charAt(0).toLowerCase() + key.slice(1); - convertedObj[lowercaseKey] = obj[key]; - } - } - - return convertedObj; -} \ No newline at end of file diff --git a/secret-engine/src/models/gitAppOrganizationInstallation.ts b/secret-engine/src/models/gitAppOrganizationInstallation.ts deleted file mode 100644 index e742c0cf1..000000000 --- a/secret-engine/src/models/gitAppOrganizationInstallation.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { Schema, model } from "mongoose"; - -type Installation = { - installationId: string - organizationId: string - user: Schema.Types.ObjectId -}; - - -const gitAppOrganizationInstallation = new Schema({ - installationId: { - type: String, - required: true, - unique: true - }, - organizationId: { - type: String, - required: true, - unique: true - }, - user: { - type: Schema.Types.ObjectId, - ref: "User", - required: true, - } -}); - - -const GitAppOrganizationInstallation = model("git_app_organization_installation", gitAppOrganizationInstallation); - -export default GitAppOrganizationInstallation; diff --git a/secret-engine/src/models/gitRisks.ts b/secret-engine/src/models/gitRisks.ts deleted file mode 100644 index a8a43e6b6..000000000 --- a/secret-engine/src/models/gitRisks.ts +++ /dev/null @@ -1,147 +0,0 @@ -import { Schema, model } from "mongoose"; -export const STATUS_RESOLVED_FALSE_POSITIVE = 'RESOLVED_FALSE_POSITIVE'; -export const STATUS_RESOLVED_REVOKED = 'RESOLVED_REVOKED'; -export const STATUS_RESOLVED_NOT_REVOKED = 'RESOLVED_NOT_REVOKED'; -export const STATUS_UNRESOLVED = 'UNRESOLVED'; - -export type GitRisks = { - id: string; - description: string; - startLine: string; - endLine: string; - startColumn: string; - endColumn: string; - match: string; - secret: string; - file: string; - symlinkFile: string; - commit: string; - entropy: string; - author: string; - email: string; - date: string; - message: string; - tags: string[]; - ruleID: string; - fingerprint: string; - - isFalsePositive: boolean; // New field for marking risks as false positives - isResolved: boolean; // New field for marking risks as resolved - riskOwner: string | null; // New field for setting a risk owner (nullable string) - installationId: string, - repositoryId: string, - repositoryLink: string - repositoryFullName: string - status: string - pusher: { - name: string, - email: string - }, - organization: Schema.Types.ObjectId, -} - -const gitRisks = new Schema({ - id: { - type: String, - }, - description: { - type: String, - }, - startLine: { - type: String, - }, - endLine: { - type: String, - }, - startColumn: { - type: String, - }, - endColumn: { - type: String, - }, - file: { - type: String, - }, - symlinkFile: { - type: String, - }, - commit: { - type: String, - }, - entropy: { - type: String, - }, - author: { - type: String, - }, - email: { - type: String, - }, - date: { - type: String, - }, - message: { - type: String, - }, - tags: { - type: [String], - }, - ruleID: { - type: String, - }, - fingerprint: { - type: String, - unique: true - }, - isFalsePositive: { - type: Boolean, - default: false - }, - isResolved: { - type: Boolean, - default: false - }, - riskOwner: { - type: String, - default: null - }, - installationId: { - type: String, - require: true - }, - repositoryId: { - type: String - }, - repositoryLink: { - type: String - }, - repositoryFullName: { - type: String - }, - pusher: { - name: { - type: String - }, - email: { - type: String - }, - }, - organization: { - type: Schema.Types.ObjectId, - ref: "Organization", - }, - status: { - type: String, - enum: [ - STATUS_RESOLVED_FALSE_POSITIVE, - STATUS_RESOLVED_REVOKED, - STATUS_RESOLVED_NOT_REVOKED, - STATUS_UNRESOLVED - ], - default: STATUS_UNRESOLVED - } -}, { timestamps: true }); - -const GitRisks = model("GitRisks", gitRisks); - -export default GitRisks; diff --git a/secret-engine/src/models/membershipOrg.ts b/secret-engine/src/models/membershipOrg.ts deleted file mode 100644 index 3af683631..000000000 --- a/secret-engine/src/models/membershipOrg.ts +++ /dev/null @@ -1,56 +0,0 @@ -import { Document, Schema, Types, model } from "mongoose"; -// membership roles -export const OWNER = "owner"; -export const ADMIN = "admin"; -export const MEMBER = "member"; - -// membership statuses -export const INVITED = "invited"; - -// -- organization -export const ACCEPTED = "accepted"; - -export interface IMembershipOrg extends Document { - _id: Types.ObjectId; - user: Types.ObjectId; - inviteEmail: string; - organization: Types.ObjectId; - role: "owner" | "admin" | "member"; - status: "invited" | "accepted"; -} - -const membershipOrgSchema = new Schema( - { - user: { - type: Schema.Types.ObjectId, - ref: "User", - }, - inviteEmail: { - type: String, - }, - organization: { - type: Schema.Types.ObjectId, - ref: "Organization", - }, - role: { - type: String, - enum: [OWNER, ADMIN, MEMBER], - required: true, - }, - status: { - type: String, - enum: [INVITED, ACCEPTED], - required: true, - }, - }, - { - timestamps: true, - } -); - -const MembershipOrg = model( - "MembershipOrg", - membershipOrgSchema -); - -export default MembershipOrg; diff --git a/secret-engine/src/models/user.ts b/secret-engine/src/models/user.ts deleted file mode 100644 index 0d49b4cd9..000000000 --- a/secret-engine/src/models/user.ts +++ /dev/null @@ -1,116 +0,0 @@ -import { Document, Schema, Types, model } from "mongoose"; - -export enum AuthProvider { - GOOGLE = "google", -} - -export interface IUser extends Document { - _id: Types.ObjectId; - authId?: string; - authProvider?: AuthProvider; - email: string; - firstName?: string; - lastName?: string; - encryptionVersion: number; - protectedKey: string; - protectedKeyIV: string; - protectedKeyTag: string; - publicKey?: string; - encryptedPrivateKey?: string; - iv?: string; - tag?: string; - salt?: string; - verifier?: string; - isMfaEnabled: boolean; - mfaMethods: boolean; - devices: { - ip: string; - userAgent: string; - }[]; -} - -const userSchema = new Schema( - { - authId: { - type: String, - }, - authProvider: { - type: String, - enum: AuthProvider, - }, - email: { - type: String, - required: true, - unique: true, - }, - firstName: { - type: String, - }, - lastName: { - type: String, - }, - encryptionVersion: { - type: Number, - select: false, - default: 1, // to resolve backward-compatibility issues - }, - protectedKey: { // introduced as part of encryption version 2 - type: String, - select: false, - }, - protectedKeyIV: { // introduced as part of encryption version 2 - type: String, - select: false, - }, - protectedKeyTag: { // introduced as part of encryption version 2 - type: String, - select: false, - }, - publicKey: { - type: String, - select: false, - }, - encryptedPrivateKey: { - type: String, - select: false, - }, - iv: { // iv of [encryptedPrivateKey] - type: String, - select: false, - }, - tag: { // tag of [encryptedPrivateKey] - type: String, - select: false, - }, - salt: { - type: String, - select: false, - }, - verifier: { - type: String, - select: false, - }, - isMfaEnabled: { - type: Boolean, - default: false, - }, - mfaMethods: [{ - type: String, - }], - devices: { - type: [{ - ip: String, - userAgent: String, - }], - default: [], - select: false, - }, - }, - { - timestamps: true, - } -); - -const User = model("User", userSchema); - -export default User; diff --git a/secret-engine/src/service/smtp.ts b/secret-engine/src/service/smtp.ts deleted file mode 100644 index bd7ae915f..000000000 --- a/secret-engine/src/service/smtp.ts +++ /dev/null @@ -1,77 +0,0 @@ -import nodemailer from "nodemailer"; -import SMTPConnection from "nodemailer/lib/smtp-connection"; - -export const SMTP_HOST_SENDGRID = "smtp.sendgrid.net"; -export const SMTP_HOST_MAILGUN = "smtp.mailgun.org"; -export const SMTP_HOST_SOCKETLABS = "smtp.socketlabs.com"; -export const SMTP_HOST_ZOHOMAIL = "smtp.zoho.com"; -export const SMTP_HOST_GMAIL = "smtp.gmail.com"; - -export const initSmtp = async () => { - const mailOpts: SMTPConnection.Options = { - host: process.env.SMTP_HOST, - port: process.env.SMTP_PORT, - }; - - if ((process.env.SMTP_USERNAME) && (process.env.SMTP_PASSWORD)) { - mailOpts.auth = { - user: process.env.SMTP_USERNAME, - pass: process.env.SMTP_PASSWORD, - }; - } - - if ((process.env.SMTP_SECURE) ? (process.env.SMTP_SECURE) : false) { - switch (process.env.SMTP_HOST) { - case SMTP_HOST_SENDGRID: - mailOpts.requireTLS = true; - break; - case SMTP_HOST_MAILGUN: - mailOpts.requireTLS = true; - mailOpts.tls = { - ciphers: "TLSv1.2", - } - break; - case SMTP_HOST_SOCKETLABS: - mailOpts.requireTLS = true; - mailOpts.tls = { - ciphers: "TLSv1.2", - } - break; - case SMTP_HOST_ZOHOMAIL: - mailOpts.requireTLS = true; - mailOpts.tls = { - ciphers: "TLSv1.2", - } - break; - case SMTP_HOST_GMAIL: - mailOpts.requireTLS = true; - mailOpts.tls = { - ciphers: "TLSv1.2", - } - break; - default: - if ((process.env.SMTP_HOST).includes("amazonaws.com")) { - mailOpts.tls = { - ciphers: "TLSv1.2", - } - } else { - mailOpts.secure = true; - } - break; - } - } - - const transporter = nodemailer.createTransport(mailOpts); - transporter - .verify() - .then((err) => { - console.log("SMTP - Successfully connected") - }) - .catch(async (err) => { - console.log( - `SMTP - Failed to connect to ${process.env.SMTP_HOST}:${process.env.SMTP_PORT} \n\t${err}` - ); - }); - - return transporter; -}; diff --git a/secret-engine/src/templates/secretLeakIncident.handlebars b/secret-engine/src/templates/secretLeakIncident.handlebars deleted file mode 100644 index 10a66fa51..000000000 --- a/secret-engine/src/templates/secretLeakIncident.handlebars +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - Incident alert: secret leaked - - - -

Infisical has uncovered {{numberOfSecrets}} secret(s) from your recent push

-

View leaked secrets

-

One or more secret leaks have been detected in a recent commit pushed by {{pusher_name}} ({{pusher_email}}). If - the secrets are test secrets, please mark them as false positives in the Infisical dashboard. - Otherwise, please rotate the secrets immediately.

- - - \ No newline at end of file diff --git a/secret-engine/tsconfig.json b/secret-engine/tsconfig.json deleted file mode 100644 index 1c77d2a21..000000000 --- a/secret-engine/tsconfig.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "compilerOptions": { - /* Basic Options */ - "incremental": true /* Enable incremental compilation */, - "target": "es5" /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019' or 'ESNEXT'. */, - "module": "commonjs" /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'. */, - "lib": [ - "es2015", - "es2017" - ] /* Specify library files to be included in the compilation. */, - "allowJs": true /* Allow javascript files to be compiled. */, - "checkJs": true /* Report errors in .js files. */, - // "jsx": "preserve", /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */ - "declaration": true /* Generates corresponding '.d.ts' file. */, - // "declarationMap": true, /* Generates a sourcemap for each corresponding '.d.ts' file. */ - "sourceMap": true /* Generates corresponding '.map' file. */, - // "outFile": "./", /* Concatenate and emit output to single file. */ - "outDir": "./lib" /* Redirect output structure to the directory. */, - // "rootDir": "./", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */ - // "composite": true, /* Enable project compilation */ - // "tsBuildInfoFile": "./" /* Specify file to store incremental compilation information */, - // "removeComments": true, /* Do not emit comments to output. */ - // "noEmit": true, /* Do not emit outputs. */ - // "importHelpers": true, /* Import emit helpers from 'tslib'. */ - // "downlevelIteration": true, /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */ - // "isolatedModules": true, /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */ - /* Strict Type-Checking Options */ - "strict": false /* Enable all strict type-checking options. */, - // "noImplicitAny": true, /* Raise error on expressions and declarations with an implied 'any' type. */ - // "strictNullChecks": true, /* Enable strict null checks. */ - // "strictFunctionTypes": true, /* Enable strict checking of function types. */ - // "strictBindCallApply": true, /* Enable strict 'bind', 'call', and 'apply' methods on functions. */ - // "strictPropertyInitialization": true, /* Enable strict checking of property initialization in classes. */ - // "noImplicitThis": true, /* Raise error on 'this' expressions with an implied 'any' type. */ - // "alwaysStrict": true, /* Parse in strict mode and emit "use strict" for each source file. */ - /* Additional Checks */ - "noUnusedLocals": false /* Report errors on unused locals. */, - "noUnusedParameters": false /* Report errors on unused parameters. */, - "noImplicitReturns": true /* Report error when not all code paths in function return a value. */, - "noFallthroughCasesInSwitch": true /* Report errors for fallthrough cases in switch statement. */, - /* Module Resolution Options */ - "moduleResolution": "node" /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */, - // "baseUrl": "./src" /* Base directory to resolve non-absolute module names. */, - // "paths": {}, /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */ - // "rootDirs": [], /* List of root folders whose combined content represents the structure of the project at runtime. */ - // "typeRoots": [], /* List of folders to include type definitions from. */ - // "types": [], /* Type declaration files to be included in compilation. */ - // "allowSyntheticDefaultImports": true, /* Allow default imports from modules with no default export. This does not affect code emit, just type checking. */ - "esModuleInterop": true /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */, - // "preserveSymlinks": true, /* Do not resolve the real path of symlinks. */ - // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ - /* Source Map Options */ - "sourceRoot": "src", /* Specify the location where debugger should locate TypeScript files instead of source locations. */ - // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ - // "inlineSourceMap": true, /* Emit a single file with source maps instead of having a separate file. */ - // "inlineSources": true, /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */ - /* Experimental Options */ - // "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */ - // "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */ - /* Advanced Options */ - "forceConsistentCasingInFileNames": true /* Disallow inconsistently-cased references to the same file. */, - "resolveJsonModule": true, - "pretty": false, - "skipLibCheck": true - }, - "include": [ - "src/**/*", - "src/templates/**/*" - ], - // "compileOnSave": false -} \ No newline at end of file From 202900a7a33ae41e652a95aac4ccb13865b7c74b Mon Sep 17 00:00:00 2001 From: akhilmhdh Date: Mon, 17 Jul 2023 23:08:42 +0530 Subject: [PATCH 09/49] feat(secret-import): implemented api for secret import --- backend/src/controllers/v1/index.ts | 4 +- .../controllers/v1/secretImportController.ts | 117 ++++++++++++++++++ .../src/controllers/v2/secretsController.ts | 12 +- .../src/controllers/v3/secretsController.ts | 51 +++++++- backend/src/index.ts | 4 +- backend/src/models/secretImports.ts | 52 ++++++++ backend/src/routes/v1/index.ts | 4 +- backend/src/routes/v1/secretImport.ts | 76 ++++++++++++ backend/src/routes/v2/secrets.ts | 1 + backend/src/routes/v3/secrets.ts | 69 +++++------ backend/src/services/SecretImportService.ts | 82 ++++++++++++ backend/src/services/index.ts | 16 +-- 12 files changed, 438 insertions(+), 50 deletions(-) create mode 100644 backend/src/controllers/v1/secretImportController.ts create mode 100644 backend/src/models/secretImports.ts create mode 100644 backend/src/routes/v1/secretImport.ts create mode 100644 backend/src/services/SecretImportService.ts diff --git a/backend/src/controllers/v1/index.ts b/backend/src/controllers/v1/index.ts index a2664c7b0..422aaa5ec 100644 --- a/backend/src/controllers/v1/index.ts +++ b/backend/src/controllers/v1/index.ts @@ -15,6 +15,7 @@ import * as userController from "./userController"; import * as workspaceController from "./workspaceController"; import * as secretScanningController from "./secretScanningController"; import * as webhookController from "./webhookController"; +import * as secretImportController from "./secretImportController"; export { authController, @@ -33,5 +34,6 @@ export { userController, workspaceController, secretScanningController, - webhookController + webhookController, + secretImportController }; diff --git a/backend/src/controllers/v1/secretImportController.ts b/backend/src/controllers/v1/secretImportController.ts new file mode 100644 index 000000000..a55b20a94 --- /dev/null +++ b/backend/src/controllers/v1/secretImportController.ts @@ -0,0 +1,117 @@ +import { Request, Response } from "express"; +import { validateMembership } from "../../helpers"; +import SecretImport from "../../models/secretImports"; +import { getAllImportedSecrets } from "../../services/SecretImportService"; +import { BadRequestError } from "../../utils/errors"; +import { ADMIN, MEMBER } from "../../variables"; + +export const createSecretImport = async (req: Request, res: Response) => { + const { workspaceId, environment, folderId, secretImport } = req.body; + const importSecDoc = await SecretImport.findOne({ + workspace: workspaceId, + environment, + folderId + }); + + if (!importSecDoc) { + const doc = new SecretImport({ + workspace: workspaceId, + environment, + folderId, + imports: [{ environment: secretImport.environment, secretPath: secretImport.secretPath }] + }); + await doc.save(); + return res.status(200).json({ message: "successfully created secret import" }); + } + + const doesImportExist = importSecDoc.imports.find( + (el) => el.environment === secretImport.environment && el.secretPath === secretImport.secretPath + ); + if (doesImportExist) { + throw BadRequestError({ message: "Secret import already exist" }); + } + + importSecDoc.imports.push({ + environment: secretImport.environment, + secretPath: secretImport.secretPath + }); + await importSecDoc.save(); + return res.status(200).json({ message: "successfully created secret import" }); +}; + +// to keep the ordering, you must pass all the imports in here not the only updated one +// this is because the order decide which import gets overriden +export const updateSecretImport = async (req: Request, res: Response) => { + const { id } = req.params; + const { secretImports } = req.body; + const importSecDoc = await SecretImport.findById(id); + if (!importSecDoc) { + throw BadRequestError({ message: "Import not found" }); + } + + await validateMembership({ + userId: req.user._id.toString(), + workspaceId: importSecDoc.workspace, + acceptedRoles: [ADMIN, MEMBER] + }); + + importSecDoc.imports = secretImports; + await importSecDoc.save(); + return res.status(200).json({ message: "successfully updated secret import" }); +}; + +export const deleteSecretImport = async (req: Request, res: Response) => { + const { id } = req.params; + const { secretImportEnv, secretImportPath } = req.body; + const importSecDoc = await SecretImport.findById(id); + if (!importSecDoc) { + throw BadRequestError({ message: "Import not found" }); + } + + await validateMembership({ + userId: req.user._id.toString(), + workspaceId: importSecDoc.workspace, + acceptedRoles: [ADMIN, MEMBER] + }); + importSecDoc.imports = importSecDoc.imports.filter( + ({ environment, secretPath }) => + !(environment === secretImportEnv && secretPath === secretImportPath) + ); + await importSecDoc.save(); + return res.status(200).json({ message: "successfully delete secret import" }); +}; + +export const getSecretImports = async (req: Request, res: Response) => { + const { workspaceId, environment, folderId } = req.query; + const importSecDoc = await SecretImport.findOne({ + workspace: workspaceId, + environment, + folderId + }); + + if (!importSecDoc) { + return res.status(200).json({ secretImport: {} }); + } + + return res.status(200).json({ secretImport: importSecDoc }); +}; + +export const getAllSecretsFromImport = async (req: Request, res: Response) => { + const { workspaceId, environment, folderId } = req.query as { + workspaceId: string; + environment: string; + folderId: string; + }; + const importSecDoc = await SecretImport.findOne({ + workspace: workspaceId, + environment, + folderId + }); + + if (!importSecDoc) { + return res.status(200).json({ secrets: {} }); + } + + const secrets = await getAllImportedSecrets(workspaceId, environment, folderId); + return res.status(200).json({ secrets }); +}; diff --git a/backend/src/controllers/v2/secretsController.ts b/backend/src/controllers/v2/secretsController.ts index cc1aae055..ea8098e37 100644 --- a/backend/src/controllers/v2/secretsController.ts +++ b/backend/src/controllers/v2/secretsController.ts @@ -35,6 +35,7 @@ import { } from "../../services/FolderService"; import { isValidScope } from "../../helpers/secrets"; import path from "path"; +import { getAllImportedSecrets } from "../../services/SecretImportService"; /** * Peform a batch of any specified CUD secret operations @@ -690,7 +691,7 @@ export const getSecrets = async (req: Request, res: Response) => { } */ - const { tagSlugs, secretPath } = req.query; + const { tagSlugs, secretPath, include_imports } = req.query; let { folderId } = req.query; const workspaceId = req.query.workspaceId as string; const environment = req.query.environment as string; @@ -827,6 +828,12 @@ export const getSecrets = async (req: Request, res: Response) => { secrets = await Secret.find(secretQuery).populate("tags"); } + // TODO(akhilmhdh) - secret-imp change this to org type + let importedSecrets: any[] = []; + if (include_imports) { + importedSecrets = await getAllImportedSecrets(workspaceId, environment, folderId as string); + } + const channel = getChannelFromUserAgent(req.headers["user-agent"]); const readAction = await EELogService.createAction({ @@ -868,7 +875,8 @@ export const getSecrets = async (req: Request, res: Response) => { } return res.status(200).send({ - secrets + secrets, + ...(include_imports && { imports: importedSecrets }) }); }; diff --git a/backend/src/controllers/v3/secretsController.ts b/backend/src/controllers/v3/secretsController.ts index e1edd95ad..cd2d3248e 100644 --- a/backend/src/controllers/v3/secretsController.ts +++ b/backend/src/controllers/v3/secretsController.ts @@ -5,6 +5,10 @@ import { eventPushSecrets } from "../../events"; import { BotService } from "../../services"; import { repackageSecretToRaw } from "../../helpers/secrets"; import { encryptSymmetric128BitHexKeyUTF8 } from "../../utils/crypto"; +import { getAllImportedSecrets } from "../../services/SecretImportService"; +import Folder from "../../models/folder"; +import { getFolderByPath } from "../../services/FolderService"; +import { BadRequestError } from "../../utils/errors"; /** * Return secrets for workspace with id [workspaceId] and environment @@ -16,6 +20,7 @@ export const getSecretsRaw = async (req: Request, res: Response) => { const workspaceId = req.query.workspaceId as string; const environment = req.query.environment as string; const secretPath = req.query.secretPath as string; + const includeImports = req.query.include_imports as string; const secrets = await SecretService.getSecrets({ workspaceId: new Types.ObjectId(workspaceId), @@ -28,13 +33,38 @@ export const getSecretsRaw = async (req: Request, res: Response) => { workspaceId: new Types.ObjectId(workspaceId) }); + if (includeImports) { + const folders = await Folder.findOne({ workspace: workspaceId, environment }); + let folderId = "root"; + // if folder exist get it and replace folderid with new one + if (folders) { + const folder = getFolderByPath(folders.nodes, secretPath as string); + if (!folder) { + throw BadRequestError({ message: "Folder not found" }); + } + folderId = folder.id; + } + const importedSecrets = await getAllImportedSecrets(workspaceId, environment, folderId); + return res.status(200).send({ + secrets: secrets.map((secret) => + repackageSecretToRaw({ + secret, + key + }) + ), + imports: importedSecrets.map((el) => ({ + ...el, + secrets: el.secrets.map((secret) => repackageSecretToRaw({ secret, key })) + })) + }); + } + return res.status(200).send({ secrets: secrets.map((secret) => { const rep = repackageSecretToRaw({ secret, key }); - return rep; }) }); @@ -232,6 +262,7 @@ export const getSecrets = async (req: Request, res: Response) => { const workspaceId = req.query.workspaceId as string; const environment = req.query.environment as string; const secretPath = req.query.secretPath as string; + const includeImports = req.query.include_imports as string; const secrets = await SecretService.getSecrets({ workspaceId: new Types.ObjectId(workspaceId), @@ -240,6 +271,24 @@ export const getSecrets = async (req: Request, res: Response) => { authData: req.authData }); + if (includeImports) { + const folders = await Folder.findOne({ workspace: workspaceId, environment }); + let folderId = "root"; + // if folder exist get it and replace folderid with new one + if (folders) { + const folder = getFolderByPath(folders.nodes, secretPath as string); + if (!folder) { + throw BadRequestError({ message: "Folder not found" }); + } + folderId = folder.id; + } + const importedSecrets = await getAllImportedSecrets(workspaceId, environment, folderId); + return res.status(200).send({ + secrets, + imports: importedSecrets + }); + } + return res.status(200).send({ secrets }); diff --git a/backend/src/index.ts b/backend/src/index.ts index 9733c1fdb..a7a9c5591 100644 --- a/backend/src/index.ts +++ b/backend/src/index.ts @@ -41,7 +41,8 @@ import { userAction as v1UserActionRouter, user as v1UserRouter, workspace as v1WorkspaceRouter, - webhooks as v1WebhooksRouter + webhooks as v1WebhooksRouter, + secretImport as v1SecretImportRouter } from "./routes/v1"; import { auth as v2AuthRouter, @@ -128,6 +129,7 @@ const main = async () => { app.use("/api/v1/folders", v1SecretsFolder); app.use("/api/v1/secret-scanning", v1SecretScanningRouter); app.use("/api/v1/webhooks", v1WebhooksRouter); + app.use("/api/v1/secret-imports", v1SecretImportRouter); // v2 routes (improvements) app.use("/api/v2/signup", v2SignupRouter); diff --git a/backend/src/models/secretImports.ts b/backend/src/models/secretImports.ts new file mode 100644 index 000000000..0041abc29 --- /dev/null +++ b/backend/src/models/secretImports.ts @@ -0,0 +1,52 @@ +import { Schema, Types, model } from "mongoose"; + +export interface ISecretImports { + _id: Types.ObjectId; + workspace: Types.ObjectId; + environment: string; + folderId: string; + imports: Array<{ + environment: string; + secretPath: string; + }>; +} + +const secretImportSchema = new Schema( + { + workspace: { + type: Schema.Types.ObjectId, + ref: "Workspace", + required: true + }, + environment: { + type: String, + required: true + }, + folderId: { + type: String, + required: true, + default: "root" + }, + imports: { + type: [ + { + environment: { + type: String, + required: true + }, + secretPath: { + type: String, + required: true + } + } + ], + default: [] + } + }, + { + timestamps: true + } +); + +const SecretImport = model("SecretImports", secretImportSchema); +export default SecretImport; diff --git a/backend/src/routes/v1/index.ts b/backend/src/routes/v1/index.ts index b9f26d32d..ce5b5dd58 100644 --- a/backend/src/routes/v1/index.ts +++ b/backend/src/routes/v1/index.ts @@ -17,6 +17,7 @@ import integrationAuth from "./integrationAuth"; import secretsFolder from "./secretsFolder"; import secretScanning from "./secretScanning"; import webhooks from "./webhook"; +import secretImport from "./secretImport"; export { signup, @@ -37,5 +38,6 @@ export { integrationAuth, secretsFolder, secretScanning, - webhooks + webhooks, + secretImport }; diff --git a/backend/src/routes/v1/secretImport.ts b/backend/src/routes/v1/secretImport.ts new file mode 100644 index 000000000..bdfba97a6 --- /dev/null +++ b/backend/src/routes/v1/secretImport.ts @@ -0,0 +1,76 @@ +import express from "express"; +const router = express.Router(); +import { body, param, query } from "express-validator"; +import { secretImportController } from "../../controllers/v1"; +import { requireAuth, requireWorkspaceAuth, validateRequest } from "../../middleware"; +import { ADMIN, AUTH_MODE_JWT, MEMBER } from "../../variables"; + +router.post( + "/", + requireAuth({ + acceptedAuthModes: [AUTH_MODE_JWT] + }), + requireWorkspaceAuth({ + acceptedRoles: [ADMIN, MEMBER], + locationWorkspaceId: "body" + }), + body("workspaceId").exists().isString().trim().notEmpty(), + body("environment").exists().isString().trim().notEmpty(), + body("folderId").default("root").isString().trim(), + body("secretImport").exists().isObject(), + body("secretImport.environment").isString().exists().trim(), + body("secretImport.secretPath").isString().exists().trim(), + validateRequest, + secretImportController.createSecretImport +); + +router.put( + "/:id", + requireAuth({ + acceptedAuthModes: [AUTH_MODE_JWT] + }), + param("id").exists().isString().trim(), + body("secretImports").exists().isArray(), + body("secretImports.*.environment").isString().exists().trim(), + body("secretImports.*.secretPath").isString().exists().trim(), + validateRequest, + secretImportController.updateSecretImport +); + +router.delete( + "/:id", + requireAuth({ + acceptedAuthModes: [AUTH_MODE_JWT] + }), + param("id").exists().isString().trim(), + body("secretImportPath").isString().exists().trim(), + body("secretImportEnv").isString().exists().trim(), + validateRequest, + secretImportController.updateSecretImport +); + +router.get( + "/", + requireAuth({ + acceptedAuthModes: [AUTH_MODE_JWT] + }), + query("workspaceId").exists().isString().trim().notEmpty(), + query("environment").exists().isString().trim().notEmpty(), + query("folderId").default("root").isString().trim(), + validateRequest, + secretImportController.getSecretImports +); + +router.get( + "/secrets", + requireAuth({ + acceptedAuthModes: [AUTH_MODE_JWT] + }), + query("workspaceId").exists().isString().trim().notEmpty(), + query("environment").exists().isString().trim().notEmpty(), + query("folderId").default("root").isString().trim(), + validateRequest, + secretImportController.getAllSecretsFromImport +); + +export default router; diff --git a/backend/src/routes/v2/secrets.ts b/backend/src/routes/v2/secrets.ts index 731e58eb0..59665fd03 100644 --- a/backend/src/routes/v2/secrets.ts +++ b/backend/src/routes/v2/secrets.ts @@ -127,6 +127,7 @@ router.get( query("tagSlugs"), query("folderId").default("root").isString().trim(), query("secretPath").optional().isString().trim(), + query("include_imports").optional().default(false).isBoolean(), validateRequest, requireAuth({ acceptedAuthModes: [ diff --git a/backend/src/routes/v3/secrets.ts b/backend/src/routes/v3/secrets.ts index c010151c6..445503dec 100644 --- a/backend/src/routes/v3/secrets.ts +++ b/backend/src/routes/v3/secrets.ts @@ -1,10 +1,6 @@ import express from "express"; const router = express.Router(); -import { - requireAuth, - requireWorkspaceAuth, - validateRequest, -} from "../../middleware"; +import { requireAuth, requireWorkspaceAuth, validateRequest } from "../../middleware"; import { body, param, query } from "express-validator"; import { secretsController } from "../../controllers/v3"; import { @@ -17,7 +13,7 @@ import { PERMISSION_READ_SECRETS, PERMISSION_WRITE_SECRETS, SECRET_PERSONAL, - SECRET_SHARED, + SECRET_SHARED } from "../../variables"; router.get( @@ -25,14 +21,15 @@ router.get( query("workspaceId").exists().isString().trim(), query("environment").exists().isString().trim(), query("secretPath").default("/").isString().trim(), + query("include_imports").isBoolean().default(false), validateRequest, requireAuth({ acceptedAuthModes: [ AUTH_MODE_JWT, AUTH_MODE_API_KEY, AUTH_MODE_SERVICE_TOKEN, - AUTH_MODE_SERVICE_ACCOUNT, - ], + AUTH_MODE_SERVICE_ACCOUNT + ] }), requireWorkspaceAuth({ acceptedRoles: [ADMIN, MEMBER], @@ -40,7 +37,7 @@ router.get( locationEnvironment: "query", requiredPermissions: [PERMISSION_READ_SECRETS], requireBlindIndicesEnabled: true, - requireE2EEOff: true, + requireE2EEOff: true }), secretsController.getSecretsRaw ); @@ -58,8 +55,8 @@ router.get( AUTH_MODE_JWT, AUTH_MODE_API_KEY, AUTH_MODE_SERVICE_TOKEN, - AUTH_MODE_SERVICE_ACCOUNT, - ], + AUTH_MODE_SERVICE_ACCOUNT + ] }), requireWorkspaceAuth({ acceptedRoles: [ADMIN, MEMBER], @@ -67,7 +64,7 @@ router.get( locationEnvironment: "query", requiredPermissions: [PERMISSION_READ_SECRETS], requireBlindIndicesEnabled: true, - requireE2EEOff: true, + requireE2EEOff: true }), secretsController.getSecretByNameRaw ); @@ -86,8 +83,8 @@ router.post( AUTH_MODE_JWT, AUTH_MODE_API_KEY, AUTH_MODE_SERVICE_TOKEN, - AUTH_MODE_SERVICE_ACCOUNT, - ], + AUTH_MODE_SERVICE_ACCOUNT + ] }), requireWorkspaceAuth({ acceptedRoles: [ADMIN, MEMBER], @@ -95,7 +92,7 @@ router.post( locationEnvironment: "body", requiredPermissions: [PERMISSION_WRITE_SECRETS], requireBlindIndicesEnabled: true, - requireE2EEOff: true, + requireE2EEOff: true }), secretsController.createSecretRaw ); @@ -114,8 +111,8 @@ router.patch( AUTH_MODE_JWT, AUTH_MODE_API_KEY, AUTH_MODE_SERVICE_TOKEN, - AUTH_MODE_SERVICE_ACCOUNT, - ], + AUTH_MODE_SERVICE_ACCOUNT + ] }), requireWorkspaceAuth({ acceptedRoles: [ADMIN, MEMBER], @@ -123,7 +120,7 @@ router.patch( locationEnvironment: "body", requiredPermissions: [PERMISSION_WRITE_SECRETS], requireBlindIndicesEnabled: true, - requireE2EEOff: true, + requireE2EEOff: true }), secretsController.updateSecretByNameRaw ); @@ -141,8 +138,8 @@ router.delete( AUTH_MODE_JWT, AUTH_MODE_API_KEY, AUTH_MODE_SERVICE_TOKEN, - AUTH_MODE_SERVICE_ACCOUNT, - ], + AUTH_MODE_SERVICE_ACCOUNT + ] }), requireWorkspaceAuth({ acceptedRoles: [ADMIN, MEMBER], @@ -150,7 +147,7 @@ router.delete( locationEnvironment: "body", requiredPermissions: [PERMISSION_WRITE_SECRETS], requireBlindIndicesEnabled: true, - requireE2EEOff: true, + requireE2EEOff: true }), secretsController.deleteSecretByNameRaw ); @@ -166,8 +163,8 @@ router.get( AUTH_MODE_JWT, AUTH_MODE_API_KEY, AUTH_MODE_SERVICE_TOKEN, - AUTH_MODE_SERVICE_ACCOUNT, - ], + AUTH_MODE_SERVICE_ACCOUNT + ] }), requireWorkspaceAuth({ acceptedRoles: [ADMIN, MEMBER], @@ -175,7 +172,7 @@ router.get( locationEnvironment: "query", requiredPermissions: [PERMISSION_READ_SECRETS], requireBlindIndicesEnabled: true, - requireE2EEOff: false, + requireE2EEOff: false }), secretsController.getSecrets ); @@ -201,8 +198,8 @@ router.post( AUTH_MODE_JWT, AUTH_MODE_API_KEY, AUTH_MODE_SERVICE_TOKEN, - AUTH_MODE_SERVICE_ACCOUNT, - ], + AUTH_MODE_SERVICE_ACCOUNT + ] }), requireWorkspaceAuth({ acceptedRoles: [ADMIN, MEMBER], @@ -210,7 +207,7 @@ router.post( locationEnvironment: "body", requiredPermissions: [PERMISSION_WRITE_SECRETS], requireBlindIndicesEnabled: true, - requireE2EEOff: false, + requireE2EEOff: false }), secretsController.createSecret ); @@ -228,15 +225,15 @@ router.get( AUTH_MODE_JWT, AUTH_MODE_API_KEY, AUTH_MODE_SERVICE_TOKEN, - AUTH_MODE_SERVICE_ACCOUNT, - ], + AUTH_MODE_SERVICE_ACCOUNT + ] }), requireWorkspaceAuth({ acceptedRoles: [ADMIN, MEMBER], locationWorkspaceId: "query", locationEnvironment: "query", requiredPermissions: [PERMISSION_READ_SECRETS], - requireBlindIndicesEnabled: true, + requireBlindIndicesEnabled: true }), secretsController.getSecretByName ); @@ -257,8 +254,8 @@ router.patch( AUTH_MODE_JWT, AUTH_MODE_API_KEY, AUTH_MODE_SERVICE_TOKEN, - AUTH_MODE_SERVICE_ACCOUNT, - ], + AUTH_MODE_SERVICE_ACCOUNT + ] }), requireWorkspaceAuth({ acceptedRoles: [ADMIN, MEMBER], @@ -266,7 +263,7 @@ router.patch( locationEnvironment: "body", requiredPermissions: [PERMISSION_WRITE_SECRETS], requireBlindIndicesEnabled: true, - requireE2EEOff: false, + requireE2EEOff: false }), secretsController.updateSecretByName ); @@ -284,8 +281,8 @@ router.delete( AUTH_MODE_JWT, AUTH_MODE_API_KEY, AUTH_MODE_SERVICE_TOKEN, - AUTH_MODE_SERVICE_ACCOUNT, - ], + AUTH_MODE_SERVICE_ACCOUNT + ] }), requireWorkspaceAuth({ acceptedRoles: [ADMIN, MEMBER], @@ -293,7 +290,7 @@ router.delete( locationEnvironment: "body", requiredPermissions: [PERMISSION_WRITE_SECRETS], requireBlindIndicesEnabled: true, - requireE2EEOff: false, + requireE2EEOff: false }), secretsController.deleteSecretByName ); diff --git a/backend/src/services/SecretImportService.ts b/backend/src/services/SecretImportService.ts new file mode 100644 index 000000000..ec9f9f5c4 --- /dev/null +++ b/backend/src/services/SecretImportService.ts @@ -0,0 +1,82 @@ +import { Types } from "mongoose"; +import Folder from "../models/folder"; +import Secret, { ISecret } from "../models/secret"; +import SecretImport from "../models/secretImports"; +import { getFolderByPath } from "./FolderService"; + +type TSecretImportFid = { environment: string; folderId: string; secretPath: string }; + +export const getAllImportedSecrets = async ( + workspaceId: string, + environment: string, + folderId = "root" +) => { + const secImports = await SecretImport.findOne({ + workspace: workspaceId, + environment, + folderId + }); + if (!secImports) return []; + if (secImports.imports.length === 0) return []; + + const importedEnv: Record = {}; // to get folders from all environment + secImports.imports.forEach((el) => (importedEnv[el.environment] = true)); + + const folders = await Folder.find({ + workspace: workspaceId, + environment: { $in: Object.keys(importedEnv) } + }); + + const importedSecByFid: TSecretImportFid[] = []; + secImports.imports.forEach((el) => { + const folder = folders.find((fl) => fl.environment === el.environment); + if (folder) { + const secPathFolder = getFolderByPath(folder.nodes, el.secretPath); + if (secPathFolder) + importedSecByFid.push({ + environment: el.environment, + folderId: secPathFolder.id, + secretPath: el.secretPath + }); + } + }); + if (importedSecByFid.length === 0) return []; + + const secsGroupedByRef = await Secret.aggregate([ + { + $match: { + workspace: new Types.ObjectId(workspaceId), + type: "shared" + } + }, + { + $group: { + _id: { + environment: "$environment", + folderId: "$folder" + }, + secrets: { $push: "$$ROOT" } + } + }, + { + $match: { + $or: importedSecByFid.map(({ environment, folderId: fid }) => ({ + "_id.environment": environment, + "_id.folderId": fid + })) + } + } + ]); + + // now let stitch together secrets. + const importedSecrets: Array = []; + importedSecByFid.forEach(({ environment, folderId, secretPath }) => { + const secretsGrouped = secsGroupedByRef.find( + (el) => el._id.environment === environment && el._id.folderId === folderId + ); + if (secretsGrouped) { + importedSecrets.push({ secretPath, folderId, environment, secrets: secretsGrouped.secrets }); + } + }); + return importedSecrets; +}; diff --git a/backend/src/services/index.ts b/backend/src/services/index.ts index ad83bf510..131d3c281 100644 --- a/backend/src/services/index.ts +++ b/backend/src/services/index.ts @@ -8,11 +8,11 @@ import TokenService from "./TokenService"; import SecretService from "./SecretService"; export { - TelemetryService, - DatabaseService, - BotService, - EventService, - IntegrationService, - TokenService, - SecretService, -} \ No newline at end of file + TelemetryService, + DatabaseService, + BotService, + EventService, + IntegrationService, + TokenService, + SecretService +}; From 45584e0c1a596b2af712850f35535f385ec2c62f Mon Sep 17 00:00:00 2001 From: akhilmhdh Date: Mon, 17 Jul 2023 23:08:57 +0530 Subject: [PATCH 10/49] feat(secret-import): implemented ui for secret import --- frontend/package-lock.json | 109 +++++++ frontend/package.json | 3 + frontend/src/hooks/api/index.tsx | 1 + frontend/src/hooks/api/secretImports/index.ts | 2 + .../src/hooks/api/secretImports/mutation.tsx | 78 +++++ .../src/hooks/api/secretImports/queries.tsx | 124 +++++++ frontend/src/hooks/api/secretImports/types.ts | 56 ++++ frontend/src/hooks/api/secrets/mutation.tsx | 69 ++++ frontend/src/hooks/api/secrets/queries.tsx | 4 + frontend/src/hooks/api/secrets/types.ts | 2 + .../src/views/DashboardPage/DashboardPage.tsx | 303 ++++++++++++++---- .../FolderSection/FolderSection.tsx | 2 +- .../SecretImportForm/SecretImportForm.tsx | 86 +++++ .../components/SecretImportForm/index.tsx | 1 + .../SecretImportSection/SecretImportItem.tsx | 144 +++++++++ .../SecretImportSection.tsx | 93 ++++++ .../components/SecretImportSection/index.tsx | 1 + .../SecretInputRow/SecretInputRow.tsx | 2 +- 18 files changed, 1022 insertions(+), 58 deletions(-) create mode 100644 frontend/src/hooks/api/secretImports/index.ts create mode 100644 frontend/src/hooks/api/secretImports/mutation.tsx create mode 100644 frontend/src/hooks/api/secretImports/queries.tsx create mode 100644 frontend/src/hooks/api/secretImports/types.ts create mode 100644 frontend/src/hooks/api/secrets/mutation.tsx create mode 100644 frontend/src/views/DashboardPage/components/SecretImportForm/SecretImportForm.tsx create mode 100644 frontend/src/views/DashboardPage/components/SecretImportForm/index.tsx create mode 100644 frontend/src/views/DashboardPage/components/SecretImportSection/SecretImportItem.tsx create mode 100644 frontend/src/views/DashboardPage/components/SecretImportSection/SecretImportSection.tsx create mode 100644 frontend/src/views/DashboardPage/components/SecretImportSection/index.tsx diff --git a/frontend/package-lock.json b/frontend/package-lock.json index cb3360485..5853ff650 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -5,6 +5,9 @@ "packages": { "": { "dependencies": { + "@dnd-kit/core": "^6.0.8", + "@dnd-kit/modifiers": "^6.0.1", + "@dnd-kit/sortable": "^7.0.2", "@emotion/css": "^11.10.0", "@emotion/server": "^11.10.0", "@fontsource/inter": "^4.5.15", @@ -2468,6 +2471,68 @@ "node": ">=10.0.0" } }, + "node_modules/@dnd-kit/accessibility": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@dnd-kit/accessibility/-/accessibility-3.0.1.tgz", + "integrity": "sha512-HXRrwS9YUYQO9lFRc/49uO/VICbM+O+ZRpFDe9Pd1rwVv2PCNkRiTZRdxrDgng/UkvdC3Re9r2vwPpXXrWeFzg==", + "dependencies": { + "tslib": "^2.0.0" + }, + "peerDependencies": { + "react": ">=16.8.0" + } + }, + "node_modules/@dnd-kit/core": { + "version": "6.0.8", + "resolved": "https://registry.npmjs.org/@dnd-kit/core/-/core-6.0.8.tgz", + "integrity": "sha512-lYaoP8yHTQSLlZe6Rr9qogouGUz9oRUj4AHhDQGQzq/hqaJRpFo65X+JKsdHf8oUFBzx5A+SJPUvxAwTF2OabA==", + "dependencies": { + "@dnd-kit/accessibility": "^3.0.0", + "@dnd-kit/utilities": "^3.2.1", + "tslib": "^2.0.0" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/@dnd-kit/modifiers": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@dnd-kit/modifiers/-/modifiers-6.0.1.tgz", + "integrity": "sha512-rbxcsg3HhzlcMHVHWDuh9LCjpOVAgqbV78wLGI8tziXY3+qcMQ61qVXIvNKQFuhj75dSfD+o+PYZQ/NUk2A23A==", + "dependencies": { + "@dnd-kit/utilities": "^3.2.1", + "tslib": "^2.0.0" + }, + "peerDependencies": { + "@dnd-kit/core": "^6.0.6", + "react": ">=16.8.0" + } + }, + "node_modules/@dnd-kit/sortable": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@dnd-kit/sortable/-/sortable-7.0.2.tgz", + "integrity": "sha512-wDkBHHf9iCi1veM834Gbk1429bd4lHX4RpAwT0y2cHLf246GAvU2sVw/oxWNpPKQNQRQaeGXhAVgrOl1IT+iyA==", + "dependencies": { + "@dnd-kit/utilities": "^3.2.0", + "tslib": "^2.0.0" + }, + "peerDependencies": { + "@dnd-kit/core": "^6.0.7", + "react": ">=16.8.0" + } + }, + "node_modules/@dnd-kit/utilities": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@dnd-kit/utilities/-/utilities-3.2.1.tgz", + "integrity": "sha512-OOXqISfvBw/1REtkSK2N3Fi2EQiLMlWUlqnOK/UpOISqBZPWpE6TqL+jcPtMOkE8TqYGiURvRdPSI9hltNUjEA==", + "dependencies": { + "tslib": "^2.0.0" + }, + "peerDependencies": { + "react": ">=16.8.0" + } + }, "node_modules/@emotion/babel-plugin": { "version": "11.11.0", "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.11.0.tgz", @@ -24491,6 +24556,50 @@ "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", "dev": true }, + "@dnd-kit/accessibility": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@dnd-kit/accessibility/-/accessibility-3.0.1.tgz", + "integrity": "sha512-HXRrwS9YUYQO9lFRc/49uO/VICbM+O+ZRpFDe9Pd1rwVv2PCNkRiTZRdxrDgng/UkvdC3Re9r2vwPpXXrWeFzg==", + "requires": { + "tslib": "^2.0.0" + } + }, + "@dnd-kit/core": { + "version": "6.0.8", + "resolved": "https://registry.npmjs.org/@dnd-kit/core/-/core-6.0.8.tgz", + "integrity": "sha512-lYaoP8yHTQSLlZe6Rr9qogouGUz9oRUj4AHhDQGQzq/hqaJRpFo65X+JKsdHf8oUFBzx5A+SJPUvxAwTF2OabA==", + "requires": { + "@dnd-kit/accessibility": "^3.0.0", + "@dnd-kit/utilities": "^3.2.1", + "tslib": "^2.0.0" + } + }, + "@dnd-kit/modifiers": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@dnd-kit/modifiers/-/modifiers-6.0.1.tgz", + "integrity": "sha512-rbxcsg3HhzlcMHVHWDuh9LCjpOVAgqbV78wLGI8tziXY3+qcMQ61qVXIvNKQFuhj75dSfD+o+PYZQ/NUk2A23A==", + "requires": { + "@dnd-kit/utilities": "^3.2.1", + "tslib": "^2.0.0" + } + }, + "@dnd-kit/sortable": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@dnd-kit/sortable/-/sortable-7.0.2.tgz", + "integrity": "sha512-wDkBHHf9iCi1veM834Gbk1429bd4lHX4RpAwT0y2cHLf246GAvU2sVw/oxWNpPKQNQRQaeGXhAVgrOl1IT+iyA==", + "requires": { + "@dnd-kit/utilities": "^3.2.0", + "tslib": "^2.0.0" + } + }, + "@dnd-kit/utilities": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@dnd-kit/utilities/-/utilities-3.2.1.tgz", + "integrity": "sha512-OOXqISfvBw/1REtkSK2N3Fi2EQiLMlWUlqnOK/UpOISqBZPWpE6TqL+jcPtMOkE8TqYGiURvRdPSI9hltNUjEA==", + "requires": { + "tslib": "^2.0.0" + } + }, "@emotion/babel-plugin": { "version": "11.11.0", "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.11.0.tgz", diff --git a/frontend/package.json b/frontend/package.json index f20477e6f..0430844e7 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -13,6 +13,9 @@ "build-storybook": "storybook build" }, "dependencies": { + "@dnd-kit/core": "^6.0.8", + "@dnd-kit/modifiers": "^6.0.1", + "@dnd-kit/sortable": "^7.0.2", "@emotion/css": "^11.10.0", "@emotion/server": "^11.10.0", "@fontsource/inter": "^4.5.15", diff --git a/frontend/src/hooks/api/index.tsx b/frontend/src/hooks/api/index.tsx index 299629416..18e5b59fb 100644 --- a/frontend/src/hooks/api/index.tsx +++ b/frontend/src/hooks/api/index.tsx @@ -6,6 +6,7 @@ export * from "./integrations"; export * from "./keys"; export * from "./organization"; export * from "./secretFolders"; +export * from "./secretImports"; export * from "./secrets"; export * from "./secretSnapshots"; export * from "./serviceAccounts"; diff --git a/frontend/src/hooks/api/secretImports/index.ts b/frontend/src/hooks/api/secretImports/index.ts new file mode 100644 index 000000000..2e1150cb8 --- /dev/null +++ b/frontend/src/hooks/api/secretImports/index.ts @@ -0,0 +1,2 @@ +export { useCreateSecretImport, useDeleteSecretImport, useUpdateSecretImport } from "./mutation"; +export { useGetImportedSecrets, useGetSecretImports } from "./queries"; diff --git a/frontend/src/hooks/api/secretImports/mutation.tsx b/frontend/src/hooks/api/secretImports/mutation.tsx new file mode 100644 index 000000000..bb01528ea --- /dev/null +++ b/frontend/src/hooks/api/secretImports/mutation.tsx @@ -0,0 +1,78 @@ +import { useMutation, useQueryClient } from "@tanstack/react-query"; + +import { apiRequest } from "@app/config/request"; + +import { secretImportKeys } from "./queries"; +import { TCreateSecretImportDTO, TDeleteSecretImportDTO, TUpdateSecretImportDTO } from "./types"; + +export const useCreateSecretImport = () => { + const queryClient = useQueryClient(); + + return useMutation<{}, {}, TCreateSecretImportDTO>({ + mutationFn: async ({ secretImport, environment, workspaceId, folderId }) => { + const { data } = await apiRequest.post("/api/v1/secret-imports", { + secretImport, + environment, + workspaceId, + folderId + }); + return data; + }, + onSuccess: (_, { workspaceId, environment, folderId }) => { + queryClient.invalidateQueries( + secretImportKeys.getProjectSecretImports(workspaceId, environment, folderId) + ); + queryClient.invalidateQueries( + secretImportKeys.getSecretImportSecrets(workspaceId, environment, folderId) + ); + } + }); +}; + +export const useUpdateSecretImport = () => { + const queryClient = useQueryClient(); + + return useMutation<{}, {}, TUpdateSecretImportDTO>({ + mutationFn: async ({ environment, workspaceId, folderId, secretImports, id }) => { + const { data } = await apiRequest.put(`/api/v1/secret-imports/${id}`, { + secretImports, + environment, + workspaceId, + folderId + }); + return data; + }, + onSuccess: (_, { workspaceId, environment, folderId }) => { + queryClient.invalidateQueries( + secretImportKeys.getProjectSecretImports(workspaceId, environment, folderId) + ); + queryClient.invalidateQueries( + secretImportKeys.getSecretImportSecrets(workspaceId, environment, folderId) + ); + } + }); +}; + +export const useDeleteSecretImport = () => { + const queryClient = useQueryClient(); + + return useMutation<{}, {}, TDeleteSecretImportDTO>({ + mutationFn: async ({ id, secretImportEnv, secretImportPath }) => { + const { data } = await apiRequest.delete(`/api/v1/secret-imports/${id}`, { + data: { + secretImportPath, + secretImportEnv + } + }); + return data; + }, + onSuccess: (_, { workspaceId, environment, folderId }) => { + queryClient.invalidateQueries( + secretImportKeys.getProjectSecretImports(workspaceId, environment, folderId) + ); + queryClient.invalidateQueries( + secretImportKeys.getSecretImportSecrets(workspaceId, environment, folderId) + ); + } + }); +}; diff --git a/frontend/src/hooks/api/secretImports/queries.tsx b/frontend/src/hooks/api/secretImports/queries.tsx new file mode 100644 index 000000000..7bb07488c --- /dev/null +++ b/frontend/src/hooks/api/secretImports/queries.tsx @@ -0,0 +1,124 @@ +import { useCallback } from "react"; +import { useQuery } from "@tanstack/react-query"; + +import { + decryptAssymmetric, + decryptSymmetric +} from "@app/components/utilities/cryptography/crypto"; +import { apiRequest } from "@app/config/request"; + +import { TGetImportedSecrets, TImportedSecrets, TSecretImports } from "./types"; + +export const secretImportKeys = { + getProjectSecretImports: (workspaceId: string, env: string | string[], folderId?: string) => [ + { workspaceId, env, folderId }, + "secrets-imports" + ], + getSecretImportSecrets: (workspaceId: string, env: string | string[], folderId?: string) => [ + { workspaceId, env, folderId }, + "secrets-import-sec" + ] +}; + +const fetchSecretImport = async (workspaceId: string, environment: string, folderId?: string) => { + const { data } = await apiRequest.get<{ secretImport: TSecretImports }>( + "/api/v1/secret-imports", + { + params: { + workspaceId, + environment, + folderId + } + } + ); + return data.secretImport; +}; + +export const useGetSecretImports = (workspaceId: string, env: string, folderId?: string) => + useQuery({ + enabled: Boolean(workspaceId) && Boolean(env), + queryKey: secretImportKeys.getProjectSecretImports(workspaceId, env, folderId), + queryFn: () => fetchSecretImport(workspaceId, env, folderId) + }); + +const fetchImportedSecrets = async ( + workspaceId: string, + environment: string, + folderId?: string +) => { + const { data } = await apiRequest.get<{ secrets: TImportedSecrets }>( + "/api/v1/secret-imports/secrets", + { + params: { + workspaceId, + environment, + folderId + } + } + ); + return data.secrets; +}; + +export const useGetImportedSecrets = ({ + workspaceId, + environment, + folderId, + decryptFileKey +}: TGetImportedSecrets) => + useQuery({ + enabled: Boolean(workspaceId) && Boolean(environment) && Boolean(decryptFileKey), + queryKey: secretImportKeys.getSecretImportSecrets(workspaceId, environment, folderId), + queryFn: () => fetchImportedSecrets(workspaceId, environment, folderId), + select: useCallback( + (data: TImportedSecrets) => { + const PRIVATE_KEY = localStorage.getItem("PRIVATE_KEY") as string; + const latestKey = decryptFileKey; + const key = decryptAssymmetric({ + ciphertext: latestKey.encryptedKey, + nonce: latestKey.nonce, + publicKey: latestKey.sender.publicKey, + privateKey: PRIVATE_KEY + }); + + return data.map((el) => ({ + environment: el.environment, + secretPath: el.secretPath, + folderId: el.folderId, + secrets: el.secrets.map((encSecret) => { + const secretKey = decryptSymmetric({ + ciphertext: encSecret.secretKeyCiphertext, + iv: encSecret.secretKeyIV, + tag: encSecret.secretKeyTag, + key + }); + + const secretValue = decryptSymmetric({ + ciphertext: encSecret.secretValueCiphertext, + iv: encSecret.secretValueIV, + tag: encSecret.secretValueTag, + key + }); + + const secretComment = decryptSymmetric({ + ciphertext: encSecret.secretCommentCiphertext, + iv: encSecret.secretCommentIV, + tag: encSecret.secretCommentTag, + key + }); + + return { + _id: encSecret._id, + env: encSecret.environment, + key: secretKey, + value: secretValue, + tags: encSecret.tags, + comment: secretComment, + createdAt: encSecret.createdAt, + updatedAt: encSecret.updatedAt + }; + }) + })); + }, + [decryptFileKey] + ) + }); diff --git a/frontend/src/hooks/api/secretImports/types.ts b/frontend/src/hooks/api/secretImports/types.ts new file mode 100644 index 000000000..50884225f --- /dev/null +++ b/frontend/src/hooks/api/secretImports/types.ts @@ -0,0 +1,56 @@ +import { EncryptedSecret } from "../secrets/types"; +import { UserWsKeyPair } from "../types"; + +export type TSecretImports = { + _id: string; + workspaceId: string; + environment: string; + folderId: string; + imports: Array<{ environment: string; secretPath: string }>; + createdAt: string; + updatedAt: string; +}; + +export type TImportedSecrets = { + environment: string; + secretPath: string; + folderId: string; + secrets: EncryptedSecret[]; +}[]; + +export type TGetImportedSecrets = { + workspaceId: string; + environment: string; + folderId?: string; + decryptFileKey: UserWsKeyPair; +}; + +export type TCreateSecretImportDTO = { + workspaceId: string; + environment: string; + folderId?: string; + secretImport: { + environment: string; + secretPath: string; + }; +}; + +export type TUpdateSecretImportDTO = { + id: string; + workspaceId: string; + environment: string; + folderId?: string; + secretImports: Array<{ + environment: string; + secretPath: string; + }>; +}; + +export type TDeleteSecretImportDTO = { + id: string; + workspaceId: string; + environment: string; + folderId?: string; + secretImportPath: string; + secretImportEnv: string; +}; diff --git a/frontend/src/hooks/api/secrets/mutation.tsx b/frontend/src/hooks/api/secrets/mutation.tsx new file mode 100644 index 000000000..0047d8435 --- /dev/null +++ b/frontend/src/hooks/api/secrets/mutation.tsx @@ -0,0 +1,69 @@ +import { useMutation, useQueryClient } from "@tanstack/react-query"; + +import { apiRequest } from "@app/config/request"; + +import { secretKeys } from "./queries"; +import { TCreateSecretImportDTO, TDeleteSecretImportDTO, TUpdateSecretImportDTO } from "./types"; + +export const useCreateSecretImport = () => { + const queryClient = useQueryClient(); + + return useMutation<{}, {}, TCreateSecretImportDTO>({ + mutationFn: async ({ secretImport, environment, workspaceId, folderId }) => { + const { data } = await apiRequest.post("/api/v1/secret-imports", { + secretImport, + environment, + workspaceId, + folderId + }); + return data; + }, + onSuccess: (_, { workspaceId, environment, folderId }) => { + queryClient.invalidateQueries( + secretKeys.getProjectSecretImports(workspaceId, environment, folderId) + ); + } + }); +}; + +export const useUpdateSecretImport = () => { + const queryClient = useQueryClient(); + + return useMutation<{}, {}, TUpdateSecretImportDTO>({ + mutationFn: async ({ environment, workspaceId, folderId, secretImports, id }) => { + const { data } = await apiRequest.put(`/api/v1/secret-imports/${id}`, { + secretImports, + environment, + workspaceId, + folderId + }); + return data; + }, + onSuccess: (_, { workspaceId, environment, folderId }) => { + queryClient.invalidateQueries( + secretKeys.getProjectSecretImports(workspaceId, environment, folderId) + ); + } + }); +}; + +export const useDeleteSecretImport = () => { + const queryClient = useQueryClient(); + + return useMutation<{}, {}, TDeleteSecretImportDTO>({ + mutationFn: async ({ id, secretImportEnv, secretImportPath }) => { + const { data } = await apiRequest.delete(`/api/v1/secret-imports/${id}`, { + data: { + secretImportPath, + secretImportEnv + } + }); + return data; + }, + onSuccess: (_, { workspaceId, environment, folderId }) => { + queryClient.invalidateQueries( + secretKeys.getProjectSecretImports(workspaceId, environment, folderId) + ); + } + }); +}; diff --git a/frontend/src/hooks/api/secrets/queries.tsx b/frontend/src/hooks/api/secrets/queries.tsx index 397f68aa7..1541ff753 100644 --- a/frontend/src/hooks/api/secrets/queries.tsx +++ b/frontend/src/hooks/api/secrets/queries.tsx @@ -24,6 +24,10 @@ export const secretKeys = { { workspaceId, env, folderId }, "secrets" ], + getProjectSecretImports: (workspaceId: string, env: string | string[], folderId?: string) => [ + { workspaceId, env, folderId }, + "secrets-imports" + ], getSecretVersion: (secretId: string) => [{ secretId }, "secret-versions"] }; diff --git a/frontend/src/hooks/api/secrets/types.ts b/frontend/src/hooks/api/secrets/types.ts index a622b25eb..b36eb47f7 100644 --- a/frontend/src/hooks/api/secrets/types.ts +++ b/frontend/src/hooks/api/secrets/types.ts @@ -34,6 +34,7 @@ export type DecryptedSecret = { valueOverride?: string; idOverride?: string; overrideAction?: string; + folderId?: string; }; export type EncryptedSecretVersion = { @@ -98,6 +99,7 @@ export type GetProjectSecretsDTO = { folderId?: string; secretPath?: string; isPaused?: boolean; + include_imports?: boolean; onSuccess?: (data: DecryptedSecret[]) => void; }; diff --git a/frontend/src/views/DashboardPage/DashboardPage.tsx b/frontend/src/views/DashboardPage/DashboardPage.tsx index 1cb686414..3b0effb1f 100644 --- a/frontend/src/views/DashboardPage/DashboardPage.tsx +++ b/frontend/src/views/DashboardPage/DashboardPage.tsx @@ -2,6 +2,18 @@ import { useEffect, useRef, useState } from "react"; import { FormProvider, useFieldArray, useForm } from "react-hook-form"; import { useTranslation } from "react-i18next"; import { useRouter } from "next/router"; +import { + closestCenter, + DndContext, + DragEndEvent, + KeyboardSensor, + MouseSensor, + TouchSensor, + useSensor, + useSensors +} from "@dnd-kit/core"; +import { restrictToVerticalAxis } from "@dnd-kit/modifiers"; +import { arrayMove } from "@dnd-kit/sortable"; import { faArrowLeft, faCheck, @@ -10,6 +22,7 @@ import { faDownload, faEye, faEyeSlash, + faFileImport, faFolderPlus, faMagnifyingGlass, faPlus @@ -41,10 +54,14 @@ import { useLeaveConfirm, usePopUp, useToggle } from "@app/hooks"; import { useBatchSecretsOp, useCreateFolder, + useCreateSecretImport, useCreateWsTag, useDeleteFolder, + useDeleteSecretImport, + useGetImportedSecrets, useGetProjectFolders, useGetProjectSecrets, + useGetSecretImports, useGetSecretVersion, useGetSnapshotSecrets, useGetUserAction, @@ -55,7 +72,8 @@ import { useGetWsTags, usePerformSecretRollback, useRegisterUserAction, - useUpdateFolder + useUpdateFolder, + useUpdateSecretImport } from "@app/hooks/api"; import { secretKeys } from "@app/hooks/api/secrets/queries"; import { WorkspaceEnv } from "@app/hooks/api/types"; @@ -71,6 +89,8 @@ import { import { PitDrawer } from "./components/PitDrawer"; import { SecretDetailDrawer } from "./components/SecretDetailDrawer"; import { SecretDropzone } from "./components/SecretDropzone"; +import { SecretImportForm } from "./components/SecretImportForm"; +import { SecretImportSection } from "./components/SecretImportSection"; import { SecretInputRow } from "./components/SecretInputRow"; import { SecretTableHeader } from "./components/SecretTableHeader"; import { @@ -84,7 +104,7 @@ import { } from "./DashboardPage.utils"; const USER_ACTION_PUSH = "first_time_secrets_pushed"; - +type TDeleteSecretImport = { environment: string; secretPath: string }; /* * Some imp aspects to consider. Here there are multiple stats changing * Thus ideally we need to use a context. But instead we rely on react hook form @@ -113,7 +133,9 @@ export const DashboardPage = ({ envFromTop }: { envFromTop: string }) => { "compareSecrets", "folderForm", "deleteFolder", - "upgradePlan" + "upgradePlan", + "addSecretImport", + "deleteSecretImport" ] as const); const [isSecretValueHidden, setIsSecretValueHidden] = useToggle(true); const [searchFilter, setSearchFilter] = useState(""); @@ -129,6 +151,8 @@ export const DashboardPage = ({ envFromTop }: { envFromTop: string }) => { const { currentWorkspace, isLoading } = useWorkspace(); const { currentOrg } = useOrganization(); const workspaceId = currentWorkspace?._id as string; + const selectedEnvSlug = selectedEnv?.slug || ""; + const { data: latestFileKey } = useGetUserWsKey(workspaceId); useEffect(() => { @@ -161,7 +185,7 @@ export const DashboardPage = ({ envFromTop }: { envFromTop: string }) => { const { data: secrets, isLoading: isSecretsLoading } = useGetProjectSecrets({ workspaceId, - env: selectedEnv?.slug || "", + env: selectedEnvSlug, decryptFileKey: latestFileKey!, isPaused: Boolean(snapshotId), folderId @@ -169,7 +193,7 @@ export const DashboardPage = ({ envFromTop }: { envFromTop: string }) => { const { data: folderData, isLoading: isFoldersLoading } = useGetProjectFolders({ workspaceId: workspaceId || "", - environment: selectedEnv?.slug || "", + environment: selectedEnvSlug, parentFolderId: folderId, isPaused: isRollbackMode, sortDir @@ -182,7 +206,7 @@ export const DashboardPage = ({ envFromTop }: { envFromTop: string }) => { isFetchingNextPage } = useGetWorkspaceSecretSnapshots({ workspaceId, - environment: selectedEnv?.slug || "", + environment: selectedEnvSlug, folder: folderId, limit: 10 }); @@ -193,17 +217,18 @@ export const DashboardPage = ({ envFromTop }: { envFromTop: string }) => { isFetching: isSnapshotChanging } = useGetSnapshotSecrets({ snapshotId: snapshotId || "", - env: selectedEnv?.slug || "", + env: selectedEnvSlug, decryptFileKey: latestFileKey! }); const { data: snapshotCount, isLoading: isLoadingSnapshotCount } = useGetWsSnapshotCount( workspaceId, - selectedEnv?.slug || "", + selectedEnvSlug, folderId ); const { data: wsTags } = useGetWsTags(workspaceId); + // mutation calls const { mutateAsync: batchSecretOp } = useBatchSecretsOp(); const { mutateAsync: performSecretRollback } = usePerformSecretRollback(); @@ -213,6 +238,50 @@ export const DashboardPage = ({ envFromTop }: { envFromTop: string }) => { const { mutateAsync: updateFolder } = useUpdateFolder(folderId); const { mutateAsync: deleteFolder } = useDeleteFolder(folderId); + const { data: secretImportCfg, isFetching: isSecretImportCfgFetching } = useGetSecretImports( + workspaceId, + selectedEnvSlug, + folderId + ); + + const { data: importedSecrets } = useGetImportedSecrets({ + workspaceId, + decryptFileKey: latestFileKey!, + environment: selectedEnvSlug, + folderId + }); + + // This is for dnd-kit. As react-query state mutation async + // This will act as a placeholder to avoid a glitching animation on dropping items + const [items, setItems] = useState< + Array<{ environment: string; secretPath: string; id: string }> + >([]); + + useEffect(() => { + if ( + !isSecretImportCfgFetching || + // case in which u go to a folder and come back to fill in with cache data + (items.length === 0 && secretImportCfg?.imports?.length !== 0 && isSecretImportCfgFetching) + ) { + setItems( + secretImportCfg?.imports?.map((el) => ({ + ...el, + id: `${el.environment}-${el.secretPath}` + })) || [] + ); + } + }, [isSecretImportCfgFetching]); + + const { mutateAsync: createSecretImport } = useCreateSecretImport(); + const { mutate: updateSecretImportSync } = useUpdateSecretImport(); + const { mutateAsync: deleteSecretImport } = useDeleteSecretImport(); + + const sensors = useSensors( + useSensor(MouseSensor, {}), + useSensor(TouchSensor, {}), + useSensor(KeyboardSensor, {}) + ); + const method = useForm({ // why any: well yup inferred ts expects other keys to defined as undefined defaultValues: secrets as any, @@ -319,14 +388,12 @@ export const DashboardPage = ({ envFromTop }: { envFromTop: string }) => { await performSecretRollback({ workspaceId, version: snapshotSecret.version, - environment: selectedEnv?.slug || "", + environment: selectedEnvSlug, folderId }); setValue("isSnapshotMode", false); setSnaphotId(null); - queryClient.invalidateQueries( - secretKeys.getProjectSecret(workspaceId, selectedEnv?.slug || "") - ); + queryClient.invalidateQueries(secretKeys.getProjectSecret(workspaceId, selectedEnvSlug)); createNotification({ text: "Successfully rollback secrets", type: "success" @@ -522,6 +589,79 @@ export const DashboardPage = ({ envFromTop }: { envFromTop: string }) => { } }; + const handleSecretImportCreate = async (env: string, secretPath: string) => { + try { + await createSecretImport({ + workspaceId, + environment: selectedEnv?.slug || "", + folderId, + secretImport: { + environment: env, + secretPath + } + }); + createNotification({ + type: "success", + text: "Successfully create secret link" + }); + handlePopUpClose("addSecretImport"); + } catch (err) { + console.error(err); + createNotification({ + text: "Failed to create secret link", + type: "error" + }); + } + }; + + const handleSecretImportDelete = async () => { + const { environment: importEnv, secretPath: impSecPath } = popUp.deleteSecretImport + ?.data as TDeleteSecretImport; + try { + if (secretImportCfg?._id) { + await deleteSecretImport({ + workspaceId, + environment: selectedEnvSlug, + folderId, + id: secretImportCfg?._id, + secretImportEnv: importEnv, + secretImportPath: impSecPath + }); + handlePopUpClose("deleteSecretImport"); + createNotification({ + type: "success", + text: "Successfully removed secret link" + }); + } + } catch (err) { + console.error(err); + createNotification({ + text: "Failed to remove secret link", + type: "error" + }); + } + }; + + const handleDragEnd = (evt: DragEndEvent) => { + const { active, over } = evt; + if (over?.id && active.id !== over.id) { + const oldIndex = items.findIndex(({ id }) => id === active.id); + const newIndex = items.findIndex(({ id }) => id === over.id); + const newImportOrder = arrayMove(items, oldIndex, newIndex); + setItems(newImportOrder); + updateSecretImportSync({ + workspaceId, + environment: selectedEnvSlug, + folderId, + id: secretImportCfg?._id || "", + secretImports: newImportOrder.map((el) => ({ + environment: el.environment, + secretPath: el.secretPath + })) + }); + } + }; + // when secrets is not loading and secrets list is empty const isDashboardSecretEmpty = !isSecretsLoading && !fields?.length; @@ -664,7 +804,6 @@ export const DashboardPage = ({ envFromTop }: { envFromTop: string }) => {
-
{
+
+ +
-
+ + + )} + + + + )} { /> + handlePopUpToggle("addSecretImport", isOpen)} + > + + + + { onChange={(isOpen) => handlePopUpToggle("deleteFolder", isOpen)} onDeleteApproved={handleFolderDelete} /> + handlePopUpToggle("deleteSecretImport", isOpen)} + onDeleteApproved={handleSecretImportDelete} + /> handlePopUpToggle("compareSecrets", open)} diff --git a/frontend/src/views/DashboardPage/components/FolderSection/FolderSection.tsx b/frontend/src/views/DashboardPage/components/FolderSection/FolderSection.tsx index 482324246..dbdf57fe0 100644 --- a/frontend/src/views/DashboardPage/components/FolderSection/FolderSection.tsx +++ b/frontend/src/views/DashboardPage/components/FolderSection/FolderSection.tsx @@ -67,7 +67,7 @@ export const FolderSection = ({ ariaLabel="delete" onClick={() => handleFolderDelete(id, name)} > - +
diff --git a/frontend/src/views/DashboardPage/components/SecretImportForm/SecretImportForm.tsx b/frontend/src/views/DashboardPage/components/SecretImportForm/SecretImportForm.tsx new file mode 100644 index 000000000..27adbf24f --- /dev/null +++ b/frontend/src/views/DashboardPage/components/SecretImportForm/SecretImportForm.tsx @@ -0,0 +1,86 @@ +import { Controller, useForm } from "react-hook-form"; +import { yupResolver } from "@hookform/resolvers/yup"; +import * as yup from "yup"; + +import { Button, FormControl, Input, ModalClose, Select, SelectItem } from "@app/components/v2"; + +type Props = { + onCreate: (environment: string, secretPath: string) => Promise; + environments?: Array<{ slug: string; name: string }>; +}; + +const formSchema = yup.object({ + environment: yup.string().required().label("Environment").trim(), + secretPath: yup + .string() + .required() + .label("Secret Path") + .trim() + .transform((val) => + typeof val === "string" && val.at(-1) === "/" && val.length > 1 ? val.slice(0, -1) : val + ) +}); + +type TFormData = yup.InferType; + +export const SecretImportForm = ({ onCreate, environments = [] }: Props): JSX.Element => { + const { + control, + reset, + formState: { isSubmitting }, + handleSubmit + } = useForm({ + resolver: yupResolver(formSchema) + }); + + const onSubmit = async ({ environment, secretPath }: TFormData) => { + await onCreate(environment, secretPath); + reset(); + }; + + return ( +
+ ( + + + + )} + /> + ( + + + + )} + /> +
+ + + + +
+ + ); +}; diff --git a/frontend/src/views/DashboardPage/components/SecretImportForm/index.tsx b/frontend/src/views/DashboardPage/components/SecretImportForm/index.tsx new file mode 100644 index 000000000..c5be50814 --- /dev/null +++ b/frontend/src/views/DashboardPage/components/SecretImportForm/index.tsx @@ -0,0 +1 @@ +export { SecretImportForm } from "./SecretImportForm"; diff --git a/frontend/src/views/DashboardPage/components/SecretImportSection/SecretImportItem.tsx b/frontend/src/views/DashboardPage/components/SecretImportSection/SecretImportItem.tsx new file mode 100644 index 000000000..6e424fc1a --- /dev/null +++ b/frontend/src/views/DashboardPage/components/SecretImportSection/SecretImportItem.tsx @@ -0,0 +1,144 @@ +import { useEffect } from "react"; +import { useSortable } from "@dnd-kit/sortable"; +import { faFileImport, faFolder, faUpDown, faXmark } from "@fortawesome/free-solid-svg-icons"; +import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; + +import { IconButton, TableContainer, Tooltip } from "@app/components/v2"; +import { useWorkspace } from "@app/context"; +import { useToggle } from "@app/hooks/useToggle"; + +type Props = { + onDelete: (environment: string, secretPath: string) => void; + importedEnv: string; + importedSecPath: string; + importedSecrets: { key: string; value: string; overriden: { env: string; secretPath: string } }[]; +}; + +// to show the environment and folder icon +export const EnvFolderIcon = ({ env, secretPath }: { env: string; secretPath: string }) => ( +
+
{env || "-"}
+ {secretPath && ( +
+ + {secretPath} +
+ )} +
+); + +export const SecretImportItem = ({ + importedEnv, + importedSecPath, + onDelete, + importedSecrets = [] +}: Props) => { + const [isExpanded, setIsExpanded] = useToggle(); + const { attributes, listeners, transform, transition, setNodeRef, isDragging } = useSortable({ + id: `${importedEnv}-${importedSecPath}` + }); + const { currentWorkspace } = useWorkspace(); + const rowEnv = currentWorkspace?.environments?.find(({ slug }) => slug === importedEnv); + + useEffect(() => { + if (isDragging) { + setIsExpanded.off(); + } + }, [isDragging]); + + const style = { + transform: transform ? `translateY(${transform.y ? Math.round(transform.y) : 0}px)` : "", + transition + }; + + return ( + <> + setIsExpanded.toggle()} + > + + + + +
+ +
+
+
+ + + + + +
+
+ + { + evt.stopPropagation(); + onDelete(importedEnv, importedSecPath); + }} + > + + + +
+
+ + + + {isExpanded && !isDragging && ( + +
+
Secrets Imported
+ + + + + + + + + + + {importedSecrets.map(({ key, value, overriden }, index) => ( + + + + + + ))} + +
KeyValueOverride
+ {key} + + {value} + + +
+
+
+ + )} + + + ); +}; diff --git a/frontend/src/views/DashboardPage/components/SecretImportSection/SecretImportSection.tsx b/frontend/src/views/DashboardPage/components/SecretImportSection/SecretImportSection.tsx new file mode 100644 index 000000000..6998b6ae3 --- /dev/null +++ b/frontend/src/views/DashboardPage/components/SecretImportSection/SecretImportSection.tsx @@ -0,0 +1,93 @@ +import { SortableContext, verticalListSortingStrategy } from "@dnd-kit/sortable"; + +import { useWorkspace } from "@app/context"; +import { DecryptedSecret } from "@app/hooks/api/secrets/types"; + +import { SecretImportItem } from "./SecretImportItem"; + +type TImportedSecrets = Array<{ + environment: string; + secretPath: string; + folderId: string; + secrets: DecryptedSecret[]; +}>; + +const SECRET_IN_DASHBOARD = "Present In Dashboard"; + +export const computeImportedSecretRows = ( + importedSecEnv: string, + importedSecPath: string, + importSecrets: TImportedSecrets = [], + secrets: DecryptedSecret[] = [], + environments: { name: string; slug: string }[] = [] +) => { + const importedSecIndex = importSecrets.findIndex( + ({ secretPath, environment }) => + secretPath === importedSecPath && importedSecEnv === environment + ); + if (importedSecIndex === -1) return []; + + const importedSec = importSecrets[importedSecIndex]; + + const overridenSec: Record = {}; + const envSlug2Name: Record = {}; + environments.forEach((el) => { + envSlug2Name[el.slug] = el.name; + }); + + for (let i = importedSecIndex + 1; i < importSecrets.length; i += 1) { + importSecrets[i].secrets.forEach((el) => { + overridenSec[el.key] = { + env: envSlug2Name?.[importSecrets[i].environment] || "unknown", + secretPath: importSecrets[i].secretPath + }; + }); + } + + secrets.forEach((el) => { + overridenSec[el.key] = { env: SECRET_IN_DASHBOARD, secretPath: "" }; + }); + + return importedSec.secrets.map(({ key, value }) => ({ + key, + value, + overriden: overridenSec?.[key] + })); +}; + +type Props = { + secrets?: DecryptedSecret[]; + importedSecrets?: TImportedSecrets; + onSecretImportDelete: (env: string, secPath: string) => void; + items: { id: string; environment: string; secretPath: string }[]; +}; + +export const SecretImportSection = ({ + secrets = [], + importedSecrets = [], + onSecretImportDelete, + items = [] +}: Props) => { + const { currentWorkspace } = useWorkspace(); + const environments = currentWorkspace?.environments || []; + + return ( + + {items.map(({ secretPath: impSecPath, environment: importSecEnv, id }) => ( + + ))} + + ); +}; diff --git a/frontend/src/views/DashboardPage/components/SecretImportSection/index.tsx b/frontend/src/views/DashboardPage/components/SecretImportSection/index.tsx new file mode 100644 index 000000000..837c9ce6d --- /dev/null +++ b/frontend/src/views/DashboardPage/components/SecretImportSection/index.tsx @@ -0,0 +1 @@ +export { SecretImportSection } from "./SecretImportSection"; diff --git a/frontend/src/views/DashboardPage/components/SecretInputRow/SecretInputRow.tsx b/frontend/src/views/DashboardPage/components/SecretInputRow/SecretInputRow.tsx index fd79785d3..2a99400fb 100644 --- a/frontend/src/views/DashboardPage/components/SecretInputRow/SecretInputRow.tsx +++ b/frontend/src/views/DashboardPage/components/SecretInputRow/SecretInputRow.tsx @@ -407,7 +407,7 @@ export const SecretInputRow = memo(
Date: Mon, 17 Jul 2023 23:10:14 +0530 Subject: [PATCH 11/49] feat(secret-import): updated cli to support secret import --- cli/packages/api/api.go | 4 ++ cli/packages/api/model.go | 73 +++++++++++++++++++++--------------- cli/packages/cmd/run.go | 8 +++- cli/packages/cmd/secrets.go | 8 +++- cli/packages/models/cli.go | 1 + cli/packages/util/secrets.go | 72 ++++++++++++++++++++++++++++------- 6 files changed, 119 insertions(+), 47 deletions(-) diff --git a/cli/packages/api/api.go b/cli/packages/api/api.go index 5afec6782..89c8db76a 100644 --- a/cli/packages/api/api.go +++ b/cli/packages/api/api.go @@ -235,6 +235,10 @@ func CallGetSecretsV3(httpClient *resty.Client, request GetEncryptedSecretsV3Req SetQueryParam("environment", request.Environment). SetQueryParam("workspaceId", request.WorkspaceId) + if request.IncludeImport { + httpRequest.SetQueryParam("include_imports", "true") + } + if request.SecretPath != "" { httpRequest.SetQueryParam("secretPath", request.SecretPath) } diff --git a/cli/packages/api/model.go b/cli/packages/api/model.go index 09e6779e0..027243ef5 100644 --- a/cli/packages/api/model.go +++ b/cli/packages/api/model.go @@ -272,40 +272,51 @@ type GetNewAccessTokenWithRefreshTokenResponse struct { } type GetEncryptedSecretsV3Request struct { - Environment string `json:"environment"` - WorkspaceId string `json:"workspaceId"` - SecretPath string `json:"secretPath"` + Environment string `json:"environment"` + WorkspaceId string `json:"workspaceId"` + SecretPath string `json:"secretPath"` + IncludeImport bool `json:"include_imports"` +} + +type EncryptedSecretV3 struct { + ID string `json:"_id"` + Version int `json:"version"` + Workspace string `json:"workspace"` + Type string `json:"type"` + Tags []struct { + ID string `json:"_id"` + Name string `json:"name"` + Slug string `json:"slug"` + Workspace string `json:"workspace"` + } `json:"tags"` + Environment string `json:"environment"` + SecretKeyCiphertext string `json:"secretKeyCiphertext"` + SecretKeyIV string `json:"secretKeyIV"` + SecretKeyTag string `json:"secretKeyTag"` + SecretValueCiphertext string `json:"secretValueCiphertext"` + SecretValueIV string `json:"secretValueIV"` + SecretValueTag string `json:"secretValueTag"` + SecretCommentCiphertext string `json:"secretCommentCiphertext"` + SecretCommentIV string `json:"secretCommentIV"` + SecretCommentTag string `json:"secretCommentTag"` + Algorithm string `json:"algorithm"` + KeyEncoding string `json:"keyEncoding"` + Folder string `json:"folder"` + V int `json:"__v"` + CreatedAt time.Time `json:"createdAt"` + UpdatedAt time.Time `json:"updatedAt"` +} + +type ImportedSecretV3 struct { + Environment string `json:"environment"` + FolderId string `json:"folderId"` + SecretPath string `json:"secretPath"` + Secrets []EncryptedSecretV3 `json:"secrets"` } type GetEncryptedSecretsV3Response struct { - Secrets []struct { - ID string `json:"_id"` - Version int `json:"version"` - Workspace string `json:"workspace"` - Type string `json:"type"` - Tags []struct { - ID string `json:"_id"` - Name string `json:"name"` - Slug string `json:"slug"` - Workspace string `json:"workspace"` - } `json:"tags"` - Environment string `json:"environment"` - SecretKeyCiphertext string `json:"secretKeyCiphertext"` - SecretKeyIV string `json:"secretKeyIV"` - SecretKeyTag string `json:"secretKeyTag"` - SecretValueCiphertext string `json:"secretValueCiphertext"` - SecretValueIV string `json:"secretValueIV"` - SecretValueTag string `json:"secretValueTag"` - SecretCommentCiphertext string `json:"secretCommentCiphertext"` - SecretCommentIV string `json:"secretCommentIV"` - SecretCommentTag string `json:"secretCommentTag"` - Algorithm string `json:"algorithm"` - KeyEncoding string `json:"keyEncoding"` - Folder string `json:"folder"` - V int `json:"__v"` - CreatedAt time.Time `json:"createdAt"` - UpdatedAt time.Time `json:"updatedAt"` - } `json:"secrets"` + Secrets []EncryptedSecretV3 `json:"secrets"` + ImportedSecrets []ImportedSecretV3 `json:"imports,omitempty"` } type CreateSecretV3Request struct { diff --git a/cli/packages/cmd/run.go b/cli/packages/cmd/run.go index 2303cbe2e..02fe16327 100644 --- a/cli/packages/cmd/run.go +++ b/cli/packages/cmd/run.go @@ -87,7 +87,12 @@ var runCmd = &cobra.Command{ util.HandleError(err, "Unable to parse flag") } - secrets, err := util.GetAllEnvironmentVariables(models.GetAllSecretsParameters{Environment: environmentName, InfisicalToken: infisicalToken, TagSlugs: tagSlugs, SecretsPath: secretsPath}) + includeImports, err := cmd.Flags().GetBool("include-imports") + if err != nil { + util.HandleError(err, "Unable to parse flag") + } + + secrets, err := util.GetAllEnvironmentVariables(models.GetAllSecretsParameters{Environment: environmentName, InfisicalToken: infisicalToken, TagSlugs: tagSlugs, SecretsPath: secretsPath, IncludeImport: includeImports}) if err != nil { util.HandleError(err, "Could not fetch secrets", "If you are using a service token to fetch secrets, please ensure it is valid") @@ -186,6 +191,7 @@ func init() { runCmd.Flags().String("token", "", "Fetch secrets using the Infisical Token") runCmd.Flags().StringP("env", "e", "dev", "Set the environment (dev, prod, etc.) from which your secrets should be pulled from") runCmd.Flags().Bool("expand", true, "Parse shell parameter expansions in your secrets") + runCmd.Flags().Bool("include-imports", true, "Import linked secrets ") runCmd.Flags().Bool("secret-overriding", true, "Prioritizes personal secrets, if any, with the same name over shared secrets") runCmd.Flags().StringP("command", "c", "", "chained commands to execute (e.g. \"npm install && npm run dev; echo ...\")") runCmd.Flags().StringP("tags", "t", "", "filter secrets by tag slugs ") diff --git a/cli/packages/cmd/secrets.go b/cli/packages/cmd/secrets.go index 688dd55bf..4d55f4307 100644 --- a/cli/packages/cmd/secrets.go +++ b/cli/packages/cmd/secrets.go @@ -54,12 +54,17 @@ var secretsCmd = &cobra.Command{ util.HandleError(err) } + includeImports, err := cmd.Flags().GetBool("include-imports") + if err != nil { + util.HandleError(err) + } + tagSlugs, err := cmd.Flags().GetString("tags") if err != nil { util.HandleError(err, "Unable to parse flag") } - secrets, err := util.GetAllEnvironmentVariables(models.GetAllSecretsParameters{Environment: environmentName, InfisicalToken: infisicalToken, TagSlugs: tagSlugs, SecretsPath: secretsPath}) + secrets, err := util.GetAllEnvironmentVariables(models.GetAllSecretsParameters{Environment: environmentName, InfisicalToken: infisicalToken, TagSlugs: tagSlugs, SecretsPath: secretsPath, IncludeImport: includeImports}) if err != nil { util.HandleError(err) } @@ -647,6 +652,7 @@ func init() { secretsCmd.Flags().String("token", "", "Fetch secrets using the Infisical Token") secretsCmd.PersistentFlags().String("env", "dev", "Used to select the environment name on which actions should be taken on") secretsCmd.Flags().Bool("expand", true, "Parse shell parameter expansions in your secrets") + secretsCmd.Flags().Bool("include-imports", true, "Imported linked secrets ") secretsCmd.PersistentFlags().StringP("tags", "t", "", "filter secrets by tag slugs") secretsCmd.Flags().String("path", "/", "get secrets within a folder path") rootCmd.AddCommand(secretsCmd) diff --git a/cli/packages/models/cli.go b/cli/packages/models/cli.go index 18a64750f..c388d2d9e 100644 --- a/cli/packages/models/cli.go +++ b/cli/packages/models/cli.go @@ -65,4 +65,5 @@ type GetAllSecretsParameters struct { TagSlugs string WorkspaceId string SecretsPath string + IncludeImport bool } diff --git a/cli/packages/util/secrets.go b/cli/packages/util/secrets.go index d49e92607..b20ec4488 100644 --- a/cli/packages/util/secrets.go +++ b/cli/packages/util/secrets.go @@ -17,7 +17,7 @@ import ( "github.com/rs/zerolog/log" ) -func GetPlainTextSecretsViaServiceToken(fullServiceToken string, environment string, secretPath string) ([]models.SingleEnvironmentVariable, api.GetServiceTokenDetailsResponse, error) { +func GetPlainTextSecretsViaServiceToken(fullServiceToken string, environment string, secretPath string, includeImports bool) ([]models.SingleEnvironmentVariable, api.GetServiceTokenDetailsResponse, error) { serviceTokenParts := strings.SplitN(fullServiceToken, ".", 4) if len(serviceTokenParts) < 4 { return nil, api.GetServiceTokenDetailsResponse{}, fmt.Errorf("invalid service token entered. Please double check your service token and try again") @@ -45,9 +45,10 @@ func GetPlainTextSecretsViaServiceToken(fullServiceToken string, environment str } encryptedSecrets, err := api.CallGetSecretsV3(httpClient, api.GetEncryptedSecretsV3Request{ - WorkspaceId: serviceTokenDetails.Workspace, - Environment: environment, - SecretPath: secretPath, + WorkspaceId: serviceTokenDetails.Workspace, + Environment: environment, + SecretPath: secretPath, + IncludeImport: includeImports, }) if err != nil { @@ -64,15 +65,22 @@ func GetPlainTextSecretsViaServiceToken(fullServiceToken string, environment str return nil, api.GetServiceTokenDetailsResponse{}, fmt.Errorf("unable to decrypt the required workspace key") } - plainTextSecrets, err := GetPlainTextSecrets(plainTextWorkspaceKey, encryptedSecrets) + plainTextSecrets, err := GetPlainTextSecrets(plainTextWorkspaceKey, encryptedSecrets.Secrets) if err != nil { return nil, api.GetServiceTokenDetailsResponse{}, fmt.Errorf("unable to decrypt your secrets [err=%v]", err) } + if includeImports { + plainTextSecrets, err = InjectImportedSecret(plainTextWorkspaceKey, plainTextSecrets, encryptedSecrets.ImportedSecrets) + if err != nil { + return nil, api.GetServiceTokenDetailsResponse{}, err + } + } + return plainTextSecrets, serviceTokenDetails, nil } -func GetPlainTextSecretsViaJTW(JTWToken string, receiversPrivateKey string, workspaceId string, environmentName string, tagSlugs string, secretsPath string) ([]models.SingleEnvironmentVariable, error) { +func GetPlainTextSecretsViaJTW(JTWToken string, receiversPrivateKey string, workspaceId string, environmentName string, tagSlugs string, secretsPath string, includeImports bool) ([]models.SingleEnvironmentVariable, error) { httpClient := resty.New() httpClient.SetAuthToken(JTWToken). SetHeader("Accept", "application/json") @@ -114,8 +122,9 @@ func GetPlainTextSecretsViaJTW(JTWToken string, receiversPrivateKey string, work plainTextWorkspaceKey := crypto.DecryptAsymmetric(encryptedWorkspaceKey, encryptedWorkspaceKeyNonce, encryptedWorkspaceKeySenderPublicKey, currentUsersPrivateKey) getSecretsRequest := api.GetEncryptedSecretsV3Request{ - WorkspaceId: workspaceId, - Environment: environmentName, + WorkspaceId: workspaceId, + Environment: environmentName, + IncludeImport: includeImports, // TagSlugs: tagSlugs, } @@ -124,19 +133,53 @@ func GetPlainTextSecretsViaJTW(JTWToken string, receiversPrivateKey string, work } encryptedSecrets, err := api.CallGetSecretsV3(httpClient, getSecretsRequest) - if err != nil { return nil, err } - plainTextSecrets, err := GetPlainTextSecrets(plainTextWorkspaceKey, encryptedSecrets) + plainTextSecrets, err := GetPlainTextSecrets(plainTextWorkspaceKey, encryptedSecrets.Secrets) if err != nil { return nil, fmt.Errorf("unable to decrypt your secrets [err=%v]", err) } + if includeImports { + plainTextSecrets, err = InjectImportedSecret(plainTextWorkspaceKey, plainTextSecrets, encryptedSecrets.ImportedSecrets) + if err != nil { + return nil, err + } + } + return plainTextSecrets, nil } +func InjectImportedSecret(plainTextWorkspaceKey []byte, secrets []models.SingleEnvironmentVariable, importedSecrets []api.ImportedSecretV3) ([]models.SingleEnvironmentVariable, error) { + if importedSecrets == nil { + return secrets, nil + } + + hasOverriden := make(map[string]bool) + for _, sec := range secrets { + hasOverriden[sec.Key] = true + } + + for i := len(importedSecrets) - 1; i >= 0; i-- { + importSec := importedSecrets[i] + plainTextImportedSecrets, err := GetPlainTextSecrets(plainTextWorkspaceKey, importSec.Secrets) + fmt.Println(plainTextImportedSecrets) + if err != nil { + return nil, fmt.Errorf("unable to decrypt your imported secrets [err=%v]", err) + } + + for _, sec := range plainTextImportedSecrets { + if _, ok := hasOverriden[sec.Key]; !ok { + secrets = append(secrets, sec) + hasOverriden[sec.Key] = true + } + } + } + return secrets, nil +} + func GetAllEnvironmentVariables(params models.GetAllSecretsParameters) ([]models.SingleEnvironmentVariable, error) { var infisicalToken string if params.InfisicalToken == "" { @@ -179,7 +222,8 @@ func GetAllEnvironmentVariables(params models.GetAllSecretsParameters) ([]models return nil, fmt.Errorf("unable to validate environment name because [err=%s]", err) } - secretsToReturn, errorToReturn = GetPlainTextSecretsViaJTW(loggedInUserDetails.UserCredentials.JTWToken, loggedInUserDetails.UserCredentials.PrivateKey, workspaceFile.WorkspaceId, params.Environment, params.TagSlugs, params.SecretsPath) + secretsToReturn, errorToReturn = GetPlainTextSecretsViaJTW(loggedInUserDetails.UserCredentials.JTWToken, loggedInUserDetails.UserCredentials.PrivateKey, workspaceFile.WorkspaceId, + params.Environment, params.TagSlugs, params.SecretsPath, params.IncludeImport) log.Debug().Msgf("GetAllEnvironmentVariables: Trying to fetch secrets JTW token [err=%s]", errorToReturn) backupSecretsEncryptionKey := []byte(loggedInUserDetails.UserCredentials.PrivateKey)[0:32] @@ -199,7 +243,7 @@ func GetAllEnvironmentVariables(params models.GetAllSecretsParameters) ([]models } else { log.Debug().Msg("Trying to fetch secrets using service token") - secretsToReturn, _, errorToReturn = GetPlainTextSecretsViaServiceToken(infisicalToken, params.Environment, params.SecretsPath) + secretsToReturn, _, errorToReturn = GetPlainTextSecretsViaServiceToken(infisicalToken, params.Environment, params.SecretsPath, params.IncludeImport) } return secretsToReturn, errorToReturn @@ -427,9 +471,9 @@ func OverrideSecrets(secrets []models.SingleEnvironmentVariable, secretType stri return secretsToReturn } -func GetPlainTextSecrets(key []byte, encryptedSecrets api.GetEncryptedSecretsV3Response) ([]models.SingleEnvironmentVariable, error) { +func GetPlainTextSecrets(key []byte, encryptedSecrets []api.EncryptedSecretV3) ([]models.SingleEnvironmentVariable, error) { plainTextSecrets := []models.SingleEnvironmentVariable{} - for _, secret := range encryptedSecrets.Secrets { + for _, secret := range encryptedSecrets { // Decrypt key key_iv, err := base64.StdEncoding.DecodeString(secret.SecretKeyIV) if err != nil { From 23cd6fd8613129a185020af1e9ce75ac20e53f22 Mon Sep 17 00:00:00 2001 From: akhilmhdh Date: Mon, 17 Jul 2023 23:10:42 +0530 Subject: [PATCH 12/49] doc(secret-imports): updated docs for secret import --- .../platform/secret-reference.mdx | 14 +++++++++++++- docs/images/secret-import-add.png | Bin 0 -> 99629 bytes docs/images/secret-import-change-order.png | Bin 0 -> 103473 bytes 3 files changed, 13 insertions(+), 1 deletion(-) create mode 100644 docs/images/secret-import-add.png create mode 100644 docs/images/secret-import-change-order.png diff --git a/docs/documentation/platform/secret-reference.mdx b/docs/documentation/platform/secret-reference.mdx index ce9b50db5..8df6fce72 100644 --- a/docs/documentation/platform/secret-reference.mdx +++ b/docs/documentation/platform/secret-reference.mdx @@ -1,5 +1,5 @@ --- -title: "Reference Secrets" +title: "Reference/Import Secrets" description: "How to use reference secrets in Infisical" --- @@ -34,4 +34,16 @@ For instance, to access a secret 'A' composed of secrets 'B' and 'C' from differ When using [service tokens](./token) to fetch referenced secrets, ensure the service token has read access to all referenced environments and folders. Without proper permissions, the final secret value may be incomplete. +## Import multiple secrets from a environment secret path +You can import or link another environment's folder to your dashboard to inherit its secrets. This is useful when you need to share secrets across multiple environments. + +To add an import/link, just click on `Secret Link` button and provide an `environment` and `secret path` to which the secrets must be pulled. + +![secret import change order](../../images/secret-import-add.png) + +The import hierarchy is "last one wins." This means that the order in which you import matters. The last folder you import will override the secrets from any previous folders. Additionally, any secrets you define in your dashboard will override the secrets from any imported folders. + +You can change the order by dragging and positioning according using the `Change Order` drag handle. + +![secret import change order](../../images/secret-import-change-order.png diff --git a/docs/images/secret-import-add.png b/docs/images/secret-import-add.png new file mode 100644 index 0000000000000000000000000000000000000000..1376fd41211c8e5746d47676585e7ebcc44bdbc8 GIT binary patch literal 99629 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

olQIuWjS0BbX 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 Date: Tue, 18 Jul 2023 00:29:42 +0530 Subject: [PATCH 13/49] fix(secret-import): resolved build failure in frontend --- frontend/src/hooks/api/secrets/mutation.tsx | 69 --------------------- 1 file changed, 69 deletions(-) delete mode 100644 frontend/src/hooks/api/secrets/mutation.tsx diff --git a/frontend/src/hooks/api/secrets/mutation.tsx b/frontend/src/hooks/api/secrets/mutation.tsx deleted file mode 100644 index 0047d8435..000000000 --- a/frontend/src/hooks/api/secrets/mutation.tsx +++ /dev/null @@ -1,69 +0,0 @@ -import { useMutation, useQueryClient } from "@tanstack/react-query"; - -import { apiRequest } from "@app/config/request"; - -import { secretKeys } from "./queries"; -import { TCreateSecretImportDTO, TDeleteSecretImportDTO, TUpdateSecretImportDTO } from "./types"; - -export const useCreateSecretImport = () => { - const queryClient = useQueryClient(); - - return useMutation<{}, {}, TCreateSecretImportDTO>({ - mutationFn: async ({ secretImport, environment, workspaceId, folderId }) => { - const { data } = await apiRequest.post("/api/v1/secret-imports", { - secretImport, - environment, - workspaceId, - folderId - }); - return data; - }, - onSuccess: (_, { workspaceId, environment, folderId }) => { - queryClient.invalidateQueries( - secretKeys.getProjectSecretImports(workspaceId, environment, folderId) - ); - } - }); -}; - -export const useUpdateSecretImport = () => { - const queryClient = useQueryClient(); - - return useMutation<{}, {}, TUpdateSecretImportDTO>({ - mutationFn: async ({ environment, workspaceId, folderId, secretImports, id }) => { - const { data } = await apiRequest.put(`/api/v1/secret-imports/${id}`, { - secretImports, - environment, - workspaceId, - folderId - }); - return data; - }, - onSuccess: (_, { workspaceId, environment, folderId }) => { - queryClient.invalidateQueries( - secretKeys.getProjectSecretImports(workspaceId, environment, folderId) - ); - } - }); -}; - -export const useDeleteSecretImport = () => { - const queryClient = useQueryClient(); - - return useMutation<{}, {}, TDeleteSecretImportDTO>({ - mutationFn: async ({ id, secretImportEnv, secretImportPath }) => { - const { data } = await apiRequest.delete(`/api/v1/secret-imports/${id}`, { - data: { - secretImportPath, - secretImportEnv - } - }); - return data; - }, - onSuccess: (_, { workspaceId, environment, folderId }) => { - queryClient.invalidateQueries( - secretKeys.getProjectSecretImports(workspaceId, environment, folderId) - ); - } - }); -}; From 56d430afd6d0dfac63b58792906a86cd80166713 Mon Sep 17 00:00:00 2001 From: Maidul Islam Date: Mon, 17 Jul 2023 16:41:33 -0400 Subject: [PATCH 14/49] update risk status and update email notifications --- .../v1/secretScanningController.ts | 12 ++++---- backend/src/routes/v1/secretScanning.ts | 1 + .../services/GithubSecretScanningService.ts | 9 +----- .../templates/secretLeakIncident.handlebars | 11 ++++++-- .../secret-scanning/getRisksByOrganization.ts | 3 +- .../components/RiskStatusSelection.tsx | 28 +++++++++++++++++++ .../components/SecretScanningLogsTable.tsx | 22 ++++----------- 7 files changed, 52 insertions(+), 34 deletions(-) create mode 100644 frontend/src/views/SecretScanning/components/RiskStatusSelection.tsx diff --git a/backend/src/controllers/v1/secretScanningController.ts b/backend/src/controllers/v1/secretScanningController.ts index 43ddc1a67..e84e5994c 100644 --- a/backend/src/controllers/v1/secretScanningController.ts +++ b/backend/src/controllers/v1/secretScanningController.ts @@ -5,7 +5,7 @@ import { Types } from "mongoose"; import { UnauthorizedRequestError } from "../../utils/errors"; import GitAppOrganizationInstallation from "../../models/gitAppOrganizationInstallation"; import { MembershipOrg } from "../../models"; -import GitRisks, { STATUS_UNRESOLVED } from "../../models/gitRisks"; +import GitRisks, { STATUS_RESOLVED_FALSE_POSITIVE, STATUS_RESOLVED_NOT_REVOKED, STATUS_RESOLVED_REVOKED } from "../../models/gitRisks"; export const createInstallationSession = async (req: Request, res: Response) => { const sessionId = crypto.randomBytes(16).toString("hex"); @@ -72,7 +72,7 @@ export const getCurrentOrganizationInstallationStatus = async (req: Request, res export const getRisksForOrganization = async (req: Request, res: Response) => { const { organizationId } = req.params - const risks = await GitRisks.find({ organization: organizationId, status: STATUS_UNRESOLVED }).sort({ createdAt: -1 }).lean() + const risks = await GitRisks.find({ organization: organizationId }).sort({ createdAt: -1 }).lean() res.json({ risks: risks }) @@ -81,9 +81,11 @@ export const getRisksForOrganization = async (req: Request, res: Response) => { export const updateRisksStatus = async (req: Request, res: Response) => { const { riskId } = req.params const { status } = req.body - const risks = await GitRisks.findByIdAndUpdate(riskId, { - sttaus: status + const isRiskResolved = status == STATUS_RESOLVED_FALSE_POSITIVE || status == STATUS_RESOLVED_REVOKED || status == STATUS_RESOLVED_NOT_REVOKED ? true : false + const risk = await GitRisks.findByIdAndUpdate(riskId, { + status: status, + isResolved: isRiskResolved }).lean() - res.json(risks) + res.json(risk) } \ No newline at end of file diff --git a/backend/src/routes/v1/secretScanning.ts b/backend/src/routes/v1/secretScanning.ts index a809fe3aa..fa162ce68 100644 --- a/backend/src/routes/v1/secretScanning.ts +++ b/backend/src/routes/v1/secretScanning.ts @@ -69,6 +69,7 @@ router.post( }), param("organizationId").exists().trim(), param("riskId").exists().trim(), + body("status").exists(), requireOrganizationAuth({ acceptedRoles: [OWNER, ADMIN, MEMBER], acceptedStatuses: [ACCEPTED], diff --git a/backend/src/services/GithubSecretScanningService.ts b/backend/src/services/GithubSecretScanningService.ts index 48426ea26..cda2351c4 100644 --- a/backend/src/services/GithubSecretScanningService.ts +++ b/backend/src/services/GithubSecretScanningService.ts @@ -3,7 +3,7 @@ import { exec } from "child_process"; import { mkdir, readFile, rm, writeFile } from "fs"; import { tmpdir } from "os"; import { join } from "path" -import GitRisks, { STATUS_RESOLVED_FALSE_POSITIVE } from "../models/gitRisks"; +import GitRisks from "../models/gitRisks"; import GitAppOrganizationInstallation from "../models/gitAppOrganizationInstallation"; import MembershipOrg from "../models/membershipOrg"; import { ADMIN, OWNER } from "../variables"; @@ -98,8 +98,6 @@ export default async (app: Probot) => { } // change to update - const noneFalsePositiveFindings: { [key: string]: SecretMatch; } = {} - for (const key in allFindingsByFingerprint) { const risk = await GitRisks.findOneAndUpdate({ fingerprint: allFindingsByFingerprint[key].Fingerprint }, { @@ -111,11 +109,6 @@ export default async (app: Probot) => { }, { upsert: true }).lean() - - if (risk?.status == STATUS_RESOLVED_FALSE_POSITIVE) { - noneFalsePositiveFindings[key] = { ...convertKeysToLowercase(allFindingsByFingerprint[key]) } - } - } // get emails of admins const adminsOfWork = await MembershipOrg.find({ diff --git a/backend/src/templates/secretLeakIncident.handlebars b/backend/src/templates/secretLeakIncident.handlebars index e3ef0b569..f38a5d728 100644 --- a/backend/src/templates/secretLeakIncident.handlebars +++ b/backend/src/templates/secretLeakIncident.handlebars @@ -11,9 +11,14 @@

Infisical has uncovered {{numberOfSecrets}} secret(s) from your recent push

View leaked secrets

One or more secret leaks have been detected in a recent commit pushed by {{pusher_name}} ({{pusher_email}}). If - the secrets are test secrets, please mark them as false positives in the Infisical dashboard. - Otherwise, please rotate the secrets immediately.

+ these are test secrets, please add `infisical-scan:ignore` at the end of the line containing the secret as comment + in the given programming. This will prevent future notifications from being sent out for the given secret(s).

+ +

If these are production secrets, please rotate them immediately.

+ +

Once you have taken action, be sure to update the status of the risk in yourInfisical + dashboard.

\ No newline at end of file diff --git a/frontend/src/pages/api/secret-scanning/getRisksByOrganization.ts b/frontend/src/pages/api/secret-scanning/getRisksByOrganization.ts index 3c357e7c6..822086b21 100644 --- a/frontend/src/pages/api/secret-scanning/getRisksByOrganization.ts +++ b/frontend/src/pages/api/secret-scanning/getRisksByOrganization.ts @@ -1,7 +1,7 @@ import SecurityClient from "@app/components/utilities/SecurityClient"; export type GitRisks = { - id: string; + _id: string; description: string; startLine: string; endLine: string; @@ -20,6 +20,7 @@ export type GitRisks = { tags: string[]; ruleID: string; fingerprint: string; + status: string; isFalsePositive: boolean; // New field for marking risks as false positives isResolved: boolean; // New field for marking risks as resolved diff --git a/frontend/src/views/SecretScanning/components/RiskStatusSelection.tsx b/frontend/src/views/SecretScanning/components/RiskStatusSelection.tsx new file mode 100644 index 000000000..fd1252df6 --- /dev/null +++ b/frontend/src/views/SecretScanning/components/RiskStatusSelection.tsx @@ -0,0 +1,28 @@ +import { useEffect, useState } from "react"; + +import updateRiskStatus, { RiskStatus } from "@app/pages/api/secret-scanning/updateRiskStatus"; + +export const RiskStatusSelection = ({riskId, currentSelection}: {riskId: any, currentSelection: any }) => { + const [selectedRiskStatus, setSelectedRiskStatus] = useState(currentSelection); + useEffect(()=>{ + if (currentSelection !== selectedRiskStatus){ + const updateSelection = async () =>{ + await updateRiskStatus(String(localStorage.getItem("orgData.id")), riskId, selectedRiskStatus) + } + updateSelection() + } + },[selectedRiskStatus]) + + return ( + + ); +} \ No newline at end of file diff --git a/frontend/src/views/SecretScanning/components/SecretScanningLogsTable.tsx b/frontend/src/views/SecretScanning/components/SecretScanningLogsTable.tsx index fee14b963..b3b0cf03f 100644 --- a/frontend/src/views/SecretScanning/components/SecretScanningLogsTable.tsx +++ b/frontend/src/views/SecretScanning/components/SecretScanningLogsTable.tsx @@ -11,17 +11,14 @@ import { Th, THead, Tr} from "@app/components/v2"; +import timeSince from "@app/ee/utilities/timeSince"; import getRisksByOrganization, { GitRisks } from "@app/pages/api/secret-scanning/getRisksByOrganization"; -import { RiskStatus } from "@app/pages/api/secret-scanning/updateRiskStatus"; + +import { RiskStatusSelection } from "./RiskStatusSelection"; export const SecretScanningLogsTable = () => { const [isLoading, setIsLoading] = useState(false); const [gitRisks, setGitRisks] = useState([]); - const [selectedRiskStatus, setSelectedRiskStatus] = useState(""); - - const handleSelectRiskStatusUpdate = (event: any) => { - setSelectedRiskStatus(event.target.value); - }; useEffect(() => { const fetchRisks = async () => { @@ -53,7 +50,7 @@ export const SecretScanningLogsTable = () => { {!isLoading && gitRisks && gitRisks?.map((risk) => { return ( - {risk.createdAt} + {timeSince(new Date(risk.createdAt))} {risk.ruleID} { {risk.isResolved ? "Resolved" : "Needs Attention"} - + ); From 43f4110c94665531c83270e6e0a88cff5ec2dea0 Mon Sep 17 00:00:00 2001 From: Maidul Islam Date: Mon, 17 Jul 2023 16:46:15 -0400 Subject: [PATCH 15/49] update risk status names --- .../views/SecretScanning/components/RiskStatusSelection.tsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/frontend/src/views/SecretScanning/components/RiskStatusSelection.tsx b/frontend/src/views/SecretScanning/components/RiskStatusSelection.tsx index fd1252df6..afc809e93 100644 --- a/frontend/src/views/SecretScanning/components/RiskStatusSelection.tsx +++ b/frontend/src/views/SecretScanning/components/RiskStatusSelection.tsx @@ -20,9 +20,9 @@ export const RiskStatusSelection = ({riskId, currentSelection}: {riskId: any, cu className="block w-full py-2 px-3 border border-gray-300 bg-white rounded-md shadow-sm focus:outline-none focus:ring-blue-500 focus:border-blue-500" > - - - + + + ); } \ No newline at end of file From 216f3a0d1b52144963593d1ed24a6887c771c03a Mon Sep 17 00:00:00 2001 From: Maidul Islam Date: Mon, 17 Jul 2023 17:18:55 -0400 Subject: [PATCH 16/49] reload page after org link --- .../linkGitAppInstallationWithOrganization.ts | 2 +- frontend/src/pages/org/[id]/secret-scanning/index.tsx | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/frontend/src/pages/api/secret-scanning/linkGitAppInstallationWithOrganization.ts b/frontend/src/pages/api/secret-scanning/linkGitAppInstallationWithOrganization.ts index 5a5e6051a..fa841d9c5 100644 --- a/frontend/src/pages/api/secret-scanning/linkGitAppInstallationWithOrganization.ts +++ b/frontend/src/pages/api/secret-scanning/linkGitAppInstallationWithOrganization.ts @@ -16,7 +16,7 @@ const linkGitAppInstallationWithOrganization = (installationId: string, sessionI }) }).then(async (res) => { if (res && res.status === 200) { - return res.json(); + return true } console.log("Failed to link installation to organization"); return undefined; diff --git a/frontend/src/pages/org/[id]/secret-scanning/index.tsx b/frontend/src/pages/org/[id]/secret-scanning/index.tsx index adf632d1e..e0f98243a 100644 --- a/frontend/src/pages/org/[id]/secret-scanning/index.tsx +++ b/frontend/src/pages/org/[id]/secret-scanning/index.tsx @@ -18,7 +18,11 @@ export default function SecretScanning() { const linkInstallation = async () => { if (typeof queryParams.state === "string" && typeof queryParams.installation_id === "string"){ try { - await linkGitAppInstallationWithOrganization(queryParams.installation_id as string, queryParams.state as string) + const isLinked = await linkGitAppInstallationWithOrganization(queryParams.installation_id as string, queryParams.state as string) + if (isLinked){ + router.reload() + } + console.log("installation verification complete") }catch (e){ console.log("app installation is stale, start new session", e) From 139ca9022e313f55d6fe1c858e3d601090448d03 Mon Sep 17 00:00:00 2001 From: Maidul Islam Date: Mon, 17 Jul 2023 17:36:57 -0400 Subject: [PATCH 17/49] Update build-staging-img.yml --- .github/workflows/build-staging-img.yml | 30 ------------------------- 1 file changed, 30 deletions(-) diff --git a/.github/workflows/build-staging-img.yml b/.github/workflows/build-staging-img.yml index dc991ae0b..3ff23ba23 100644 --- a/.github/workflows/build-staging-img.yml +++ b/.github/workflows/build-staging-img.yml @@ -105,36 +105,6 @@ jobs: platforms: linux/amd64,linux/arm64 build-args: | POSTHOG_API_KEY=${{ secrets.PUBLIC_POSTHOG_API_KEY }} - - secret-scanning-git-app: - name: Build secret scanning git app - runs-on: ubuntu-latest - steps: - - name: ☁️ Checkout source - uses: actions/checkout@v3 - - name: Save commit hashes for tag - id: commit - uses: pr-mpt/actions-commit-hash@v2 - - name: 🔧 Set up Docker Buildx - uses: docker/setup-buildx-action@v2 - - name: 🐋 Login to Docker Hub - uses: docker/login-action@v2 - with: - username: ${{ secrets.DOCKERHUB_USERNAME }} - password: ${{ secrets.DOCKERHUB_TOKEN }} - - name: Set up Depot CLI - uses: depot/setup-action@v1 - - name: 🏗️ Build secret scanning git app and push - uses: depot/build-push-action@v1 - with: - project: 64mmf0n610 - push: true - token: ${{ secrets.DEPOT_PROJECT_TOKEN }} - context: secret-engine - tags: | - infisical/staging_deployment_secret-scanning-git-app:${{ steps.commit.outputs.short }} - infisical/staging_deployment_secret-scanning-git-app:latest - platforms: linux/amd64,linux/arm64 gamma-deployment: name: Deploy to gamma runs-on: ubuntu-latest From 178d444deb2249e07f57e80b42af868e01115a01 Mon Sep 17 00:00:00 2001 From: Maidul Islam Date: Mon, 17 Jul 2023 18:57:43 -0400 Subject: [PATCH 18/49] add web hook under api temporarily --- backend/src/index.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/backend/src/index.ts b/backend/src/index.ts index fe40a0a43..0d923fd85 100644 --- a/backend/src/index.ts +++ b/backend/src/index.ts @@ -41,8 +41,8 @@ import { signup as v1SignupRouter, userAction as v1UserActionRouter, user as v1UserRouter, - workspace as v1WorkspaceRouter, - webhooks as v1WebhooksRouter + webhooks as v1WebhooksRouter, + workspace as v1WorkspaceRouter } from "./routes/v1"; import { auth as v2AuthRouter, @@ -105,7 +105,7 @@ const main = async () => { smee.start() } - app.use(createNodeMiddleware(GithubSecretScanningService, { probot, webhooksPath: "/ss-webhook" })); // secret scanning webhook + app.use(createNodeMiddleware(GithubSecretScanningService, { probot, webhooksPath: "api/ss-webhook" })); // secret scanning webhook } if ((await getNodeEnv()) === "production") { From 4cd203c194f437e281a481755007602aaf5c0a24 Mon Sep 17 00:00:00 2001 From: Maidul Islam Date: Mon, 17 Jul 2023 19:56:07 -0400 Subject: [PATCH 19/49] add ss-webhook to values file k8-infisical --- backend/src/index.ts | 2 +- helm-charts/infisical/Chart.yaml | 2 +- helm-charts/infisical/templates/ingress.yaml | 7 +++ helm-charts/infisical/values.yaml | 52 -------------------- 4 files changed, 9 insertions(+), 54 deletions(-) diff --git a/backend/src/index.ts b/backend/src/index.ts index 0d923fd85..251340526 100644 --- a/backend/src/index.ts +++ b/backend/src/index.ts @@ -105,7 +105,7 @@ const main = async () => { smee.start() } - app.use(createNodeMiddleware(GithubSecretScanningService, { probot, webhooksPath: "api/ss-webhook" })); // secret scanning webhook + app.use(createNodeMiddleware(GithubSecretScanningService, { probot, webhooksPath: "/ss-webhook" })); // secret scanning webhook } if ((await getNodeEnv()) === "production") { diff --git a/helm-charts/infisical/Chart.yaml b/helm-charts/infisical/Chart.yaml index 01d6524d1..6f7f359ba 100644 --- a/helm-charts/infisical/Chart.yaml +++ b/helm-charts/infisical/Chart.yaml @@ -7,7 +7,7 @@ type: application # This is the chart version. This version number should be incremented each time you make changes # to the chart and its templates, including the app version. # Versions are expected to follow Semantic Versioning (https://semver.org/) -version: 0.2.0 +version: 0.2.1 # This is the version number of the application being deployed. This version number should be # incremented each time you make changes to the application. Versions are not expected to diff --git a/helm-charts/infisical/templates/ingress.yaml b/helm-charts/infisical/templates/ingress.yaml index a675fa2ff..659948510 100644 --- a/helm-charts/infisical/templates/ingress.yaml +++ b/helm-charts/infisical/templates/ingress.yaml @@ -44,6 +44,13 @@ spec: name: {{ include "infisical.backend.fullname" . }} port: number: 4000 + - path: /ss-webhook + pathType: Exact + backend: + service: + name: {{ include "infisical.backend.fullname" . }} + port: + number: 4000 {{- if $ingress.hostName }} host: {{ $ingress.hostName }} {{- end }} diff --git a/helm-charts/infisical/values.yaml b/helm-charts/infisical/values.yaml index d346dca86..a65f59223 100644 --- a/helm-charts/infisical/values.yaml +++ b/helm-charts/infisical/values.yaml @@ -169,53 +169,6 @@ backendEnvironmentVariables: ## MONGO_URL: "" -secretScanningGitApp: - ## @param backend.enabled Enable git scanning app - ## - enabled: false - ## @param backend.name Backend name - ## - name: secret-scanning-git-app - ## @param backend.fullnameOverride Backend fullnameOverride - ## - fullnameOverride: "" - ## @param backend.podAnnotations Backend pod annotations - ## - podAnnotations: {} - ## @param backend.deploymentAnnotations Backend deployment annotations - ## - deploymentAnnotations: {} - ## @param backend.replicaCount Backend replica count - ## - replicaCount: 2 - ## Backend image parameters - ## - image: - ## @param backend.image.repository Backend image repository - ## - repository: infisical/staging_deployment_secret-scanning-git-app - ## @param backend.image.tag Backend image tag - ## - tag: "latest" - ## @param backend.image.pullPolicy Backend image pullPolicy - ## - pullPolicy: IfNotPresent - ## @param backend.kubeSecretRef Backend secret resource reference name (containing required [backend configuration variables](https://infisical.com/docs/self-hosting/configuration/envars)) - ## - kubeSecretRef: "" - ## Backend service - ## - service: - ## @param backend.service.annotations Backend service annotations - ## - annotations: {} - ## @param backend.service.type Backend service type - ## - type: ClusterIP - ## @param backend.service.nodePort Backend service nodePort (used if above type is `NodePort`) - ## - nodePort: "" - ## @section MongoDB(®) parameters ## Documentation : https://github.com/bitnami/charts/blob/main/bitnami/mongodb/values.yaml ## @@ -374,11 +327,6 @@ ingress: backend: path: /api pathType: Prefix - ## @skip ingress.backend - ## - secretScanningGitApp: - path: /git-app-api - pathType: Prefix ## @param ingress.tls Ingress TLS hosts (matching above hostName) ## Replace with your own domain ## From c450b01763e6f4538a91e3a4d77d5b9e6cf6f53a Mon Sep 17 00:00:00 2001 From: Maidul Islam Date: Mon, 17 Jul 2023 20:20:11 -0400 Subject: [PATCH 20/49] update email for secret leak --- backend/src/templates/secretLeakIncident.handlebars | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/backend/src/templates/secretLeakIncident.handlebars b/backend/src/templates/secretLeakIncident.handlebars index f38a5d728..1bf2d3175 100644 --- a/backend/src/templates/secretLeakIncident.handlebars +++ b/backend/src/templates/secretLeakIncident.handlebars @@ -10,13 +10,14 @@

Infisical has uncovered {{numberOfSecrets}} secret(s) from your recent push

View leaked secrets

-

One or more secret leaks have been detected in a recent commit pushed by {{pusher_name}} ({{pusher_email}}). If +

You are receiving this notification because one or more secret leaks have been detected in a recent commit pushed + by {{pusher_name}} ({{pusher_email}}). If these are test secrets, please add `infisical-scan:ignore` at the end of the line containing the secret as comment - in the given programming. This will prevent future notifications from being sent out for the given secret(s).

+ in the given programming. This will prevent future notifications from being sent out for those secret(s).

If these are production secrets, please rotate them immediately.

-

Once you have taken action, be sure to update the status of the risk in yourOnce you have taken action, be sure to update the status of the risk in your Infisical dashboard.

From 040243d4f7a6563b8d43716b4a3fa050d6796d04 Mon Sep 17 00:00:00 2001 From: Maidul Islam Date: Mon, 17 Jul 2023 20:29:07 -0400 Subject: [PATCH 21/49] add telemetry for cloud secret scanning --- backend/src/services/GithubSecretScanningService.ts | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/backend/src/services/GithubSecretScanningService.ts b/backend/src/services/GithubSecretScanningService.ts index cda2351c4..2161781ad 100644 --- a/backend/src/services/GithubSecretScanningService.ts +++ b/backend/src/services/GithubSecretScanningService.ts @@ -9,6 +9,7 @@ import MembershipOrg from "../models/membershipOrg"; import { ADMIN, OWNER } from "../variables"; import User from "../models/user"; import { sendMail } from "../helpers"; +import TelemetryService from "./TelemetryService"; type SecretMatch = { Description: string; @@ -146,6 +147,18 @@ export default async (app: Probot) => { pusher_name: pusher.name } }); + + const postHogClient = await TelemetryService.getPostHogClient(); + if (postHogClient) { + postHogClient.capture({ + event: "cloud secret scan", + distinctId: pusher.email, + properties: { + numberOfCommitsScanned: commits.length, + numberOfRisksFound: Object.keys(allFindingsByFingerprint).length, + } + }); + } }); }; From 0d2e55a06fea29fcdc32a8d73981836eeea7258e Mon Sep 17 00:00:00 2001 From: Maidul Islam Date: Mon, 17 Jul 2023 20:29:20 -0400 Subject: [PATCH 22/49] add telemetry for cloud secret scanning --- backend/src/services/GithubSecretScanningService.ts | 9 --------- 1 file changed, 9 deletions(-) diff --git a/backend/src/services/GithubSecretScanningService.ts b/backend/src/services/GithubSecretScanningService.ts index 2161781ad..7baf4ad7f 100644 --- a/backend/src/services/GithubSecretScanningService.ts +++ b/backend/src/services/GithubSecretScanningService.ts @@ -128,15 +128,6 @@ export default async (app: Probot) => { const adminOrOwnerEmails = userEmails.map(userObject => userObject.email) - - // TODO - // don't notify if the risk is marked as false positive - - // loop through each finding and check if the finger print without commit has a status of false positive, if so don't add it to the list of risks that need to be notified - - - - await sendMail({ template: "secretLeakIncident.handlebars", subjectLine: `Incident alert: leaked secrets found in Github repository ${repository.full_name}`, From f37b497e48b222e694619bd0286fe2a8147da0d3 Mon Sep 17 00:00:00 2001 From: Maidul Islam Date: Mon, 17 Jul 2023 21:11:27 -0400 Subject: [PATCH 23/49] Update overview.mdx --- docs/self-hosting/overview.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/self-hosting/overview.mdx b/docs/self-hosting/overview.mdx index ed6e9f12c..f30c63820 100644 --- a/docs/self-hosting/overview.mdx +++ b/docs/self-hosting/overview.mdx @@ -8,7 +8,7 @@ Self-hosted Infisical allows you to maintain your sensitive information within y Choose from a variety of deployment options listed below to get started. From 993abd092197aa8212cd80f09642a9a4e96ef14e Mon Sep 17 00:00:00 2001 From: Maidul Islam Date: Mon, 17 Jul 2023 21:28:47 -0400 Subject: [PATCH 24/49] add secret scanning status to api --- backend/src/index.ts | 2 +- backend/src/routes/status/status.ts | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/backend/src/index.ts b/backend/src/index.ts index 251340526..b5f1b6ddd 100644 --- a/backend/src/index.ts +++ b/backend/src/index.ts @@ -88,7 +88,7 @@ const main = async () => { }) ); - if (await getSecretScanningGitAppId()) { + if (await getSecretScanningGitAppId() && await getSecretScanningWebhookSecret() && await getSecretScanningPrivateKey()) { const probot = new Probot({ appId: await getSecretScanningGitAppId(), privateKey: await getSecretScanningPrivateKey(), diff --git a/backend/src/routes/status/status.ts b/backend/src/routes/status/status.ts index 0af4bb5c2..ce13775cb 100644 --- a/backend/src/routes/status/status.ts +++ b/backend/src/routes/status/status.ts @@ -1,5 +1,5 @@ import express, { Request, Response } from "express"; -import { getSmtpConfigured } from "../../config"; +import { getSecretScanningGitAppId, getSecretScanningPrivateKey, getSecretScanningWebhookSecret, getSmtpConfigured } from "../../config"; const router = express.Router(); @@ -10,6 +10,7 @@ router.get( date: new Date(), message: "Ok", emailConfigured: await getSmtpConfigured(), + secretScanningConfigured: await getSecretScanningGitAppId() && await getSecretScanningWebhookSecret() && await getSecretScanningPrivateKey(), }) } ); From 49ae61da0897755a81e013ace8cdfe98d3f8c6b6 Mon Sep 17 00:00:00 2001 From: Maidul Islam Date: Mon, 17 Jul 2023 21:49:58 -0400 Subject: [PATCH 25/49] remove border from risk selection --- .../src/views/SecretScanning/components/RiskStatusSelection.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/views/SecretScanning/components/RiskStatusSelection.tsx b/frontend/src/views/SecretScanning/components/RiskStatusSelection.tsx index afc809e93..54b66725d 100644 --- a/frontend/src/views/SecretScanning/components/RiskStatusSelection.tsx +++ b/frontend/src/views/SecretScanning/components/RiskStatusSelection.tsx @@ -17,7 +17,7 @@ export const RiskStatusSelection = ({riskId, currentSelection}: {riskId: any, cu + + )} + control={control} + name="name" + /> +
+ + + ); +}; diff --git a/frontend/src/views/Settings/PersonalSettingsPage/UserNameSection/index.tsx b/frontend/src/views/Settings/PersonalSettingsPage/UserNameSection/index.tsx new file mode 100644 index 000000000..bbd771d3e --- /dev/null +++ b/frontend/src/views/Settings/PersonalSettingsPage/UserNameSection/index.tsx @@ -0,0 +1 @@ +export { UserNameSection } from "./UserNameSection"; \ No newline at end of file diff --git a/frontend/src/views/Settings/ProjectSettingsPage/ProjectSettingsPage.tsx b/frontend/src/views/Settings/ProjectSettingsPage/ProjectSettingsPage.tsx index 75f67aa6a..aa5383bd9 100644 --- a/frontend/src/views/Settings/ProjectSettingsPage/ProjectSettingsPage.tsx +++ b/frontend/src/views/Settings/ProjectSettingsPage/ProjectSettingsPage.tsx @@ -26,15 +26,13 @@ export const ProjectSettingsPage = () => {

{t("settings.project.title")}

- + {tabs.map((tab) => ( {({ selected }) => ( diff --git a/frontend/src/views/Settings/ProjectSettingsPage/components/ProjectNameChangeSection/ProjectNameChangeSection.tsx b/frontend/src/views/Settings/ProjectSettingsPage/components/ProjectNameChangeSection/ProjectNameChangeSection.tsx index a4a606476..66ad4c5b0 100644 --- a/frontend/src/views/Settings/ProjectSettingsPage/components/ProjectNameChangeSection/ProjectNameChangeSection.tsx +++ b/frontend/src/views/Settings/ProjectSettingsPage/components/ProjectNameChangeSection/ProjectNameChangeSection.tsx @@ -1,6 +1,5 @@ import { useEffect } from "react"; import { Controller, useForm } from "react-hook-form"; -import { useTranslation } from "react-i18next"; import { yupResolver } from "@hookform/resolvers/yup"; import * as yup from "yup"; @@ -27,7 +26,6 @@ export const ProjectNameChangeSection = () => { control, reset } = useForm({ resolver: yupResolver(formSchema) }); - const { t } = useTranslation(); useEffect(() => { if (currentWorkspace) { @@ -67,7 +65,7 @@ export const ProjectNameChangeSection = () => { className="p-4 bg-mineshaft-900 mb-6 rounded-lg border border-mineshaft-600" >

- {t("common.display-name")} + Project Name

Date: Tue, 18 Jul 2023 23:58:50 -0400 Subject: [PATCH 32/49] add secret import to k8 operator --- k8-operator/packages/api/api.go | 1 + k8-operator/packages/api/models.go | 79 ++++++++++++++++------------ k8-operator/packages/util/secrets.go | 46 +++++++++++++--- 3 files changed, 86 insertions(+), 40 deletions(-) diff --git a/k8-operator/packages/api/api.go b/k8-operator/packages/api/api.go index 0dd3d7a6f..0b750469f 100644 --- a/k8-operator/packages/api/api.go +++ b/k8-operator/packages/api/api.go @@ -56,6 +56,7 @@ func CallGetSecretsV3(httpClient *resty.Client, request GetEncryptedSecretsV3Req SetHeader("User-Agent", USER_AGENT_NAME). SetHeader("If-None-Match", request.ETag). SetQueryParam("environment", request.Environment). + SetQueryParam("include_imports", "true"). // TODO needs to be set as a option SetQueryParam("workspaceId", request.WorkspaceId) if request.SecretPath != "" { diff --git a/k8-operator/packages/api/models.go b/k8-operator/packages/api/models.go index 8e68d65c5..a72ccfc49 100644 --- a/k8-operator/packages/api/models.go +++ b/k8-operator/packages/api/models.go @@ -29,43 +29,54 @@ type GetEncryptedWorkspaceKeyResponse struct { } type GetEncryptedSecretsV3Request struct { - Environment string `json:"environment"` - WorkspaceId string `json:"workspaceId"` - SecretPath string `json:"secretPath"` - ETag string `json:"etag,omitempty"` + Environment string `json:"environment"` + WorkspaceId string `json:"workspaceId"` + SecretPath string `json:"secretPath"` + IncludeImport bool `json:"include_imports"` + ETag string `json:"etag,omitempty"` +} + +type EncryptedSecretV3 struct { + ID string `json:"_id"` + Version int `json:"version"` + Workspace string `json:"workspace"` + Type string `json:"type"` + Tags []struct { + ID string `json:"_id"` + Name string `json:"name"` + Slug string `json:"slug"` + Workspace string `json:"workspace"` + } `json:"tags"` + Environment string `json:"environment"` + SecretKeyCiphertext string `json:"secretKeyCiphertext"` + SecretKeyIV string `json:"secretKeyIV"` + SecretKeyTag string `json:"secretKeyTag"` + SecretValueCiphertext string `json:"secretValueCiphertext"` + SecretValueIV string `json:"secretValueIV"` + SecretValueTag string `json:"secretValueTag"` + SecretCommentCiphertext string `json:"secretCommentCiphertext"` + SecretCommentIV string `json:"secretCommentIV"` + SecretCommentTag string `json:"secretCommentTag"` + Algorithm string `json:"algorithm"` + KeyEncoding string `json:"keyEncoding"` + Folder string `json:"folder"` + V int `json:"__v"` + CreatedAt time.Time `json:"createdAt"` + UpdatedAt time.Time `json:"updatedAt"` +} + +type ImportedSecretV3 struct { + Environment string `json:"environment"` + FolderId string `json:"folderId"` + SecretPath string `json:"secretPath"` + Secrets []EncryptedSecretV3 `json:"secrets"` } type GetEncryptedSecretsV3Response struct { - Secrets []struct { - ID string `json:"_id"` - Version int `json:"version"` - Workspace string `json:"workspace"` - Type string `json:"type"` - Tags []struct { - ID string `json:"_id"` - Name string `json:"name"` - Slug string `json:"slug"` - Workspace string `json:"workspace"` - } `json:"tags"` - Environment string `json:"environment"` - SecretKeyCiphertext string `json:"secretKeyCiphertext"` - SecretKeyIV string `json:"secretKeyIV"` - SecretKeyTag string `json:"secretKeyTag"` - SecretValueCiphertext string `json:"secretValueCiphertext"` - SecretValueIV string `json:"secretValueIV"` - SecretValueTag string `json:"secretValueTag"` - SecretCommentCiphertext string `json:"secretCommentCiphertext"` - SecretCommentIV string `json:"secretCommentIV"` - SecretCommentTag string `json:"secretCommentTag"` - Algorithm string `json:"algorithm"` - KeyEncoding string `json:"keyEncoding"` - Folder string `json:"folder"` - V int `json:"__v"` - CreatedAt time.Time `json:"createdAt"` - UpdatedAt time.Time `json:"updatedAt"` - } `json:"secrets"` - Modified bool `json:"modified,omitempty"` - ETag string `json:"ETag,omitempty"` + Secrets []EncryptedSecretV3 `json:"secrets"` + ImportedSecrets []ImportedSecretV3 `json:"imports,omitempty"` + Modified bool `json:"modified,omitempty"` + ETag string `json:"ETag,omitempty"` } type GetServiceTokenDetailsResponse struct { diff --git a/k8-operator/packages/util/secrets.go b/k8-operator/packages/util/secrets.go index 28ba47253..d3e13f536 100644 --- a/k8-operator/packages/util/secrets.go +++ b/k8-operator/packages/util/secrets.go @@ -89,13 +89,18 @@ func GetPlainTextSecretsViaServiceToken(fullServiceToken string, etag string, en return nil, api.GetEncryptedSecretsV3Response{}, fmt.Errorf("unable to decrypt the required workspace key") } - plainTextSecrets, err := GetPlainTextSecrets(plainTextWorkspaceKey, encryptedSecretsResponse) + plainTextSecrets, err := GetPlainTextSecrets(plainTextWorkspaceKey, encryptedSecretsResponse.Secrets) if err != nil { return nil, api.GetEncryptedSecretsV3Response{}, fmt.Errorf("unable to decrypt your secrets [err=%v]", err) } + plainTextSecretsMergedWithImports, err := InjectImportedSecret(plainTextWorkspaceKey, plainTextSecrets, encryptedSecretsResponse.ImportedSecrets) + if err != nil { + return nil, api.GetEncryptedSecretsV3Response{}, err + } + // expand secrets that are referenced - expandedSecrets := ExpandSecrets(plainTextSecrets, fullServiceToken) + expandedSecrets := ExpandSecrets(plainTextSecretsMergedWithImports, fullServiceToken) return expandedSecrets, encryptedSecretsResponse, nil } @@ -163,7 +168,7 @@ func GetPlainTextSecretsViaServiceAccount(serviceAccountCreds model.ServiceAccou return nil, api.GetEncryptedSecretsV3Response{}, fmt.Errorf("unable to fetch secrets because [err=%v]", err) } - plainTextSecrets, err := GetPlainTextSecrets(plainTextWorkspaceKey, encryptedSecretsResponse) + plainTextSecrets, err := GetPlainTextSecrets(plainTextWorkspaceKey, encryptedSecretsResponse.Secrets) if err != nil { return nil, api.GetEncryptedSecretsV3Response{}, fmt.Errorf("GetPlainTextSecretsViaServiceAccount: unable to get plain text secrets because [err=%v]", err) } @@ -200,9 +205,9 @@ func GetBase64DecodedSymmetricEncryptionDetails(key string, cipher string, IV st }, nil } -func GetPlainTextSecrets(key []byte, encryptedSecretsResponse api.GetEncryptedSecretsV3Response) ([]model.SingleEnvironmentVariable, error) { +func GetPlainTextSecrets(key []byte, encryptedSecrets []api.EncryptedSecretV3) ([]model.SingleEnvironmentVariable, error) { plainTextSecrets := []model.SingleEnvironmentVariable{} - for _, secret := range encryptedSecretsResponse.Secrets { + for _, secret := range encryptedSecrets { // Decrypt key key_iv, err := base64.StdEncoding.DecodeString(secret.SecretKeyIV) if err != nil { @@ -332,7 +337,7 @@ func ExpandSecrets(secrets []model.SingleEnvironmentVariable, infisicalToken str // if not in cross reference cache, fetch it from server refSecs, _, err := GetPlainTextSecretsViaServiceToken(infisicalToken, "", env, secPath) if err != nil { - fmt.Println("HELLO===>", "MOO", err) + fmt.Printf("Could not fetch secrets in environment: %s secret-path: %s", env, secPath) // HandleError(err, fmt.Sprintf("Could not fetch secrets in environment: %s secret-path: %s", env, secPath), "If you are using a service token to fetch secrets, please ensure it is valid") } refSecsByKey := getSecretsByKeys(refSecs) @@ -358,3 +363,32 @@ func getSecretsByKeys(secrets []model.SingleEnvironmentVariable) map[string]mode return secretMapByName } + +func InjectImportedSecret(plainTextWorkspaceKey []byte, secrets []model.SingleEnvironmentVariable, importedSecrets []api.ImportedSecretV3) ([]model.SingleEnvironmentVariable, error) { + if importedSecrets == nil { + return secrets, nil + } + + hasOverriden := make(map[string]bool) + for _, sec := range secrets { + hasOverriden[sec.Key] = true + } + + for i := len(importedSecrets) - 1; i >= 0; i-- { + importSec := importedSecrets[i] + plainTextImportedSecrets, err := GetPlainTextSecrets(plainTextWorkspaceKey, importSec.Secrets) + + if err != nil { + return nil, fmt.Errorf("unable to decrypt your imported secrets [err=%v]", err) + } + + for _, sec := range plainTextImportedSecrets { + if _, ok := hasOverriden[sec.Key]; !ok { + secrets = append(secrets, sec) + hasOverriden[sec.Key] = true + } + } + } + + return secrets, nil +} From da9cb701841a0b66ea7a302e204106ea45a285ee Mon Sep 17 00:00:00 2001 From: Maidul Islam Date: Wed, 19 Jul 2023 00:05:19 -0400 Subject: [PATCH 33/49] only send risk notif when risks are found --- .../services/GithubSecretScanningService.ts | 22 ++++++++++--------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/backend/src/services/GithubSecretScanningService.ts b/backend/src/services/GithubSecretScanningService.ts index e9fcdf5f6..295be13b9 100644 --- a/backend/src/services/GithubSecretScanningService.ts +++ b/backend/src/services/GithubSecretScanningService.ts @@ -129,16 +129,18 @@ export default async (app: Probot) => { const adminOrOwnerEmails = userEmails.map(userObject => userObject.email) const usersToNotify = pusher?.email ? [pusher.email, ...adminOrOwnerEmails] : [...adminOrOwnerEmails] - await sendMail({ - template: "secretLeakIncident.handlebars", - subjectLine: `Incident alert: leaked secrets found in Github repository ${repository.full_name}`, - recipients: usersToNotify, - substitutions: { - numberOfSecrets: Object.keys(allFindingsByFingerprint).length, - pusher_email: pusher.email, - pusher_name: pusher.name - } - }); + if (Object.keys(allFindingsByFingerprint).length) { + await sendMail({ + template: "secretLeakIncident.handlebars", + subjectLine: `Incident alert: leaked secrets found in Github repository ${repository.full_name}`, + recipients: usersToNotify, + substitutions: { + numberOfSecrets: Object.keys(allFindingsByFingerprint).length, + pusher_email: pusher.email, + pusher_name: pusher.name + } + }); + } const postHogClient = await TelemetryService.getPostHogClient(); if (postHogClient) { From d272f580cff592be01aec129a63a6bf3f9621562 Mon Sep 17 00:00:00 2001 From: Maidul Islam Date: Wed, 19 Jul 2023 00:25:22 -0400 Subject: [PATCH 34/49] update k8 helm for import feature --- helm-charts/secrets-operator/Chart.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/helm-charts/secrets-operator/Chart.yaml b/helm-charts/secrets-operator/Chart.yaml index d44467dec..1452c4638 100644 --- a/helm-charts/secrets-operator/Chart.yaml +++ b/helm-charts/secrets-operator/Chart.yaml @@ -18,4 +18,4 @@ version: 0.2.0 # incremented each time you make changes to the application. Versions are not expected to # follow Semantic Versioning. They should reflect the version the application is using. # It is recommended to use it with quotes. -appVersion: "0.2.0" +appVersion: "0.3.0" From abbf3e80f9f68021f60ff9a9e2308ca1f12f5cdc Mon Sep 17 00:00:00 2001 From: Maidul Islam Date: Wed, 19 Jul 2023 00:31:45 -0400 Subject: [PATCH 35/49] Update secret-reference.mdx --- docs/documentation/platform/secret-reference.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/documentation/platform/secret-reference.mdx b/docs/documentation/platform/secret-reference.mdx index 8df6fce72..ffae77e2b 100644 --- a/docs/documentation/platform/secret-reference.mdx +++ b/docs/documentation/platform/secret-reference.mdx @@ -29,7 +29,7 @@ Here are a few more examples to help you understand how to reference secrets in ## Fetching fully constructed values Secret referencing combines multiple secrets into one unified value, reconstructed only on the client side. To retrieve this value, you need access to read the environment and [folder](./folder) from where the secrets originate. -For instance, to access a secret 'A' composed of secrets 'B' and 'C' from different environments, you must have read access to both. +For instance, to access a secret 'A' composed of secrets 'B' and 'C' from different environments, you must have read access to both 'A' and 'B' When using [service tokens](./token) to fetch referenced secrets, ensure the service token has read access to all referenced environments and folders. Without proper permissions, the final secret value may be incomplete. From 4684c9f8b1ac237396e1d08a0e239adc4eb8d838 Mon Sep 17 00:00:00 2001 From: Maidul Islam Date: Wed, 19 Jul 2023 00:40:32 -0400 Subject: [PATCH 36/49] Update secret-reference.mdx --- docs/documentation/platform/secret-reference.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/documentation/platform/secret-reference.mdx b/docs/documentation/platform/secret-reference.mdx index ffae77e2b..1b4e7bbc3 100644 --- a/docs/documentation/platform/secret-reference.mdx +++ b/docs/documentation/platform/secret-reference.mdx @@ -34,7 +34,7 @@ For instance, to access a secret 'A' composed of secrets 'B' and 'C' from differ When using [service tokens](./token) to fetch referenced secrets, ensure the service token has read access to all referenced environments and folders. Without proper permissions, the final secret value may be incomplete. -## Import multiple secrets from a environment secret path +## Import entire folders You can import or link another environment's folder to your dashboard to inherit its secrets. This is useful when you need to share secrets across multiple environments. From 8960773150cf09f991c0ca9b9d5931083786bfc3 Mon Sep 17 00:00:00 2001 From: vmatsiiako <78047717+vmatsiiako@users.noreply.github.com> Date: Tue, 18 Jul 2023 21:51:18 -0700 Subject: [PATCH 37/49] Update overview.mdx --- docs/changelog/overview.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/changelog/overview.mdx b/docs/changelog/overview.mdx index 3ff0736f4..1394d12df 100644 --- a/docs/changelog/overview.mdx +++ b/docs/changelog/overview.mdx @@ -6,7 +6,7 @@ The changelog below reflects new product developments and updates on a monthly b ## July 2023 -- Released [secret referencing](https://infisical.com/docs/documentation/platform/secret-reference) across folders and environments. +- Released [secret referencing and importing](https://infisical.com/docs/documentation/platform/secret-reference) across folders and environments. - Added the [intergation with Laravel Forge](https://infisical.com/docs/integrations/cloud/laravel-forge). - Redesigned the project/organization experience. From 284608762bb08fd402a32d8c69809420e92e1f65 Mon Sep 17 00:00:00 2001 From: Maidul Islam Date: Wed, 19 Jul 2023 00:57:22 -0400 Subject: [PATCH 38/49] update secret import docs --- .../platform/secret-reference.mdx | 13 ++++++++----- docs/images/secret-import-add.png | Bin 99629 -> 281233 bytes docs/images/secret-import-change-order.png | Bin 103473 -> 295414 bytes 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/docs/documentation/platform/secret-reference.mdx b/docs/documentation/platform/secret-reference.mdx index 1b4e7bbc3..4192e1606 100644 --- a/docs/documentation/platform/secret-reference.mdx +++ b/docs/documentation/platform/secret-reference.mdx @@ -36,14 +36,17 @@ Without proper permissions, the final secret value may be incomplete. ## Import entire folders -You can import or link another environment's folder to your dashboard to inherit its secrets. This is useful when you need to share secrets across multiple environments. +While secret referencing effectively minimizes duplication, there might be instances where you need to import or replicate an entire folder's secrets into another. This can be achieved using the 'Import' feature. -To add an import/link, just click on `Secret Link` button and provide an `environment` and `secret path` to which the secrets must be pulled. +This feature allows you to link secrets from one environment/folder into another environment/folder. It proves beneficial when you have common secrets that need to be available across multiple environments/folders. + +To add an import, simply click on the `Add import` button and provide the environment and secret path from where the secrets should be imported. ![secret import change order](../../images/secret-import-add.png) -The import hierarchy is "last one wins." This means that the order in which you import matters. The last folder you import will override the secrets from any previous folders. Additionally, any secrets you define in your dashboard will override the secrets from any imported folders. +The hierarchy of importing secrets is governed by a "last-one-wins" rule. This means the sequence in which you import matters - the final folder imported will override secrets from any prior folders. +Moreover, any secrets you define directly in your environment will take precedence over secrets from any imported folders. -You can change the order by dragging and positioning according using the `Change Order` drag handle. +You can modify this sequence by dragging and rearranging the folders using the `Change Order` drag handle. -![secret import change order](../../images/secret-import-change-order.png +![secret import change order](../../images/secret-import-change-order.png) diff --git a/docs/images/secret-import-add.png b/docs/images/secret-import-add.png index 1376fd41211c8e5746d47676585e7ebcc44bdbc8..67445dd1621c9a0ee13ebea8a3c3be385bbe3552 100644 GIT binary patch literal 281233 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

T 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 Bc`X0{ literal 99629 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

olQIuWjS0BbX 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 PHpZWMVeIp#r{4SzCE~*% literal 103473 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 Date: Wed, 19 Jul 2023 16:22:25 +0100 Subject: [PATCH 39/49] Codefresh integration Worked on codefresh integration syncing secrets to infiscial --- backend/src/integrations/apps.ts | 89 ++- backend/src/integrations/sync.ts | 533 +++++++++++------- backend/src/models/integration.ts | 5 +- backend/src/models/integrationAuth.ts | 4 +- backend/src/variables/integration.ts | 18 +- .../public/images/integrations/codefresh.png | Bin 0 -> 34956 bytes .../src/hooks/api/integrationAuth/index.tsx | 2 +- .../src/hooks/api/integrationAuth/queries.tsx | 4 + .../integrations/codefresh/authorize.tsx | 64 +++ .../pages/integrations/codefresh/create.tsx | 155 +++++ .../IntegrationPage.utils.tsx | 4 + .../IntegrationsPage/IntegrationsPage.tsx | 1 + .../IntegrationsSection.tsx | 1 + 13 files changed, 641 insertions(+), 239 deletions(-) create mode 100644 frontend/public/images/integrations/codefresh.png create mode 100644 frontend/src/pages/integrations/codefresh/authorize.tsx create mode 100644 frontend/src/pages/integrations/codefresh/create.tsx diff --git a/backend/src/integrations/apps.ts b/backend/src/integrations/apps.ts index bc8f01a80..2b5940998 100644 --- a/backend/src/integrations/apps.ts +++ b/backend/src/integrations/apps.ts @@ -30,6 +30,9 @@ import { INTEGRATION_TRAVISCI_API_URL, INTEGRATION_VERCEL, INTEGRATION_VERCEL_API_URL, + INTEGRATION_CODEFRESH, + INTEGRATION_CODEFRESH_API_URL + } from "../variables"; interface App { @@ -137,6 +140,11 @@ const getApps = async ({ accountId: accessId }) break; + case INTEGRATION_CODEFRESH: + apps = await getAppsCodefresh({ + accessToken, + }); + break; } return apps; @@ -188,10 +196,10 @@ const getAppsVercel = async ({ }, ...(integrationAuth?.teamId ? { - params: { - teamId: integrationAuth.teamId, - }, - } + params: { + teamId: integrationAuth.teamId, + }, + } : {}), }) ).data; @@ -653,30 +661,61 @@ const getAppsCheckly = async ({ accessToken }: { accessToken: string }) => { * @returns {Object[]} apps - Cloudflare Pages projects * @returns {String} apps.name - name of Cloudflare Pages project */ -const getAppsCloudflarePages = async ({ - accessToken, - accountId +const getAppsCloudflarePages = async ({ + accessToken, + accountId }: { - accessToken: string; - accountId?: string; + accessToken: string; + accountId?: string; }) => { - const { data } = await standardRequest.get( - `${INTEGRATION_CLOUDFLARE_PAGES_API_URL}/client/v4/accounts/${accountId}/pages/projects`, - { - headers: { - Authorization: `Bearer ${accessToken}`, - "Accept": "application/json", - }, - } - ); + const { data } = await standardRequest.get( + `${INTEGRATION_CLOUDFLARE_PAGES_API_URL}/client/v4/accounts/${accountId}/pages/projects`, + { + headers: { + Authorization: `Bearer ${accessToken}`, + "Accept": "application/json", + }, + } + ); - const apps = data.result.map((a: any) => { - return { - name: a.name, - appId: a.id, - }; - }); - return apps; + const apps = data.result.map((a: any) => { + return { + name: a.name, + appId: a.id, + }; + }); + return apps; } + +/** + * Return list of projects for Supabase integration + * @param {Object} obj + * @param {String} obj.accessToken - access token for Supabase API + * @returns {Object[]} apps - names of Supabase apps + * @returns {String} apps.name - name of Supabase app + */ + +const getAppsCodefresh = async ({ + accessToken, +}: { + accessToken: string; +}) => { + const res = ( + await standardRequest.get(`${INTEGRATION_CODEFRESH_API_URL}/projects`, { + headers: { + Authorization: `Bearer ${accessToken}`, + "Accept-Encoding": "application/json", + }, + }) + ).data; + + const apps = res.projects.map((a: any) => ({ + name: a.projectName, + appId: a.id, + })); + + return apps; + +}; export { getApps }; diff --git a/backend/src/integrations/sync.ts b/backend/src/integrations/sync.ts index 0cc3a9438..93eaf22be 100644 --- a/backend/src/integrations/sync.ts +++ b/backend/src/integrations/sync.ts @@ -1,7 +1,7 @@ import _ from "lodash"; import AWS from "aws-sdk"; -import { - CreateSecretCommand, +import { + CreateSecretCommand, GetSecretValueCommand, ResourceNotFoundException, SecretsManagerClient, @@ -40,8 +40,10 @@ import { INTEGRATION_TRAVISCI_API_URL, INTEGRATION_VERCEL, INTEGRATION_VERCEL_API_URL, + INTEGRATION_CODEFRESH, + INTEGRATION_CODEFRESH_API_URL } from "../variables"; -import { standardRequest} from "../config/request"; +import { standardRequest } from "../config/request"; /** * Sync/push [secrets] to [app] in integration named [integration] @@ -163,64 +165,72 @@ const syncSecrets = async ({ break; case INTEGRATION_SUPABASE: await syncSecretsSupabase({ - integration, - secrets, - accessToken, - }); - break; - case INTEGRATION_FLYIO: - await syncSecretsFlyio({ - integration, - secrets, - accessToken, - }); - break; - case INTEGRATION_CIRCLECI: - await syncSecretsCircleCI({ - integration, - secrets, - accessToken, - }); - break; - case INTEGRATION_TRAVISCI: - await syncSecretsTravisCI({ - integration, - secrets, - accessToken, - }); - break; - case INTEGRATION_SUPABASE: - await syncSecretsSupabase({ - integration, - secrets, - accessToken, - }); - break; - case INTEGRATION_CHECKLY: - await syncSecretsCheckly({ - integration, - secrets, - accessToken, - }); - break; - case INTEGRATION_HASHICORP_VAULT: - await syncSecretsHashiCorpVault({ - integration, - integrationAuth, - secrets, - accessId, - accessToken, - }); - break; - case INTEGRATION_CLOUDFLARE_PAGES: - await syncSecretsCloudflarePages({ - integration, - secrets, - accessId, - accessToken - }); - break; - } + integration, + secrets, + accessToken, + }); + break; + case INTEGRATION_FLYIO: + await syncSecretsFlyio({ + integration, + secrets, + accessToken, + }); + break; + case INTEGRATION_CIRCLECI: + await syncSecretsCircleCI({ + integration, + secrets, + accessToken, + }); + break; + case INTEGRATION_TRAVISCI: + await syncSecretsTravisCI({ + integration, + secrets, + accessToken, + }); + break; + case INTEGRATION_SUPABASE: + await syncSecretsSupabase({ + integration, + secrets, + accessToken, + }); + break; + case INTEGRATION_CHECKLY: + await syncSecretsCheckly({ + integration, + secrets, + accessToken, + }); + break; + case INTEGRATION_HASHICORP_VAULT: + await syncSecretsHashiCorpVault({ + integration, + integrationAuth, + secrets, + accessId, + accessToken, + }); + break; + case INTEGRATION_CLOUDFLARE_PAGES: + await syncSecretsCloudflarePages({ + integration, + secrets, + accessId, + accessToken + }); + break; + case INTEGRATION_CODEFRESH: + await syncSecretsCodefresh({ + integration, + // integrationAuth, + secrets, + accessToken, + }); + break; + } }; /** @@ -249,11 +259,11 @@ const syncSecretsAzureKeyVault = async ({ recoverableDays: number; } } - + interface AzureKeyVaultSecret extends GetAzureKeyVaultSecret { key: string; } - + /** * Return all secrets from Azure Key Vault by paginating through URL [url] * @param {String} url - pagination URL to get next set of secrets from Azure Key Vault @@ -267,23 +277,23 @@ const syncSecretsAzureKeyVault = async ({ Authorization: `Bearer ${accessToken}`, }, }); - + result = result.concat(res.data.value); - + url = res.data.nextLink; } - + return result; } - + const getAzureKeyVaultSecrets = await paginateAzureKeyVaultSecrets(`${integration.app}/secrets?api-version=7.3`); - + let lastSlashIndex: number; const res = (await Promise.all(getAzureKeyVaultSecrets.map(async (getAzureKeyVaultSecret) => { if (!lastSlashIndex) { lastSlashIndex = getAzureKeyVaultSecret.id.lastIndexOf("/"); } - + const azureKeyVaultSecret = await standardRequest.get(`${getAzureKeyVaultSecret.id}?api-version=7.3`, { headers: { "Authorization": `Bearer ${accessToken}`, @@ -295,11 +305,11 @@ const syncSecretsAzureKeyVault = async ({ key: getAzureKeyVaultSecret.id.substring(lastSlashIndex + 1), }); }))) - .reduce((obj: any, secret: any) => ({ + .reduce((obj: any, secret: any) => ({ ...obj, [secret.key]: secret, - }), {}); - + }), {}); + const setSecrets: { key: string; value: string; @@ -323,9 +333,9 @@ const syncSecretsAzureKeyVault = async ({ } } }); - + const deleteSecrets: AzureKeyVaultSecret[] = []; - + Object.keys(res).forEach((key) => { const underscoredKey = key.replace(/-/g, "_"); if (!(underscoredKey in secrets)) { @@ -346,7 +356,7 @@ const syncSecretsAzureKeyVault = async ({ }) => { let isSecretSet = false; let maxTries = 6; - + while (!isSecretSet && maxTries > 0) { // try to set secret try { @@ -363,7 +373,7 @@ const syncSecretsAzureKeyVault = async ({ ); isSecretSet = true; - + } catch (err) { const error: any = err; if (error?.response?.data?.error?.innererror?.code === "ObjectIsDeletedButRecoverable") { @@ -383,7 +393,7 @@ const syncSecretsAzureKeyVault = async ({ } } } - + // Sync/push set secrets for await (const setSecret of setSecrets) { const { key, value } = setSecret; @@ -394,7 +404,7 @@ const syncSecretsAzureKeyVault = async ({ accessToken, }); } - + for await (const deleteSecret of deleteSecrets) { const { key } = deleteSecret; await standardRequest.delete(`${integration.app}/secrets/${key}?api-version=7.3`, { @@ -436,7 +446,7 @@ const syncSecretsAWSParameterStore = async ({ apiVersion: "2014-11-06", region: integration.region, }); - + const params = { Path: integration.path, Recursive: true, @@ -444,61 +454,61 @@ const syncSecretsAWSParameterStore = async ({ }; const parameterList = (await ssm.getParametersByPath(params).promise()).Parameters - + let awsParameterStoreSecretsObj: { [key: string]: any // TODO: fix type } = {}; if (parameterList) { awsParameterStoreSecretsObj = parameterList.reduce((obj: any, secret: any) => ({ - ...obj, - [secret.Name.split("/").pop()]: secret, + ...obj, + [secret.Name.split("/").pop()]: secret, }), {}); } // Identify secrets to create Object.keys(secrets).map(async (key) => { - if (!(key in awsParameterStoreSecretsObj)) { - // case: secret does not exist in AWS parameter store - // -> create secret + if (!(key in awsParameterStoreSecretsObj)) { + // case: secret does not exist in AWS parameter store + // -> create secret + await ssm.putParameter({ + Name: `${integration.path}${key}`, + Type: "SecureString", + Value: secrets[key], + Overwrite: true, + }).promise(); + } else { + // case: secret exists in AWS parameter store + + if (awsParameterStoreSecretsObj[key].Value !== secrets[key]) { + // case: secret value doesn't match one in AWS parameter store + // -> update secret await ssm.putParameter({ Name: `${integration.path}${key}`, Type: "SecureString", Value: secrets[key], Overwrite: true, }).promise(); - } else { - // case: secret exists in AWS parameter store - - if (awsParameterStoreSecretsObj[key].Value !== secrets[key]) { - // case: secret value doesn't match one in AWS parameter store - // -> update secret - await ssm.putParameter({ - Name: `${integration.path}${key}`, - Type: "SecureString", - Value: secrets[key], - Overwrite: true, - }).promise(); - } } + } }); // Identify secrets to delete Object.keys(awsParameterStoreSecretsObj).map(async (key) => { - if (!(key in secrets)) { - // case: - // -> delete secret - await ssm.deleteParameter({ - Name: awsParameterStoreSecretsObj[key].Name, - }).promise(); - } + if (!(key in secrets)) { + // case: + // -> delete secret + await ssm.deleteParameter({ + Name: awsParameterStoreSecretsObj[key].Name, + }).promise(); + } }); AWS.config.update({ region: undefined, accessKeyId: undefined, secretAccessKey: undefined, - }); + }); } /** @@ -529,7 +539,7 @@ const syncSecretsAWSSecretManager = async ({ accessKeyId: accessId, secretAccessKey: accessToken, }); - + secretsManager = new SecretsManagerClient({ region: integration.region, credentials: { @@ -543,13 +553,13 @@ const syncSecretsAWSSecretManager = async ({ SecretId: integration.app, }) ); - + let awsSecretManagerSecretObj: { [key: string]: any } = {}; - + if (awsSecretManagerSecret?.SecretString) { awsSecretManagerSecretObj = JSON.parse(awsSecretManagerSecret.SecretString); } - + if (!_.isEqual(awsSecretManagerSecretObj, secrets)) { await secretsManager.send(new UpdateSecretCommand({ SecretId: integration.app, @@ -561,19 +571,19 @@ const syncSecretsAWSSecretManager = async ({ region: undefined, accessKeyId: undefined, secretAccessKey: undefined, - }); + }); } catch (err) { if (err instanceof ResourceNotFoundException && secretsManager) { await secretsManager.send(new CreateSecretCommand({ Name: integration.app, SecretString: JSON.stringify(secrets), })); - } + } AWS.config.update({ region: undefined, accessKeyId: undefined, secretAccessKey: undefined, - }); + }); } } @@ -656,36 +666,36 @@ const syncSecretsVercel = async ({ decrypt: "true", ...(integrationAuth?.teamId ? { - teamId: integrationAuth.teamId, - } + teamId: integrationAuth.teamId, + } : {}), }; - + const vercelSecrets: VercelSecret[] = (await standardRequest.get( `${INTEGRATION_VERCEL_API_URL}/v9/projects/${integration.app}/env`, { params, headers: { - Authorization: `Bearer ${accessToken}`, - "Accept-Encoding": "application/json", + Authorization: `Bearer ${accessToken}`, + "Accept-Encoding": "application/json", }, } )) - .data - .envs - .filter((secret: VercelSecret) => { - if (!secret.target.includes(integration.targetEnvironment)) { - // case: secret does not have the same target environment - return false; - } + .data + .envs + .filter((secret: VercelSecret) => { + if (!secret.target.includes(integration.targetEnvironment)) { + // case: secret does not have the same target environment + return false; + } - if (integration.targetEnvironment === "preview" && integration.path && integration.path !== secret.gitBranch) { - // case: secret on preview environment does not have same target git branch - return false; - } + if (integration.targetEnvironment === "preview" && integration.path && integration.path !== secret.gitBranch) { + // case: secret on preview environment does not have same target git branch + return false; + } - return true; - }); + return true; + }); // return secret.target.includes(integration.targetEnvironment); @@ -695,14 +705,14 @@ const syncSecretsVercel = async ({ if (vercelSecret.type === "encrypted") { // case: secret is encrypted -> need to decrypt const decryptedSecret = (await standardRequest.get( - `${INTEGRATION_VERCEL_API_URL}/v9/projects/${integration.app}/env/${vercelSecret.id}`, - { - params, - headers: { - Authorization: `Bearer ${accessToken}`, - "Accept-Encoding": "application/json", - }, - } + `${INTEGRATION_VERCEL_API_URL}/v9/projects/${integration.app}/env/${vercelSecret.id}`, + { + params, + headers: { + Authorization: `Bearer ${accessToken}`, + "Accept-Encoding": "application/json", + }, + } )).data; res[vercelSecret.key] = decryptedSecret; @@ -710,7 +720,7 @@ const syncSecretsVercel = async ({ res[vercelSecret.key] = vercelSecret; } } - + const updateSecrets: VercelSecret[] = []; const deleteSecrets: VercelSecret[] = []; const newSecrets: VercelSecret[] = []; @@ -741,9 +751,9 @@ const syncSecretsVercel = async ({ key: key, value: secrets[key], type: res[key].type, - target: res[key].target.includes(integration.targetEnvironment) - ? [...res[key].target] - : [...res[key].target, integration.targetEnvironment], + target: res[key].target.includes(integration.targetEnvironment) + ? [...res[key].target] + : [...res[key].target, integration.targetEnvironment], ...(integration.path ? { gitBranch: integration.path, } : {}), @@ -793,7 +803,7 @@ const syncSecretsVercel = async ({ }, } ); - } + } } for await (const secret of deleteSecrets) { @@ -806,7 +816,7 @@ const syncSecretsVercel = async ({ "Accept-Encoding": "application/json", }, } - ); + ); } }; @@ -1351,7 +1361,7 @@ const syncSecretsCircleCI = async ({ integration: IIntegration; secrets: any; accessToken: string; -}) => { +}) => { const circleciOrganizationDetail = ( await standardRequest.get(`${INTEGRATION_CIRCLECI_API_URL}/v2/me/collaborations`, { headers: { @@ -1438,13 +1448,13 @@ const syncSecretsTravisCI = async ({ } ) ) - .data - ?.env_vars - .reduce((obj: any, secret: any) => ({ + .data + ?.env_vars + .reduce((obj: any, secret: any) => ({ ...obj, [secret.name]: secret, - }), {}); - + }), {}); + // add secrets for await (const key of Object.keys(secrets)) { if (!(key in getSecretsRes)) { @@ -1489,7 +1499,7 @@ const syncSecretsTravisCI = async ({ } for await (const key of Object.keys(getSecretsRes)) { - if (!(key in secrets)){ + if (!(key in secrets)) { // delete secret await standardRequest.delete( `${INTEGRATION_TRAVISCI_API_URL}/settings/env_vars/${getSecretsRes[key].id}?repository_id=${getSecretsRes[key].repository_id}`, @@ -1534,29 +1544,29 @@ const syncSecretsGitLab = async ({ "Authorization": `Bearer ${accessToken}`, "Accept-Encoding": "application/json", }; - + let allEnvVariables: GitLabSecret[] = []; let url: string | null = `${gitLabApiUrl}?per_page=100`; - + while (url) { const response: any = await standardRequest.get(url, { headers }); allEnvVariables = [...allEnvVariables, ...response.data]; - + const linkHeader = response.headers.link; const nextLink = linkHeader?.split(",").find((part: string) => part.includes('rel="next"')); - + if (nextLink) { url = nextLink.trim().split(";")[0].slice(1, -1); } else { url = null; } } - + return allEnvVariables; }; const allEnvVariables = await getAllEnvVariables(integration?.appId, accessToken); - const getSecretsRes: GitLabSecret[] = allEnvVariables.filter((secret: GitLabSecret) => + const getSecretsRes: GitLabSecret[] = allEnvVariables.filter((secret: GitLabSecret) => secret.environment_scope === integration.targetEnvironment ); @@ -1638,8 +1648,8 @@ const syncSecretsSupabase = async ({ `${INTEGRATION_SUPABASE_API_URL}/v1/projects/${integration.appId}/secrets`, { headers: { - Authorization: `Bearer ${accessToken}`, - "Accept-Encoding": "application/json", + Authorization: `Bearer ${accessToken}`, + "Accept-Encoding": "application/json", }, } ); @@ -1648,8 +1658,8 @@ const syncSecretsSupabase = async ({ const modifiedFormatForSecretInjection = Object.keys(secrets).map( (key) => { return { - name: key, - value: secrets[key], + name: key, + value: secrets[key], }; } ); @@ -1659,8 +1669,8 @@ const syncSecretsSupabase = async ({ modifiedFormatForSecretInjection, { headers: { - Authorization: `Bearer ${accessToken}`, - "Accept-Encoding": "application/json", + Authorization: `Bearer ${accessToken}`, + "Accept-Encoding": "application/json", }, } ); @@ -1668,7 +1678,7 @@ const syncSecretsSupabase = async ({ const secretsToDelete: any = []; getSecretsRes?.forEach((secretObj: any) => { if (!(secretObj.name in secrets)) { - secretsToDelete.push(secretObj.name); + secretsToDelete.push(secretObj.name); } }); @@ -1715,18 +1725,18 @@ const syncSecretsCheckly = async ({ } ) ) - .data - .reduce((obj: any, secret: any) => ({ + .data + .reduce((obj: any, secret: any) => ({ ...obj, [secret.key]: secret.value, - }), {}); - + }), {}); + // add secrets for await (const key of Object.keys(secrets)) { if (!(key in getSecretsRes)) { // case: secret does not exist in checkly // -> add secret - + await standardRequest.post( `${INTEGRATION_CHECKLY_API_URL}/v1/variables`, { @@ -1745,7 +1755,7 @@ const syncSecretsCheckly = async ({ } else { // case: secret exists in checkly // -> update/set secret - + if (secrets[key] !== getSecretsRes[key]) { await standardRequest.put( `${INTEGRATION_CHECKLY_API_URL}/v1/variables/${key}`, @@ -1766,7 +1776,7 @@ const syncSecretsCheckly = async ({ } for await (const key of Object.keys(getSecretsRes)) { - if (!(key in secrets)){ + if (!(key in secrets)) { // delete secret await standardRequest.delete( `${INTEGRATION_CHECKLY_API_URL}/v1/variables/${key}`, @@ -1803,13 +1813,13 @@ const syncSecretsHashiCorpVault = async ({ accessToken: string; }) => { if (!accessId) return; - + interface LoginAppRoleRes { auth: { client_token: string; } } - + // get Vault client token (could be optimized) const { data }: { data: LoginAppRoleRes } = await standardRequest.post( `${integrationAuth.url}/v1/auth/approle/login`, @@ -1823,7 +1833,7 @@ const syncSecretsHashiCorpVault = async ({ }, } ); - + const clientToken = data.auth.client_token; await standardRequest.post( @@ -1851,46 +1861,46 @@ const syncSecretsHashiCorpVault = async ({ * @param {String} obj.accessToken - API token for Cloudflare */ const syncSecretsCloudflarePages = async ({ - integration, - secrets, - accessId, - accessToken, + integration, + secrets, + accessId, + accessToken, }: { - integration: IIntegration; - secrets: any; - accessId: string | null; - accessToken: string; + integration: IIntegration; + secrets: any; + accessId: string | null; + accessToken: string; }) => { // get secrets from cloudflare pages const getSecretsRes = ( - await standardRequest.get( - `${INTEGRATION_CLOUDFLARE_PAGES_API_URL}/client/v4/accounts/${accessId}/pages/projects/${integration.app}`, - { - headers: { - Authorization: `Bearer ${accessToken}`, - "Accept": "application/json", - }, - } - ) + await standardRequest.get( + `${INTEGRATION_CLOUDFLARE_PAGES_API_URL}/client/v4/accounts/${accessId}/pages/projects/${integration.app}`, + { + headers: { + Authorization: `Bearer ${accessToken}`, + "Accept": "application/json", + }, + } + ) ) - .data.result['deployment_configs'][integration.targetEnvironment]['env_vars']; + .data.result['deployment_configs'][integration.targetEnvironment]['env_vars']; // copy the secrets object, so we can set deleted keys to null - const secretsObj: any = {...secrets}; + const secretsObj: any = { ...secrets }; for (const [key, val] of Object.entries(secretsObj)) { - secretsObj[key] = { type: "secret_text", value: val }; + secretsObj[key] = { type: "secret_text", value: val }; } if (getSecretsRes) { - for await (const key of Object.keys(getSecretsRes)) { - if (!(key in secrets)) { - // case: secret does not exist in infisical - // -> delete secret from cloudflare pages - secretsObj[key] = null; - } + for await (const key of Object.keys(getSecretsRes)) { + if (!(key in secrets)) { + // case: secret does not exist in infisical + // -> delete secret from cloudflare pages + secretsObj[key] = null; } + } } const data = { @@ -1902,15 +1912,120 @@ const syncSecretsCloudflarePages = async ({ }; await standardRequest.patch( - `${INTEGRATION_CLOUDFLARE_PAGES_API_URL}/client/v4/accounts/${accessId}/pages/projects/${integration.app}`, - data, - { - headers: { - Authorization: `Bearer ${accessToken}`, - "Accept": "application/json", - }, - } + `${INTEGRATION_CLOUDFLARE_PAGES_API_URL}/client/v4/accounts/${accessId}/pages/projects/${integration.app}`, + data, + { + headers: { + Authorization: `Bearer ${accessToken}`, + "Accept": "application/json", + }, + } ); } + +/** + * Sync/push [secrets] to codefresh with name [integration.app] + * @param {Object} obj + * @param {IIntegration} obj.integration - integration details + * @param {Object} obj.secrets - secrets to push to integration (object where keys are secret keys and values are secret values) + * @param {String} obj.accessToken - access token for Supabase integration + */ + + + +const syncSecretsCodefresh = async ({ + integration, + secrets, + accessToken, +}: { + integration: IIntegration; + secrets: any; + accessToken: string; +}) => { + // get variables from codefresh. + + // there is no endpoint to get secrets from codefresh + // const getSecretsRes = ( + // await standardRequest.get( + // `${INTEGRATION_CODEFRESH_API_URL}/api/pipelines/utils/extractVariables`, + // { + // headers: { + // "Authorization": `Bearer ${accessToken}`, + // "Accept-Encoding": "application/json", + // }, + // } + // ) + // ) + // .data + // .reduce((obj: any, secret: any) => ({ + // ...obj, + // [secret.key]: secret.value, + // }), {}); + + // add secrets + // for await (const key of Object.keys(secrets)) { + // if (!(key in getSecretsRes)) { + // // case: secret does not exist in codefresh + // // -> add secret + + // await standardRequest.post( + // `${INTEGRATION_CODEFRESH_API_URL}/api/pipelines`, + // { + // spec: { + // variables: [ + // { + // key, + // value: secrets[key], + // } + // ] + + // }, + // }, + // { + // headers: { + // "Authorization": `Bearer ${accessToken}`, + // "Accept": "application/json", + // "Content-Type": "application/json", + // }, + // } + // ); + // } else { + // // case: secret exists in checkly + // // -> update/set secret + + // if (secrets[key] !== getSecretsRes[key]) { + // await standardRequest.put( + // `${INTEGRATION_CODEFRESH_API_URL}/v1/variables/${key}`, + // { + // value: secrets[key], + // }, + // { + // headers: { + // "Authorization": `Bearer ${accessToken}`, + // "Content-Type": "application/json", + // "Accept": "application/json", + // }, + // } + // ); + // } + // } + // } + + // for await (const key of Object.keys(getSecretsRes)) { + // if (!(key in secrets)) { + // // delete secret + // await standardRequest.delete( + // `${INTEGRATION_CODEFRESH_API_URL}/v1/variables/${key}`, + // { + // headers: { + // "Authorization": `Bearer ${accessToken}`, + // "Accept": "application/json", + // }, + // } + // ); + // } + // } +}; + export { syncSecrets }; diff --git a/backend/src/models/integration.ts b/backend/src/models/integration.ts index d94cc9faa..642a82591 100644 --- a/backend/src/models/integration.ts +++ b/backend/src/models/integration.ts @@ -17,6 +17,7 @@ import { INTEGRATION_CLOUDFLARE_PAGES, INTEGRATION_TRAVISCI, INTEGRATION_VERCEL, + INTEGRATION_CODEFRESH } from "../variables"; export interface IIntegration { @@ -52,7 +53,8 @@ export interface IIntegration { | "supabase" | "checkly" | "hashicorp-vault" - | "cloudflare-pages"; + | "cloudflare-pages" + | "codefresh"; integrationAuth: Types.ObjectId; } @@ -141,6 +143,7 @@ const integrationSchema = new Schema( INTEGRATION_CHECKLY, INTEGRATION_HASHICORP_VAULT, INTEGRATION_CLOUDFLARE_PAGES, + INTEGRATION_CODEFRESH ], required: true, }, diff --git a/backend/src/models/integrationAuth.ts b/backend/src/models/integrationAuth.ts index 2d56c2063..8089800d7 100644 --- a/backend/src/models/integrationAuth.ts +++ b/backend/src/models/integrationAuth.ts @@ -19,12 +19,13 @@ import { INTEGRATION_CLOUDFLARE_PAGES, INTEGRATION_TRAVISCI, INTEGRATION_VERCEL, + INTEGRATION_CODEFRESH } from "../variables"; export interface IIntegrationAuth extends Document { _id: Types.ObjectId; workspace: Types.ObjectId; - integration: 'heroku' | 'vercel' | 'netlify' | 'github' | 'gitlab' | 'render' | 'railway' | 'flyio' | 'azure-key-vault' | 'circleci' | 'travisci' | 'supabase' | 'aws-parameter-store' | 'aws-secret-manager' | 'checkly' | 'cloudflare-pages'; + integration: 'heroku' | 'vercel' | 'netlify' | 'github' | 'gitlab' | 'render' | 'railway' | 'flyio' | 'azure-key-vault' | 'circleci' | 'travisci' | 'supabase' | 'aws-parameter-store' | 'aws-secret-manager' | 'checkly' | 'cloudflare-pages' | 'codefresh'; teamId: string; accountId: string; url: string; @@ -69,6 +70,7 @@ const integrationAuthSchema = new Schema( INTEGRATION_SUPABASE, INTEGRATION_HASHICORP_VAULT, INTEGRATION_CLOUDFLARE_PAGES, + INTEGRATION_CODEFRESH ], required: true, }, diff --git a/backend/src/variables/integration.ts b/backend/src/variables/integration.ts index c87d2eb97..5eb50b583 100644 --- a/backend/src/variables/integration.ts +++ b/backend/src/variables/integration.ts @@ -25,6 +25,9 @@ export const INTEGRATION_SUPABASE = 'supabase'; export const INTEGRATION_CHECKLY = 'checkly'; export const INTEGRATION_HASHICORP_VAULT = 'hashicorp-vault'; export const INTEGRATION_CLOUDFLARE_PAGES = 'cloudflare-pages'; +// chisom +export const INTEGRATION_CODEFRESH = 'codefresh'; + export const INTEGRATION_SET = new Set([ INTEGRATION_AZURE_KEY_VAULT, INTEGRATION_HEROKU, @@ -39,7 +42,8 @@ export const INTEGRATION_SET = new Set([ INTEGRATION_SUPABASE, INTEGRATION_CHECKLY, INTEGRATION_HASHICORP_VAULT, - INTEGRATION_CLOUDFLARE_PAGES + INTEGRATION_CLOUDFLARE_PAGES, + INTEGRATION_CODEFRESH ]); // integration types @@ -68,6 +72,7 @@ export const INTEGRATION_TRAVISCI_API_URL = "https://api.travis-ci.com"; export const INTEGRATION_SUPABASE_API_URL = 'https://api.supabase.com'; export const INTEGRATION_CHECKLY_API_URL = 'https://api.checklyhq.com'; export const INTEGRATION_CLOUDFLARE_PAGES_API_URL = 'https://api.cloudflare.com'; +export const INTEGRATION_CODEFRESH_API_URL = 'https://g.codefresh.io/api'; export const getIntegrationOptions = async () => { const INTEGRATION_OPTIONS = [ @@ -233,7 +238,16 @@ export const getIntegrationOptions = async () => { type: 'pat', clientId: '', docsLink: '' - } + }, + { + name: "Codefresh", + slug: "codefresh", + image: "Codefresh.png", + isAvailable: true, + type: "pat", + clientId: "", + docsLink: "", + }, ] return INTEGRATION_OPTIONS; diff --git a/frontend/public/images/integrations/codefresh.png b/frontend/public/images/integrations/codefresh.png new file mode 100644 index 0000000000000000000000000000000000000000..f2f181c11281dcb693e621d5459da50a2b119944 GIT binary patch literal 34956 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 literal 0 HcmV?d00001 diff --git a/frontend/src/hooks/api/integrationAuth/index.tsx b/frontend/src/hooks/api/integrationAuth/index.tsx index 3b18be83f..c9fda017f 100644 --- a/frontend/src/hooks/api/integrationAuth/index.tsx +++ b/frontend/src/hooks/api/integrationAuth/index.tsx @@ -5,5 +5,5 @@ export { useGetIntegrationAuthRailwayEnvironments, useGetIntegrationAuthRailwayServices, useGetIntegrationAuthTeams, - useGetIntegrationAuthVercelBranches + useGetIntegrationAuthVercelBranches, } from "./queries"; diff --git a/frontend/src/hooks/api/integrationAuth/queries.tsx b/frontend/src/hooks/api/integrationAuth/queries.tsx index aed885ff3..f90126009 100644 --- a/frontend/src/hooks/api/integrationAuth/queries.tsx +++ b/frontend/src/hooks/api/integrationAuth/queries.tsx @@ -19,6 +19,7 @@ const integrationAuthKeys = { integrationAuthId: string; appId: string; }) => [{ integrationAuthId, appId }, "integrationAuthVercelBranches"] as const, + getIntegrationAuthRailwayEnvironments: ({ integrationAuthId, appId @@ -64,6 +65,7 @@ const fetchIntegrationAuthTeams = async (integrationAuthId: string) => { return data.teams; }; + const fetchIntegrationAuthVercelBranches = async ({ integrationAuthId, appId @@ -224,6 +226,7 @@ export const useGetIntegrationAuthRailwayServices = ({ }); }; + export const useDeleteIntegrationAuth = () => { const queryClient = useQueryClient(); @@ -235,3 +238,4 @@ export const useDeleteIntegrationAuth = () => { } }); }; + diff --git a/frontend/src/pages/integrations/codefresh/authorize.tsx b/frontend/src/pages/integrations/codefresh/authorize.tsx new file mode 100644 index 000000000..aebfd2139 --- /dev/null +++ b/frontend/src/pages/integrations/codefresh/authorize.tsx @@ -0,0 +1,64 @@ +import { useState } from "react"; +import { useRouter } from "next/router"; + +import { Button, Card, CardTitle, FormControl, Input } from "../../../components/v2"; +import saveIntegrationAccessToken from "../../api/integrations/saveIntegrationAccessToken"; + +export default function CodefreshCreateIntegrationPage() { + const router = useRouter(); + const [apiKey, setApiKey] = useState(""); + const [apiKeyErrorText, setApiKeyErrorText] = useState(""); + const [isLoading, setIsLoading] = useState(false); + + const handleButtonClick = async () => { + try { + setApiKeyErrorText(""); + if (apiKey.length === 0) { + setApiKeyErrorText("API Key cannot be blank"); + return; + } + + setIsLoading(true); + + const integrationAuth = await saveIntegrationAccessToken({ + workspaceId: localStorage.getItem("projectData.id"), + integration: "codefresh", + accessToken: apiKey, + accessId: null, + url: null, + namespace: null + }); + + setIsLoading(false); + + router.push(`/integrations/codefresh/create?integrationAuthId=${integrationAuth._id}`); + } catch (err) { + console.error(err); + } + }; + + return ( +

+ ); +} + +CodefreshCreateIntegrationPage.requireAuth = true; diff --git a/frontend/src/pages/integrations/codefresh/create.tsx b/frontend/src/pages/integrations/codefresh/create.tsx new file mode 100644 index 000000000..214487b6e --- /dev/null +++ b/frontend/src/pages/integrations/codefresh/create.tsx @@ -0,0 +1,155 @@ +import { useEffect, useState } from "react"; +import { useRouter } from "next/router"; +import queryString from "query-string"; + +import { + Button, + Card, + CardTitle, + FormControl, + Input, + Select, + SelectItem +} from "../../../components/v2"; +import { + useGetIntegrationAuthApps, + useGetIntegrationAuthById +} from "../../../hooks/api/integrationAuth"; +import { useGetWorkspaceById } from "../../../hooks/api/workspace"; +import createIntegration from "../../api/integrations/createIntegration"; + +export default function CodefreshCreateIntegrationPage() { + const router = useRouter(); + + const { integrationAuthId } = queryString.parse(router.asPath.split("?")[1]); + + const { data: workspace } = useGetWorkspaceById(localStorage.getItem("projectData.id") ?? ""); + const { data: integrationAuth } = useGetIntegrationAuthById((integrationAuthId as string) ?? ""); + const { data: integrationAuthApps } = useGetIntegrationAuthApps({ + integrationAuthId: (integrationAuthId as string) ?? "" + }); + + const [selectedSourceEnvironment, setSelectedSourceEnvironment] = useState(""); + const [targetApp, setTargetApp] = useState(""); + const [secretPath, setSecretPath] = useState("/"); + const [isLoading, setIsLoading] = useState(false); + + useEffect(() => { + if (workspace) { + setSelectedSourceEnvironment(workspace.environments[0].slug); + } + }, [workspace]); + + useEffect(() => { + if (integrationAuthApps) { + if (integrationAuthApps.length > 0) { + setTargetApp(integrationAuthApps[0].name); + } else { + setTargetApp("none"); + } + } + }, [integrationAuthApps]); + + const handleButtonClick = async () => { + try { + if (!integrationAuth?._id) return; + + setIsLoading(true); + + await createIntegration({ + integrationAuthId: integrationAuth?._id, + isActive: true, + app: targetApp, + appId: + integrationAuthApps?.find((integrationAuthApp) => integrationAuthApp.name === targetApp) + ?.appId ?? null, + sourceEnvironment: selectedSourceEnvironment, + targetEnvironment: null, + targetEnvironmentId: null, + targetService: null, + targetServiceId: null, + owner: null, + path: null, + region: null, + secretPath + }); + + setIsLoading(false); + + router.push(`/integrations/${localStorage.getItem("projectData.id")}`); + } catch (err) { + console.error(err); + } + }; + + return integrationAuth && + workspace && + selectedSourceEnvironment && + integrationAuthApps && + targetApp ? ( +
+ + Codefresh Integration + + + + + setSecretPath(evt.target.value)} + placeholder="Provide a path, default is /" + /> + + + + + + +
+ ) : ( +
+ ); +} + +CodefreshCreateIntegrationPage.requireAuth = true; diff --git a/frontend/src/views/IntegrationsPage/IntegrationPage.utils.tsx b/frontend/src/views/IntegrationsPage/IntegrationPage.utils.tsx index fc60ead6d..9dc5be151 100644 --- a/frontend/src/views/IntegrationsPage/IntegrationPage.utils.tsx +++ b/frontend/src/views/IntegrationsPage/IntegrationPage.utils.tsx @@ -89,6 +89,10 @@ export const redirectForProviderAuth = (integrationOption: TCloudIntegration) => case "cloudflare-pages": link = `${window.location.origin}/integrations/cloudflare-pages/authorize`; break; + case "codefresh": + link = `${window.location.origin}/integrations/codefresh/authorize`; + break; + default: break; } diff --git a/frontend/src/views/IntegrationsPage/IntegrationsPage.tsx b/frontend/src/views/IntegrationsPage/IntegrationsPage.tsx index 5a585151d..e178406d2 100644 --- a/frontend/src/views/IntegrationsPage/IntegrationsPage.tsx +++ b/frontend/src/views/IntegrationsPage/IntegrationsPage.tsx @@ -49,6 +49,7 @@ export const IntegrationsPage = ({ frameworkIntegrations }: Props) => { const { data: cloudIntegrations, isLoading: isCloudIntegrationsLoading } = useGetCloudIntegrations(); + const { data: integrationAuths, isLoading: isIntegrationAuthLoading } = useGetWorkspaceAuthorizations( workspaceId, diff --git a/frontend/src/views/IntegrationsPage/components/IntegrationsSection/IntegrationsSection.tsx b/frontend/src/views/IntegrationsPage/components/IntegrationsSection/IntegrationsSection.tsx index e61c6fe47..65d1dc1ca 100644 --- a/frontend/src/views/IntegrationsPage/components/IntegrationsSection/IntegrationsSection.tsx +++ b/frontend/src/views/IntegrationsPage/components/IntegrationsSection/IntegrationsSection.tsx @@ -33,6 +33,7 @@ export const IntegrationsSection = ({ "deleteConfirmation" ] as const); + console.log(integrationSlugNameMapping, integrations, '>>>chisom') return (
From e8fdaf571c5bb46120f31ba3da08df4704a26f86 Mon Sep 17 00:00:00 2001 From: Tuan Dang Date: Wed, 19 Jul 2023 23:17:59 +0700 Subject: [PATCH 40/49] Make sync function for Codefresh --- backend/src/integrations/sync.ts | 107 +++--------------- backend/src/variables/integration.ts | 1 - .../integrations/codefresh/authorize.tsx | 2 +- .../IntegrationsSection.tsx | 2 - 4 files changed, 18 insertions(+), 94 deletions(-) diff --git a/backend/src/integrations/sync.ts b/backend/src/integrations/sync.ts index 93eaf22be..26c447056 100644 --- a/backend/src/integrations/sync.ts +++ b/backend/src/integrations/sync.ts @@ -225,7 +225,6 @@ const syncSecrets = async ({ case INTEGRATION_CODEFRESH: await syncSecretsCodefresh({ integration, - // integrationAuth, secrets, accessToken, }); @@ -1923,17 +1922,13 @@ const syncSecretsCloudflarePages = async ({ ); } - /** - * Sync/push [secrets] to codefresh with name [integration.app] + * Sync/push [secrets] to Codefresh with name [integration.app] * @param {Object} obj * @param {IIntegration} obj.integration - integration details * @param {Object} obj.secrets - secrets to push to integration (object where keys are secret keys and values are secret values) - * @param {String} obj.accessToken - access token for Supabase integration + * @param {String} obj.accessToken - access token for Codefresh integration */ - - - const syncSecretsCodefresh = async ({ integration, secrets, @@ -1943,89 +1938,21 @@ const syncSecretsCodefresh = async ({ secrets: any; accessToken: string; }) => { - // get variables from codefresh. - - // there is no endpoint to get secrets from codefresh - // const getSecretsRes = ( - // await standardRequest.get( - // `${INTEGRATION_CODEFRESH_API_URL}/api/pipelines/utils/extractVariables`, - // { - // headers: { - // "Authorization": `Bearer ${accessToken}`, - // "Accept-Encoding": "application/json", - // }, - // } - // ) - // ) - // .data - // .reduce((obj: any, secret: any) => ({ - // ...obj, - // [secret.key]: secret.value, - // }), {}); - - // add secrets - // for await (const key of Object.keys(secrets)) { - // if (!(key in getSecretsRes)) { - // // case: secret does not exist in codefresh - // // -> add secret - - // await standardRequest.post( - // `${INTEGRATION_CODEFRESH_API_URL}/api/pipelines`, - // { - // spec: { - // variables: [ - // { - // key, - // value: secrets[key], - // } - // ] - - // }, - // }, - // { - // headers: { - // "Authorization": `Bearer ${accessToken}`, - // "Accept": "application/json", - // "Content-Type": "application/json", - // }, - // } - // ); - // } else { - // // case: secret exists in checkly - // // -> update/set secret - - // if (secrets[key] !== getSecretsRes[key]) { - // await standardRequest.put( - // `${INTEGRATION_CODEFRESH_API_URL}/v1/variables/${key}`, - // { - // value: secrets[key], - // }, - // { - // headers: { - // "Authorization": `Bearer ${accessToken}`, - // "Content-Type": "application/json", - // "Accept": "application/json", - // }, - // } - // ); - // } - // } - // } - - // for await (const key of Object.keys(getSecretsRes)) { - // if (!(key in secrets)) { - // // delete secret - // await standardRequest.delete( - // `${INTEGRATION_CODEFRESH_API_URL}/v1/variables/${key}`, - // { - // headers: { - // "Authorization": `Bearer ${accessToken}`, - // "Accept": "application/json", - // }, - // } - // ); - // } - // } + await standardRequest.patch( + `${INTEGRATION_CODEFRESH_API_URL}/projects/${integration.appId}`, + { + variables: Object.keys(secrets).map((key) => ({ + key, + value: secrets[key] + })) + }, + { + headers: { + Authorization: `Bearer ${accessToken}`, + "Accept": "application/json", + }, + } + ); }; export { syncSecrets }; diff --git a/backend/src/variables/integration.ts b/backend/src/variables/integration.ts index 5eb50b583..13e89a324 100644 --- a/backend/src/variables/integration.ts +++ b/backend/src/variables/integration.ts @@ -25,7 +25,6 @@ export const INTEGRATION_SUPABASE = 'supabase'; export const INTEGRATION_CHECKLY = 'checkly'; export const INTEGRATION_HASHICORP_VAULT = 'hashicorp-vault'; export const INTEGRATION_CLOUDFLARE_PAGES = 'cloudflare-pages'; -// chisom export const INTEGRATION_CODEFRESH = 'codefresh'; export const INTEGRATION_SET = new Set([ diff --git a/frontend/src/pages/integrations/codefresh/authorize.tsx b/frontend/src/pages/integrations/codefresh/authorize.tsx index aebfd2139..17416ffab 100644 --- a/frontend/src/pages/integrations/codefresh/authorize.tsx +++ b/frontend/src/pages/integrations/codefresh/authorize.tsx @@ -23,8 +23,8 @@ export default function CodefreshCreateIntegrationPage() { const integrationAuth = await saveIntegrationAccessToken({ workspaceId: localStorage.getItem("projectData.id"), integration: "codefresh", - accessToken: apiKey, accessId: null, + accessToken: apiKey, url: null, namespace: null }); diff --git a/frontend/src/views/IntegrationsPage/components/IntegrationsSection/IntegrationsSection.tsx b/frontend/src/views/IntegrationsPage/components/IntegrationsSection/IntegrationsSection.tsx index 65d1dc1ca..1fe734c96 100644 --- a/frontend/src/views/IntegrationsPage/components/IntegrationsSection/IntegrationsSection.tsx +++ b/frontend/src/views/IntegrationsPage/components/IntegrationsSection/IntegrationsSection.tsx @@ -32,8 +32,6 @@ export const IntegrationsSection = ({ const { popUp, handlePopUpOpen, handlePopUpClose, handlePopUpToggle } = usePopUp([ "deleteConfirmation" ] as const); - - console.log(integrationSlugNameMapping, integrations, '>>>chisom') return (
From 93761f6487d14002dc464c3c9e921a1ccc21994b Mon Sep 17 00:00:00 2001 From: akhilmhdh Date: Wed, 19 Jul 2023 21:58:03 +0530 Subject: [PATCH 41/49] fix: resolved empty secrets on fresh env and added empty states --- backend/src/services/SecretImportService.ts | 5 +++++ .../src/views/DashboardPage/DashboardPage.tsx | 2 +- .../SecretImportSection/SecretImportItem.tsx | 17 +++++++++++++++-- 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/backend/src/services/SecretImportService.ts b/backend/src/services/SecretImportService.ts index ec9f9f5c4..56c600610 100644 --- a/backend/src/services/SecretImportService.ts +++ b/backend/src/services/SecretImportService.ts @@ -38,6 +38,11 @@ export const getAllImportedSecrets = async ( folderId: secPathFolder.id, secretPath: el.secretPath }); + } else { + if (el.secretPath === "/") { + // this happens when importing with a fresh env without any folders + importedSecByFid.push({ environment: el.environment, folderId: "root", secretPath: "/" }); + } } }); if (importedSecByFid.length === 0) return []; diff --git a/frontend/src/views/DashboardPage/DashboardPage.tsx b/frontend/src/views/DashboardPage/DashboardPage.tsx index fbbb66053..262fb2a92 100644 --- a/frontend/src/views/DashboardPage/DashboardPage.tsx +++ b/frontend/src/views/DashboardPage/DashboardPage.tsx @@ -676,7 +676,7 @@ export const DashboardPage = ({ envFromTop }: { envFromTop: string }) => { const isSnapshotSecretEmtpy = isRollbackMode && !isSnapshotSecretsLoading && !snapshotSecret?.secrets?.length; const isSecretEmpty = (!isRollbackMode && isDashboardSecretEmpty) || isSnapshotSecretEmtpy; - const isSecretImportEmpty = !importedSecrets?.length; + const isSecretImportEmpty = !secretImportCfg?.imports?.length; const isEmptyPage = isFoldersEmpty && isSecretEmpty && isSecretImportEmpty; if (isSecretsLoading || isEnvListLoading) { diff --git a/frontend/src/views/DashboardPage/components/SecretImportSection/SecretImportItem.tsx b/frontend/src/views/DashboardPage/components/SecretImportSection/SecretImportItem.tsx index 6e424fc1a..162bdcd55 100644 --- a/frontend/src/views/DashboardPage/components/SecretImportSection/SecretImportItem.tsx +++ b/frontend/src/views/DashboardPage/components/SecretImportSection/SecretImportItem.tsx @@ -1,9 +1,15 @@ import { useEffect } from "react"; import { useSortable } from "@dnd-kit/sortable"; -import { faFileImport, faFolder, faUpDown, faXmark } from "@fortawesome/free-solid-svg-icons"; +import { + faFileImport, + faFolder, + faKey, + faUpDown, + faXmark +} from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; -import { IconButton, TableContainer, Tooltip } from "@app/components/v2"; +import { EmptyState, IconButton, TableContainer, Tooltip } from "@app/components/v2"; import { useWorkspace } from "@app/context"; import { useToggle } from "@app/hooks/useToggle"; @@ -119,6 +125,13 @@ export const SecretImportItem = ({ + {importedSecrets?.length === 0 && ( + + + + + + )} {importedSecrets.map(({ key, value, overriden }, index) => ( From eda095b55f65d681ee067c6e3f1aa8bf60ba93f7 Mon Sep 17 00:00:00 2001 From: Tuan Dang Date: Wed, 19 Jul 2023 23:29:01 +0700 Subject: [PATCH 42/49] Fix merge conflicts --- backend/src/variables/integration.ts | 31 +++++++++++----------------- 1 file changed, 12 insertions(+), 19 deletions(-) diff --git a/backend/src/variables/integration.ts b/backend/src/variables/integration.ts index 5c26c8d86..ba3f0e905 100644 --- a/backend/src/variables/integration.ts +++ b/backend/src/variables/integration.ts @@ -22,11 +22,11 @@ export const INTEGRATION_FLYIO = "flyio"; export const INTEGRATION_LARAVELFORGE = "laravel-forge" export const INTEGRATION_CIRCLECI = "circleci"; export const INTEGRATION_TRAVISCI = "travisci"; -export const INTEGRATION_SUPABASE = 'supabase'; -export const INTEGRATION_CHECKLY = 'checkly'; -export const INTEGRATION_HASHICORP_VAULT = 'hashicorp-vault'; -export const INTEGRATION_CLOUDFLARE_PAGES = 'cloudflare-pages'; -export const INTEGRATION_CODEFRESH = 'codefresh'; +export const INTEGRATION_SUPABASE = "supabase"; +export const INTEGRATION_CHECKLY = "checkly"; +export const INTEGRATION_HASHICORP_VAULT = "hashicorp-vault"; +export const INTEGRATION_CLOUDFLARE_PAGES = "cloudflare-pages"; +export const INTEGRATION_CODEFRESH = "codefresh"; export const INTEGRATION_SET = new Set([ INTEGRATION_AZURE_KEY_VAULT, INTEGRATION_HEROKU, @@ -69,11 +69,11 @@ export const INTEGRATION_RAILWAY_API_URL = "https://backboard.railway.app/graphq export const INTEGRATION_FLYIO_API_URL = "https://api.fly.io/graphql"; export const INTEGRATION_CIRCLECI_API_URL = "https://circleci.com/api"; export const INTEGRATION_TRAVISCI_API_URL = "https://api.travis-ci.com"; -export const INTEGRATION_SUPABASE_API_URL = 'https://api.supabase.com'; +export const INTEGRATION_SUPABASE_API_URL = "https://api.supabase.com"; export const INTEGRATION_LARAVELFORGE_API_URL = "https://forge.laravel.com"; -export const INTEGRATION_CHECKLY_API_URL = 'https://api.checklyhq.com'; -export const INTEGRATION_CLOUDFLARE_PAGES_API_URL = 'https://api.cloudflare.com'; -export const INTEGRATION_CODEFRESH_API_URL = 'https://g.codefresh.io/api'; +export const INTEGRATION_CHECKLY_API_URL = "https://api.checklyhq.com"; +export const INTEGRATION_CLOUDFLARE_PAGES_API_URL = "https://api.cloudflare.com"; +export const INTEGRATION_CODEFRESH_API_URL = "https://g.codefresh.io/api"; export const getIntegrationOptions = async () => { const INTEGRATION_OPTIONS = [ @@ -245,10 +245,9 @@ export const getIntegrationOptions = async () => { slug: "cloudflare-pages", image: "Cloudflare.png", isAvailable: true, -<<<<<<< HEAD - type: 'pat', - clientId: '', - docsLink: '' + type: "pat", + clientId: "", + docsLink: "" }, { name: "Codefresh", @@ -259,12 +258,6 @@ export const getIntegrationOptions = async () => { clientId: "", docsLink: "", }, -======= - type: "pat", - clientId: "", - docsLink: "" - } ->>>>>>> origin ] return INTEGRATION_OPTIONS; From 043133444d608d71cc138aa1ea6bdc197234033b Mon Sep 17 00:00:00 2001 From: akhilmhdh Date: Thu, 20 Jul 2023 14:18:35 +0530 Subject: [PATCH 43/49] fix: made include_imports optional in raw secrets fetch --- backend/src/routes/v3/secrets.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/src/routes/v3/secrets.ts b/backend/src/routes/v3/secrets.ts index 445503dec..69ba938e6 100644 --- a/backend/src/routes/v3/secrets.ts +++ b/backend/src/routes/v3/secrets.ts @@ -21,7 +21,7 @@ router.get( query("workspaceId").exists().isString().trim(), query("environment").exists().isString().trim(), query("secretPath").default("/").isString().trim(), - query("include_imports").isBoolean().default(false), + query("include_imports").optional().isBoolean().default(false), validateRequest, requireAuth({ acceptedAuthModes: [ From fb3ceb45812fbeda32360e32874d7563aaf16134 Mon Sep 17 00:00:00 2001 From: Maidul Islam Date: Thu, 20 Jul 2023 17:28:21 -0400 Subject: [PATCH 44/49] Revamp docker docs --- .../getting-started/introduction.mdx | 4 +- .../integrations/platforms/docker-compose.mdx | 4 +- docs/integrations/platforms/docker-intro.mdx | 25 ++++++++++ .../platforms/docker-pass-envs.mdx | 48 +++++++++++++++++++ docs/integrations/platforms/docker.mdx | 24 +++++----- docs/mint.json | 6 ++- 6 files changed, 92 insertions(+), 19 deletions(-) create mode 100644 docs/integrations/platforms/docker-intro.mdx create mode 100644 docs/integrations/platforms/docker-pass-envs.mdx diff --git a/docs/documentation/getting-started/introduction.mdx b/docs/documentation/getting-started/introduction.mdx index 85ba1e59c..0f54726bb 100644 --- a/docs/documentation/getting-started/introduction.mdx +++ b/docs/documentation/getting-started/introduction.mdx @@ -31,11 +31,11 @@ Start syncing environment variables with [Infisical Cloud](https://app.infisical > Fetch secrets with any programming language on demand - + Inject secrets into Docker containers + Install and run your app start command with Infisical CLI + + + + Feed secrets via `--env-file` flag in docker run command + + + Inject secrets to multiple services using Docker Compose + + + + +The main difference between the "Docker Entrypoint" and "Docker run" approach is where the Infisical CLI is installed. +In most production settings, it's typically inconvenient to have the Infisical CLI installed and executed externally. +As a result, we suggest using the "Docker Entrypoint" method for production purposes. +However, if this limitation doesn't apply to you, select the method that best fits your needs. + \ No newline at end of file diff --git a/docs/integrations/platforms/docker-pass-envs.mdx b/docs/integrations/platforms/docker-pass-envs.mdx new file mode 100644 index 000000000..d6451de71 --- /dev/null +++ b/docs/integrations/platforms/docker-pass-envs.mdx @@ -0,0 +1,48 @@ +--- +title: "Docker Run" +description: "Pass secrets to your docker container at run time" +--- + +This method allows you to feed secrets from Infisical into your container using the `--env-file` flag of `docker run` command. +Rather than giving the flag a file path to your env file, you'll use the Infisical CLI to create a virtual file path. + +For this method to function as expected, you must have a bash shell (for processing substitution) and the [Infisical CLI](../../cli/overview) installed in the environment where you will be running the `docker run` command. + +## 1. Authentication + +If you are already logged in via the CLI you can skip this step. Otherwise, head to your project settings in Infisical Cloud to generate an [Infisical Token](/documentation/platform/token). The service token will allow you to authenticate and fetch secrets from Infisical. +Once you have created a service token with the required permissions, you'll need to feed the token to the CLI. + +#### Pass as flag +You may use the --token flag to set the token + +```bash +infisical export --token=<> +``` + +#### Pass via shell environment variable +The CLI is configured to look for an environment variable named `INFISICAL_TOKEN`. If set, it'll attempt to use it for authentication. + +```bash +export INFISICAL_TOKEN=<> +``` + + + In production scenarios, please to avoid using the `infisical login` command and instead use a [service token](/documentation/platform/token). + + +## 2. Run your docker command with Infisical +Next, use the --env-file flag of the `docker run` command with Infisical CLI to point to your secrets. +Under the hood, this command will fetch secrets from Infisical and serve them as a file to the `--env-file` flag. + +```bash +# In this example, executing a docker run command will initiate an empty Alpine container and display the environment variables passed to it by Infisical. +docker run --rm --env-file <(infisical export --format=dotenv) alpine printenv +``` + +To view all options of the `export` command, click [here](../../cli/commands/export) + + + + When using the --env-file option, Docker does not have the capability to support secrets that span multiple lines. + diff --git a/docs/integrations/platforms/docker.mdx b/docs/integrations/platforms/docker.mdx index 629a81317..848fb6390 100644 --- a/docs/integrations/platforms/docker.mdx +++ b/docs/integrations/platforms/docker.mdx @@ -1,11 +1,10 @@ --- -title: "Docker" +title: "Docker Entrypoint" description: "How to use Infisical to inject environment variables into a Docker container." --- -Prerequisites: - -- Set up and add envars to [Infisical Cloud](https://app.infisical.com) +This approach allows you to inject secrets from Infisical directly into your application. +This is achieved by installing the Infisical CLI into your docker image and modifying your start command to execute with Infisical. ## Add the Infisical CLI to your Dockerfile @@ -48,18 +47,17 @@ CMD ["infisical", "run", "--", "npm", "run", "start"] CMD ["infisical", "run", "--command", "npm run start && ..."] ``` -## Generate an Infisical Token +## Generate an service token -Head to your project settings in Infisical Cloud to generate an [Infisical Token](/documentation/platform/token). +Head to your project settings in the Infisical dashboard to generate an [service token](/documentation/platform/token). +This service token will allow you to authenticate and fetch secrets from Infisical. +Once you have created a service token with the required permissions, you’ll need to feed the token to the CLI installed in your docker container. -## Feed Docker your Infisical Token +## Feed service token to docker container +The last step is to give the Infisical CLI installed in your Docker container access to the service token. This will allow the CLI to fetch and inject the secrets into your application. + +To feed the service token to the container, use the INFISICAL_TOKEN environment variable as shown below. ```bash docker run --env INFISICAL_TOKEN=[token] [DOCKER-IMAGE]... ``` - - - -The Infisical CLI uses the detected `INFISICAL_TOKEN` environment variable to authenticate, retrieve, and inject the environment variables which the token is authorized for. - - diff --git a/docs/mint.json b/docs/mint.json index a749524ef..38f904ef4 100644 --- a/docs/mint.json +++ b/docs/mint.json @@ -91,8 +91,8 @@ "documentation/getting-started/introduction", "documentation/getting-started/platform", "documentation/getting-started/sdks", - "documentation/getting-started/docker", - "documentation/getting-started/kubernetes", + "integrations/platforms/kubernetes", + "integrations/platforms/docker-intro", "documentation/getting-started/api" ] }, @@ -187,7 +187,9 @@ { "group": "Docker", "pages": [ + "integrations/platforms/docker-intro", "integrations/platforms/docker", + "integrations/platforms/docker-pass-envs", "integrations/platforms/docker-compose" ] }, From beb8d2634ac16a5ce83426c7d562e2d82a50eab1 Mon Sep 17 00:00:00 2001 From: Maidul Islam Date: Thu, 20 Jul 2023 17:59:59 -0400 Subject: [PATCH 45/49] add docs to pin cli --- docs/cli/overview.mdx | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/docs/cli/overview.mdx b/docs/cli/overview.mdx index ed3a78a97..6e8b577df 100644 --- a/docs/cli/overview.mdx +++ b/docs/cli/overview.mdx @@ -3,7 +3,8 @@ title: 'Install' description: "Infisical's CLI is one of the best way to manage environments and secrets. Install it here" --- -The Infisical CLI can be used to access secrets across various environments, whether it's local development, CI/CD, staging, or production. +The Infisical CLI is powerful command line tool that can be used to retrieve, modify, export and inject secrets into any process or application as environment variables. +You can use it across various environments, whether it's local development, CI/CD, staging, or production. ## Installation @@ -57,7 +58,10 @@ The Infisical CLI can be used to access secrets across various environments, whe ```bash apk update && sudo apk add infisical ``` - + ### + + If you are installing the CLI in for production environments, we highly recommend to set the version of the CLI to a specific version. This will help keep your CLI version consistent across reinstalls. [View versions](https://cloudsmith.io/~infisical/repos/infisical-cli/packages/) + Add Infisical repository @@ -71,7 +75,10 @@ The Infisical CLI can be used to access secrets across various environments, whe ```bash sudo yum install infisical ``` - + ### + + If you are installing the CLI in for production environments, we highly recommend to set the version of the CLI to a specific version. This will help keep your CLI version consistent across reinstalls. [View versions](https://cloudsmith.io/~infisical/repos/infisical-cli/packages/) + Add Infisical repository @@ -86,7 +93,10 @@ The Infisical CLI can be used to access secrets across various environments, whe ```bash sudo apt-get update && sudo apt-get install -y infisical ``` - + ### + + If you are installing the CLI in for production environments, we highly recommend to set the version of the CLI to a specific version. This will help keep your CLI version consistent across reinstalls. [View versions](https://cloudsmith.io/~infisical/repos/infisical-cli/packages/) + Use the `yay` package manager to install from the [Arch User Repository](https://aur.archlinux.org/packages/infisical-bin) @@ -95,6 +105,9 @@ The Infisical CLI can be used to access secrets across various environments, whe yay -S infisical-bin ``` + ### + + If you are installing the CLI in for production environments, we highly recommend to set the version of the CLI to a specific version. This will help keep your CLI version consistent across reinstalls. [View versions](https://cloudsmith.io/~infisical/repos/infisical-cli/packages/) + - - + \ No newline at end of file From 705b1833d05b85c429177d9be04f8eda1873ebbf Mon Sep 17 00:00:00 2001 From: Maidul Islam Date: Thu, 20 Jul 2023 18:18:43 -0400 Subject: [PATCH 46/49] update CLI usage and docs for pinning docker --- docs/cli/usage.mdx | 2 +- docs/integrations/platforms/docker.mdx | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/docs/cli/usage.mdx b/docs/cli/usage.mdx index 54a3c56dd..4e3d212fe 100644 --- a/docs/cli/usage.mdx +++ b/docs/cli/usage.mdx @@ -8,7 +8,7 @@ The distinguishing factor, however, is the authentication method used. - To use the Infisical CLI in your development environment, simply run the following command and follow the interactive guide. + To use the Infisical CLI in your development environment, simply run the command below and follow the interactive guide. ```bash infisical login diff --git a/docs/integrations/platforms/docker.mdx b/docs/integrations/platforms/docker.mdx index 848fb6390..e9682b785 100644 --- a/docs/integrations/platforms/docker.mdx +++ b/docs/integrations/platforms/docker.mdx @@ -32,6 +32,10 @@ This is achieved by installing the Infisical CLI into your docker image and modi ``` +#### + + We recommend you to set the version of the CLI to a specific version. This will help keep your CLI version consistent across reinstalls. [View versions](https://cloudsmith.io/~infisical/repos/infisical-cli/packages/) + ## Modify the start command in your Dockerfile From 15d81233b4649b71677ef1a72c974e55069f55dc Mon Sep 17 00:00:00 2001 From: Maidul Islam Date: Thu, 20 Jul 2023 18:25:54 -0400 Subject: [PATCH 47/49] update docs overvew --- docs/documentation/getting-started/introduction.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/documentation/getting-started/introduction.mdx b/docs/documentation/getting-started/introduction.mdx index 0f54726bb..1f04e1763 100644 --- a/docs/documentation/getting-started/introduction.mdx +++ b/docs/documentation/getting-started/introduction.mdx @@ -17,7 +17,7 @@ Start syncing environment variables with [Infisical Cloud](https://app.infisical Store secrets like API keys, database credentials, environment variables with Infisical -## Integrate with Infisical +## Access secrets From 817ddd228c7274981a7d91c1aeb5db1adb59a041 Mon Sep 17 00:00:00 2001 From: Maidul Islam Date: Thu, 20 Jul 2023 19:15:58 -0400 Subject: [PATCH 48/49] Update overview.mdx --- docs/cli/overview.mdx | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/cli/overview.mdx b/docs/cli/overview.mdx index 6e8b577df..434a39c51 100644 --- a/docs/cli/overview.mdx +++ b/docs/cli/overview.mdx @@ -60,7 +60,7 @@ You can use it across various environments, whether it's local development, CI/C ``` ### - If you are installing the CLI in for production environments, we highly recommend to set the version of the CLI to a specific version. This will help keep your CLI version consistent across reinstalls. [View versions](https://cloudsmith.io/~infisical/repos/infisical-cli/packages/) + If you are installing the CLI in production environments, we highly recommend to set the version of the CLI to a specific version. This will help keep your CLI version consistent across reinstalls. [View versions](https://cloudsmith.io/~infisical/repos/infisical-cli/packages/) @@ -77,7 +77,7 @@ You can use it across various environments, whether it's local development, CI/C ``` ### - If you are installing the CLI in for production environments, we highly recommend to set the version of the CLI to a specific version. This will help keep your CLI version consistent across reinstalls. [View versions](https://cloudsmith.io/~infisical/repos/infisical-cli/packages/) + If you are installing the CLI in production environments, we highly recommend to set the version of the CLI to a specific version. This will help keep your CLI version consistent across reinstalls. [View versions](https://cloudsmith.io/~infisical/repos/infisical-cli/packages/) @@ -95,7 +95,7 @@ You can use it across various environments, whether it's local development, CI/C ``` ### - If you are installing the CLI in for production environments, we highly recommend to set the version of the CLI to a specific version. This will help keep your CLI version consistent across reinstalls. [View versions](https://cloudsmith.io/~infisical/repos/infisical-cli/packages/) + If you are installing the CLI in production environments, we highly recommend to set the version of the CLI to a specific version. This will help keep your CLI version consistent across reinstalls. [View versions](https://cloudsmith.io/~infisical/repos/infisical-cli/packages/) @@ -107,7 +107,7 @@ You can use it across various environments, whether it's local development, CI/C ### - If you are installing the CLI in for production environments, we highly recommend to set the version of the CLI to a specific version. This will help keep your CLI version consistent across reinstalls. [View versions](https://cloudsmith.io/~infisical/repos/infisical-cli/packages/) + If you are installing the CLI in production environments, we highly recommend to set the version of the CLI to a specific version. This will help keep your CLI version consistent across reinstalls. [View versions](https://cloudsmith.io/~infisical/repos/infisical-cli/packages/) - \ No newline at end of file + From af650ef4c73261a5d8a45ac19d95c1394e43d468 Mon Sep 17 00:00:00 2001 From: Maidul Islam Date: Thu, 20 Jul 2023 20:02:49 -0400 Subject: [PATCH 49/49] patch env delete bug --- .../controllers/v2/environmentController.ts | 31 ++++++++++++------- 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/backend/src/controllers/v2/environmentController.ts b/backend/src/controllers/v2/environmentController.ts index e1381db54..58f1e10f8 100644 --- a/backend/src/controllers/v2/environmentController.ts +++ b/backend/src/controllers/v2/environmentController.ts @@ -27,16 +27,16 @@ export const createWorkspaceEnvironment = async ( const { workspaceId } = req.params; const { environmentName, environmentSlug } = req.body; const workspace = await Workspace.findById(workspaceId).exec(); - + if (!workspace) throw WorkspaceNotFoundError(); - + const plan = await EELicenseService.getPlan(workspace.organization.toString()); - + if (plan.environmentLimit !== null) { // case: limit imposed on number of environments allowed if (workspace.environments.length >= plan.environmentLimit) { // case: number of environments used exceeds the number of environments allowed - + return res.status(400).send({ message: "Failed to create environment due to environment limit reached. Upgrade plan to create more environments.", }); @@ -191,14 +191,21 @@ export const deleteWorkspaceEnvironment = async ( workspace: workspaceId, environment: environmentSlug, }); - await ServiceToken.deleteMany({ - workspace: workspaceId, - environment: environmentSlug, - }); - await ServiceTokenData.deleteMany({ - workspace: workspaceId, - environment: environmentSlug, - }); + + // await ServiceToken.deleteMany({ + // workspace: workspaceId, + // environment: environmentSlug, + // }); + + const result = await ServiceTokenData.updateMany( + { workspace: workspaceId }, + { $pull: { scopes: { environment: environmentSlug } } } + ); + + if (result.modifiedCount > 0) { + await ServiceTokenData.deleteMany({ workspace: workspaceId, scopes: { $size: 0 } }); + } + await Integration.deleteMany({ workspace: workspaceId, environment: environmentSlug,