From af61b7045ee94a9e081db6abbfec7cf74ceff746 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Fri, 22 Dec 2023 19:10:02 +0300 Subject: [PATCH 001/146] initial commits and worfflow --- .github/workflows/ci.yaml | 140 +++++++++++------- .npmrc | 2 + Dockerfile.dev | 4 +- package.json | 124 +++++++--------- scripts/cli-tests.js | 2 +- scripts/coverage.js | 2 +- scripts/init.js | 2 +- scripts/postinstall.js | 2 +- scripts/postmantest.js | 2 +- scripts/preuninstall.js | 2 +- scripts/run-test.js | 2 +- scripts/scripts-api.js | 2 +- scripts/start-dev.js | 2 +- scripts/start.js | 2 +- scripts/stop.js | 2 +- scripts/test.js | 2 +- scripts/util.js | 2 +- src/cli/application.js | 2 +- src/cli/base-cli-handler.js | 6 +- src/cli/catalog.js | 2 +- src/cli/cli-data-types.js | 2 +- src/cli/config.js | 2 +- src/cli/controller.js | 2 +- src/cli/diagnostics.js | 2 +- src/cli/index.js | 2 +- src/cli/iofog.js | 2 +- src/cli/microservice.js | 2 +- src/cli/registry.js | 2 +- src/cli/start.js | 2 +- src/cli/tunnel.js | 2 +- src/cli/user.js | 2 +- src/config/constants.js | 2 +- src/config/index.js | 2 +- src/controllers/agent-controller.js | 2 +- src/controllers/application-controller.js | 2 +- .../application-template-controller.js | 2 +- src/controllers/catalog-controller.js | 2 +- src/controllers/config-controller.js | 2 +- src/controllers/controller.js | 2 +- src/controllers/diagnostic-controller.js | 2 +- src/controllers/edge-resource-controller.js | 2 +- src/controllers/iofog-controller.js | 2 +- src/controllers/kubelet-controller.js | 2 +- src/controllers/microservices-controller.js | 2 +- src/controllers/registry-controller.js | 2 +- src/controllers/router-controller.js | 2 +- src/controllers/routing-controller.js | 2 +- src/controllers/tunnel-controller.js | 2 +- src/controllers/user-controller.js | 2 +- src/daemon.js | 2 +- src/data/managers/access-token-manager.js | 2 +- src/data/managers/application-manager.js | 2 +- .../managers/application-template-manager.js | 2 +- .../application-template-variable-manager.js | 2 +- src/data/managers/base-manager.js | 2 +- .../managers/catalog-item-image-manager.js | 2 +- .../catalog-item-input-type-manager.js | 2 +- src/data/managers/catalog-item-manager.js | 2 +- .../catalog-item-output-type-manager.js | 2 +- src/data/managers/change-tracking-manager.js | 2 +- src/data/managers/config-manager.js | 2 +- .../managers/email-activation-code-manager.js | 2 +- src/data/managers/hw-info-manager.js | 2 +- .../managers/iofog-access-token-manager.js | 2 +- src/data/managers/iofog-manager.js | 2 +- .../managers/iofog-provision-key-manager.js | 2 +- src/data/managers/iofog-type-manager.js | 2 +- .../managers/iofog-version-command-manager.js | 2 +- .../managers/kubelet-access-token-manager.js | 2 +- src/data/managers/microservice-arg-manager.js | 2 +- src/data/managers/microservice-env-manager.js | 2 +- .../microservice-extra-host-manager.js | 2 +- src/data/managers/microservice-manager.js | 2 +- .../managers/microservice-port-manager.js | 2 +- .../microservice-proxy-port-manager.js | 2 +- .../microservice-public-mode-manager.js | 2 +- .../microservice-public-port-manager.js | 2 +- .../managers/microservice-status-manager.js | 2 +- .../managers/router-connection-manager.js | 2 +- src/data/managers/router-manager.js | 2 +- src/data/managers/routing-manager.js | 2 +- .../scheduler-access-token-manager.js | 2 +- .../managers/strace-diagnostics-manager.js | 2 +- src/data/managers/strace-manager.js | 2 +- src/data/managers/tags-manager.js | 2 +- src/data/managers/usb-info-manager.js | 2 +- src/data/managers/user-manager.js | 2 +- src/data/managers/volume-mapping-manager.js | 2 +- src/data/models/changetracking.js | 2 +- src/decorators/authorization-decorator.js | 2 +- src/decorators/cli-decorator.js | 2 +- src/decorators/response-decorator.js | 2 +- src/decorators/transaction-decorator.js | 2 +- src/enums/fog-state.js | 2 +- src/enums/microservice-state.js | 2 +- src/helpers/app-helper.js | 2 +- src/helpers/constants.js | 2 +- src/helpers/error-messages.js | 2 +- src/helpers/errors.js | 2 +- src/jobs/fog-status-job.js | 2 +- src/jobs/stopped-app-status-job.js | 2 +- src/logger/index.js | 2 +- src/main.js | 2 +- src/routes/agent.js | 2 +- src/routes/application.js | 2 +- src/routes/applicationTemplate.js | 2 +- src/routes/capabilities.js | 2 +- src/routes/catalog.js | 2 +- src/routes/config.js | 2 +- src/routes/controller.js | 2 +- src/routes/diagnostics.js | 2 +- src/routes/edgeResource.js | 2 +- src/routes/flow.js | 2 +- src/routes/iofog.js | 2 +- src/routes/kubelet.js | 2 +- src/routes/microservices.js | 2 +- src/routes/registries.js | 2 +- src/routes/router.js | 2 +- src/routes/routing.js | 2 +- src/routes/tunnel.js | 2 +- src/routes/user.js | 2 +- src/schemas/agent.js | 2 +- src/schemas/catalog.js | 2 +- src/schemas/config.js | 2 +- src/schemas/diagnostics.js | 2 +- src/schemas/edgeResource.js | 2 +- src/schemas/index.js | 2 +- src/schemas/iofog.js | 2 +- src/schemas/registry.js | 2 +- src/schemas/routing.js | 2 +- src/schemas/tunnel.js | 2 +- src/schemas/user.js | 2 +- src/server.js | 2 +- src/services/access-token-service.js | 2 +- src/services/agent-service.js | 2 +- src/services/application-service.js | 2 +- src/services/application-template-service.js | 2 +- src/services/catalog-service.js | 2 +- src/services/change-tracking-service.js | 2 +- src/services/config-service.js | 2 +- src/services/controller-service.js | 2 +- src/services/diagnostic-service.js | 2 +- src/services/edge-resource-service.js | 2 +- src/services/email-activation-code-service.js | 2 +- src/services/iofog-access-token-service.js | 2 +- src/services/iofog-service.js | 2 +- src/services/kubelet-access-token-service.js | 2 +- src/services/kubelet-service.js | 2 +- src/services/microservice-ports/default.js | 2 +- src/services/microservice-ports/factory.js | 2 +- src/services/microservices-service.js | 2 +- src/services/registry-service.js | 2 +- src/services/router-service.js | 2 +- src/services/routing-service.js | 2 +- .../scheduler-access-token-service.js | 2 +- src/services/tunnel-service.js | 2 +- src/services/user-service.js | 2 +- src/views/email-activation-temp.js | 2 +- src/views/email-temp.js | 2 +- src/views/reset-password-temp.js | 2 +- 160 files changed, 305 insertions(+), 281 deletions(-) create mode 100644 .npmrc diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 600a68db6..3508811cc 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -1,42 +1,57 @@ name: CI on: - push: + push: branches: - - develop - - release* + - main tags: [v*] paths-ignore: - README.md - CHANGELOG.md - LICENSE pull_request: - # Sequence of patterns matched against refs/heads - branches: - - develop - - release* + # Sequence of patterns matched against refs/heads + branches: + - main paths-ignore: - README.md - CHANGELOG.md - LICENSE - env: - project: 'focal-freedom-236620' - image: 'controller' + IMAGE_NAME: 'controller' + jobs: Build: - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 + strategy: + matrix: + platform: + - linux/amd64 + - linux/386 + - linux/arm/v6 + - linux/arm/v7 + - linux/arm64 permissions: - contents: 'read' - id-token: 'write' - packages: 'write' + actions: write + checks: write + contents: write + deployments: write + id-token: write + issues: write + discussions: write + packages: write + pages: write + pull-requests: write + repository-projects: write + security-events: write + statuses: write name: Preflight steps: - uses: actions/checkout@v3 - uses: actions/setup-node@v3 with: - node-version: 18 + node-version: 10 - run: npm ci - run: npm run standard - run: | @@ -45,17 +60,30 @@ jobs: Tests: needs: Build - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 permissions: - contents: 'read' - id-token: 'write' - packages: 'write' - issues: read + actions: write checks: write + contents: write + deployments: write + id-token: write + issues: write + discussions: write + packages: write + pages: write pull-requests: write + repository-projects: write + security-events: write + statuses: write strategy: matrix: - node: [ 16, 17, 16, 19 ] + platform: + - linux/amd64 + - linux/386 + - linux/arm/v6 + - linux/arm/v7 + - linux/arm64 + node: [ 16, 17, 16, 19,20 ] name: Node ${{ matrix.node }} Test steps: - uses: actions/checkout@v3 @@ -83,17 +111,42 @@ jobs: Publish: needs: [Build, Tests] - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 permissions: - contents: 'read' - id-token: 'write' - packages: 'write' + actions: write + checks: write + contents: write + deployments: write + id-token: write + issues: write + discussions: write + packages: write + pages: write + pull-requests: write + repository-projects: write + security-events: write + statuses: write + strategy: + matrix: + platform: + - linux/amd64 + - linux/386 + - linux/arm/v6 + - linux/arm/v7 + - linux/arm64 name: Publish Controller steps: - uses: actions/checkout@v3 - uses: actions/setup-node@v3 with: - node-version: 18 + node-version: 20 + - name: Replace values + shell: bash + env: + PAT: ${{ secrets.PAT }} + run: | + sed -i.back "s|PAT|${PAT}|g" ./path/to/.npmrc + - run: npm ci - name: npm version @@ -114,45 +167,24 @@ jobs: run: | npm --no-git-tag-version version ${{ steps.version.outputs.pkg_version }} npm pack + npm publish - name: Login to Github Container Registry uses: docker/login-action@v2 with: registry: "ghcr.io" username: ${{ github.actor }} - password: ${{ github.token }} + password: ${{ secrets.PAT }} - name: Build and Push to ghcr uses: docker/build-push-action@v3 id: build_push_ghcr with: file: Dockerfile.dev + platforms: ${{ matrix.platforms }} push: true + outputs: type=image,name=target,annotation-index.org.opencontainers.image.description=Proxy tags: | - ghcr.io/eclipse-iofog/controller:${{ steps.version.outputs.pkg_version }} - ghcr.io/eclipse-iofog/controller:latest - build-args: PKG_VERSION=${{ steps.version.outputs.pkg_version }} - - - name: Build and Push to GCR - id: build_push_gcr - uses: RafikFarhad/push-to-gcr-github-action@v5-beta - with: - gcloud_service_key: ${{ secrets.GCLOUD_SERVICE_KEY }} - registry: gcr.io - project_id: ${{ env.project }} - image_name: ${{ env.image }} - image_tag: latest,${{ steps.version.outputs.pkg_version }} - dockerfile: Dockerfile.dev - build_args: PKG_VERSION=${{ steps.version.outputs.pkg_version }} - - - run: ls - - - name: Publish package to packagecloud - if: ${{ steps.build_push_gcr.outcome }} == 'success' - uses: danielmundi/upload-packagecloud@v1 - with: - PACKAGE-NAME: iofog-iofogcontroller-${{ steps.version.outputs.pkg_version }}.tgz - PACKAGECLOUD-USERNAME: iofog - PACKAGECLOUD-REPO: iofog-controller-snapshots - PACKAGECLOUD-DISTRIB: node - PACKAGECLOUD-TOKEN: ${{ secrets.packagecloud_token }} \ No newline at end of file + ghcr.io/datasance/${{ env.IMAGE_NAME }}:${{ steps.tags.outputs.VERSION }} + ghcr.io/datasance/${{ env.IMAGE_NAME }}:latest + ghcr.io/datasance/${{ env.IMAGE_NAME }}:main diff --git a/.npmrc b/.npmrc new file mode 100644 index 000000000..25346e481 --- /dev/null +++ b/.npmrc @@ -0,0 +1,2 @@ +//npm.pkg.github.com/:_authToken=PAT +@NAMESPACE:registry=https://npm.pkg.github.com \ No newline at end of file diff --git a/Dockerfile.dev b/Dockerfile.dev index 09e2209cc..1c187562f 100644 --- a/Dockerfile.dev +++ b/Dockerfile.dev @@ -1,4 +1,4 @@ -FROM node:hydrogen-buster AS builder +FROM node:iron-bookworm AS builder ARG PKG_VERSION @@ -16,7 +16,7 @@ RUN npm version $PKG_VERSION --allow-same-version --no-git-tag-version RUN npm pack -FROM node:hydrogen-alpine3.17 +FROM node:iron-alpine3.19 RUN apk add sudo logrotate g++ make diff --git a/package.json b/package.json index c6d25a162..572c11f81 100644 --- a/package.json +++ b/package.json @@ -1,30 +1,17 @@ { - "name": "@iofog/iofogcontroller", + "name": "@datasance/iofogcontroller", "version": "3.0.4", - "description": "ioFog Controller project for Eclipse IoFog @ iofog.org \\nCopyright (c) 2018 Edgeworx, Inc.", + "description": "ioFog Controller project for Eclipse IoFog @ iofog.org \\nCopyright (c) 2023 Datasance Teknoloji A.S.", "main": "./src/main.js", - "author": "Saeid Baghbidi", + "author": "Emirhan Durmus", "contributors": [ - "Kilton Hopkins ", - "Saeid Rezaei Baghbidi", - "Alexandre de Wergifosse", - "Pavel Kazlou", - "Egor Krylovich", - "Iryna Laryionava", - "Maryna Lipnitskaya", - "Dmitriy Kudasov", - "Dmitry Stolbunov", - "Darya Busel", - "Alexander Shpak", - "Kate Lukashick", - "Eugene Pankov", - "Maksim Chepelev", - "Tetiana Yatsiuk", - "Sergey Valevich" + "Emirhan Durmus ", + "Oguzhan Herkiloglu ", + "Burak Vural " ], "license": "EPL-2.0", "bugs": { - "email": "edgemaster@iofog.org" + "email": "support@datasance.com" }, "standard": { "ignore": [ @@ -32,10 +19,10 @@ "src/lib/**/*.js" ] }, - "homepage": "https://www.iofog.org", + "homepage": "https://www.datasance.com", "repository": { "type": "git", - "url": "https://github.com/ioFog/Controller" + "url": "https://github.com/datasance/Controller" }, "scripts": { "prestart": "npm run lint", @@ -68,68 +55,71 @@ }, "dependencies": { "@iofog/ecn-viewer": "3.0.2", - "axios": "1.0.0-alpha.1", - "body-parser": "^1.20.1", + "axios": "1.6.2", + "body-parser": "^1.20.2", "child_process": "1.0.2", - "command-line-args": "5.0.2", - "command-line-usage": "5.0.5", + "command-line-args": "5.2.1", + "command-line-usage": "7.0.1", "concurrent-queue": "7.0.2", - "cookie-parser": "1.4.3", + "cookie-parser": "1.4.6", "cors": "2.8.5", "daemonize2": "0.4.2", - "ejs": "3.1.7", - "express": "4.17.3", - "formidable": "1.2.1", + "ejs": "3.1.9", + "express": "4.18.2", + "formidable": "3.5.1", "ftp": "0.3.10", - "helmet": "3.21.2", - "is-elevated": "3.0.0", - "js-yaml": "3.14.1", - "jsonschema": "1.2.5", - "minimatch": "3.1.2", + "helmet": "7.1.0", + "is-elevated": "4.0.0", + "js-yaml": "4.1.0", + "jsonschema": "1.4.1", + "liquidjs": "10.10.0", + "minimatch": "9.0.3", + "mongodb": "^6.3.0", "moment": "2.29.4", - "moment-timezone": "0.5.38", - "morgan": "1.9.1", + "moment-timezone": "0.5.43", + "morgan": "1.10.0", "multer": "1.4.5-lts.1", - "nconf": "0.12.0", - "nodemailer": "6.7.3", - "nodemailer-smtp-transport": "2.4.2", - "os": "0.1.1", + "nconf": "0.12.1", + "nodemailer": "6.9.7", + "nodemailer-smtp-transport": "2.7.4", + "os": "0.1.2", "path": "0.12.7", - "pino": "6.6.1", - "pino-std-serializers": "2.5.0", + "pino": "8.17.1", + "pino-std-serializers": "6.2.2", "portscanner": "2.2.0", - "qs": "6.10.3", + "qs": "6.11.2", "request": "2.88.0", "request-promise": "4.2.4", - "retry-as-promised": "3.1.0", - "semantic-release": "19.0.3", - "semver": "5.6.0", - "sequelize": "6.29.0", - "sqlite3": "^5.1.5", + "retry-as-promised": "7.0.4", + "semantic-release": "22.0.12", + "semver": "7.5.4", + "sequelize": "6.35.2", + "sqlite3": "^5.1.6", "string-format": "2.0.0", - "swagger-ui-express": "^4.6.2", - "umzug": "2.2.0", - "underscore": "1.13.1", + "swagger-ui-express": "^5.0.0", + "umzug": "3.5.0", + "underscore": "1.13.6", "xss-clean": "0.1.1" }, "devDependencies": { - "acorn": "7.1.1", - "bdd-lazy-var": "2.5.2", - "chai": "4.2.0", + "acorn": "8.11.2", + "bdd-lazy-var": "2.6.1", + "chai": "4.3.10", "chai-as-promised": "7.1.1", - "chai-http": "4.2.1", - "eslint": "5.14.1", - "eslint-config-google": "0.12.0", - "mocha": "9.2.2", - "mocha-junit-reporter": "2.0.0", - "newman": "5.3.2", + "chai-http": "4.4.0", + "eslint": "8.56.0", + "eslint-config-google": "0.14.0", + "mocha": "10.2.0", + "mocha-junit-reporter": "2.2.1", + "mongodb": "^6.3.0", + "newman": "6.0.0", "newman-reporter-junitfull": "1.1.1", - "nyc": "15.0.0", - "sequelize-cli": "5.5.0", - "sinon": "7.5.0", - "sinon-chai": "3.3.0", - "snyk": "^1.1064.0", - "standard": "12.0.1" + "nyc": "15.1.0", + "sequelize-cli": "6.6.2", + "sinon": "17.0.1", + "sinon-chai": "3.7.0", + "snyk": "^1.1266.0", + "standard": "17.1.0" }, "files": [ "/scripts", diff --git a/scripts/cli-tests.js b/scripts/cli-tests.js index 6f55ff610..4db238617 100644 --- a/scripts/cli-tests.js +++ b/scripts/cli-tests.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2018 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/scripts/coverage.js b/scripts/coverage.js index ad9793ec1..ee8c0d201 100644 --- a/scripts/coverage.js +++ b/scripts/coverage.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2018 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/scripts/init.js b/scripts/init.js index 91ef17f02..09cbee6b6 100644 --- a/scripts/init.js +++ b/scripts/init.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2018 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/scripts/postinstall.js b/scripts/postinstall.js index cd734dc71..8acb26bec 100644 --- a/scripts/postinstall.js +++ b/scripts/postinstall.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2018 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/scripts/postmantest.js b/scripts/postmantest.js index 3d2aa07ed..555254a38 100644 --- a/scripts/postmantest.js +++ b/scripts/postmantest.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2018 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/scripts/preuninstall.js b/scripts/preuninstall.js index ad9e80d99..b22fd9e27 100644 --- a/scripts/preuninstall.js +++ b/scripts/preuninstall.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2018 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/scripts/run-test.js b/scripts/run-test.js index 78f0dcc2a..14f1e5e30 100644 --- a/scripts/run-test.js +++ b/scripts/run-test.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2018 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/scripts/scripts-api.js b/scripts/scripts-api.js index 25bcf32e7..1af3818ca 100644 --- a/scripts/scripts-api.js +++ b/scripts/scripts-api.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2018 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/scripts/start-dev.js b/scripts/start-dev.js index fa8a309a0..3f852f468 100644 --- a/scripts/start-dev.js +++ b/scripts/start-dev.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2018 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/scripts/start.js b/scripts/start.js index c56cabee9..bf021f270 100644 --- a/scripts/start.js +++ b/scripts/start.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2018 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/scripts/stop.js b/scripts/stop.js index f81ee01a3..bcbc4e8de 100644 --- a/scripts/stop.js +++ b/scripts/stop.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2018 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/scripts/test.js b/scripts/test.js index 1939537bf..b53c9beff 100644 --- a/scripts/test.js +++ b/scripts/test.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2018 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/scripts/util.js b/scripts/util.js index eee10e00c..19d342820 100644 --- a/scripts/util.js +++ b/scripts/util.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2018 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/cli/application.js b/src/cli/application.js index 833467ef4..ef50cfd41 100644 --- a/src/cli/application.js +++ b/src/cli/application.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/cli/base-cli-handler.js b/src/cli/base-cli-handler.js index 94254c10c..48b0bdb36 100644 --- a/src/cli/base-cli-handler.js +++ b/src/cli/base-cli-handler.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at @@ -62,7 +62,7 @@ class CLIHandler { const usage = [ { header: 'ioFogController', - content: 'Fog Controller project for Eclipse IoFog @ iofog.org \\nCopyright (c) 2020 Edgeworx, Inc.' + content: 'Fog Controller project for Eclipse IoFog @ iofog.org \\nCopyright (c) 2023 Datasance Teknoloji A.S.' } ].concat(sections) logger.cliRes(commandLineUsage(usage)) @@ -95,7 +95,7 @@ class CLIHandler { const usage = [ { header: 'ioFogController', - content: 'Fog Controller project for Eclipse IoFog @ iofog.org \\nCopyright (c) 2020 Edgeworx, Inc.' + content: 'Fog Controller project for Eclipse IoFog @ iofog.org \\nCopyright (c) 2023 Datasance Teknoloji A.S.' } ].concat(sections) logger.cliRes(commandLineUsage(usage)) diff --git a/src/cli/catalog.js b/src/cli/catalog.js index cf9662517..33a3e1908 100644 --- a/src/cli/catalog.js +++ b/src/cli/catalog.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/cli/cli-data-types.js b/src/cli/cli-data-types.js index 8c8d6f8c0..909e3c115 100644 --- a/src/cli/cli-data-types.js +++ b/src/cli/cli-data-types.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/cli/config.js b/src/cli/config.js index 6d111077b..f0f813fed 100644 --- a/src/cli/config.js +++ b/src/cli/config.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/cli/controller.js b/src/cli/controller.js index 4e6b6a85a..ab650c4c8 100644 --- a/src/cli/controller.js +++ b/src/cli/controller.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/cli/diagnostics.js b/src/cli/diagnostics.js index 24fa9cd8c..586ee838f 100644 --- a/src/cli/diagnostics.js +++ b/src/cli/diagnostics.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/cli/index.js b/src/cli/index.js index 7e16cfdba..8b8aba684 100644 --- a/src/cli/index.js +++ b/src/cli/index.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/cli/iofog.js b/src/cli/iofog.js index 7d2533018..163f6d27b 100644 --- a/src/cli/iofog.js +++ b/src/cli/iofog.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/cli/microservice.js b/src/cli/microservice.js index b9cbe2ea2..270371041 100644 --- a/src/cli/microservice.js +++ b/src/cli/microservice.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/cli/registry.js b/src/cli/registry.js index dd7311af0..0be436f1a 100644 --- a/src/cli/registry.js +++ b/src/cli/registry.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/cli/start.js b/src/cli/start.js index 5088626a2..a54e2bee3 100644 --- a/src/cli/start.js +++ b/src/cli/start.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/cli/tunnel.js b/src/cli/tunnel.js index 413ae98f8..5592e5364 100644 --- a/src/cli/tunnel.js +++ b/src/cli/tunnel.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/cli/user.js b/src/cli/user.js index 9f94bddde..252fa44c7 100644 --- a/src/cli/user.js +++ b/src/cli/user.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/config/constants.js b/src/config/constants.js index 99f0fcf92..863a834d2 100644 --- a/src/config/constants.js +++ b/src/config/constants.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/config/index.js b/src/config/index.js index 066246992..a2b6dc907 100644 --- a/src/config/index.js +++ b/src/config/index.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/controllers/agent-controller.js b/src/controllers/agent-controller.js index 04e86e09c..a3c1e794a 100644 --- a/src/controllers/agent-controller.js +++ b/src/controllers/agent-controller.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/controllers/application-controller.js b/src/controllers/application-controller.js index ced617b87..6f16bf308 100644 --- a/src/controllers/application-controller.js +++ b/src/controllers/application-controller.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/controllers/application-template-controller.js b/src/controllers/application-template-controller.js index 1022d1c94..9ebea7122 100644 --- a/src/controllers/application-template-controller.js +++ b/src/controllers/application-template-controller.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/controllers/catalog-controller.js b/src/controllers/catalog-controller.js index c92302db6..fdfd144d8 100644 --- a/src/controllers/catalog-controller.js +++ b/src/controllers/catalog-controller.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/controllers/config-controller.js b/src/controllers/config-controller.js index 7873e6317..c6846baf4 100644 --- a/src/controllers/config-controller.js +++ b/src/controllers/config-controller.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/controllers/controller.js b/src/controllers/controller.js index 8834f830d..84cc5f3ff 100644 --- a/src/controllers/controller.js +++ b/src/controllers/controller.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/controllers/diagnostic-controller.js b/src/controllers/diagnostic-controller.js index 0ede7bc28..d7ae6e199 100644 --- a/src/controllers/diagnostic-controller.js +++ b/src/controllers/diagnostic-controller.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/controllers/edge-resource-controller.js b/src/controllers/edge-resource-controller.js index 79abed87b..9cd0dccdd 100644 --- a/src/controllers/edge-resource-controller.js +++ b/src/controllers/edge-resource-controller.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/controllers/iofog-controller.js b/src/controllers/iofog-controller.js index d9db42345..00e540fce 100644 --- a/src/controllers/iofog-controller.js +++ b/src/controllers/iofog-controller.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/controllers/kubelet-controller.js b/src/controllers/kubelet-controller.js index c1fb68622..f76dc892d 100644 --- a/src/controllers/kubelet-controller.js +++ b/src/controllers/kubelet-controller.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/controllers/microservices-controller.js b/src/controllers/microservices-controller.js index 5590de72d..32fe33e40 100644 --- a/src/controllers/microservices-controller.js +++ b/src/controllers/microservices-controller.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/controllers/registry-controller.js b/src/controllers/registry-controller.js index 4ba7af91f..7c05aabb7 100644 --- a/src/controllers/registry-controller.js +++ b/src/controllers/registry-controller.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/controllers/router-controller.js b/src/controllers/router-controller.js index 8e8776c28..0d61f536e 100644 --- a/src/controllers/router-controller.js +++ b/src/controllers/router-controller.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/controllers/routing-controller.js b/src/controllers/routing-controller.js index 53316caaa..b151924f8 100644 --- a/src/controllers/routing-controller.js +++ b/src/controllers/routing-controller.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/controllers/tunnel-controller.js b/src/controllers/tunnel-controller.js index 2157de409..fc4da747a 100644 --- a/src/controllers/tunnel-controller.js +++ b/src/controllers/tunnel-controller.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/controllers/user-controller.js b/src/controllers/user-controller.js index 6314c8b2c..939c2b896 100644 --- a/src/controllers/user-controller.js +++ b/src/controllers/user-controller.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/daemon.js b/src/daemon.js index 779508c3d..105ff882b 100644 --- a/src/daemon.js +++ b/src/daemon.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/data/managers/access-token-manager.js b/src/data/managers/access-token-manager.js index 9d89a009f..54c1b9be7 100644 --- a/src/data/managers/access-token-manager.js +++ b/src/data/managers/access-token-manager.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/data/managers/application-manager.js b/src/data/managers/application-manager.js index 3b452729c..84f62e0ba 100644 --- a/src/data/managers/application-manager.js +++ b/src/data/managers/application-manager.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/data/managers/application-template-manager.js b/src/data/managers/application-template-manager.js index 5c8c6eba4..98ef4ca0f 100644 --- a/src/data/managers/application-template-manager.js +++ b/src/data/managers/application-template-manager.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/data/managers/application-template-variable-manager.js b/src/data/managers/application-template-variable-manager.js index 6488eb931..66fae8f2f 100644 --- a/src/data/managers/application-template-variable-manager.js +++ b/src/data/managers/application-template-variable-manager.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/data/managers/base-manager.js b/src/data/managers/base-manager.js index e0ca80b50..4dc4ed24c 100644 --- a/src/data/managers/base-manager.js +++ b/src/data/managers/base-manager.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* -* * Copyright (c) 2020 Edgeworx, Inc. +* * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/data/managers/catalog-item-image-manager.js b/src/data/managers/catalog-item-image-manager.js index bc4eae181..14076f1c5 100644 --- a/src/data/managers/catalog-item-image-manager.js +++ b/src/data/managers/catalog-item-image-manager.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/data/managers/catalog-item-input-type-manager.js b/src/data/managers/catalog-item-input-type-manager.js index 881217033..2aa19d81e 100644 --- a/src/data/managers/catalog-item-input-type-manager.js +++ b/src/data/managers/catalog-item-input-type-manager.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/data/managers/catalog-item-manager.js b/src/data/managers/catalog-item-manager.js index 2651de7bc..c190fffe6 100644 --- a/src/data/managers/catalog-item-manager.js +++ b/src/data/managers/catalog-item-manager.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/data/managers/catalog-item-output-type-manager.js b/src/data/managers/catalog-item-output-type-manager.js index c6e5602d3..6ec69012c 100644 --- a/src/data/managers/catalog-item-output-type-manager.js +++ b/src/data/managers/catalog-item-output-type-manager.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/data/managers/change-tracking-manager.js b/src/data/managers/change-tracking-manager.js index d86b69044..1f74c4c94 100644 --- a/src/data/managers/change-tracking-manager.js +++ b/src/data/managers/change-tracking-manager.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/data/managers/config-manager.js b/src/data/managers/config-manager.js index 67f055e02..824f23401 100644 --- a/src/data/managers/config-manager.js +++ b/src/data/managers/config-manager.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/data/managers/email-activation-code-manager.js b/src/data/managers/email-activation-code-manager.js index a7cb5ee5a..48e60762b 100644 --- a/src/data/managers/email-activation-code-manager.js +++ b/src/data/managers/email-activation-code-manager.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/data/managers/hw-info-manager.js b/src/data/managers/hw-info-manager.js index fe5674274..9a8fcadb0 100644 --- a/src/data/managers/hw-info-manager.js +++ b/src/data/managers/hw-info-manager.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/data/managers/iofog-access-token-manager.js b/src/data/managers/iofog-access-token-manager.js index 9ad49ef5e..0e0bd837f 100644 --- a/src/data/managers/iofog-access-token-manager.js +++ b/src/data/managers/iofog-access-token-manager.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/data/managers/iofog-manager.js b/src/data/managers/iofog-manager.js index 9aec666e8..35a7d894e 100644 --- a/src/data/managers/iofog-manager.js +++ b/src/data/managers/iofog-manager.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/data/managers/iofog-provision-key-manager.js b/src/data/managers/iofog-provision-key-manager.js index 8a6cefdab..0e6e1ca40 100644 --- a/src/data/managers/iofog-provision-key-manager.js +++ b/src/data/managers/iofog-provision-key-manager.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/data/managers/iofog-type-manager.js b/src/data/managers/iofog-type-manager.js index c03a53f91..1111bf6b4 100644 --- a/src/data/managers/iofog-type-manager.js +++ b/src/data/managers/iofog-type-manager.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/data/managers/iofog-version-command-manager.js b/src/data/managers/iofog-version-command-manager.js index 1def0136a..db027a5b3 100644 --- a/src/data/managers/iofog-version-command-manager.js +++ b/src/data/managers/iofog-version-command-manager.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/data/managers/kubelet-access-token-manager.js b/src/data/managers/kubelet-access-token-manager.js index c563fa455..b44a554cb 100644 --- a/src/data/managers/kubelet-access-token-manager.js +++ b/src/data/managers/kubelet-access-token-manager.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/data/managers/microservice-arg-manager.js b/src/data/managers/microservice-arg-manager.js index a4bf19c20..5ccf6343f 100644 --- a/src/data/managers/microservice-arg-manager.js +++ b/src/data/managers/microservice-arg-manager.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/data/managers/microservice-env-manager.js b/src/data/managers/microservice-env-manager.js index cc14c1c51..a9ffae343 100644 --- a/src/data/managers/microservice-env-manager.js +++ b/src/data/managers/microservice-env-manager.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/data/managers/microservice-extra-host-manager.js b/src/data/managers/microservice-extra-host-manager.js index 9d343d5f4..22e0a3406 100644 --- a/src/data/managers/microservice-extra-host-manager.js +++ b/src/data/managers/microservice-extra-host-manager.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/data/managers/microservice-manager.js b/src/data/managers/microservice-manager.js index 4c63af9e8..b50dcf9e0 100644 --- a/src/data/managers/microservice-manager.js +++ b/src/data/managers/microservice-manager.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/data/managers/microservice-port-manager.js b/src/data/managers/microservice-port-manager.js index 7b6041604..d4764b6b4 100644 --- a/src/data/managers/microservice-port-manager.js +++ b/src/data/managers/microservice-port-manager.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/data/managers/microservice-proxy-port-manager.js b/src/data/managers/microservice-proxy-port-manager.js index c77ea068b..2d3c05b0f 100644 --- a/src/data/managers/microservice-proxy-port-manager.js +++ b/src/data/managers/microservice-proxy-port-manager.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/data/managers/microservice-public-mode-manager.js b/src/data/managers/microservice-public-mode-manager.js index 2281a7f8d..8990f042a 100644 --- a/src/data/managers/microservice-public-mode-manager.js +++ b/src/data/managers/microservice-public-mode-manager.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/data/managers/microservice-public-port-manager.js b/src/data/managers/microservice-public-port-manager.js index 7a952a320..e5e43d977 100644 --- a/src/data/managers/microservice-public-port-manager.js +++ b/src/data/managers/microservice-public-port-manager.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/data/managers/microservice-status-manager.js b/src/data/managers/microservice-status-manager.js index 516db62c1..9690e21dd 100644 --- a/src/data/managers/microservice-status-manager.js +++ b/src/data/managers/microservice-status-manager.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/data/managers/router-connection-manager.js b/src/data/managers/router-connection-manager.js index 68306ca9d..57108ff44 100644 --- a/src/data/managers/router-connection-manager.js +++ b/src/data/managers/router-connection-manager.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/data/managers/router-manager.js b/src/data/managers/router-manager.js index 937c7025a..645d7b4dd 100644 --- a/src/data/managers/router-manager.js +++ b/src/data/managers/router-manager.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/data/managers/routing-manager.js b/src/data/managers/routing-manager.js index 8a5140481..1d82e1fce 100644 --- a/src/data/managers/routing-manager.js +++ b/src/data/managers/routing-manager.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/data/managers/scheduler-access-token-manager.js b/src/data/managers/scheduler-access-token-manager.js index 9c0b3fb5c..7e51c945c 100644 --- a/src/data/managers/scheduler-access-token-manager.js +++ b/src/data/managers/scheduler-access-token-manager.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/data/managers/strace-diagnostics-manager.js b/src/data/managers/strace-diagnostics-manager.js index fe04377de..9b2402bab 100644 --- a/src/data/managers/strace-diagnostics-manager.js +++ b/src/data/managers/strace-diagnostics-manager.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/data/managers/strace-manager.js b/src/data/managers/strace-manager.js index f590c577f..577cbac1a 100644 --- a/src/data/managers/strace-manager.js +++ b/src/data/managers/strace-manager.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/data/managers/tags-manager.js b/src/data/managers/tags-manager.js index 375646196..ebde21a18 100644 --- a/src/data/managers/tags-manager.js +++ b/src/data/managers/tags-manager.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/data/managers/usb-info-manager.js b/src/data/managers/usb-info-manager.js index ba99023ae..85f3a423b 100644 --- a/src/data/managers/usb-info-manager.js +++ b/src/data/managers/usb-info-manager.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/data/managers/user-manager.js b/src/data/managers/user-manager.js index 5fe41018d..78d2b5f6e 100644 --- a/src/data/managers/user-manager.js +++ b/src/data/managers/user-manager.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/data/managers/volume-mapping-manager.js b/src/data/managers/volume-mapping-manager.js index c6d8ecb3a..a9e77ff71 100644 --- a/src/data/managers/volume-mapping-manager.js +++ b/src/data/managers/volume-mapping-manager.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/data/models/changetracking.js b/src/data/models/changetracking.js index 6aca2212b..ee4d34d92 100644 --- a/src/data/models/changetracking.js +++ b/src/data/models/changetracking.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/decorators/authorization-decorator.js b/src/decorators/authorization-decorator.js index 732003908..56699125a 100644 --- a/src/decorators/authorization-decorator.js +++ b/src/decorators/authorization-decorator.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/decorators/cli-decorator.js b/src/decorators/cli-decorator.js index 4606e578f..f7e5f8954 100644 --- a/src/decorators/cli-decorator.js +++ b/src/decorators/cli-decorator.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/decorators/response-decorator.js b/src/decorators/response-decorator.js index 61f5a6359..a2c7d461c 100644 --- a/src/decorators/response-decorator.js +++ b/src/decorators/response-decorator.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/decorators/transaction-decorator.js b/src/decorators/transaction-decorator.js index a5d33ddce..4940cccc4 100644 --- a/src/decorators/transaction-decorator.js +++ b/src/decorators/transaction-decorator.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/enums/fog-state.js b/src/enums/fog-state.js index 396a57e47..f33d5da4f 100644 --- a/src/enums/fog-state.js +++ b/src/enums/fog-state.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/enums/microservice-state.js b/src/enums/microservice-state.js index 86e79f44c..6a596c408 100644 --- a/src/enums/microservice-state.js +++ b/src/enums/microservice-state.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/helpers/app-helper.js b/src/helpers/app-helper.js index ffaab8b65..3c0ffa972 100644 --- a/src/helpers/app-helper.js +++ b/src/helpers/app-helper.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/helpers/constants.js b/src/helpers/constants.js index 0b4d7a5d3..c7f13218a 100644 --- a/src/helpers/constants.js +++ b/src/helpers/constants.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/helpers/error-messages.js b/src/helpers/error-messages.js index 3351c7bff..cc4818f3f 100644 --- a/src/helpers/error-messages.js +++ b/src/helpers/error-messages.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/helpers/errors.js b/src/helpers/errors.js index 17493ba61..27f06a011 100644 --- a/src/helpers/errors.js +++ b/src/helpers/errors.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/jobs/fog-status-job.js b/src/jobs/fog-status-job.js index da3020a84..d007bd09a 100644 --- a/src/jobs/fog-status-job.js +++ b/src/jobs/fog-status-job.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/jobs/stopped-app-status-job.js b/src/jobs/stopped-app-status-job.js index 336ce609f..87fb608fa 100644 --- a/src/jobs/stopped-app-status-job.js +++ b/src/jobs/stopped-app-status-job.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/logger/index.js b/src/logger/index.js index dd40884e0..d2a10b0dc 100644 --- a/src/logger/index.js +++ b/src/logger/index.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/main.js b/src/main.js index cefe8e687..96d700c1a 100644 --- a/src/main.js +++ b/src/main.js @@ -2,7 +2,7 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/routes/agent.js b/src/routes/agent.js index f79ae274d..e2e86e273 100644 --- a/src/routes/agent.js +++ b/src/routes/agent.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/routes/application.js b/src/routes/application.js index f5cb3e663..860912f89 100644 --- a/src/routes/application.js +++ b/src/routes/application.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/routes/applicationTemplate.js b/src/routes/applicationTemplate.js index 432a20885..ad0d5af7a 100644 --- a/src/routes/applicationTemplate.js +++ b/src/routes/applicationTemplate.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/routes/capabilities.js b/src/routes/capabilities.js index f7317e0df..400e5750e 100644 --- a/src/routes/capabilities.js +++ b/src/routes/capabilities.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/routes/catalog.js b/src/routes/catalog.js index d3b8d3e3a..631da303c 100644 --- a/src/routes/catalog.js +++ b/src/routes/catalog.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/routes/config.js b/src/routes/config.js index a1a605c1c..118f13a1f 100644 --- a/src/routes/config.js +++ b/src/routes/config.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/routes/controller.js b/src/routes/controller.js index ad980bb3a..3cd8fc98f 100644 --- a/src/routes/controller.js +++ b/src/routes/controller.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/routes/diagnostics.js b/src/routes/diagnostics.js index 65fa6a1a5..67acfce2d 100644 --- a/src/routes/diagnostics.js +++ b/src/routes/diagnostics.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/routes/edgeResource.js b/src/routes/edgeResource.js index f11037d84..f67a68be3 100644 --- a/src/routes/edgeResource.js +++ b/src/routes/edgeResource.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/routes/flow.js b/src/routes/flow.js index 0b169d4b4..951e69206 100644 --- a/src/routes/flow.js +++ b/src/routes/flow.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/routes/iofog.js b/src/routes/iofog.js index 6a6ddaffb..1a6a734d3 100644 --- a/src/routes/iofog.js +++ b/src/routes/iofog.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/routes/kubelet.js b/src/routes/kubelet.js index 1666f7091..174272453 100644 --- a/src/routes/kubelet.js +++ b/src/routes/kubelet.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/routes/microservices.js b/src/routes/microservices.js index e817e2108..b0c6cdd97 100644 --- a/src/routes/microservices.js +++ b/src/routes/microservices.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/routes/registries.js b/src/routes/registries.js index 7f9d416a2..6080487ef 100644 --- a/src/routes/registries.js +++ b/src/routes/registries.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/routes/router.js b/src/routes/router.js index 5653f2a3a..ba3aa1d8a 100644 --- a/src/routes/router.js +++ b/src/routes/router.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/routes/routing.js b/src/routes/routing.js index 280b17cdc..a7e78d752 100644 --- a/src/routes/routing.js +++ b/src/routes/routing.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/routes/tunnel.js b/src/routes/tunnel.js index 03a9c62ea..840f4551f 100644 --- a/src/routes/tunnel.js +++ b/src/routes/tunnel.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/routes/user.js b/src/routes/user.js index f010c7659..0f7f7703b 100644 --- a/src/routes/user.js +++ b/src/routes/user.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/schemas/agent.js b/src/schemas/agent.js index a0cf1fc17..d14255a22 100644 --- a/src/schemas/agent.js +++ b/src/schemas/agent.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/schemas/catalog.js b/src/schemas/catalog.js index fb7e69646..4b61d9a15 100644 --- a/src/schemas/catalog.js +++ b/src/schemas/catalog.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/schemas/config.js b/src/schemas/config.js index 6c3db3c3a..f83a89b99 100644 --- a/src/schemas/config.js +++ b/src/schemas/config.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/schemas/diagnostics.js b/src/schemas/diagnostics.js index dc1e5d9a7..8947c331e 100644 --- a/src/schemas/diagnostics.js +++ b/src/schemas/diagnostics.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/schemas/edgeResource.js b/src/schemas/edgeResource.js index fa48c3f1d..1bc887799 100644 --- a/src/schemas/edgeResource.js +++ b/src/schemas/edgeResource.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/schemas/index.js b/src/schemas/index.js index 7a843f03e..3ec077aae 100644 --- a/src/schemas/index.js +++ b/src/schemas/index.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/schemas/iofog.js b/src/schemas/iofog.js index 6af9298ef..5cda9e7fb 100644 --- a/src/schemas/iofog.js +++ b/src/schemas/iofog.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/schemas/registry.js b/src/schemas/registry.js index bdd4b4ed4..695c936fc 100644 --- a/src/schemas/registry.js +++ b/src/schemas/registry.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/schemas/routing.js b/src/schemas/routing.js index 83434a977..36d15db0c 100644 --- a/src/schemas/routing.js +++ b/src/schemas/routing.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/schemas/tunnel.js b/src/schemas/tunnel.js index d0593947c..1b3b0110e 100644 --- a/src/schemas/tunnel.js +++ b/src/schemas/tunnel.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/schemas/user.js b/src/schemas/user.js index f7abab0db..06e60e036 100644 --- a/src/schemas/user.js +++ b/src/schemas/user.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/server.js b/src/server.js index 2f018ef15..6dce62643 100755 --- a/src/server.js +++ b/src/server.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/services/access-token-service.js b/src/services/access-token-service.js index 6363acd20..822bfdceb 100644 --- a/src/services/access-token-service.js +++ b/src/services/access-token-service.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/services/agent-service.js b/src/services/agent-service.js index 14e008d2c..dbfb6ecab 100644 --- a/src/services/agent-service.js +++ b/src/services/agent-service.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/services/application-service.js b/src/services/application-service.js index b057789ba..098472e18 100644 --- a/src/services/application-service.js +++ b/src/services/application-service.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/services/application-template-service.js b/src/services/application-template-service.js index 771539bba..8f00742fb 100644 --- a/src/services/application-template-service.js +++ b/src/services/application-template-service.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/services/catalog-service.js b/src/services/catalog-service.js index bc9e6a569..b5920387d 100644 --- a/src/services/catalog-service.js +++ b/src/services/catalog-service.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/services/change-tracking-service.js b/src/services/change-tracking-service.js index ef6d0c7dc..9fe0885c7 100644 --- a/src/services/change-tracking-service.js +++ b/src/services/change-tracking-service.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/services/config-service.js b/src/services/config-service.js index 323f61e4b..63cab6f67 100644 --- a/src/services/config-service.js +++ b/src/services/config-service.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/services/controller-service.js b/src/services/controller-service.js index 2e73322f7..7796c210a 100644 --- a/src/services/controller-service.js +++ b/src/services/controller-service.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/services/diagnostic-service.js b/src/services/diagnostic-service.js index 98b771a75..f16506720 100644 --- a/src/services/diagnostic-service.js +++ b/src/services/diagnostic-service.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/services/edge-resource-service.js b/src/services/edge-resource-service.js index 360491711..a7b3a6537 100644 --- a/src/services/edge-resource-service.js +++ b/src/services/edge-resource-service.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/services/email-activation-code-service.js b/src/services/email-activation-code-service.js index 0c62a8003..d395a0d55 100644 --- a/src/services/email-activation-code-service.js +++ b/src/services/email-activation-code-service.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/services/iofog-access-token-service.js b/src/services/iofog-access-token-service.js index db06da1e4..529fdb6b1 100644 --- a/src/services/iofog-access-token-service.js +++ b/src/services/iofog-access-token-service.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/services/iofog-service.js b/src/services/iofog-service.js index 0187cde3a..74024e42b 100644 --- a/src/services/iofog-service.js +++ b/src/services/iofog-service.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/services/kubelet-access-token-service.js b/src/services/kubelet-access-token-service.js index 478806e5f..0ccc5c379 100644 --- a/src/services/kubelet-access-token-service.js +++ b/src/services/kubelet-access-token-service.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/services/kubelet-service.js b/src/services/kubelet-service.js index bd6569cf3..c5afd3072 100644 --- a/src/services/kubelet-service.js +++ b/src/services/kubelet-service.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/services/microservice-ports/default.js b/src/services/microservice-ports/default.js index 8d9e88685..9e877bc38 100644 --- a/src/services/microservice-ports/default.js +++ b/src/services/microservice-ports/default.js @@ -1,6 +1,6 @@ /* only "[a-zA-Z0-9][a-zA-Z0-9_.-]" are allowed * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/services/microservice-ports/factory.js b/src/services/microservice-ports/factory.js index e40c52e71..e07b1c192 100644 --- a/src/services/microservice-ports/factory.js +++ b/src/services/microservice-ports/factory.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/services/microservices-service.js b/src/services/microservices-service.js index 66ae6c0c1..f8bb4a579 100644 --- a/src/services/microservices-service.js +++ b/src/services/microservices-service.js @@ -1,6 +1,6 @@ /* only "[a-zA-Z0-9][a-zA-Z0-9_.-]" are allowed * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/services/registry-service.js b/src/services/registry-service.js index 7cc0108c8..912075c42 100644 --- a/src/services/registry-service.js +++ b/src/services/registry-service.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/services/router-service.js b/src/services/router-service.js index 7614527fe..fc332bfc0 100644 --- a/src/services/router-service.js +++ b/src/services/router-service.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/services/routing-service.js b/src/services/routing-service.js index f2dde0610..96bbd69fa 100644 --- a/src/services/routing-service.js +++ b/src/services/routing-service.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/services/scheduler-access-token-service.js b/src/services/scheduler-access-token-service.js index 0dec87c4d..d40fb2f0f 100644 --- a/src/services/scheduler-access-token-service.js +++ b/src/services/scheduler-access-token-service.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/services/tunnel-service.js b/src/services/tunnel-service.js index 29ce0d6a2..680f7e5c3 100644 --- a/src/services/tunnel-service.js +++ b/src/services/tunnel-service.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/services/user-service.js b/src/services/user-service.js index 12bb45b80..777fe3324 100644 --- a/src/services/user-service.js +++ b/src/services/user-service.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/views/email-activation-temp.js b/src/views/email-activation-temp.js index 6f85c3fb4..a4538c6c7 100644 --- a/src/views/email-activation-temp.js +++ b/src/views/email-activation-temp.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/views/email-temp.js b/src/views/email-temp.js index 155cb39e9..ae0caed5b 100644 --- a/src/views/email-temp.js +++ b/src/views/email-temp.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at diff --git a/src/views/reset-password-temp.js b/src/views/reset-password-temp.js index a6f893dd9..2f3885913 100644 --- a/src/views/reset-password-temp.js +++ b/src/views/reset-password-temp.js @@ -1,6 +1,6 @@ /* * ******************************************************************************* - * * Copyright (c) 2020 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at From c38b994e147b68cb22cb627778f8d932d0abde69 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Fri, 22 Dec 2023 19:15:30 +0300 Subject: [PATCH 002/146] packake name --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 572c11f81..139433638 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "name": "@datasance/iofogcontroller", + "name": "iofogcontroller", "version": "3.0.4", "description": "ioFog Controller project for Eclipse IoFog @ iofog.org \\nCopyright (c) 2023 Datasance Teknoloji A.S.", "main": "./src/main.js", From 4998873464b97e5774c52dc8d4c5d0342bf35837 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Sat, 23 Dec 2023 00:59:27 +0300 Subject: [PATCH 003/146] version --- .github/workflows/ci.yaml | 8 ++-- package.json | 93 +++++++++++++++++++-------------------- 2 files changed, 49 insertions(+), 52 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 3508811cc..5b7fbbcfd 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -52,7 +52,7 @@ jobs: - uses: actions/setup-node@v3 with: node-version: 10 - - run: npm ci + - run: npm install - run: npm run standard - run: | npm i -g better-npm-audit @@ -83,7 +83,7 @@ jobs: - linux/arm/v6 - linux/arm/v7 - linux/arm64 - node: [ 16, 17, 16, 19,20 ] + node: [ 16, 17, 16, 19,20, 21 ] name: Node ${{ matrix.node }} Test steps: - uses: actions/checkout@v3 @@ -99,7 +99,7 @@ jobs: key: ${{ runner.os }}-controller-node_modules-${{ hashFiles('package-lock.json') }} restore-keys: | ${{ runner.os }}-controller-node_modules- - - run: npm ci + - run: npm install - run: npm run test -- junit - run: npm run postman_test - name: Publish Test Results @@ -147,7 +147,7 @@ jobs: run: | sed -i.back "s|PAT|${PAT}|g" ./path/to/.npmrc - - run: npm ci + - run: npm install - name: npm version id: package-version diff --git a/package.json b/package.json index 139433638..0bfde5f01 100644 --- a/package.json +++ b/package.json @@ -55,71 +55,68 @@ }, "dependencies": { "@iofog/ecn-viewer": "3.0.2", - "axios": "1.6.2", - "body-parser": "^1.20.2", + "axios": "1.0.0-alpha.1", + "body-parser": "^1.20.1", "child_process": "1.0.2", - "command-line-args": "5.2.1", - "command-line-usage": "7.0.1", + "command-line-args": "5.0.2", + "command-line-usage": "5.0.5", "concurrent-queue": "7.0.2", - "cookie-parser": "1.4.6", + "cookie-parser": "1.4.3", "cors": "2.8.5", "daemonize2": "0.4.2", - "ejs": "3.1.9", - "express": "4.18.2", - "formidable": "3.5.1", + "ejs": "3.1.7", + "express": "4.17.3", + "formidable": "1.2.1", "ftp": "0.3.10", - "helmet": "7.1.0", - "is-elevated": "4.0.0", - "js-yaml": "4.1.0", - "jsonschema": "1.4.1", - "liquidjs": "10.10.0", - "minimatch": "9.0.3", - "mongodb": "^6.3.0", + "helmet": "3.21.2", + "is-elevated": "3.0.0", + "js-yaml": "3.14.1", + "jsonschema": "1.2.5", + "minimatch": "3.1.2", "moment": "2.29.4", - "moment-timezone": "0.5.43", - "morgan": "1.10.0", + "moment-timezone": "0.5.38", + "morgan": "1.9.1", "multer": "1.4.5-lts.1", - "nconf": "0.12.1", - "nodemailer": "6.9.7", - "nodemailer-smtp-transport": "2.7.4", - "os": "0.1.2", + "nconf": "0.12.0", + "nodemailer": "6.7.3", + "nodemailer-smtp-transport": "2.4.2", + "os": "0.1.1", "path": "0.12.7", - "pino": "8.17.1", - "pino-std-serializers": "6.2.2", + "pino": "6.6.1", + "pino-std-serializers": "2.5.0", "portscanner": "2.2.0", - "qs": "6.11.2", + "qs": "6.10.3", "request": "2.88.0", "request-promise": "4.2.4", - "retry-as-promised": "7.0.4", - "semantic-release": "22.0.12", - "semver": "7.5.4", - "sequelize": "6.35.2", - "sqlite3": "^5.1.6", + "retry-as-promised": "3.1.0", + "semantic-release": "19.0.3", + "semver": "5.6.0", + "sequelize": "6.29.0", + "sqlite3": "^5.1.5", "string-format": "2.0.0", - "swagger-ui-express": "^5.0.0", - "umzug": "3.5.0", - "underscore": "1.13.6", + "swagger-ui-express": "^4.6.2", + "umzug": "2.2.0", + "underscore": "1.13.1", "xss-clean": "0.1.1" }, "devDependencies": { - "acorn": "8.11.2", - "bdd-lazy-var": "2.6.1", - "chai": "4.3.10", + "acorn": "7.1.1", + "bdd-lazy-var": "2.5.2", + "chai": "4.2.0", "chai-as-promised": "7.1.1", - "chai-http": "4.4.0", - "eslint": "8.56.0", - "eslint-config-google": "0.14.0", - "mocha": "10.2.0", - "mocha-junit-reporter": "2.2.1", - "mongodb": "^6.3.0", - "newman": "6.0.0", + "chai-http": "4.2.1", + "eslint": "5.14.1", + "eslint-config-google": "0.12.0", + "mocha": "9.2.2", + "mocha-junit-reporter": "2.0.0", + "newman": "5.3.2", "newman-reporter-junitfull": "1.1.1", - "nyc": "15.1.0", - "sequelize-cli": "6.6.2", - "sinon": "17.0.1", - "sinon-chai": "3.7.0", - "snyk": "^1.1266.0", - "standard": "17.1.0" + "nyc": "15.0.0", + "sequelize-cli": "5.5.0", + "sinon": "7.5.0", + "sinon-chai": "3.3.0", + "snyk": "^1.1064.0", + "standard": "12.0.1" }, "files": [ "/scripts", From b0b0d0e0b10c3afb26ed320d564f344c557d3d07 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Sat, 23 Dec 2023 01:05:14 +0300 Subject: [PATCH 004/146] worfklow build image --- .github/workflows/ci.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 5b7fbbcfd..a318e20c4 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -23,7 +23,7 @@ env: jobs: Build: - runs-on: ubuntu-22.04 + runs-on: ubuntu-20.04 strategy: matrix: platform: @@ -60,7 +60,7 @@ jobs: Tests: needs: Build - runs-on: ubuntu-22.04 + runs-on: ubuntu-20.04 permissions: actions: write checks: write @@ -111,7 +111,7 @@ jobs: Publish: needs: [Build, Tests] - runs-on: ubuntu-22.04 + runs-on: ubuntu-20.04 permissions: actions: write checks: write From 79a1e068104d79d883c55de98727177f0e5f1e91 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Sat, 23 Dec 2023 01:06:53 +0300 Subject: [PATCH 005/146] workflow node-version --- .github/workflows/ci.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index a318e20c4..625cdd9fa 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -51,7 +51,7 @@ jobs: - uses: actions/checkout@v3 - uses: actions/setup-node@v3 with: - node-version: 10 + node-version: 18 - run: npm install - run: npm run standard - run: | @@ -139,7 +139,7 @@ jobs: - uses: actions/checkout@v3 - uses: actions/setup-node@v3 with: - node-version: 20 + node-version: 18 - name: Replace values shell: bash env: From 3d859d90c5a47d80264890fc1803e7a44900de6c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Tue, 2 Jan 2024 16:50:32 +0300 Subject: [PATCH 006/146] package versions --- .nsprc | 19 + Dockerfile.dev | 4 +- Dockerfile.rel | 4 +- package-lock.json | 19505 ++++++++++++++++++++++---------------------- 4 files changed, 9840 insertions(+), 9692 deletions(-) diff --git a/.nsprc b/.nsprc index 634f5426d..cf290f643 100644 --- a/.nsprc +++ b/.nsprc @@ -5,4 +5,23 @@ "1091725": { "notes": "" } + , + "1092972": { + "notes": "" + }, + "1094554": { + "notes": "" + }, + "1094555": { + "notes": "" + }, + "1094556": { + "notes": "" + }, + "1095102": { + "notes": "" + }, + "1095024": { + "notes": "" + } } \ No newline at end of file diff --git a/Dockerfile.dev b/Dockerfile.dev index 1c187562f..4b22594b8 100644 --- a/Dockerfile.dev +++ b/Dockerfile.dev @@ -1,4 +1,4 @@ -FROM node:iron-bookworm AS builder +FROM node:hydrogen-bookworm AS builder ARG PKG_VERSION @@ -16,7 +16,7 @@ RUN npm version $PKG_VERSION --allow-same-version --no-git-tag-version RUN npm pack -FROM node:iron-alpine3.19 +FROM node:hydrogen-alpine3.19 RUN apk add sudo logrotate g++ make diff --git a/Dockerfile.rel b/Dockerfile.rel index a5cb14585..be0bc0a7b 100644 --- a/Dockerfile.rel +++ b/Dockerfile.rel @@ -1,4 +1,4 @@ -FROM node:hydrogen-buster AS builder +FROM node:hydrogen-bookworm AS builder ARG PKG_VERSION @@ -19,7 +19,7 @@ RUN npm version $PKG_VERSION --allow-same-version RUN npm pack -FROM node:hydrogen-alpine3.17 +FROM node:hydrogen-alpine3.19 RUN apk add sudo logrotate g++ make diff --git a/package-lock.json b/package-lock.json index 2fcddbca9..980ea504b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,81 +1,110 @@ { - "name": "@iofog/iofogcontroller", - "version": "3.0.2-dev", + "name": "iofogcontroller", + "version": "3.0.4", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "@iofog/iofogcontroller", - "version": "3.0.2-dev", + "name": "iofogcontroller", + "version": "3.0.4", "hasInstallScript": true, "license": "EPL-2.0", "dependencies": { "@iofog/ecn-viewer": "3.0.2", - "axios": "1.0.0-alpha.1", - "body-parser": "^1.20.1", + "axios": "1.6.3", + "body-parser": "^1.20.2", "child_process": "1.0.2", - "command-line-args": "5.0.2", - "command-line-usage": "5.0.5", + "command-line-args": "5.2.1", + "command-line-usage": "7.0.1", "concurrent-queue": "7.0.2", - "cookie-parser": "1.4.3", + "cookie-parser": "1.4.6", "cors": "2.8.5", "daemonize2": "0.4.2", - "ejs": "3.1.7", - "express": "4.17.3", - "formidable": "1.2.1", + "ejs": "3.1.9", + "express": "4.18.2", + "formidable": "3.5.1", "ftp": "0.3.10", - "helmet": "3.21.2", - "is-elevated": "3.0.0", - "js-yaml": "3.14.1", - "jsonschema": "1.2.5", - "minimatch": "3.1.2", - "moment": "2.29.4", - "moment-timezone": "0.5.38", - "morgan": "1.9.1", + "helmet": "7.1.0", + "is-elevated": "4.0.0", + "js-yaml": "4.1.0", + "jsonschema": "1.4.1", + "minimatch": "9.0.3", + "moment": "2.30.1", + "moment-timezone": "0.5.44", + "morgan": "1.10.0", "multer": "1.4.5-lts.1", - "nconf": "0.12.0", - "nodemailer": "6.7.3", - "nodemailer-smtp-transport": "2.4.2", - "os": "0.1.1", + "nconf": "0.12.1", + "nodemailer": "6.9.8", + "nodemailer-smtp-transport": "2.7.4", + "os": "0.1.2", "path": "0.12.7", - "pino": "6.6.1", - "pino-std-serializers": "2.5.0", + "pino": "8.17.2", + "pino-std-serializers": "6.2.2", "portscanner": "2.2.0", - "qs": "6.10.3", + "qs": "6.11.2", "request": "2.88.0", "request-promise": "4.2.4", - "retry-as-promised": "3.1.0", - "semantic-release": "19.0.3", - "semver": "5.6.0", - "sequelize": "6.29.0", - "sqlite3": "^5.1.5", + "retry-as-promised": "7.0.4", + "semantic-release": "22.0.12", + "semver": "7.5.4", + "sequelize": "6.35.2", + "sqlite3": "^5.1.6", "string-format": "2.0.0", - "swagger-ui-express": "^4.6.2", - "umzug": "2.2.0", - "underscore": "1.13.1", + "swagger-ui-express": "^5.0.0", + "umzug": "3.5.0", + "underscore": "1.13.6", "xss-clean": "0.1.1" }, "bin": { "iofog-controller": "src/main.js" }, "devDependencies": { - "acorn": "7.1.1", - "bdd-lazy-var": "2.5.2", - "chai": "4.2.0", + "acorn": "8.11.3", + "bdd-lazy-var": "2.6.1", + "chai": "4.3.10", "chai-as-promised": "7.1.1", - "chai-http": "4.2.1", - "eslint": "5.14.1", - "eslint-config-google": "0.12.0", - "mocha": "9.2.2", - "mocha-junit-reporter": "2.0.0", - "newman": "5.3.2", + "chai-http": "4.4.0", + "eslint": "8.56.0", + "eslint-config-google": "0.14.0", + "mocha": "10.2.0", + "mocha-junit-reporter": "2.2.1", + "newman": "6.1.0", "newman-reporter-junitfull": "1.1.1", - "nyc": "15.0.0", - "sequelize-cli": "5.5.0", - "sinon": "7.5.0", - "sinon-chai": "3.3.0", - "snyk": "^1.1064.0", - "standard": "12.0.1" + "nyc": "15.1.0", + "sequelize-cli": "6.6.2", + "sinon": "17.0.1", + "sinon-chai": "3.7.0", + "snyk": "^1.1266.0", + "standard": "17.1.0" + } + }, + "node_modules/@75lb/deep-merge": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@75lb/deep-merge/-/deep-merge-1.1.1.tgz", + "integrity": "sha512-xvgv6pkMGBA6GwdyJbNAnDmfAIR/DfWhrj9jgWh3TY7gRm3KO46x/GPjRg6wJ0nOepwqrNxFfojebh0Df4h4Tw==", + "dependencies": { + "lodash.assignwith": "^4.2.0", + "typical": "^7.1.1" + }, + "engines": { + "node": ">=12.17" + } + }, + "node_modules/@75lb/deep-merge/node_modules/typical": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/typical/-/typical-7.1.1.tgz", + "integrity": "sha512-T+tKVNs6Wu7IWiAce5BgMd7OZfNYUndHwc5MknN+UHOudi7sGZzuHdCadllRuqJ3fPtgFtIH9+lt9qRv6lmpfA==", + "engines": { + "node": ">=12.17" + } + }, + "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": { @@ -92,11 +121,12 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", + "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", "dependencies": { - "@babel/highlight": "^7.18.6" + "@babel/highlight": "^7.23.4", + "chalk": "^2.4.2" }, "engines": { "node": ">=6.9.0" @@ -329,9 +359,9 @@ } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", - "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", "engines": { "node": ">=6.9.0" } @@ -360,12 +390,12 @@ } }, "node_modules/@babel/highlight": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", - "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", + "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", "dependencies": { - "@babel/helper-validator-identifier": "^7.18.6", - "chalk": "^2.0.0", + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", "js-tokens": "^4.0.0" }, "engines": { @@ -456,12 +486,213 @@ "node": ">=6.9.0" } }, + "node_modules/@colors/colors": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", + "optional": true, + "engines": { + "node": ">=0.1.90" + } + }, + "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.10.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", + "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "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/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/eslintrc/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/@eslint/eslintrc/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/@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.56.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.56.0.tgz", + "integrity": "sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@faker-js/faker": { + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/@faker-js/faker/-/faker-5.5.3.tgz", + "integrity": "sha512-R11tGE6yIFwqpaIqcfkcg7AICXzFg14+5h5v0TfF/9+RMDL6jhzCy/pxHVOfbALGdtVYdt6JdR21tuxEgl34dw==", + "dev": true + }, "node_modules/@gar/promisify": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", "optional": true }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.13", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz", + "integrity": "sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^2.0.1", + "debug": "^4.1.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/config-array/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@humanwhocodes/config-array/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/@humanwhocodes/config-array/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/@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": "2.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz", + "integrity": "sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==", + "dev": true + }, "node_modules/@iofog/ecn-viewer": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/@iofog/ecn-viewer/-/ecn-viewer-3.0.2.tgz", @@ -483,6 +714,15 @@ "node": ">=8" } }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", @@ -496,6 +736,19 @@ "node": ">=8" } }, + "node_modules/@istanbuljs/load-nyc-config/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==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", @@ -544,6 +797,12 @@ "node": ">=8" } }, + "node_modules/@istanbuljs/load-nyc-config/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 + }, "node_modules/@istanbuljs/schema": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", @@ -619,17 +878,6 @@ "node-pre-gyp": "bin/node-pre-gyp" } }, - "node_modules/@mapbox/node-pre-gyp/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/@mapbox/node-pre-gyp/node_modules/nopt": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", @@ -644,39 +892,6 @@ "node": ">=6" } }, - "node_modules/@mapbox/node-pre-gyp/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@mapbox/node-pre-gyp/node_modules/semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@mapbox/node-pre-gyp/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/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -719,39 +934,6 @@ "semver": "^7.3.5" } }, - "node_modules/@npmcli/fs/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==", - "optional": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@npmcli/fs/node_modules/semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", - "optional": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@npmcli/fs/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "optional": true - }, "node_modules/@npmcli/move-file": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", @@ -778,144 +960,131 @@ "node": ">=10" } }, - "node_modules/@npmcli/move-file/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "optional": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/@octokit/auth-token": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-3.0.3.tgz", - "integrity": "sha512-/aFM2M4HVDBT/jjDBa84sJniv1t9Gm/rLkalaz9htOm+L+8JMj1k9w0CkUdcxNyNxZPlTxKPVko+m1VlM58ZVA==", - "dependencies": { - "@octokit/types": "^9.0.0" - }, + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-4.0.0.tgz", + "integrity": "sha512-tY/msAuJo6ARbK6SPIxZrPBms3xPbfwBrulZe0Wtr/DIY9lje2HeV1uoebShn6mx7SjCHif6EjMvoREj+gZ+SA==", "engines": { - "node": ">= 14" + "node": ">= 18" } }, "node_modules/@octokit/core": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@octokit/core/-/core-4.2.0.tgz", - "integrity": "sha512-AgvDRUg3COpR82P7PBdGZF/NNqGmtMq2NiPqeSsDIeCfYFOZ9gddqWNQHnFdEUf+YwOj4aZYmJnlPp7OXmDIDg==", - "dependencies": { - "@octokit/auth-token": "^3.0.0", - "@octokit/graphql": "^5.0.0", - "@octokit/request": "^6.0.0", - "@octokit/request-error": "^3.0.0", - "@octokit/types": "^9.0.0", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@octokit/core/-/core-5.0.2.tgz", + "integrity": "sha512-cZUy1gUvd4vttMic7C0lwPed8IYXWYp8kHIMatyhY8t8n3Cpw2ILczkV5pGMPqef7v0bLo0pOHrEHarsau2Ydg==", + "dependencies": { + "@octokit/auth-token": "^4.0.0", + "@octokit/graphql": "^7.0.0", + "@octokit/request": "^8.0.2", + "@octokit/request-error": "^5.0.0", + "@octokit/types": "^12.0.0", "before-after-hook": "^2.2.0", "universal-user-agent": "^6.0.0" }, "engines": { - "node": ">= 14" + "node": ">= 18" } }, "node_modules/@octokit/endpoint": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-7.0.5.tgz", - "integrity": "sha512-LG4o4HMY1Xoaec87IqQ41TQ+glvIeTKqfjkCEmt5AIwDZJwQeVZFIEYXrYY6yLwK+pAScb9Gj4q+Nz2qSw1roA==", + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-9.0.4.tgz", + "integrity": "sha512-DWPLtr1Kz3tv8L0UvXTDP1fNwM0S+z6EJpRcvH66orY6Eld4XBMCSYsaWp4xIm61jTWxK68BrR7ibO+vSDnZqw==", "dependencies": { - "@octokit/types": "^9.0.0", - "is-plain-object": "^5.0.0", + "@octokit/types": "^12.0.0", "universal-user-agent": "^6.0.0" }, "engines": { - "node": ">= 14" + "node": ">= 18" } }, "node_modules/@octokit/graphql": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-5.0.5.tgz", - "integrity": "sha512-Qwfvh3xdqKtIznjX9lz2D458r7dJPP8l6r4GQkIdWQouZwHQK0mVT88uwiU2bdTU2OtT1uOlKpRciUWldpG0yQ==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-7.0.2.tgz", + "integrity": "sha512-OJ2iGMtj5Tg3s6RaXH22cJcxXRi7Y3EBqbHTBRq+PQAqfaS8f/236fUrWhfSn8P4jovyzqucxme7/vWSSZBX2Q==", "dependencies": { - "@octokit/request": "^6.0.0", - "@octokit/types": "^9.0.0", + "@octokit/request": "^8.0.1", + "@octokit/types": "^12.0.0", "universal-user-agent": "^6.0.0" }, "engines": { - "node": ">= 14" + "node": ">= 18" } }, "node_modules/@octokit/openapi-types": { - "version": "16.0.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-16.0.0.tgz", - "integrity": "sha512-JbFWOqTJVLHZSUUoF4FzAZKYtqdxWu9Z5m2QQnOyEa04fOFljvyh7D3GYKbfuaSWisqehImiVIMG4eyJeP5VEA==" + "version": "19.1.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-19.1.0.tgz", + "integrity": "sha512-6G+ywGClliGQwRsjvqVYpklIfa7oRPA0vyhPQG/1Feh+B+wU0vGH1JiJ5T25d3g1JZYBHzR2qefLi9x8Gt+cpw==" }, "node_modules/@octokit/plugin-paginate-rest": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-6.0.0.tgz", - "integrity": "sha512-Sq5VU1PfT6/JyuXPyt04KZNVsFOSBaYOAq2QRZUwzVlI10KFvcbUo8lR258AAQL1Et60b0WuVik+zOWKLuDZxw==", + "version": "9.1.5", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-9.1.5.tgz", + "integrity": "sha512-WKTQXxK+bu49qzwv4qKbMMRXej1DU2gq017euWyKVudA6MldaSSQuxtz+vGbhxV4CjxpUxjZu6rM2wfc1FiWVg==", "dependencies": { - "@octokit/types": "^9.0.0" + "@octokit/types": "^12.4.0" }, "engines": { - "node": ">= 14" + "node": ">= 18" }, "peerDependencies": { - "@octokit/core": ">=4" + "@octokit/core": ">=5" } }, - "node_modules/@octokit/plugin-request-log": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz", - "integrity": "sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA==", + "node_modules/@octokit/plugin-retry": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@octokit/plugin-retry/-/plugin-retry-6.0.1.tgz", + "integrity": "sha512-SKs+Tz9oj0g4p28qkZwl/topGcb0k0qPNX/i7vBKmDsjoeqnVfFUquqrE/O9oJY7+oLzdCtkiWSXLpLjvl6uog==", + "dependencies": { + "@octokit/request-error": "^5.0.0", + "@octokit/types": "^12.0.0", + "bottleneck": "^2.15.3" + }, + "engines": { + "node": ">= 18" + }, "peerDependencies": { - "@octokit/core": ">=3" + "@octokit/core": ">=5" } }, - "node_modules/@octokit/plugin-rest-endpoint-methods": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-7.0.1.tgz", - "integrity": "sha512-pnCaLwZBudK5xCdrR823xHGNgqOzRnJ/mpC/76YPpNP7DybdsJtP7mdOwh+wYZxK5jqeQuhu59ogMI4NRlBUvA==", + "node_modules/@octokit/plugin-throttling": { + "version": "8.1.3", + "resolved": "https://registry.npmjs.org/@octokit/plugin-throttling/-/plugin-throttling-8.1.3.tgz", + "integrity": "sha512-pfyqaqpc0EXh5Cn4HX9lWYsZ4gGbjnSmUILeu4u2gnuM50K/wIk9s1Pxt3lVeVwekmITgN/nJdoh43Ka+vye8A==", "dependencies": { - "@octokit/types": "^9.0.0", - "deprecation": "^2.3.1" + "@octokit/types": "^12.2.0", + "bottleneck": "^2.15.3" }, "engines": { - "node": ">= 14" + "node": ">= 18" }, "peerDependencies": { - "@octokit/core": ">=3" + "@octokit/core": "^5.0.0" } }, "node_modules/@octokit/request": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-6.2.3.tgz", - "integrity": "sha512-TNAodj5yNzrrZ/VxP+H5HiYaZep0H3GU0O7PaF+fhDrt8FPrnkei9Aal/txsN/1P7V3CPiThG0tIvpPDYUsyAA==", - "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", + "version": "8.1.6", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-8.1.6.tgz", + "integrity": "sha512-YhPaGml3ncZC1NfXpP3WZ7iliL1ap6tLkAp6MvbK2fTTPytzVUyUesBBogcdMm86uRYO5rHaM1xIWxigWZ17MQ==", + "dependencies": { + "@octokit/endpoint": "^9.0.0", + "@octokit/request-error": "^5.0.0", + "@octokit/types": "^12.0.0", "universal-user-agent": "^6.0.0" }, "engines": { - "node": ">= 14" + "node": ">= 18" } }, "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==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-5.0.1.tgz", + "integrity": "sha512-X7pnyTMV7MgtGmiXBwmO6M5kIPrntOXdyKZLigNfQWSEQzVxR4a4vo49vJjTWX70mPndj8KhfT4Dx+2Ng3vnBQ==", "dependencies": { - "@octokit/types": "^9.0.0", + "@octokit/types": "^12.0.0", "deprecation": "^2.0.0", "once": "^1.4.0" }, "engines": { - "node": ">= 14" + "node": ">= 18" } }, "node_modules/@octokit/request-error/node_modules/once": { @@ -926,26 +1095,20 @@ "wrappy": "1" } }, - "node_modules/@octokit/rest": { - "version": "19.0.7", - "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-19.0.7.tgz", - "integrity": "sha512-HRtSfjrWmWVNp2uAkEpQnuGMJsu/+dBr47dRc5QVgsCbnIc1+GFEaoKBWkYG+zjrsHpSqcAElMio+n10c0b5JA==", + "node_modules/@octokit/types": { + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-12.4.0.tgz", + "integrity": "sha512-FLWs/AvZllw/AGVs+nJ+ELCDZZJk+kY0zMen118xhL2zD0s1etIUHm1odgjP7epxYU1ln7SZxEUWYop5bhsdgQ==", "dependencies": { - "@octokit/core": "^4.1.0", - "@octokit/plugin-paginate-rest": "^6.0.0", - "@octokit/plugin-request-log": "^1.0.4", - "@octokit/plugin-rest-endpoint-methods": "^7.0.0" - }, - "engines": { - "node": ">= 14" + "@octokit/openapi-types": "^19.1.0" } }, - "node_modules/@octokit/types": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-9.0.0.tgz", - "integrity": "sha512-LUewfj94xCMH2rbD5YJ+6AQ4AVjFYTgpp6rboWM5T7N3IsIF65SBEOVcYMGAEzO/kKNiNaW4LoWtoThOhH06gw==", - "dependencies": { - "@octokit/openapi-types": "^16.0.0" + "node_modules/@pnpm/config.env-replace": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@pnpm/config.env-replace/-/config.env-replace-1.1.0.tgz", + "integrity": "sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==", + "engines": { + "node": ">=12.22.0" } }, "node_modules/@pnpm/network.ca-file": { @@ -960,10 +1123,11 @@ } }, "node_modules/@pnpm/npm-conf": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@pnpm/npm-conf/-/npm-conf-1.0.5.tgz", - "integrity": "sha512-hD8ml183638O3R6/Txrh0L8VzGOrFXgRtRDG4qQC4tONdZ5Z1M+tlUUDUvrjYdmK6G+JTBTeaCLMna11cXzi8A==", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@pnpm/npm-conf/-/npm-conf-2.2.2.tgz", + "integrity": "sha512-UA91GwWPhFExt3IizW6bOeY/pQ0BkuNwKjk9iQW9KqxluGCrg4VenZ0/L+2Y0+ZOtme72EVvg6v0zo3AMQRCeA==", "dependencies": { + "@pnpm/config.env-replace": "^1.1.0", "@pnpm/network.ca-file": "^1.0.1", "config-chain": "^1.1.11" }, @@ -985,6 +1149,21 @@ "node": ">= 6" } }, + "node_modules/@postman/tough-cookie": { + "version": "4.1.3-postman.1", + "resolved": "https://registry.npmjs.org/@postman/tough-cookie/-/tough-cookie-4.1.3-postman.1.tgz", + "integrity": "sha512-txpgUqZOnWYnUHZpHjkfb0IwVH4qJmyq77pPnJLlfhMtdCLMFTEeQHlzQiK906aaNCe4NEB5fGJHo9uzGbFMeA==", + "dev": true, + "dependencies": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.2.0", + "url-parse": "^1.5.3" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/@postman/tunnel-agent": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/@postman/tunnel-agent/-/tunnel-agent-0.6.3.tgz", @@ -997,24 +1176,56 @@ "node": "*" } }, + "node_modules/@rushstack/ts-command-line": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/@rushstack/ts-command-line/-/ts-command-line-4.17.1.tgz", + "integrity": "sha512-2jweO1O57BYP5qdBGl6apJLB+aRIn5ccIRTPDyULh0KMwVzFqWtw6IZWt1qtUoZD/pD2RNkIOosH6Cq45rIYeg==", + "dependencies": { + "@types/argparse": "1.0.38", + "argparse": "~1.0.9", + "colors": "~1.2.1", + "string-argv": "~0.3.1" + } + }, + "node_modules/@rushstack/ts-command-line/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/@rushstack/ts-command-line/node_modules/colors": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.2.5.tgz", + "integrity": "sha512-erNRLao/Y3Fv54qUa0LBB+//Uf3YwMUmdJinN20yMXm9zdKKqH9wt7R9IIVZ+K7ShzfpLV/Zg8+VyrBJYB4lpg==", + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/@rushstack/ts-command-line/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/@semantic-release/commit-analyzer": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/@semantic-release/commit-analyzer/-/commit-analyzer-9.0.2.tgz", - "integrity": "sha512-E+dr6L+xIHZkX4zNMe6Rnwg4YQrWNXK+rNsvwOPpdFppvZO1olE2fIgWhv89TkQErygevbjsZFSIxp+u6w2e5g==", + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/@semantic-release/commit-analyzer/-/commit-analyzer-11.1.0.tgz", + "integrity": "sha512-cXNTbv3nXR2hlzHjAMgbuiQVtvWHTlwwISt60B+4NZv01y/QRY7p2HcJm8Eh2StzcTJoNnflvKjHH/cjFS7d5g==", "dependencies": { - "conventional-changelog-angular": "^5.0.0", - "conventional-commits-filter": "^2.0.0", - "conventional-commits-parser": "^3.2.3", + "conventional-changelog-angular": "^7.0.0", + "conventional-commits-filter": "^4.0.0", + "conventional-commits-parser": "^5.0.0", "debug": "^4.0.0", - "import-from": "^4.0.0", - "lodash": "^4.17.4", + "import-from-esm": "^1.0.3", + "lodash-es": "^4.17.21", "micromatch": "^4.0.2" }, "engines": { - "node": ">=14.17" + "node": "^18.17 || >=20.6.1" }, "peerDependencies": { - "semantic-release": ">=18.0.0-beta.1" + "semantic-release": ">=20.1.0" } }, "node_modules/@semantic-release/commit-analyzer/node_modules/debug": { @@ -1039,40 +1250,80 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "node_modules/@semantic-release/error": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-3.0.0.tgz", - "integrity": "sha512-5hiM4Un+tpl4cKw3lV4UgzJj+SmfNIDCLLw0TepzQxz9ZGV5ixnqkzIVF+3tp0ZHgcMKE+VNGHJjEeyFG2dcSw==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-4.0.0.tgz", + "integrity": "sha512-mgdxrHTLOjOddRVYIYDo0fR3/v61GNN1YGkfbrjuIKg/uMgCd+Qzo3UAXJ+woLQQpos4pl5Esuw5A7AoNlzjUQ==", "engines": { - "node": ">=14.17" + "node": ">=18" } }, "node_modules/@semantic-release/github": { - "version": "8.0.7", - "resolved": "https://registry.npmjs.org/@semantic-release/github/-/github-8.0.7.tgz", - "integrity": "sha512-VtgicRIKGvmTHwm//iqTh/5NGQwsncOMR5vQK9pMT92Aem7dv37JFKKRuulUsAnUOIlO4G8wH3gPiBAA0iW0ww==", - "dependencies": { - "@octokit/rest": "^19.0.0", - "@semantic-release/error": "^3.0.0", - "aggregate-error": "^3.0.0", - "bottleneck": "^2.18.1", - "debug": "^4.0.0", - "dir-glob": "^3.0.0", - "fs-extra": "^11.0.0", - "globby": "^11.0.0", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", + "version": "9.2.6", + "resolved": "https://registry.npmjs.org/@semantic-release/github/-/github-9.2.6.tgz", + "integrity": "sha512-shi+Lrf6exeNZF+sBhK+P011LSbhmIAoUEgEY6SsxF8irJ+J2stwI5jkyDQ+4gzYyDImzV6LCKdYB9FXnQRWKA==", + "dependencies": { + "@octokit/core": "^5.0.0", + "@octokit/plugin-paginate-rest": "^9.0.0", + "@octokit/plugin-retry": "^6.0.0", + "@octokit/plugin-throttling": "^8.0.0", + "@semantic-release/error": "^4.0.0", + "aggregate-error": "^5.0.0", + "debug": "^4.3.4", + "dir-glob": "^3.0.1", + "globby": "^14.0.0", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.0", "issue-parser": "^6.0.0", - "lodash": "^4.17.4", - "mime": "^3.0.0", - "p-filter": "^2.0.0", - "p-retry": "^4.0.0", - "url-join": "^4.0.0" + "lodash-es": "^4.17.21", + "mime": "^4.0.0", + "p-filter": "^4.0.0", + "url-join": "^5.0.0" }, "engines": { - "node": ">=14.17" + "node": ">=18" }, "peerDependencies": { - "semantic-release": ">=18.0.0-beta.1" + "semantic-release": ">=20.1.0" + } + }, + "node_modules/@semantic-release/github/node_modules/agent-base": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz", + "integrity": "sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==", + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@semantic-release/github/node_modules/aggregate-error": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-5.0.0.tgz", + "integrity": "sha512-gOsf2YwSlleG6IjRYG2A7k0HmBMEo6qVNk9Bp/EaLgAJT5ngH6PXbqa4ItvnEwCm/velL5jAnQgsHsWnjhGmvw==", + "dependencies": { + "clean-stack": "^5.2.0", + "indent-string": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/github/node_modules/clean-stack": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-5.2.0.tgz", + "integrity": "sha512-TyUIUJgdFnCISzG5zu3291TAsE77ddchd0bepon1VVQrKLGKFED4iXFEDQ24mIPdPBbyE16PK3F8MYE1CmcBEQ==", + "dependencies": { + "escape-string-regexp": "5.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/@semantic-release/github/node_modules/debug": { @@ -1091,3260 +1342,3019 @@ } } }, + "node_modules/@semantic-release/github/node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/github/node_modules/https-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.2.tgz", + "integrity": "sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==", + "dependencies": { + "agent-base": "^7.0.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@semantic-release/github/node_modules/indent-string": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", + "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@semantic-release/github/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/@semantic-release/npm": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/@semantic-release/npm/-/npm-9.0.2.tgz", - "integrity": "sha512-zgsynF6McdzxPnFet+a4iO9HpAlARXOM5adz7VGVCvj0ne8wtL2ZOQoDV2wZPDmdEotDIbVeJjafhelZjs9j6g==", + "version": "11.0.2", + "resolved": "https://registry.npmjs.org/@semantic-release/npm/-/npm-11.0.2.tgz", + "integrity": "sha512-owtf3RjyPvRE63iUKZ5/xO4uqjRpVQDUB9+nnXj0xwfIeM9pRl+cG+zGDzdftR4m3f2s4Wyf3SexW+kF5DFtWA==", "dependencies": { - "@semantic-release/error": "^3.0.0", - "aggregate-error": "^3.0.0", - "execa": "^5.0.0", + "@semantic-release/error": "^4.0.0", + "aggregate-error": "^5.0.0", + "execa": "^8.0.0", "fs-extra": "^11.0.0", - "lodash": "^4.17.15", + "lodash-es": "^4.17.21", "nerf-dart": "^1.0.0", - "normalize-url": "^6.0.0", - "npm": "^8.3.0", + "normalize-url": "^8.0.0", + "npm": "^10.0.0", "rc": "^1.2.8", - "read-pkg": "^5.0.0", + "read-pkg": "^9.0.0", "registry-auth-token": "^5.0.0", "semver": "^7.1.2", - "tempy": "^1.0.0" + "tempy": "^3.0.0" }, "engines": { - "node": ">=16 || ^14.17" + "node": "^18.17 || >=20" }, "peerDependencies": { - "semantic-release": ">=19.0.0" + "semantic-release": ">=20.1.0" } }, - "node_modules/@semantic-release/npm/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==", + "node_modules/@semantic-release/npm/node_modules/aggregate-error": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-5.0.0.tgz", + "integrity": "sha512-gOsf2YwSlleG6IjRYG2A7k0HmBMEo6qVNk9Bp/EaLgAJT5ngH6PXbqa4ItvnEwCm/velL5jAnQgsHsWnjhGmvw==", "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" + "clean-stack": "^5.2.0", + "indent-string": "^5.0.0" }, "engines": { - "node": ">= 8" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/npm/node_modules/clean-stack": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-5.2.0.tgz", + "integrity": "sha512-TyUIUJgdFnCISzG5zu3291TAsE77ddchd0bepon1VVQrKLGKFED4iXFEDQ24mIPdPBbyE16PK3F8MYE1CmcBEQ==", + "dependencies": { + "escape-string-regexp": "5.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/npm/node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/@semantic-release/npm/node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", + "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", "dependencies": { "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", + "get-stream": "^8.0.1", + "human-signals": "^5.0.0", + "is-stream": "^3.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" + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^3.0.0" }, "engines": { - "node": ">=10" + "node": ">=16.17" }, "funding": { "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, "node_modules/@semantic-release/npm/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==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", + "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", "engines": { - "node": ">=10" + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/npm/node_modules/human-signals": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", + "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", + "engines": { + "node": ">=16.17.0" + } + }, + "node_modules/@semantic-release/npm/node_modules/indent-string": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", + "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", + "engines": { + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/@semantic-release/npm/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==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", "engines": { - "node": ">=8" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/npm/node_modules/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/npm/node_modules/npm-run-path": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.2.0.tgz", + "integrity": "sha512-W4/tgAXFqFA0iL7fk0+uQ3g7wkL8xJmx3XdK0VGb4cHW//eZTtKGvFBBoRKVTpY7n6ze4NL9ly7rgXcHufqXKg==", + "dependencies": { + "path-key": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@semantic-release/npm/node_modules/lru-cache": { + "node_modules/@semantic-release/npm/node_modules/onetime": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", "dependencies": { - "yallist": "^4.0.0" + "mimic-fn": "^4.0.0" }, "engines": { - "node": ">=10" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@semantic-release/npm/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==", + "node_modules/@semantic-release/npm/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", "engines": { - "node": ">=6" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@semantic-release/npm/node_modules/npm": { - "version": "8.19.4", - "resolved": "https://registry.npmjs.org/npm/-/npm-8.19.4.tgz", - "integrity": "sha512-3HANl8i9DKnUA89P4KEgVNN28EjSeDCmvEqbzOAuxCFDzdBZzjUl99zgnGpOUumvW5lvJo2HKcjrsc+tfyv1Hw==", - "bundleDependencies": [ - "@isaacs/string-locale-compare", - "@npmcli/arborist", - "@npmcli/ci-detect", - "@npmcli/config", - "@npmcli/fs", - "@npmcli/map-workspaces", - "@npmcli/package-json", - "@npmcli/run-script", - "abbrev", - "archy", - "cacache", - "chalk", - "chownr", - "cli-columns", - "cli-table3", - "columnify", - "fastest-levenshtein", - "fs-minipass", - "glob", - "graceful-fs", - "hosted-git-info", - "ini", - "init-package-json", - "is-cidr", - "json-parse-even-better-errors", - "libnpmaccess", - "libnpmdiff", - "libnpmexec", - "libnpmfund", - "libnpmhook", - "libnpmorg", - "libnpmpack", - "libnpmpublish", - "libnpmsearch", - "libnpmteam", - "libnpmversion", - "make-fetch-happen", - "minimatch", - "minipass", - "minipass-pipeline", - "mkdirp", - "mkdirp-infer-owner", - "ms", - "node-gyp", - "nopt", - "npm-audit-report", - "npm-install-checks", - "npm-package-arg", - "npm-pick-manifest", - "npm-profile", - "npm-registry-fetch", - "npm-user-validate", - "npmlog", - "opener", - "p-map", - "pacote", - "parse-conflict-json", - "proc-log", - "qrcode-terminal", - "read", - "read-package-json", - "read-package-json-fast", - "readdir-scoped-modules", - "rimraf", - "semver", - "ssri", - "tar", - "text-table", - "tiny-relative-date", - "treeverse", - "validate-npm-package-name", - "which", - "write-file-atomic" - ], - "dependencies": { - "@isaacs/string-locale-compare": "^1.1.0", - "@npmcli/arborist": "^5.6.3", - "@npmcli/ci-detect": "^2.0.0", - "@npmcli/config": "^4.2.1", - "@npmcli/fs": "^2.1.0", - "@npmcli/map-workspaces": "^2.0.3", - "@npmcli/package-json": "^2.0.0", - "@npmcli/run-script": "^4.2.1", - "abbrev": "~1.1.1", - "archy": "~1.0.0", - "cacache": "^16.1.3", - "chalk": "^4.1.2", - "chownr": "^2.0.0", - "cli-columns": "^4.0.0", - "cli-table3": "^0.6.2", - "columnify": "^1.6.0", - "fastest-levenshtein": "^1.0.12", - "fs-minipass": "^2.1.0", - "glob": "^8.0.1", - "graceful-fs": "^4.2.10", - "hosted-git-info": "^5.2.1", - "ini": "^3.0.1", - "init-package-json": "^3.0.2", - "is-cidr": "^4.0.2", - "json-parse-even-better-errors": "^2.3.1", - "libnpmaccess": "^6.0.4", - "libnpmdiff": "^4.0.5", - "libnpmexec": "^4.0.14", - "libnpmfund": "^3.0.5", - "libnpmhook": "^8.0.4", - "libnpmorg": "^4.0.4", - "libnpmpack": "^4.1.3", - "libnpmpublish": "^6.0.5", - "libnpmsearch": "^5.0.4", - "libnpmteam": "^4.0.4", - "libnpmversion": "^3.0.7", - "make-fetch-happen": "^10.2.0", - "minimatch": "^5.1.0", - "minipass": "^3.1.6", - "minipass-pipeline": "^1.2.4", - "mkdirp": "^1.0.4", - "mkdirp-infer-owner": "^2.0.0", - "ms": "^2.1.2", - "node-gyp": "^9.1.0", - "nopt": "^6.0.0", - "npm-audit-report": "^3.0.0", - "npm-install-checks": "^5.0.0", - "npm-package-arg": "^9.1.0", - "npm-pick-manifest": "^7.0.2", - "npm-profile": "^6.2.0", - "npm-registry-fetch": "^13.3.1", - "npm-user-validate": "^1.0.1", - "npmlog": "^6.0.2", - "opener": "^1.5.2", - "p-map": "^4.0.0", - "pacote": "^13.6.2", - "parse-conflict-json": "^2.0.2", - "proc-log": "^2.0.1", - "qrcode-terminal": "^0.12.0", - "read": "~1.0.7", - "read-package-json": "^5.0.2", - "read-package-json-fast": "^2.0.3", - "readdir-scoped-modules": "^1.1.0", - "rimraf": "^3.0.2", - "semver": "^7.3.7", - "ssri": "^9.0.1", - "tar": "^6.1.11", - "text-table": "~0.2.0", - "tiny-relative-date": "^1.3.0", - "treeverse": "^2.0.0", - "validate-npm-package-name": "^4.0.0", - "which": "^2.0.2", - "write-file-atomic": "^4.0.1" - }, - "bin": { - "npm": "bin/npm-cli.js", - "npx": "bin/npx-cli.js" - }, + "node_modules/@semantic-release/npm/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/@semantic-release/npm/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==", - "dependencies": { - "path-key": "^3.0.0" + "node": ">=14" }, - "engines": { - "node": ">=8" + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/@colors/colors": { - "version": "1.5.0", - "inBundle": true, - "license": "MIT", - "optional": true, + "node_modules/@semantic-release/npm/node_modules/strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", "engines": { - "node": ">=0.1.90" - } - }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/@gar/promisify": { - "version": "1.1.3", - "inBundle": true, - "license": "MIT" - }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/@isaacs/string-locale-compare": { - "version": "1.1.0", - "inBundle": true, - "license": "ISC" - }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/@npmcli/arborist": { - "version": "5.6.3", - "inBundle": true, - "license": "ISC", - "dependencies": { - "@isaacs/string-locale-compare": "^1.1.0", - "@npmcli/installed-package-contents": "^1.0.7", - "@npmcli/map-workspaces": "^2.0.3", - "@npmcli/metavuln-calculator": "^3.0.1", - "@npmcli/move-file": "^2.0.0", - "@npmcli/name-from-folder": "^1.0.1", - "@npmcli/node-gyp": "^2.0.0", - "@npmcli/package-json": "^2.0.0", - "@npmcli/query": "^1.2.0", - "@npmcli/run-script": "^4.1.3", - "bin-links": "^3.0.3", - "cacache": "^16.1.3", - "common-ancestor-path": "^1.0.1", - "hosted-git-info": "^5.2.1", - "json-parse-even-better-errors": "^2.3.1", - "json-stringify-nice": "^1.1.4", - "minimatch": "^5.1.0", - "mkdirp": "^1.0.4", - "mkdirp-infer-owner": "^2.0.0", - "nopt": "^6.0.0", - "npm-install-checks": "^5.0.0", - "npm-package-arg": "^9.0.0", - "npm-pick-manifest": "^7.0.2", - "npm-registry-fetch": "^13.0.0", - "npmlog": "^6.0.2", - "pacote": "^13.6.1", - "parse-conflict-json": "^2.0.1", - "proc-log": "^2.0.0", - "promise-all-reject-late": "^1.0.0", - "promise-call-limit": "^1.0.1", - "read-package-json-fast": "^2.0.2", - "readdir-scoped-modules": "^1.1.0", - "rimraf": "^3.0.2", - "semver": "^7.3.7", - "ssri": "^9.0.0", - "treeverse": "^2.0.0", - "walk-up-path": "^1.0.0" - }, - "bin": { - "arborist": "bin/index.js" + "node": ">=12" }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/@npmcli/ci-detect": { - "version": "2.0.0", - "inBundle": true, - "license": "ISC", + "node_modules/@semantic-release/release-notes-generator": { + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/@semantic-release/release-notes-generator/-/release-notes-generator-12.1.0.tgz", + "integrity": "sha512-g6M9AjUKAZUZnxaJZnouNBeDNTCUrJ5Ltj+VJ60gJeDaRRahcHsry9HW8yKrnKkKNkx5lbWiEP1FPMqVNQz8Kg==", + "dependencies": { + "conventional-changelog-angular": "^7.0.0", + "conventional-changelog-writer": "^7.0.0", + "conventional-commits-filter": "^4.0.0", + "conventional-commits-parser": "^5.0.0", + "debug": "^4.0.0", + "get-stream": "^7.0.0", + "import-from-esm": "^1.0.3", + "into-stream": "^7.0.0", + "lodash-es": "^4.17.21", + "read-pkg-up": "^11.0.0" + }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16" + "node": "^18.17 || >=20.6.1" + }, + "peerDependencies": { + "semantic-release": ">=20.1.0" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/@npmcli/config": { - "version": "4.2.2", - "inBundle": true, - "license": "ISC", + "node_modules/@semantic-release/release-notes-generator/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dependencies": { - "@npmcli/map-workspaces": "^2.0.2", - "ini": "^3.0.0", - "mkdirp-infer-owner": "^2.0.0", - "nopt": "^6.0.0", - "proc-log": "^2.0.0", - "read-package-json-fast": "^2.0.3", - "semver": "^7.3.5", - "walk-up-path": "^1.0.0" + "ms": "2.1.2" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/@npmcli/disparity-colors": { - "version": "2.0.0", - "inBundle": true, - "license": "ISC", - "dependencies": { - "ansi-styles": "^4.3.0" - }, + "node_modules/@semantic-release/release-notes-generator/node_modules/get-stream": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-7.0.1.tgz", + "integrity": "sha512-3M8C1EOFN6r8AMUhwUAACIoXZJEOufDU5+0gFFN5uNs6XYOralD2Pqkl7m046va6x77FwposWXbAhPPIOus7mQ==", "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/@npmcli/fs": { + "node_modules/@semantic-release/release-notes-generator/node_modules/ms": { "version": "2.1.2", - "inBundle": true, - "license": "ISC", - "dependencies": { - "@gar/promisify": "^1.1.3", - "semver": "^7.3.5" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/@npmcli/git": { - "version": "3.0.2", - "inBundle": true, - "license": "ISC", + "node_modules/@sentry-internal/tracing": { + "version": "7.91.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.91.0.tgz", + "integrity": "sha512-JH5y6gs6BS0its7WF2DhySu7nkhPDfZcdpAXldxzIlJpqFkuwQKLU5nkYJpiIyZz1NHYYtW5aum2bV2oCOdDRA==", + "dev": true, "dependencies": { - "@npmcli/promise-spawn": "^3.0.0", - "lru-cache": "^7.4.4", - "mkdirp": "^1.0.4", - "npm-pick-manifest": "^7.0.0", - "proc-log": "^2.0.0", - "promise-inflight": "^1.0.1", - "promise-retry": "^2.0.1", - "semver": "^7.3.5", - "which": "^2.0.2" + "@sentry/core": "7.91.0", + "@sentry/types": "7.91.0", + "@sentry/utils": "7.91.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=8" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/@npmcli/installed-package-contents": { - "version": "1.0.7", - "inBundle": true, - "license": "ISC", + "node_modules/@sentry/core": { + "version": "7.91.0", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.91.0.tgz", + "integrity": "sha512-tu+gYq4JrTdrR+YSh5IVHF0fJi/Pi9y0HZ5H9HnYy+UMcXIotxf6hIEaC6ZKGeLWkGXffz2gKpQLe/g6vy/lPA==", + "dev": true, "dependencies": { - "npm-bundled": "^1.1.1", - "npm-normalize-package-bin": "^1.0.1" - }, - "bin": { - "installed-package-contents": "index.js" + "@sentry/types": "7.91.0", + "@sentry/utils": "7.91.0" }, "engines": { - "node": ">= 10" - } - }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/@npmcli/installed-package-contents/node_modules/npm-bundled": { - "version": "1.1.2", - "inBundle": true, - "license": "ISC", - "dependencies": { - "npm-normalize-package-bin": "^1.0.1" + "node": ">=8" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/@npmcli/map-workspaces": { - "version": "2.0.4", - "inBundle": true, - "license": "ISC", + "node_modules/@sentry/node": { + "version": "7.91.0", + "resolved": "https://registry.npmjs.org/@sentry/node/-/node-7.91.0.tgz", + "integrity": "sha512-hTIfSQxD7L+AKIqyjoq8CWBRkEQrrMZmA3GSZgPI5JFWBHgO0HBo5TH/8TU81oEJh6kqqHAl2ObMhmcnaFqlzg==", + "dev": true, "dependencies": { - "@npmcli/name-from-folder": "^1.0.1", - "glob": "^8.0.1", - "minimatch": "^5.0.1", - "read-package-json-fast": "^2.0.3" + "@sentry-internal/tracing": "7.91.0", + "@sentry/core": "7.91.0", + "@sentry/types": "7.91.0", + "@sentry/utils": "7.91.0", + "https-proxy-agent": "^5.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=8" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/@npmcli/metavuln-calculator": { - "version": "3.1.1", - "inBundle": true, - "license": "ISC", - "dependencies": { - "cacache": "^16.0.0", - "json-parse-even-better-errors": "^2.3.1", - "pacote": "^13.0.3", - "semver": "^7.3.5" - }, + "node_modules/@sentry/types": { + "version": "7.91.0", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.91.0.tgz", + "integrity": "sha512-bcQnb7J3P3equbCUc+sPuHog2Y47yGD2sCkzmnZBjvBT0Z1B4f36fI/5WjyZhTjLSiOdg3F2otwvikbMjmBDew==", + "dev": true, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=8" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/@npmcli/move-file": { - "version": "2.0.1", - "inBundle": true, - "license": "MIT", + "node_modules/@sentry/utils": { + "version": "7.91.0", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.91.0.tgz", + "integrity": "sha512-fvxjrEbk6T6Otu++Ax9ntlQ0sGRiwSC179w68aC3u26Wr30FAIRKqHTCCdc2jyWk7Gd9uWRT/cq+g8NG/8BfSg==", + "dev": true, "dependencies": { - "mkdirp": "^1.0.4", - "rimraf": "^3.0.2" + "@sentry/types": "7.91.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=8" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/@npmcli/name-from-folder": { - "version": "1.0.1", - "inBundle": true, - "license": "ISC" - }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/@npmcli/node-gyp": { - "version": "2.0.0", - "inBundle": true, - "license": "ISC", + "node_modules/@sindresorhus/is": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", + "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/is?sponsor=1" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/@npmcli/package-json": { - "version": "2.0.0", - "inBundle": true, - "license": "ISC", - "dependencies": { - "json-parse-even-better-errors": "^2.3.1" - }, + "node_modules/@sindresorhus/merge-streams": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-1.0.0.tgz", + "integrity": "sha512-rUV5WyJrJLoloD4NDN1V1+LDMDWOa4OTsT4yYJwQNpTU6FWxkxHpL7eu4w+DmiH8x/EAM1otkPE1+LaspIbplw==", "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/@npmcli/promise-spawn": { + "node_modules/@sinonjs/commons": { "version": "3.0.0", - "inBundle": true, - "license": "ISC", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.0.tgz", + "integrity": "sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==", + "dev": true, "dependencies": { - "infer-owner": "^1.0.4" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "type-detect": "4.0.8" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/@npmcli/query": { - "version": "1.2.0", - "inBundle": true, - "license": "ISC", + "node_modules/@sinonjs/fake-timers": { + "version": "11.2.2", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-11.2.2.tgz", + "integrity": "sha512-G2piCSxQ7oWOxwGSAyFHfPIsyeJGXYtc6mFbnFA+kRXkiEnTl8c/8jul2S329iFBnDI9HGoeWWAZvuvOkZccgw==", + "dev": true, "dependencies": { - "npm-package-arg": "^9.1.0", - "postcss-selector-parser": "^6.0.10", - "semver": "^7.3.7" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "@sinonjs/commons": "^3.0.0" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/@npmcli/run-script": { - "version": "4.2.1", - "inBundle": true, - "license": "ISC", + "node_modules/@sinonjs/samsam": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-8.0.0.tgz", + "integrity": "sha512-Bp8KUVlLp8ibJZrnvq2foVhP0IVX2CIprMJPK0vqGqgrDa0OHVKeZyBykqskkrdxV6yKBPmGasO8LVjAKR3Gew==", + "dev": true, "dependencies": { - "@npmcli/node-gyp": "^2.0.0", - "@npmcli/promise-spawn": "^3.0.0", - "node-gyp": "^9.0.0", - "read-package-json-fast": "^2.0.3", - "which": "^2.0.2" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "@sinonjs/commons": "^2.0.0", + "lodash.get": "^4.4.2", + "type-detect": "^4.0.8" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/@tootallnate/once": { + "node_modules/@sinonjs/samsam/node_modules/@sinonjs/commons": { "version": "2.0.0", - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">= 10" + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-2.0.0.tgz", + "integrity": "sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg==", + "dev": true, + "dependencies": { + "type-detect": "4.0.8" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/abbrev": { - "version": "1.1.1", - "inBundle": true, - "license": "ISC" + "node_modules/@sinonjs/text-encoding": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.2.tgz", + "integrity": "sha512-sXXKG+uL9IrKqViTtao2Ws6dy0znu9sOaP1di/jKGW1M6VssO8vlpXCQcpZ+jisQ1tTFAC5Jo/EOzFbggBagFQ==", + "dev": true }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/agent-base": { - "version": "6.0.2", - "inBundle": true, - "license": "MIT", - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } + "node_modules/@types/argparse": { + "version": "1.0.38", + "resolved": "https://registry.npmjs.org/@types/argparse/-/argparse-1.0.38.tgz", + "integrity": "sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA==" }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/agentkeepalive": { - "version": "4.2.1", - "inBundle": true, - "license": "MIT", - "dependencies": { - "debug": "^4.1.0", - "depd": "^1.1.2", - "humanize-ms": "^1.2.1" - }, - "engines": { - "node": ">= 8.0.0" - } + "node_modules/@types/chai": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.4.tgz", + "integrity": "sha512-KnRanxnpfpjUTqTCXslZSEdLfXExwgNxYPdiO2WGUj8+HDjFi8R3k5RVKPeSCzLjCcshCAtVO2QBbVuAV4kTnw==", + "dev": true }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/aggregate-error": { - "version": "3.1.0", - "inBundle": true, - "license": "MIT", + "node_modules/@types/cookiejar": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@types/cookiejar/-/cookiejar-2.1.5.tgz", + "integrity": "sha512-he+DHOWReW0nghN24E1WUqM0efK4kI9oTqDm6XmK8ZPe2djZ90BSNdGnIyCLzCPw7/pogPlGbzI2wHGGmi4O/Q==", + "dev": true + }, + "node_modules/@types/debug": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", + "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", "dependencies": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - }, - "engines": { - "node": ">=8" + "@types/ms": "*" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/ansi-regex": { - "version": "5.0.1", - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=8" - } + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/ansi-styles": { - "version": "4.3.0", - "inBundle": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } + "node_modules/@types/ms": { + "version": "0.7.34", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz", + "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==" }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/aproba": { - "version": "2.0.0", - "inBundle": true, - "license": "ISC" + "node_modules/@types/node": { + "version": "18.14.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.14.2.tgz", + "integrity": "sha512-1uEQxww3DaghA0RxqHx0O0ppVlo43pJhepY51OxuQIKHpjbnYLA7vcdwioNPzIqmC2u3I/dmylcqjlh0e7AyUA==" }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/archy": { - "version": "1.0.0", - "inBundle": true, - "license": "MIT" + "node_modules/@types/normalize-package-data": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", + "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==" }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/are-we-there-yet": { - "version": "3.0.1", - "inBundle": true, - "license": "ISC", + "node_modules/@types/superagent": { + "version": "4.1.13", + "resolved": "https://registry.npmjs.org/@types/superagent/-/superagent-4.1.13.tgz", + "integrity": "sha512-YIGelp3ZyMiH0/A09PMAORO0EBGlF5xIKfDpK74wdYvWUs2o96b5CItJcWPdH409b7SAXIIG6p8NdU/4U2Maww==", + "dev": true, "dependencies": { - "delegates": "^1.0.0", - "readable-stream": "^3.6.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "@types/cookiejar": "*", + "@types/node": "*" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/asap": { - "version": "2.0.6", - "inBundle": true, - "license": "MIT" + "node_modules/@types/validator": { + "version": "13.11.7", + "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.11.7.tgz", + "integrity": "sha512-q0JomTsJ2I5Mv7dhHhQLGjMvX0JJm5dyZ1DXQySIUzU1UlwzB8bt+R6+LODUbz0UDIOvEzGc28tk27gBJw2N8Q==" }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/balanced-match": { - "version": "1.0.2", - "inBundle": true, - "license": "MIT" + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dev": true }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/bin-links": { - "version": "3.0.3", - "inBundle": true, - "license": "ISC", + "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==" + }, + "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": { - "cmd-shim": "^5.0.0", - "mkdirp-infer-owner": "^2.0.0", - "npm-normalize-package-bin": "^2.0.0", - "read-cmd-shim": "^3.0.0", - "rimraf": "^3.0.0", - "write-file-atomic": "^4.0.0" + "event-target-shim": "^5.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=6.5" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/bin-links/node_modules/npm-normalize-package-bin": { - "version": "2.0.0", - "inBundle": true, - "license": "ISC", + "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": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">= 0.6" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/binary-extensions": { - "version": "2.2.0", - "inBundle": true, - "license": "MIT", + "node_modules/acorn": { + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, "engines": { - "node": ">=8" + "node": ">=0.4.0" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/brace-expansion": { - "version": "2.0.1", - "inBundle": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.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/@semantic-release/npm/node_modules/npm/node_modules/builtins": { - "version": "5.0.1", - "inBundle": true, - "license": "MIT", + "node_modules/afterward": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/afterward/-/afterward-2.0.0.tgz", + "integrity": "sha512-7n9Vkbb8cmMRKKSfe5qgyqX4Yjdaty0QP/+GXYawZK8Vcq+8E5FCmbWbwfCoiBnDoAY/edKLNg2TwgGcwdA+3Q==", "dependencies": { - "semver": "^7.0.0" + "define-error": "~1.0.0" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/cacache": { - "version": "16.1.3", - "inBundle": true, - "license": "ISC", + "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": { - "@npmcli/fs": "^2.1.0", - "@npmcli/move-file": "^2.0.0", - "chownr": "^2.0.0", - "fs-minipass": "^2.1.0", - "glob": "^8.0.1", - "infer-owner": "^1.0.4", - "lru-cache": "^7.7.1", - "minipass": "^3.1.6", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "mkdirp": "^1.0.4", - "p-map": "^4.0.0", - "promise-inflight": "^1.0.1", - "rimraf": "^3.0.2", - "ssri": "^9.0.0", - "tar": "^6.1.11", - "unique-filename": "^2.0.0" + "debug": "4" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">= 6.0.0" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/chalk": { - "version": "4.1.2", - "inBundle": true, - "license": "MIT", + "node_modules/agent-base/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "ms": "2.1.2" }, "engines": { - "node": ">=10" + "node": ">=6.0" }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/chownr": { - "version": "2.0.0", - "inBundle": true, - "license": "ISC", - "engines": { - "node": ">=10" - } + "node_modules/agent-base/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/@semantic-release/npm/node_modules/npm/node_modules/cidr-regex": { - "version": "3.1.1", - "inBundle": true, - "license": "BSD-2-Clause", + "node_modules/agentkeepalive": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.2.1.tgz", + "integrity": "sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==", + "optional": true, "dependencies": { - "ip-regex": "^4.1.0" + "debug": "^4.1.0", + "depd": "^1.1.2", + "humanize-ms": "^1.2.1" }, "engines": { - "node": ">=10" - } - }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/clean-stack": { - "version": "2.2.0", - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=6" + "node": ">= 8.0.0" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/cli-columns": { - "version": "4.0.0", - "inBundle": true, - "license": "MIT", + "node_modules/agentkeepalive/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "optional": true, "dependencies": { - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1" + "ms": "2.1.2" }, "engines": { - "node": ">= 10" + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/cli-table3": { - "version": "0.6.2", - "inBundle": true, - "license": "MIT", - "dependencies": { - "string-width": "^4.2.0" - }, + "node_modules/agentkeepalive/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "optional": true, "engines": { - "node": "10.* || >= 12.*" - }, - "optionalDependencies": { - "@colors/colors": "1.5.0" + "node": ">= 0.6" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/clone": { - "version": "1.0.4", - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=0.8" - } + "node_modules/agentkeepalive/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==", + "optional": true }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/cmd-shim": { - "version": "5.0.0", - "inBundle": true, - "license": "ISC", + "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==", + "devOptional": true, "dependencies": { - "mkdirp-infer-owner": "^2.0.0" + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=8" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/color-convert": { - "version": "2.0.1", - "inBundle": true, - "license": "MIT", + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dependencies": { - "color-name": "~1.1.4" + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" }, - "engines": { - "node": ">=7.0.0" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/color-name": { - "version": "1.1.4", - "inBundle": true, - "license": "MIT" - }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/color-support": { - "version": "1.1.3", - "inBundle": true, - "license": "ISC", - "bin": { - "color-support": "bin.js" + "node_modules/ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true, + "engines": { + "node": ">=6" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/columnify": { - "version": "1.6.0", - "inBundle": true, - "license": "MIT", + "node_modules/ansi-escapes": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-6.2.0.tgz", + "integrity": "sha512-kzRaCqXnpzWs+3z5ABPQiVke+iq0KXkHo8xiWV4RPTi5Yli0l97BEQuhXV1s7+aSU/fu1kUuxgS4MsQ0fRuygw==", "dependencies": { - "strip-ansi": "^6.0.1", - "wcwidth": "^1.0.0" + "type-fest": "^3.0.0" }, "engines": { - "node": ">=8.0.0" + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/common-ancestor-path": { - "version": "1.0.1", - "inBundle": true, - "license": "ISC" - }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/concat-map": { - "version": "0.0.1", - "inBundle": true, - "license": "MIT" + "node_modules/ansi-escapes/node_modules/type-fest": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.13.1.tgz", + "integrity": "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/console-control-strings": { - "version": "1.1.0", - "inBundle": true, - "license": "ISC" + "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==", + "engines": { + "node": ">=8" + } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/cssesc": { - "version": "3.0.0", - "inBundle": true, - "license": "MIT", - "bin": { - "cssesc": "bin/cssesc" + "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/@semantic-release/npm/node_modules/npm/node_modules/debug": { - "version": "4.3.4", - "inBundle": true, - "license": "MIT", + "node_modules/ansicolors": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/ansicolors/-/ansicolors-0.3.2.tgz", + "integrity": "sha512-QXu7BPrP29VllRxH8GwB7x5iX5qWKAAMLqKQGWTeLWVlNHNOpVMJ91dsxQAIWXpjuW5wqvxu3Jd/nRjrJ+0pqg==" + }, + "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": { - "ms": "2.1.2" + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" }, "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "node": ">= 8" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/debug/node_modules/ms": { - "version": "2.1.2", - "inBundle": true, - "license": "MIT" + "node_modules/append-field": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz", + "integrity": "sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw==" }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/debuglog": { - "version": "1.0.1", - "inBundle": true, - "license": "MIT", + "node_modules/append-transform": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-2.0.0.tgz", + "integrity": "sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg==", + "dev": true, + "dependencies": { + "default-require-extensions": "^3.0.0" + }, "engines": { - "node": "*" + "node": ">=8" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/defaults": { - "version": "1.0.3", - "inBundle": true, - "license": "MIT", - "dependencies": { - "clone": "^1.0.2" - } + "node_modules/aproba": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==" }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/delegates": { + "node_modules/archy": { "version": "1.0.0", - "inBundle": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", + "integrity": "sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==", + "dev": true }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/depd": { - "version": "1.1.2", - "inBundle": true, - "license": "MIT", + "node_modules/are-we-there-yet": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", + "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==", + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + }, "engines": { - "node": ">= 0.6" + "node": ">=10" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/dezalgo": { - "version": "1.0.4", - "inBundle": true, - "license": "ISC", + "node_modules/are-we-there-yet/node_modules/readable-stream": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.1.tgz", + "integrity": "sha512-+rQmrWMYGA90yenhTYsLWAsLsqVC8osOw6PKE1HDYiO0gdPeKe/xDHNzIAIn4C91YQ6oenEhfYqqc1883qHbjQ==", "dependencies": { - "asap": "^2.0.0", - "wrappy": "1" - } - }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/diff": { - "version": "5.1.0", - "inBundle": true, - "license": "BSD-3-Clause", + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, "engines": { - "node": ">=0.3.1" + "node": ">= 6" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/emoji-regex": { - "version": "8.0.0", - "inBundle": true, - "license": "MIT" - }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/encoding": { - "version": "0.1.13", - "inBundle": true, - "license": "MIT", - "optional": true, + "node_modules/are-we-there-yet/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": { - "iconv-lite": "^0.6.2" + "safe-buffer": "~5.2.0" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/env-paths": { - "version": "2.2.1", - "inBundle": true, - "license": "MIT", + "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/argv-formatter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/argv-formatter/-/argv-formatter-1.0.0.tgz", + "integrity": "sha512-F2+Hkm9xFaRg+GkaNnbwXNDV5O6pnCFEmqyhvfC/Ic5LbgOWjJh3L+mN/s91rxVL3znE7DYVpW0GJFT+4YBgWw==" + }, + "node_modules/array-back": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz", + "integrity": "sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==", "engines": { "node": ">=6" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/err-code": { - "version": "2.0.3", - "inBundle": true, - "license": "MIT" - }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/fastest-levenshtein": { - "version": "1.0.12", - "inBundle": true, - "license": "MIT" - }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/fs-minipass": { - "version": "2.1.0", - "inBundle": true, - "license": "ISC", + "node_modules/array-buffer-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", + "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", + "dev": true, "dependencies": { - "minipass": "^3.0.0" + "call-bind": "^1.0.2", + "is-array-buffer": "^3.0.1" }, - "engines": { - "node": ">= 8" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/fs.realpath": { - "version": "1.0.0", - "inBundle": true, - "license": "ISC" - }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/function-bind": { + "node_modules/array-flatten": { "version": "1.1.1", - "inBundle": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/gauge": { - "version": "4.0.4", - "inBundle": true, - "license": "ISC", + "node_modules/array-ify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", + "integrity": "sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==" + }, + "node_modules/array-includes": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.7.tgz", + "integrity": "sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==", + "dev": true, "dependencies": { - "aproba": "^1.0.3 || ^2.0.0", - "color-support": "^1.1.3", - "console-control-strings": "^1.1.0", - "has-unicode": "^2.0.1", - "signal-exit": "^3.0.7", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "wide-align": "^1.1.5" + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "is-string": "^1.0.7" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/glob": { - "version": "8.0.3", - "inBundle": true, - "license": "ISC", + "node_modules/array.prototype.findlastindex": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.3.tgz", + "integrity": "sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==", + "dev": true, "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0", + "get-intrinsic": "^1.2.1" }, "engines": { - "node": ">=12" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/graceful-fs": { - "version": "4.2.10", - "inBundle": true, - "license": "ISC" - }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/has": { - "version": "1.0.3", - "inBundle": true, - "license": "MIT", + "node_modules/array.prototype.flat": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", + "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", + "dev": true, "dependencies": { - "function-bind": "^1.1.1" + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" }, "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/has-flag": { - "version": "4.0.0", - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/has-unicode": { - "version": "2.0.1", - "inBundle": true, - "license": "ISC" - }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/hosted-git-info": { - "version": "5.2.1", - "inBundle": true, - "license": "ISC", - "dependencies": { - "lru-cache": "^7.5.1" + "node": ">= 0.4" }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/http-cache-semantics": { - "version": "4.1.1", - "inBundle": true, - "license": "BSD-2-Clause" - }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/http-proxy-agent": { - "version": "5.0.0", - "inBundle": true, - "license": "MIT", + "node_modules/array.prototype.flatmap": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", + "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", + "dev": true, "dependencies": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" }, "engines": { - "node": ">= 6" - } - }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/https-proxy-agent": { - "version": "5.0.1", - "inBundle": true, - "license": "MIT", - "dependencies": { - "agent-base": "6", - "debug": "4" + "node": ">= 0.4" }, - "engines": { - "node": ">= 6" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/humanize-ms": { - "version": "1.2.1", - "inBundle": true, - "license": "MIT", + "node_modules/array.prototype.tosorted": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.2.tgz", + "integrity": "sha512-HuQCHOlk1Weat5jzStICBCd83NxiIMwqDg/dHEsoefabn/hJRj5pVdWcPUSpRrwhwxZOsQassMpgN/xRYFBMIg==", + "dev": true, "dependencies": { - "ms": "^2.0.0" + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0", + "get-intrinsic": "^1.2.1" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/iconv-lite": { - "version": "0.6.3", - "inBundle": true, - "license": "MIT", - "optional": true, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz", + "integrity": "sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==", + "dev": true, "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" + "array-buffer-byte-length": "^1.0.0", + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "is-array-buffer": "^3.0.2", + "is-shared-array-buffer": "^1.0.2" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/ignore-walk": { - "version": "5.0.1", - "inBundle": true, - "license": "ISC", + "node_modules/asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==" + }, + "node_modules/asn1": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", "dependencies": { - "minimatch": "^5.0.1" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "safer-buffer": "~2.1.0" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/imurmurhash": { - "version": "0.1.4", - "inBundle": true, - "license": "MIT", + "node_modules/assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", "engines": { - "node": ">=0.8.19" + "node": ">=0.8" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/indent-string": { - "version": "4.0.0", - "inBundle": true, - "license": "MIT", + "node_modules/assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "dev": true, "engines": { - "node": ">=8" + "node": "*" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/infer-owner": { - "version": "1.0.4", - "inBundle": true, - "license": "ISC" + "node_modules/async": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", + "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==" }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/inflight": { - "version": "1.0.6", - "inBundle": true, - "license": "ISC", + "node_modules/asynciterator.prototype": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/asynciterator.prototype/-/asynciterator.prototype-1.0.0.tgz", + "integrity": "sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==", + "dev": true, "dependencies": { - "once": "^1.3.0", - "wrappy": "1" + "has-symbols": "^1.0.3" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/inherits": { - "version": "2.0.4", - "inBundle": true, - "license": "ISC" - }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/ini": { - "version": "3.0.1", - "inBundle": true, - "license": "ISC", - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/init-package-json": { - "version": "3.0.2", - "inBundle": true, - "license": "ISC", - "dependencies": { - "npm-package-arg": "^9.0.1", - "promzard": "^0.3.0", - "read": "^1.0.7", - "read-package-json": "^5.0.0", - "semver": "^7.3.5", - "validate-npm-package-license": "^3.0.4", - "validate-npm-package-name": "^4.0.0" - }, + "node_modules/at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">= 4.0.0" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/ip": { - "version": "2.0.0", - "inBundle": true, - "license": "MIT" - }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/ip-regex": { - "version": "4.3.0", - "inBundle": true, - "license": "MIT", + "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" + "node": ">=8.0.0" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/is-cidr": { - "version": "4.0.2", - "inBundle": true, - "license": "BSD-2-Clause", - "dependencies": { - "cidr-regex": "^3.1.1" - }, + "node_modules/available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "dev": true, "engines": { - "node": ">=10" - } - }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/is-core-module": { - "version": "2.10.0", - "inBundle": true, - "license": "MIT", - "dependencies": { - "has": "^1.0.3" + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "inBundle": true, - "license": "MIT", + "node_modules/aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", "engines": { - "node": ">=8" + "node": "*" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/is-lambda": { - "version": "1.0.1", - "inBundle": true, - "license": "MIT" - }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/isexe": { - "version": "2.0.0", - "inBundle": true, - "license": "ISC" - }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "inBundle": true, - "license": "MIT" + "node_modules/aws4": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz", + "integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==" }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/json-stringify-nice": { - "version": "1.1.4", - "inBundle": true, - "license": "ISC", - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node_modules/axios": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.3.tgz", + "integrity": "sha512-fWyNdeawGam70jXSVlKl+SUNVcL6j6W79CuSIPfi6HnDUmSCH6gyUys/HrqHeA/wU0Az41rRgean494d0Jb+ww==", + "dependencies": { + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/jsonparse": { - "version": "1.3.1", - "engines": [ - "node >= 0.2.0" - ], - "inBundle": true, - "license": "MIT" + "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/@semantic-release/npm/node_modules/npm/node_modules/just-diff": { - "version": "5.1.1", - "inBundle": true, - "license": "MIT" - }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/just-diff-apply": { - "version": "5.4.1", - "inBundle": true, - "license": "MIT" + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "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/@semantic-release/npm/node_modules/npm/node_modules/libnpmaccess": { - "version": "6.0.4", - "inBundle": true, - "license": "ISC", + "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==", "dependencies": { - "aproba": "^2.0.0", - "minipass": "^3.1.1", - "npm-package-arg": "^9.0.1", - "npm-registry-fetch": "^13.0.0" + "safe-buffer": "5.1.2" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">= 0.8" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/libnpmdiff": { - "version": "4.0.5", - "inBundle": true, - "license": "ISC", + "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==" + }, + "node_modules/bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", "dependencies": { - "@npmcli/disparity-colors": "^2.0.0", - "@npmcli/installed-package-contents": "^1.0.7", - "binary-extensions": "^2.2.0", - "diff": "^5.1.0", - "minimatch": "^5.0.1", - "npm-package-arg": "^9.0.1", - "pacote": "^13.6.1", - "tar": "^6.1.0" + "tweetnacl": "^0.14.3" + } + }, + "node_modules/bdd-lazy-var": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/bdd-lazy-var/-/bdd-lazy-var-2.6.1.tgz", + "integrity": "sha512-X3ADwcFji/IHIrYJhTTpaiWhoOx4pl4whdAx1dmvdeUPsMUb7fVYFvf/Q33VEAEAVkEwi5rgNSZ0Y9oOVeQV+A==", + "dev": true, + "peerDependencies": { + "jasmine": ">=2", + "jasmine-core": ">=2", + "jest": ">=20", + "mocha": ">=2.3" }, + "peerDependenciesMeta": { + "jasmine": { + "optional": true + }, + "jasmine-core": { + "optional": true + }, + "jest": { + "optional": true + }, + "mocha": { + "optional": 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": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=8" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/libnpmexec": { - "version": "4.0.14", - "inBundle": true, - "license": "ISC", + "node_modules/bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" + }, + "node_modules/body-parser": { + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", + "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", "dependencies": { - "@npmcli/arborist": "^5.6.3", - "@npmcli/ci-detect": "^2.0.0", - "@npmcli/fs": "^2.1.1", - "@npmcli/run-script": "^4.2.0", - "chalk": "^4.1.0", - "mkdirp-infer-owner": "^2.0.0", - "npm-package-arg": "^9.0.1", - "npmlog": "^6.0.2", - "pacote": "^13.6.1", - "proc-log": "^2.0.0", - "read": "^1.0.7", - "read-package-json-fast": "^2.0.2", - "semver": "^7.3.7", - "walk-up-path": "^1.0.0" + "bytes": "3.1.2", + "content-type": "~1.0.5", + "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.2", + "type-is": "~1.6.18", + "unpipe": "1.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/libnpmfund": { - "version": "3.0.5", - "inBundle": true, - "license": "ISC", + "node_modules/body-parser/node_modules/qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", "dependencies": { - "@npmcli/arborist": "^5.6.3" + "side-channel": "^1.0.4" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/libnpmhook": { - "version": "8.0.4", - "inBundle": true, - "license": "ISC", + "node_modules/boolean": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/boolean/-/boolean-3.2.0.tgz", + "integrity": "sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==", + "dev": true + }, + "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==", "dependencies": { - "aproba": "^2.0.0", - "npm-registry-fetch": "^13.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/libnpmorg": { - "version": "4.0.4", - "inBundle": true, - "license": "ISC", + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", "dependencies": { - "aproba": "^2.0.0", - "npm-registry-fetch": "^13.0.0" + "fill-range": "^7.0.1" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=8" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/libnpmpack": { - "version": "4.1.3", - "inBundle": true, - "license": "ISC", + "node_modules/brotli": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/brotli/-/brotli-1.3.3.tgz", + "integrity": "sha512-oTKjJdShmDuGW94SyyaoQvAjf30dZaHnjJ8uAF+u2/vGJkJbJPJAT1gDiOJP5v1Zb6f9KEyW/1HpuaWIXtGHPg==", + "dev": true, "dependencies": { - "@npmcli/run-script": "^4.1.3", - "npm-package-arg": "^9.0.1", - "pacote": "^13.6.1" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "base64-js": "^1.1.2" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/libnpmpublish": { - "version": "6.0.5", - "inBundle": true, - "license": "ISC", + "node_modules/browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "dev": true + }, + "node_modules/browserslist": { + "version": "4.21.5", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz", + "integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], "dependencies": { - "normalize-package-data": "^4.0.0", - "npm-package-arg": "^9.0.1", - "npm-registry-fetch": "^13.0.0", - "semver": "^7.3.7", - "ssri": "^9.0.0" + "caniuse-lite": "^1.0.30001449", + "electron-to-chromium": "^1.4.284", + "node-releases": "^2.0.8", + "update-browserslist-db": "^1.0.10" + }, + "bin": { + "browserslist": "cli.js" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/libnpmsearch": { - "version": "5.0.4", - "inBundle": true, - "license": "ISC", + "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": { - "npm-registry-fetch": "^13.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/libnpmteam": { - "version": "4.0.4", - "inBundle": true, - "license": "ISC", + "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==" + }, + "node_modules/builtins": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", + "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==", + "dev": true, "dependencies": { - "aproba": "^2.0.0", - "npm-registry-fetch": "^13.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "semver": "^7.0.0" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/libnpmversion": { - "version": "3.0.7", - "inBundle": true, - "license": "ISC", + "node_modules/busboy": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", + "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", "dependencies": { - "@npmcli/git": "^3.0.0", - "@npmcli/run-script": "^4.1.3", - "json-parse-even-better-errors": "^2.3.1", - "proc-log": "^2.0.0", - "semver": "^7.3.7" + "streamsearch": "^1.1.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=10.16.0" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/lru-cache": { - "version": "7.13.2", - "inBundle": true, - "license": "ISC", + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", "engines": { - "node": ">=12" + "node": ">= 0.8" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/make-fetch-happen": { - "version": "10.2.1", - "inBundle": true, - "license": "ISC", + "node_modules/cacache": { + "version": "15.3.0", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", + "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", + "optional": true, "dependencies": { - "agentkeepalive": "^4.2.1", - "cacache": "^16.1.0", - "http-cache-semantics": "^4.1.0", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^7.7.1", - "minipass": "^3.1.6", + "@npmcli/fs": "^1.0.0", + "@npmcli/move-file": "^1.0.1", + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "glob": "^7.1.4", + "infer-owner": "^1.0.4", + "lru-cache": "^6.0.0", + "minipass": "^3.1.1", "minipass-collect": "^1.0.2", - "minipass-fetch": "^2.0.3", "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.3", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^7.0.0", - "ssri": "^9.0.0" + "minipass-pipeline": "^1.2.2", + "mkdirp": "^1.0.3", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^8.0.1", + "tar": "^6.0.2", + "unique-filename": "^1.1.1" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">= 10" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/minimatch": { - "version": "5.1.0", - "inBundle": true, - "license": "ISC", + "node_modules/cacache/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==", + "optional": true, "dependencies": { - "brace-expansion": "^2.0.1" + "yallist": "^4.0.0" }, "engines": { "node": ">=10" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/minipass": { - "version": "3.3.4", - "inBundle": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" + "node_modules/cacache/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "optional": true, + "bin": { + "mkdirp": "bin/cmd.js" }, "engines": { - "node": ">=8" + "node": ">=10" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/minipass-collect": { - "version": "1.0.2", - "inBundle": true, - "license": "ISC", + "node_modules/cacache/node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "optional": true, "dependencies": { - "minipass": "^3.0.0" + "aggregate-error": "^3.0.0" }, "engines": { - "node": ">= 8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/minipass-fetch": { - "version": "2.1.1", - "inBundle": true, - "license": "MIT", + "node_modules/cacache/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "optional": true + }, + "node_modules/caching-transform": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-4.0.0.tgz", + "integrity": "sha512-kpqOvwXnjjN44D89K5ccQC+RUrsy7jB/XLlRrx0D7/2HNcTPqzsb6XgYoErwko6QsV184CA2YgS1fxDiiDZMWA==", + "dev": true, "dependencies": { - "minipass": "^3.1.6", - "minipass-sized": "^1.0.3", - "minizlib": "^2.1.2" + "hasha": "^5.0.0", + "make-dir": "^3.0.0", + "package-hash": "^4.0.0", + "write-file-atomic": "^3.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - }, - "optionalDependencies": { - "encoding": "^0.1.13" + "node": ">=8" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/minipass-flush": { + "node_modules/call-bind": { "version": "1.0.5", - "inBundle": true, - "license": "ISC", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", + "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", "dependencies": { - "minipass": "^3.0.0" + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.1", + "set-function-length": "^1.1.1" }, + "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==", "engines": { - "node": ">= 8" + "node": ">=6" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/minipass-json-stream": { - "version": "1.0.1", - "inBundle": true, - "license": "MIT", - "dependencies": { - "jsonparse": "^1.3.1", - "minipass": "^3.0.0" + "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/@semantic-release/npm/node_modules/npm/node_modules/minipass-pipeline": { - "version": "1.2.4", - "inBundle": true, - "license": "ISC", - "dependencies": { - "minipass": "^3.0.0" - }, + "node_modules/caniuse-lite": { + "version": "1.0.30001458", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001458.tgz", + "integrity": "sha512-lQ1VlUUq5q9ro9X+5gOEyH7i3vm+AYVT1WDCVB69XOZ17KZRhnZ9J0Sqz7wTHQaLBJccNCHq8/Ww5LlOIZbB0w==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + } + ] + }, + "node_modules/capture-stack-trace": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.2.tgz", + "integrity": "sha512-X/WM2UQs6VMHUtjUDnZTRI+i1crWteJySFzr9UpGoQa4WQffXVTTXuekjl7TjZRlcF2XfjgITT0HxZ9RnxeT0w==", "engines": { - "node": ">=8" + "node": ">=0.10.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/minipass-sized": { - "version": "1.0.3", - "inBundle": true, - "license": "ISC", + "node_modules/cardinal": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/cardinal/-/cardinal-2.1.1.tgz", + "integrity": "sha512-JSr5eOgoEymtYHBjNWyjrMqet9Am2miJhlfKNdqLp6zoeAh0KN5dRAcxlecj5mAJrmQomgiOBj35xHLrFjqBpw==", "dependencies": { - "minipass": "^3.0.0" + "ansicolors": "~0.3.2", + "redeyed": "~2.1.0" }, - "engines": { - "node": ">=8" + "bin": { + "cdl": "bin/cdl.js" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/minizlib": { - "version": "2.1.2", - "inBundle": true, - "license": "MIT", + "node_modules/caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==" + }, + "node_modules/chai": { + "version": "4.3.10", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.10.tgz", + "integrity": "sha512-0UXG04VuVbruMUYbJ6JctvH0YnC/4q3/AkT18q4NaITo91CUm0liMS9VqzT9vZhVQ/1eqPanMWjBM+Juhfb/9g==", + "dev": true, "dependencies": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" + "assertion-error": "^1.1.0", + "check-error": "^1.0.3", + "deep-eql": "^4.1.3", + "get-func-name": "^2.0.2", + "loupe": "^2.3.6", + "pathval": "^1.1.1", + "type-detect": "^4.0.8" }, "engines": { - "node": ">= 8" + "node": ">=4" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/mkdirp": { - "version": "1.0.4", - "inBundle": true, - "license": "MIT", - "bin": { - "mkdirp": "bin/cmd.js" + "node_modules/chai-as-promised": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/chai-as-promised/-/chai-as-promised-7.1.1.tgz", + "integrity": "sha512-azL6xMoi+uxu6z4rhWQ1jbdUhOMhis2PvscD/xjLqNMkv3BPPp2JyyuTHOrf9BOosGpNQ11v6BKv/g57RXbiaA==", + "dev": true, + "dependencies": { + "check-error": "^1.0.2" }, - "engines": { - "node": ">=10" + "peerDependencies": { + "chai": ">= 2.1.2 < 5" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/mkdirp-infer-owner": { - "version": "2.0.0", - "inBundle": true, - "license": "ISC", + "node_modules/chai-http": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/chai-http/-/chai-http-4.4.0.tgz", + "integrity": "sha512-uswN3rZpawlRaa5NiDUHcDZ3v2dw5QgLyAwnQ2tnVNuP7CwIsOFuYJ0xR1WiR7ymD4roBnJIzOUep7w9jQMFJA==", + "dev": true, "dependencies": { - "chownr": "^2.0.0", - "infer-owner": "^1.0.4", - "mkdirp": "^1.0.3" + "@types/chai": "4", + "@types/superagent": "4.1.13", + "charset": "^1.0.1", + "cookiejar": "^2.1.4", + "is-ip": "^2.0.0", + "methods": "^1.1.2", + "qs": "^6.11.2", + "superagent": "^8.0.9" }, "engines": { "node": ">=10" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/ms": { - "version": "2.1.3", - "inBundle": true, - "license": "MIT" - }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/mute-stream": { - "version": "0.0.8", - "inBundle": true, - "license": "ISC" - }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/negotiator": { - "version": "0.6.3", - "inBundle": true, - "license": "MIT", + "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": ">= 0.6" + "node": ">=4" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/node-gyp": { - "version": "9.1.0", - "inBundle": true, - "license": "MIT", + "node_modules/chalk-template": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/chalk-template/-/chalk-template-0.4.0.tgz", + "integrity": "sha512-/ghrgmhfY8RaSdeo43hNXxpoHAtxdbskUHjPpfqUWGttFgycUhYPGx3YZBCnUCvOa7Doivn1IZec3DEGFoMgLg==", "dependencies": { - "env-paths": "^2.2.0", - "glob": "^7.1.4", - "graceful-fs": "^4.2.6", - "make-fetch-happen": "^10.0.3", - "nopt": "^5.0.0", - "npmlog": "^6.0.0", - "rimraf": "^3.0.2", - "semver": "^7.3.5", - "tar": "^6.1.2", - "which": "^2.0.2" - }, - "bin": { - "node-gyp": "bin/node-gyp.js" + "chalk": "^4.1.2" }, "engines": { - "node": "^12.22 || ^14.13 || >=16" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/chalk-template?sponsor=1" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/node-gyp/node_modules/brace-expansion": { - "version": "1.1.11", - "inBundle": true, - "license": "MIT", + "node_modules/chalk-template/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==", "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/node-gyp/node_modules/glob": { - "version": "7.2.3", - "inBundle": true, - "license": "ISC", + "node_modules/chalk-template/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "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" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": "*" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/node-gyp/node_modules/minimatch": { - "version": "3.1.2", - "inBundle": true, - "license": "ISC", + "node_modules/chalk-template/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==", "dependencies": { - "brace-expansion": "^1.1.7" + "color-name": "~1.1.4" }, "engines": { - "node": "*" + "node": ">=7.0.0" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/node-gyp/node_modules/nopt": { - "version": "5.0.0", - "inBundle": true, - "license": "ISC", - "dependencies": { - "abbrev": "1" - }, - "bin": { - "nopt": "bin/nopt.js" - }, - "engines": { - "node": ">=6" - } + "node_modules/chalk-template/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==" }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/nopt": { - "version": "6.0.0", - "inBundle": true, - "license": "ISC", - "dependencies": { - "abbrev": "^1.0.0" - }, - "bin": { - "nopt": "bin/nopt.js" - }, + "node_modules/chalk-template/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==", "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=8" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/normalize-package-data": { - "version": "4.0.1", - "inBundle": true, - "license": "BSD-2-Clause", + "node_modules/chalk-template/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==", "dependencies": { - "hosted-git-info": "^5.0.0", - "is-core-module": "^2.8.1", - "semver": "^7.3.5", - "validate-npm-package-license": "^3.0.4" + "has-flag": "^4.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=8" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/npm-audit-report": { - "version": "3.0.0", - "inBundle": true, - "license": "ISC", - "dependencies": { - "chalk": "^4.0.0" - }, + "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==", "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=10" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/npm-bundled": { - "version": "2.0.1", - "inBundle": true, - "license": "ISC", - "dependencies": { - "npm-normalize-package-bin": "^2.0.0" - }, + "node_modules/chardet": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-2.0.0.tgz", + "integrity": "sha512-xVgPpulCooDjY6zH4m9YW3jbkaBe3FKIAvF5sj5t7aBNsVl2ljIE+xwJ4iNgiDZHFQvNIpjdKdVOQvvk5ZfxbQ==", + "dev": true + }, + "node_modules/charenc": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", + "integrity": "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==", + "dev": true, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "*" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/npm-bundled/node_modules/npm-normalize-package-bin": { - "version": "2.0.0", - "inBundle": true, - "license": "ISC", + "node_modules/charset": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/charset/-/charset-1.0.1.tgz", + "integrity": "sha512-6dVyOOYjpfFcL1Y4qChrAoQLRHvj2ziyhcm0QJlhOcAhykL/k1kTUPbeo+87MNRTRdk2OIIsIXbuF3x2wi5EXg==", + "dev": true, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=4.0.0" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/npm-install-checks": { - "version": "5.0.0", - "inBundle": true, - "license": "BSD-2-Clause", + "node_modules/check-error": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", + "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", + "dev": true, "dependencies": { - "semver": "^7.1.1" + "get-func-name": "^2.0.2" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "*" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/npm-normalize-package-bin": { - "version": "1.0.1", - "inBundle": true, - "license": "ISC" + "node_modules/child_process": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/child_process/-/child_process-1.0.2.tgz", + "integrity": "sha512-Wmza/JzL0SiWz7kl6MhIKT5ceIlnFPJX+lwUGj7Clhy5MMldsSoJR0+uvRzOS5Kv45Mq7t1PoE8TsOA9bzvb6g==" }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/npm-package-arg": { - "version": "9.1.0", - "inBundle": true, - "license": "ISC", + "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": { - "hosted-git-info": "^5.0.0", - "proc-log": "^2.0.1", - "semver": "^7.3.5", - "validate-npm-package-name": "^4.0.0" + "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": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/npm-packlist": { - "version": "5.1.3", - "inBundle": true, - "license": "ISC", - "dependencies": { - "glob": "^8.0.1", - "ignore-walk": "^5.0.1", - "npm-bundled": "^2.0.0", - "npm-normalize-package-bin": "^2.0.0" - }, - "bin": { - "npm-packlist": "bin/index.js" + "node": ">= 8.10.0" }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "optionalDependencies": { + "fsevents": "~2.3.2" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/npm-packlist/node_modules/npm-normalize-package-bin": { + "node_modules/chownr": { "version": "2.0.0", - "inBundle": true, - "license": "ISC", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=10" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/npm-pick-manifest": { - "version": "7.0.2", - "inBundle": true, - "license": "ISC", - "dependencies": { - "npm-install-checks": "^5.0.0", - "npm-normalize-package-bin": "^2.0.0", - "npm-package-arg": "^9.0.0", - "semver": "^7.3.5" - }, + "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==", + "devOptional": true, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=6" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/npm-pick-manifest/node_modules/npm-normalize-package-bin": { - "version": "2.0.0", - "inBundle": true, - "license": "ISC", + "node_modules/cli-color": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/cli-color/-/cli-color-2.0.3.tgz", + "integrity": "sha512-OkoZnxyC4ERN3zLzZaY9Emb7f/MhBOIpePv0Ycok0fJYT+Ouo00UBEIwsVsr0yoow++n5YWlSUgST9GKhNHiRQ==", + "dev": true, + "dependencies": { + "d": "^1.0.1", + "es5-ext": "^0.10.61", + "es6-iterator": "^2.0.3", + "memoizee": "^0.4.15", + "timers-ext": "^0.1.7" + }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=0.10" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/npm-profile": { - "version": "6.2.1", - "inBundle": true, - "license": "ISC", + "node_modules/cli-progress": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/cli-progress/-/cli-progress-3.12.0.tgz", + "integrity": "sha512-tRkV3HJ1ASwm19THiiLIXLO7Im7wlTuKnvkYaTkyoAPefqjNg7W7DHKUlGRxy9vxDvbyCYQkQozvptuMkGCg8A==", + "dev": true, "dependencies": { - "npm-registry-fetch": "^13.0.1", - "proc-log": "^2.0.0" + "string-width": "^4.2.3" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=4" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/npm-registry-fetch": { - "version": "13.3.1", - "inBundle": true, - "license": "ISC", + "node_modules/cli-table3": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.3.tgz", + "integrity": "sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==", "dependencies": { - "make-fetch-happen": "^10.0.6", - "minipass": "^3.1.6", - "minipass-fetch": "^2.0.3", - "minipass-json-stream": "^1.0.1", - "minizlib": "^2.1.2", - "npm-package-arg": "^9.0.1", - "proc-log": "^2.0.0" + "string-width": "^4.2.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "10.* || >= 12.*" + }, + "optionalDependencies": { + "@colors/colors": "1.5.0" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/npm-user-validate": { - "version": "1.0.1", - "inBundle": true, - "license": "BSD-2-Clause" - }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/npmlog": { - "version": "6.0.2", - "inBundle": true, - "license": "ISC", + "node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", "dependencies": { - "are-we-there-yet": "^3.0.0", - "console-control-strings": "^1.1.0", - "gauge": "^4.0.3", - "set-blocking": "^2.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/once": { - "version": "1.4.0", - "inBundle": true, - "license": "ISC", + "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": { - "wrappy": "1" + "color-name": "1.1.3" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/opener": { - "version": "1.5.2", - "inBundle": true, - "license": "(WTFPL OR MIT)", + "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/color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", "bin": { - "opener": "bin/opener-bin.js" + "color-support": "bin.js" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/p-map": { - "version": "4.0.0", - "inBundle": true, - "license": "MIT", - "dependencies": { - "aggregate-error": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node_modules/colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", + "dev": true, + "engines": { + "node": ">=0.1.90" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/pacote": { - "version": "13.6.2", - "inBundle": true, - "license": "ISC", + "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==", "dependencies": { - "@npmcli/git": "^3.0.0", - "@npmcli/installed-package-contents": "^1.0.7", - "@npmcli/promise-spawn": "^3.0.0", - "@npmcli/run-script": "^4.1.0", - "cacache": "^16.0.0", - "chownr": "^2.0.0", - "fs-minipass": "^2.1.0", - "infer-owner": "^1.0.4", - "minipass": "^3.1.6", - "mkdirp": "^1.0.4", - "npm-package-arg": "^9.0.0", - "npm-packlist": "^5.1.0", - "npm-pick-manifest": "^7.0.0", - "npm-registry-fetch": "^13.0.1", - "proc-log": "^2.0.0", - "promise-retry": "^2.0.1", - "read-package-json": "^5.0.0", - "read-package-json-fast": "^2.0.3", - "rimraf": "^3.0.2", - "ssri": "^9.0.0", - "tar": "^6.1.11" + "delayed-stream": "~1.0.0" }, - "bin": { - "pacote": "lib/bin.js" + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/command-line-args": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-5.2.1.tgz", + "integrity": "sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg==", + "dependencies": { + "array-back": "^3.1.0", + "find-replace": "^3.0.0", + "lodash.camelcase": "^4.3.0", + "typical": "^4.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=4.0.0" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/parse-conflict-json": { - "version": "2.0.2", - "inBundle": true, - "license": "ISC", + "node_modules/command-line-usage": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/command-line-usage/-/command-line-usage-7.0.1.tgz", + "integrity": "sha512-NCyznE//MuTjwi3y84QVUGEOT+P5oto1e1Pk/jFPVdPPfsG03qpTIl3yw6etR+v73d0lXsoojRpvbru2sqePxQ==", "dependencies": { - "json-parse-even-better-errors": "^2.3.1", - "just-diff": "^5.0.1", - "just-diff-apply": "^5.2.0" + "array-back": "^6.2.2", + "chalk-template": "^0.4.0", + "table-layout": "^3.0.0", + "typical": "^7.1.1" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=12.20.0" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/path-is-absolute": { - "version": "1.0.1", - "inBundle": true, - "license": "MIT", + "node_modules/command-line-usage/node_modules/array-back": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-6.2.2.tgz", + "integrity": "sha512-gUAZ7HPyb4SJczXAMUXMGAvI976JoK3qEx9v1FTmeYuJj0IBiaKttG1ydtGKdkfqWkIkouke7nG8ufGy77+Cvw==", "engines": { - "node": ">=0.10.0" + "node": ">=12.17" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/postcss-selector-parser": { - "version": "6.0.10", - "inBundle": true, - "license": "MIT", - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, + "node_modules/command-line-usage/node_modules/typical": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/typical/-/typical-7.1.1.tgz", + "integrity": "sha512-T+tKVNs6Wu7IWiAce5BgMd7OZfNYUndHwc5MknN+UHOudi7sGZzuHdCadllRuqJ3fPtgFtIH9+lt9qRv6lmpfA==", "engines": { - "node": ">=4" + "node": ">=12.17" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/proc-log": { - "version": "2.0.1", - "inBundle": true, - "license": "ISC", + "node_modules/commander": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz", + "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==", + "dev": true, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=16" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/promise-all-reject-late": { + "node_modules/commondir": { "version": "1.0.1", - "inBundle": true, - "license": "ISC", - "funding": { - "url": "https://github.com/sponsors/isaacs" + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", + "dev": true + }, + "node_modules/compare-func": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz", + "integrity": "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==", + "dependencies": { + "array-ify": "^1.0.0", + "dot-prop": "^5.1.0" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/promise-call-limit": { - "version": "1.0.1", - "inBundle": true, - "license": "ISC", + "node_modules/component-emitter": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.1.tgz", + "integrity": "sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==", + "dev": true, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/promise-inflight": { - "version": "1.0.1", - "inBundle": true, - "license": "ISC" + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/promise-retry": { - "version": "2.0.1", - "inBundle": true, - "license": "MIT", + "node_modules/concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "engines": [ + "node >= 0.8" + ], "dependencies": { - "err-code": "^2.0.2", - "retry": "^0.12.0" - }, - "engines": { - "node": ">=10" + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/promzard": { - "version": "0.3.0", - "inBundle": true, - "license": "ISC", + "node_modules/concat-stream/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, + "node_modules/concat-stream/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "dependencies": { - "read": "1" + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/qrcode-terminal": { - "version": "0.12.0", - "inBundle": true, - "bin": { - "qrcode-terminal": "bin/qrcode-terminal.js" - } + "node_modules/concat-stream/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==" }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/read": { - "version": "1.0.7", - "inBundle": true, - "license": "ISC", + "node_modules/concat-stream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dependencies": { - "mute-stream": "~0.0.4" - }, - "engines": { - "node": ">=0.8" + "safe-buffer": "~5.1.0" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/read-cmd-shim": { - "version": "3.0.0", - "inBundle": true, - "license": "ISC", - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node_modules/concurrent-queue": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/concurrent-queue/-/concurrent-queue-7.0.2.tgz", + "integrity": "sha512-icXDqc0JBdcQ3ubXiXcqVhuFeRrec39zVD2X5z7FKwwj0pImnfLWtAhGyX4CcBDD+YoqLesClOeRss+pZnm6/Q==", + "dependencies": { + "afterward": "~2.0.0", + "define-error": "~1.0.0", + "eventuate": "~4.0.0", + "object-assign": "~4.0.1", + "on-error": "~2.1.0", + "once": "~1.3.2", + "promise-polyfill": "~2.1.0" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/read-package-json": { - "version": "5.0.2", - "inBundle": true, - "license": "ISC", + "node_modules/config-chain": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", + "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", "dependencies": { - "glob": "^8.0.1", - "json-parse-even-better-errors": "^2.3.1", - "normalize-package-data": "^4.0.0", - "npm-normalize-package-bin": "^2.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "ini": "^1.3.4", + "proto-list": "~1.2.1" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/read-package-json-fast": { - "version": "2.0.3", - "inBundle": true, - "license": "ISC", + "node_modules/config-chain/node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" + }, + "node_modules/console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==" + }, + "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": { - "json-parse-even-better-errors": "^2.3.0", - "npm-normalize-package-bin": "^1.0.1" + "safe-buffer": "5.2.1" }, "engines": { - "node": ">=10" + "node": ">= 0.6" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/read-package-json/node_modules/npm-normalize-package-bin": { - "version": "2.0.0", - "inBundle": true, - "license": "ISC", + "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": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">= 0.6" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/readable-stream": { - "version": "3.6.0", - "inBundle": true, - "license": "MIT", + "node_modules/conventional-changelog-angular": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-7.0.0.tgz", + "integrity": "sha512-ROjNchA9LgfNMTTFSIWPzebCwOGFdgkEq45EnvvrmSLvCtAw0HSmrCs7/ty+wAeYUZyNay0YMUNYFTRL72PkBQ==", "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "compare-func": "^2.0.0" }, "engines": { - "node": ">= 6" + "node": ">=16" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/readdir-scoped-modules": { - "version": "1.1.0", - "inBundle": true, - "license": "ISC", + "node_modules/conventional-changelog-writer": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-7.0.1.tgz", + "integrity": "sha512-Uo+R9neH3r/foIvQ0MKcsXkX642hdm9odUp7TqgFS7BsalTcjzRlIfWZrZR1gbxOozKucaKt5KAbjW8J8xRSmA==", "dependencies": { - "debuglog": "^1.0.1", - "dezalgo": "^1.0.0", - "graceful-fs": "^4.1.2", - "once": "^1.3.0" + "conventional-commits-filter": "^4.0.0", + "handlebars": "^4.7.7", + "json-stringify-safe": "^5.0.1", + "meow": "^12.0.1", + "semver": "^7.5.2", + "split2": "^4.0.0" + }, + "bin": { + "conventional-changelog-writer": "cli.mjs" + }, + "engines": { + "node": ">=16" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/retry": { - "version": "0.12.0", - "inBundle": true, - "license": "MIT", + "node_modules/conventional-commits-filter": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-4.0.0.tgz", + "integrity": "sha512-rnpnibcSOdFcdclpFwWa+pPlZJhXE7l+XK04zxhbWrhgpR96h33QLz8hITTXbcYICxVr3HZFtbtUAQ+4LdBo9A==", "engines": { - "node": ">= 4" + "node": ">=16" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/rimraf": { - "version": "3.0.2", - "inBundle": true, - "license": "ISC", + "node_modules/conventional-commits-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-5.0.0.tgz", + "integrity": "sha512-ZPMl0ZJbw74iS9LuX9YIAiW8pfM5p3yh2o/NbXHbkFuZzY5jvdi5jFycEOkmBW5H5I7nA+D6f3UcsCLP2vvSEA==", "dependencies": { - "glob": "^7.1.3" + "is-text-path": "^2.0.0", + "JSONStream": "^1.3.5", + "meow": "^12.0.1", + "split2": "^4.0.0" }, "bin": { - "rimraf": "bin.js" + "conventional-commits-parser": "cli.mjs" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/rimraf/node_modules/brace-expansion": { - "version": "1.1.11", - "inBundle": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "engines": { + "node": ">=16" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/rimraf/node_modules/glob": { - "version": "7.2.3", - "inBundle": true, - "license": "ISC", - "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" - }, + "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/cookie": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz", + "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==", "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">= 0.6" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/rimraf/node_modules/minimatch": { - "version": "3.1.2", - "inBundle": true, - "license": "ISC", + "node_modules/cookie-parser": { + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.4.6.tgz", + "integrity": "sha512-z3IzaNjdwUC2olLIB5/ITd0/setiaFMLYiZJle7xg5Fe9KWAceil7xszYfHHBtDFYLSgJduS2Ty0P1uJdPDJeA==", "dependencies": { - "brace-expansion": "^1.1.7" + "cookie": "0.4.1", + "cookie-signature": "1.0.6" }, "engines": { - "node": "*" + "node": ">= 0.8.0" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/safe-buffer": { - "version": "5.2.1", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "inBundle": true, - "license": "MIT" + "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/@semantic-release/npm/node_modules/npm/node_modules/safer-buffer": { - "version": "2.1.2", - "inBundle": true, - "license": "MIT", - "optional": true + "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/@semantic-release/npm/node_modules/npm/node_modules/semver": { - "version": "7.3.7", - "inBundle": true, - "license": "ISC", + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + }, + "node_modules/cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" + "object-assign": "^4", + "vary": "^1" }, "engines": { - "node": ">=10" + "node": ">= 0.10" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/semver/node_modules/lru-cache": { - "version": "6.0.0", - "inBundle": true, - "license": "ISC", + "node_modules/cosmiconfig": { + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", + "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", "dependencies": { - "yallist": "^4.0.0" + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0", + "path-type": "^4.0.0" }, "engines": { - "node": ">=10" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/set-blocking": { - "version": "2.0.0", - "inBundle": true, - "license": "ISC" - }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/signal-exit": { - "version": "3.0.7", - "inBundle": true, - "license": "ISC" - }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/smart-buffer": { - "version": "4.2.0", - "inBundle": true, - "license": "MIT", + "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==", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, "engines": { - "node": ">= 6.0.0", - "npm": ">= 3.0.0" + "node": ">= 8" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/socks": { - "version": "2.7.0", - "inBundle": true, - "license": "MIT", - "dependencies": { - "ip": "^2.0.0", - "smart-buffer": "^4.2.0" - }, + "node_modules/crypt": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", + "integrity": "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==", + "dev": true, "engines": { - "node": ">= 10.13.0", - "npm": ">= 3.0.0" + "node": "*" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/socks-proxy-agent": { - "version": "7.0.0", - "inBundle": true, - "license": "MIT", + "node_modules/crypto-random-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-4.0.0.tgz", + "integrity": "sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==", "dependencies": { - "agent-base": "^6.0.2", - "debug": "^4.3.3", - "socks": "^2.6.2" + "type-fest": "^1.0.1" }, "engines": { - "node": ">= 10" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/spdx-correct": { - "version": "3.1.1", - "inBundle": true, - "license": "Apache-2.0", - "dependencies": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" + "node_modules/crypto-random-string/node_modules/type-fest": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", + "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/spdx-exceptions": { - "version": "2.3.0", - "inBundle": true, - "license": "CC-BY-3.0" + "node_modules/csv-parse": { + "version": "4.16.3", + "resolved": "https://registry.npmjs.org/csv-parse/-/csv-parse-4.16.3.tgz", + "integrity": "sha512-cO1I/zmz4w2dcKHVvpCr7JVRu8/FymG5OEpmvsZYlccYolPBLoVGKUHgNoc4ZGkFeFlWGEDmMyBM+TTqRdW/wg==", + "dev": true }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/spdx-expression-parse": { - "version": "3.0.1", - "inBundle": true, - "license": "MIT", + "node_modules/d": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", + "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", + "dev": true, "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" + "es5-ext": "^0.10.50", + "type": "^1.0.1" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/spdx-license-ids": { - "version": "3.0.11", - "inBundle": true, - "license": "CC0-1.0" + "node_modules/daemonize2": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/daemonize2/-/daemonize2-0.4.2.tgz", + "integrity": "sha512-dzB3qdxvcJ2AWyESI8xv90qZ4wZt4P+lvQUT1sVKcrbEKSvBk/8zkDlZvMyaWmoKe7DXLGu00z59b7K9gkzbqQ==", + "engines": { + "node": ">0.8.x" + } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/ssri": { - "version": "9.0.1", - "inBundle": true, - "license": "ISC", + "node_modules/dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", "dependencies": { - "minipass": "^3.1.1" + "assert-plus": "^1.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=0.10" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/string_decoder": { - "version": "1.3.0", - "inBundle": true, - "license": "MIT", + "node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dependencies": { - "safe-buffer": "~5.2.0" + "ms": "2.0.0" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/string-width": { - "version": "4.2.3", - "inBundle": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "dev": true, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/strip-ansi": { - "version": "6.0.1", - "inBundle": true, - "license": "MIT", + "node_modules/deep-eql": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz", + "integrity": "sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==", + "dev": true, "dependencies": { - "ansi-regex": "^5.0.1" + "type-detect": "^4.0.0" }, "engines": { - "node": ">=8" + "node": ">=6" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/supports-color": { - "version": "7.2.0", - "inBundle": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", "engines": { - "node": ">=8" + "node": ">=4.0.0" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/tar": { - "version": "6.1.11", - "inBundle": true, - "license": "ISC", - "dependencies": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^3.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/text-table": { - "version": "0.2.0", - "inBundle": true, - "license": "MIT" - }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/tiny-relative-date": { - "version": "1.3.0", - "inBundle": true, - "license": "MIT" - }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/treeverse": { - "version": "2.0.0", - "inBundle": true, - "license": "ISC", - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } + "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/@semantic-release/npm/node_modules/npm/node_modules/unique-filename": { - "version": "2.0.1", - "inBundle": true, - "license": "ISC", + "node_modules/default-require-extensions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-3.0.1.tgz", + "integrity": "sha512-eXTJmRbm2TIt9MgWTsOH1wEuhew6XGZcMeGKCtLedIg/NCsg1iBePXkceTdK4Fii7pzmN9tGsZhKzZ4h7O/fxw==", + "dev": true, "dependencies": { - "unique-slug": "^3.0.0" + "strip-bom": "^4.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/unique-slug": { - "version": "3.0.0", - "inBundle": true, - "license": "ISC", - "dependencies": { - "imurmurhash": "^0.1.4" + "node": ">=8" }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/util-deprecate": { - "version": "1.0.2", - "inBundle": true, - "license": "MIT" - }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/validate-npm-package-license": { - "version": "3.0.4", - "inBundle": true, - "license": "Apache-2.0", - "dependencies": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/validate-npm-package-name": { - "version": "4.0.0", - "inBundle": true, - "license": "ISC", + "node_modules/define-data-property": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", + "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", "dependencies": { - "builtins": "^5.0.0" + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">= 0.4" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/walk-up-path": { + "node_modules/define-error": { "version": "1.0.0", - "inBundle": true, - "license": "ISC" - }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/wcwidth": { - "version": "1.0.1", - "inBundle": true, - "license": "MIT", + "resolved": "https://registry.npmjs.org/define-error/-/define-error-1.0.0.tgz", + "integrity": "sha512-HLdUb9mNENZ/tjnZGlITfOnx7wSM7a6e+WEDyhKSrsN/g5dJUS6kepG6qJApRLAdjRofQ2W8R3yrtI6GeyGGVg==", "dependencies": { - "defaults": "^1.0.3" + "capture-stack-trace": "~1.0.0" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/which": { - "version": "2.0.2", - "inBundle": true, - "license": "ISC", + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" }, "engines": { - "node": ">= 8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/wide-align": { - "version": "1.1.5", - "inBundle": true, - "license": "ISC", - "dependencies": { - "string-width": "^1.0.2 || 2 || 3 || 4" + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "engines": { + "node": ">=0.4.0" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/wrappy": { - "version": "1.0.2", - "inBundle": true, - "license": "ISC" + "node_modules/delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==" }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/write-file-atomic": { - "version": "4.0.2", - "inBundle": true, - "license": "ISC", - "dependencies": { - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.7" - }, + "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": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">= 0.8" } }, - "node_modules/@semantic-release/npm/node_modules/npm/node_modules/yallist": { - "version": "4.0.0", - "inBundle": true, - "license": "ISC" + "node_modules/deprecation": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", + "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==" }, - "node_modules/@semantic-release/npm/node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "node_modules/des.js": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.1.0.tgz", + "integrity": "sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg==", + "dev": true, "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" } }, - "node_modules/@semantic-release/npm/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==", + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", "engines": { - "node": ">=8" + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" } }, - "node_modules/@semantic-release/npm/node_modules/semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, + "node_modules/detect-libc": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz", + "integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==", "engines": { - "node": ">=10" + "node": ">=8" } }, - "node_modules/@semantic-release/npm/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==", + "node_modules/detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "dev": true + }, + "node_modules/dezalgo": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz", + "integrity": "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==", "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" + "asap": "^2.0.0", + "wrappy": "1" } }, - "node_modules/@semantic-release/npm/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==", + "node_modules/diff": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", + "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", + "dev": true, "engines": { - "node": ">=8" + "node": ">=0.3.1" } }, - "node_modules/@semantic-release/npm/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "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==", "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" + "path-type": "^4.0.0" }, "engines": { - "node": ">= 8" + "node": ">=8" } }, - "node_modules/@semantic-release/npm/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/@semantic-release/release-notes-generator": { - "version": "10.0.3", - "resolved": "https://registry.npmjs.org/@semantic-release/release-notes-generator/-/release-notes-generator-10.0.3.tgz", - "integrity": "sha512-k4x4VhIKneOWoBGHkx0qZogNjCldLPRiAjnIpMnlUh6PtaWXp/T+C9U7/TaNDDtgDa5HMbHl4WlREdxHio6/3w==", - "dependencies": { - "conventional-changelog-angular": "^5.0.0", - "conventional-changelog-writer": "^5.0.0", - "conventional-commits-filter": "^2.0.0", - "conventional-commits-parser": "^3.2.3", - "debug": "^4.0.0", - "get-stream": "^6.0.0", - "import-from": "^4.0.0", - "into-stream": "^6.0.0", - "lodash": "^4.17.4", - "read-pkg-up": "^7.0.0" + "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": ">=14.17" - }, - "peerDependencies": { - "semantic-release": ">=18.0.0-beta.1" + "node": ">=6.0.0" } }, - "node_modules/@semantic-release/release-notes-generator/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "node_modules/dot-prop": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", "dependencies": { - "ms": "2.1.2" + "is-obj": "^2.0.0" }, "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "node": ">=8" } }, - "node_modules/@semantic-release/release-notes-generator/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==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node_modules/dottie": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/dottie/-/dottie-2.0.6.tgz", + "integrity": "sha512-iGCHkfUc5kFekGiqhe8B/mdaurD+lakO9txNnTvKtA6PISrw86LgqHvRzWYPyoE2Ph5aMIrCw9/uko6XHTKCwA==" + }, + "node_modules/duplexer2": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==", + "dependencies": { + "readable-stream": "^2.0.2" } }, - "node_modules/@semantic-release/release-notes-generator/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/duplexer2/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" }, - "node_modules/@sinonjs/commons": { - "version": "1.8.6", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.6.tgz", - "integrity": "sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==", - "dev": true, + "node_modules/duplexer2/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "dependencies": { - "type-detect": "4.0.8" + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" } }, - "node_modules/@sinonjs/formatio": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/@sinonjs/formatio/-/formatio-3.2.2.tgz", - "integrity": "sha512-B8SEsgd8gArBLMD6zpRw3juQ2FVSsmdd7qlevyDqzS9WTCtvF55/gAL+h6gue8ZvPYcdiPdvueM/qm//9XzyTQ==", - "dev": true, + "node_modules/duplexer2/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==" + }, + "node_modules/duplexer2/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dependencies": { - "@sinonjs/commons": "^1", - "@sinonjs/samsam": "^3.1.0" + "safe-buffer": "~5.1.0" } }, - "node_modules/@sinonjs/samsam": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-3.3.3.tgz", - "integrity": "sha512-bKCMKZvWIjYD0BLGnNrxVuw4dkWCYsLqFOUWw8VgKF/+5Y+mE7LfHWPIYoDXowH+3a9LsWDMo0uAP8YDosPvHQ==", - "dev": true, + "node_modules/ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", "dependencies": { - "@sinonjs/commons": "^1.3.0", - "array-from": "^2.1.1", - "lodash": "^4.17.15" + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" } }, - "node_modules/@sinonjs/text-encoding": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.2.tgz", - "integrity": "sha512-sXXKG+uL9IrKqViTtao2Ws6dy0znu9sOaP1di/jKGW1M6VssO8vlpXCQcpZ+jisQ1tTFAC5Jo/EOzFbggBagFQ==", - "dev": true - }, - "node_modules/@tootallnate/once": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", - "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", - "engines": { - "node": ">= 10" + "node_modules/editorconfig": { + "version": "0.15.3", + "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-0.15.3.tgz", + "integrity": "sha512-M9wIMFx96vq0R4F+gRpY3o2exzb8hEj/n9S8unZtHSvYjibBp/iMufSzvmOcV/laG0ZtuTVGtiJggPOSW2r93g==", + "dev": true, + "dependencies": { + "commander": "^2.19.0", + "lru-cache": "^4.1.5", + "semver": "^5.6.0", + "sigmund": "^1.0.1" + }, + "bin": { + "editorconfig": "bin/editorconfig" } }, - "node_modules/@types/chai": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.4.tgz", - "integrity": "sha512-KnRanxnpfpjUTqTCXslZSEdLfXExwgNxYPdiO2WGUj8+HDjFi8R3k5RVKPeSCzLjCcshCAtVO2QBbVuAV4kTnw==", - "dev": true - }, - "node_modules/@types/cookiejar": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@types/cookiejar/-/cookiejar-2.1.2.tgz", - "integrity": "sha512-t73xJJrvdTjXrn4jLS9VSGRbz0nUY3cl2DMGDU48lKl+HR9dbbjW2A9r3g40VA++mQpy6uuHg33gy7du2BKpog==", + "node_modules/editorconfig/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/@types/debug": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.7.tgz", - "integrity": "sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==", + "node_modules/editorconfig/node_modules/lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, "dependencies": { - "@types/ms": "*" + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" } }, - "node_modules/@types/minimist": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", - "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==" - }, - "node_modules/@types/ms": { - "version": "0.7.31", - "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz", - "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==" - }, - "node_modules/@types/node": { - "version": "18.14.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.14.2.tgz", - "integrity": "sha512-1uEQxww3DaghA0RxqHx0O0ppVlo43pJhepY51OxuQIKHpjbnYLA7vcdwioNPzIqmC2u3I/dmylcqjlh0e7AyUA==" - }, - "node_modules/@types/normalize-package-data": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", - "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==" - }, - "node_modules/@types/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" - }, - "node_modules/@types/retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", - "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==" - }, - "node_modules/@types/superagent": { - "version": "3.8.7", - "resolved": "https://registry.npmjs.org/@types/superagent/-/superagent-3.8.7.tgz", - "integrity": "sha512-9KhCkyXv268A2nZ1Wvu7rQWM+BmdYUVkycFeNnYrUL5Zwu7o8wPQ3wBfW59dDP+wuoxw0ww8YKgTNv8j/cgscA==", + "node_modules/editorconfig/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, - "dependencies": { - "@types/cookiejar": "*", - "@types/node": "*" + "bin": { + "semver": "bin/semver" } }, - "node_modules/@types/validator": { - "version": "13.7.12", - "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.7.12.tgz", - "integrity": "sha512-YVtyAPqpefU+Mm/qqnOANW6IkqKpCSrarcyV269C8MA8Ux0dbkEuQwM/4CjL47kVEM2LgBef/ETfkH+c6+moFA==" - }, - "node_modules/@ungap/promise-all-settled": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz", - "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==", + "node_modules/editorconfig/node_modules/yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==", "dev": true }, - "node_modules/abbrev": { + "node_modules/ee-first": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" }, - "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==", + "node_modules/ejs": { + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.9.tgz", + "integrity": "sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==", "dependencies": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" + "jake": "^10.8.5" + }, + "bin": { + "ejs": "bin/cli.js" }, "engines": { - "node": ">= 0.6" + "node": ">=0.10.0" } }, - "node_modules/acorn": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.1.tgz", - "integrity": "sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, + "node_modules/electron-to-chromium": { + "version": "1.4.313", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.313.tgz", + "integrity": "sha512-QckB9OVqr2oybjIrbMI99uF+b9+iTja5weFe0ePbqLb5BHqXOJUO1SG6kDj/1WtWPRIBr51N153AEq8m7HuIaA==", + "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==", "engines": { - "node": ">=0.4.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sindresorhus/emittery?sponsor=1" } }, - "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/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==" + }, + "node_modules/emojilib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/emojilib/-/emojilib-2.4.0.tgz", + "integrity": "sha512-5U0rVMU5Y2n2+ykNLQqMoqklN9ICBT/KsvC1Gz6vqHbz2AXXGkG+Pm5rMWk/8Vjrr/mY9985Hi8DYzn1F09Nyw==" + }, + "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/afterward": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/afterward/-/afterward-2.0.0.tgz", - "integrity": "sha512-7n9Vkbb8cmMRKKSfe5qgyqX4Yjdaty0QP/+GXYawZK8Vcq+8E5FCmbWbwfCoiBnDoAY/edKLNg2TwgGcwdA+3Q==", + "node_modules/encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "optional": true, "dependencies": { - "define-error": "~1.0.0" + "iconv-lite": "^0.6.2" } }, - "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==", + "node_modules/encoding/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "optional": true, "dependencies": { - "debug": "4" + "safer-buffer": ">= 2.1.2 < 3.0.0" }, "engines": { - "node": ">= 6.0.0" + "node": ">=0.10.0" } }, - "node_modules/agent-base/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "node_modules/env-ci": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/env-ci/-/env-ci-10.0.0.tgz", + "integrity": "sha512-U4xcd/utDYFgMh0yWj07R1H6L5fwhVbmxBCpnL0DbVSDZVnsC82HONw0wxtxNkIAcua3KtbomQvIk5xFZGAQJw==", "dependencies": { - "ms": "2.1.2" + "execa": "^8.0.0", + "java-properties": "^1.0.2" }, "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "node": "^18.17 || >=20.6.1" } }, - "node_modules/agent-base/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/agentkeepalive": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.2.1.tgz", - "integrity": "sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==", - "optional": true, + "node_modules/env-ci/node_modules/execa": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", + "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", "dependencies": { - "debug": "^4.1.0", - "depd": "^1.1.2", - "humanize-ms": "^1.2.1" + "cross-spawn": "^7.0.3", + "get-stream": "^8.0.1", + "human-signals": "^5.0.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^3.0.0" }, "engines": { - "node": ">= 8.0.0" + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/agentkeepalive/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "optional": true, - "dependencies": { - "ms": "2.1.2" - }, + "node_modules/env-ci/node_modules/get-stream": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", + "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", "engines": { - "node": ">=6.0" + "node": ">=16" }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/agentkeepalive/node_modules/depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", - "optional": true, + "node_modules/env-ci/node_modules/human-signals": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", + "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", "engines": { - "node": ">= 0.6" + "node": ">=16.17.0" } }, - "node_modules/agentkeepalive/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==", - "optional": true - }, - "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" + "node_modules/env-ci/node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/env-ci/node_modules/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "node_modules/env-ci/node_modules/npm-run-path": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.2.0.tgz", + "integrity": "sha512-W4/tgAXFqFA0iL7fk0+uQ3g7wkL8xJmx3XdK0VGb4cHW//eZTtKGvFBBoRKVTpY7n6ze4NL9ly7rgXcHufqXKg==", "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" + "path-key": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "peerDependencies": { - "ajv": "^6.9.1" + "node_modules/env-ci/node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "dependencies": { + "mimic-fn": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true, + "node_modules/env-ci/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", "engines": { - "node": ">=6" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/ansi-escapes": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", - "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", - "dev": true, + "node_modules/env-ci/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "engines": { - "node": ">=4" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "dev": true, + "node_modules/env-ci/node_modules/strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", "engines": { - "node": ">=0.10.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "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" - }, + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "optional": true, "engines": { - "node": ">=4" + "node": ">=6" } }, - "node_modules/ansicolors": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/ansicolors/-/ansicolors-0.3.2.tgz", - "integrity": "sha512-QXu7BPrP29VllRxH8GwB7x5iX5qWKAAMLqKQGWTeLWVlNHNOpVMJ91dsxQAIWXpjuW5wqvxu3Jd/nRjrJ+0pqg==" - }, - "node_modules/any-promise": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", - "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==" + "node_modules/err-code": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", + "optional": true }, - "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, + "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": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" + "is-arrayish": "^0.2.1" } }, - "node_modules/append-field": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz", - "integrity": "sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw==" - }, - "node_modules/append-transform": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-2.0.0.tgz", - "integrity": "sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg==", + "node_modules/es-abstract": { + "version": "1.22.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.3.tgz", + "integrity": "sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==", "dev": true, "dependencies": { - "default-require-extensions": "^3.0.0" + "array-buffer-byte-length": "^1.0.0", + "arraybuffer.prototype.slice": "^1.0.2", + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.5", + "es-set-tostringtag": "^2.0.1", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.2", + "get-symbol-description": "^1.0.0", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0", + "internal-slot": "^1.0.5", + "is-array-buffer": "^3.0.2", + "is-callable": "^1.2.7", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.12", + "is-weakref": "^1.0.2", + "object-inspect": "^1.13.1", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.5.1", + "safe-array-concat": "^1.0.1", + "safe-regex-test": "^1.0.0", + "string.prototype.trim": "^1.2.8", + "string.prototype.trimend": "^1.0.7", + "string.prototype.trimstart": "^1.0.7", + "typed-array-buffer": "^1.0.0", + "typed-array-byte-length": "^1.0.0", + "typed-array-byte-offset": "^1.0.0", + "typed-array-length": "^1.0.4", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.13" }, "engines": { - "node": ">=8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/aproba": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", - "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==" - }, - "node_modules/archy": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", - "integrity": "sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==", - "dev": true - }, - "node_modules/are-we-there-yet": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", - "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==", + "node_modules/es-iterator-helpers": { + "version": "1.0.15", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.15.tgz", + "integrity": "sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g==", + "dev": true, "dependencies": { - "delegates": "^1.0.0", - "readable-stream": "^3.6.0" - }, - "engines": { - "node": ">=10" + "asynciterator.prototype": "^1.0.0", + "call-bind": "^1.0.2", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.1", + "es-set-tostringtag": "^2.0.1", + "function-bind": "^1.1.1", + "get-intrinsic": "^1.2.1", + "globalthis": "^1.0.3", + "has-property-descriptors": "^1.0.0", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.5", + "iterator.prototype": "^1.1.2", + "safe-array-concat": "^1.0.1" } }, - "node_modules/are-we-there-yet/node_modules/readable-stream": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.1.tgz", - "integrity": "sha512-+rQmrWMYGA90yenhTYsLWAsLsqVC8osOw6PKE1HDYiO0gdPeKe/xDHNzIAIn4C91YQ6oenEhfYqqc1883qHbjQ==", + "node_modules/es-set-tostringtag": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz", + "integrity": "sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==", + "dev": true, "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "get-intrinsic": "^1.2.2", + "has-tostringtag": "^1.0.0", + "hasown": "^2.0.0" }, "engines": { - "node": ">= 6" - } - }, - "node_modules/are-we-there-yet/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": ">= 0.4" } }, - "node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "node_modules/es-shim-unscopables": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", + "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", + "dev": true, "dependencies": { - "sprintf-js": "~1.0.2" + "hasown": "^2.0.0" } }, - "node_modules/argv-formatter": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/argv-formatter/-/argv-formatter-1.0.0.tgz", - "integrity": "sha512-F2+Hkm9xFaRg+GkaNnbwXNDV5O6pnCFEmqyhvfC/Ic5LbgOWjJh3L+mN/s91rxVL3znE7DYVpW0GJFT+4YBgWw==" - }, - "node_modules/argv-tools": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/argv-tools/-/argv-tools-0.1.2.tgz", - "integrity": "sha512-wxqoymY0BEu9NblZVQiOTOAiJUjPhaa/kbNMjC2h6bnrmUSgnxKgWJo3lzXvi3bHJRwXyqK/dHzMlZVRT89Cxg==", + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, "dependencies": { - "array-back": "^2.0.0", - "find-replace": "^2.0.1" + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" }, "engines": { - "node": ">=4.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/array-back": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/array-back/-/array-back-2.0.0.tgz", - "integrity": "sha512-eJv4pLLufP3g5kcZry0j6WXpIbzYw9GUB4mVJZno9wfwiBxbizTnHCw3VJb07cBihbFX48Y7oSrW9y+gt4glyw==", + "node_modules/es5-ext": { + "version": "0.10.62", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.62.tgz", + "integrity": "sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==", + "dev": true, + "hasInstallScript": true, "dependencies": { - "typical": "^2.6.1" + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.3", + "next-tick": "^1.1.0" }, "engines": { - "node": ">=4" + "node": ">=0.10" } }, - "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-from": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/array-from/-/array-from-2.1.1.tgz", - "integrity": "sha512-GQTc6Uupx1FCavi5mPzBvVT7nEOeWMmUA9P95wpfpW1XwMSKs+KaymD5C2Up7KAUKg/mYwbsUYzdZWcoajlNZg==", + "node_modules/es6-error": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", + "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", "dev": true }, - "node_modules/array-ify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", - "integrity": "sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==" - }, - "node_modules/array-includes": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz", - "integrity": "sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==", + "node_modules/es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "get-intrinsic": "^1.1.3", - "is-string": "^1.0.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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==", - "engines": { - "node": ">=8" - } - }, - "node_modules/arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", - "engines": { - "node": ">=0.10.0" + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" } }, - "node_modules/asn1": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", - "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", + "node_modules/es6-symbol": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", + "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", + "dev": true, "dependencies": { - "safer-buffer": "~2.1.0" - } - }, - "node_modules/assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", - "engines": { - "node": ">=0.8" + "d": "^1.0.1", + "ext": "^1.1.2" } }, - "node_modules/assertion-error": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", - "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "node_modules/es6-weak-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", + "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", "dev": true, - "engines": { - "node": "*" + "dependencies": { + "d": "1", + "es5-ext": "^0.10.46", + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.1" } }, - "node_modules/astral-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", - "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", - "dev": true, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", "engines": { - "node": ">=4" + "node": ">=6" } }, - "node_modules/async": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", - "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==" - }, - "node_modules/asynckit": { - "version": "0.4.0", - "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/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/available-typed-arrays": { + "node_modules/escape-string-regexp": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", - "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "engines": { - "node": "*" - } - }, - "node_modules/aws4": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz", - "integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==" - }, - "node_modules/axios": { - "version": "1.0.0-alpha.1", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.0.0-alpha.1.tgz", - "integrity": "sha512-p+meG161943WT+K7sJYquHR46xxi/z0tk7vnSmEf/LrfEAyiP+0uTMMYk1OEo1IRF18oGRhnFxN1y8fLcXaTMw==", - "dependencies": { - "follow-redirects": "^1.15.0", - "form-data": "^4.0.0", - "proxy-from-env": "^1.1.0" + "node": ">=0.8.0" } }, - "node_modules/babel-code-frame": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", - "integrity": "sha512-XqYMR2dfdGMW+hd0IUZ2PwK+fGeFkOxZJ0wY+JaQAHzt1Zx8LcvpiZD2NiGkEG8qx0CfkAOr5xt76d1e8vG90g==", - "dev": true, - "dependencies": { - "chalk": "^1.1.3", + "node_modules/eslint": { + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.56.0.tgz", + "integrity": "sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.56.0", + "@humanwhocodes/config-array": "^0.11.13", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", + "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.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", "esutils": "^2.0.2", - "js-tokens": "^3.0.2" - } - }, - "node_modules/babel-code-frame/node_modules/ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/babel-code-frame/node_modules/chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", - "dev": true, - "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" + "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", + "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", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" }, "engines": { - "node": ">=0.10.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/babel-code-frame/node_modules/js-tokens": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha512-RjTcuD4xjtthQkaWH7dFlH85L+QaVtSoOyGdZ3g6HFhS9dFNDfLyqgm2NFe2X6cQpeFmt0452FJjFG5UameExg==", - "dev": true - }, - "node_modules/babel-code-frame/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "node_modules/eslint-config-google": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/eslint-config-google/-/eslint-config-google-0.14.0.tgz", + "integrity": "sha512-WsbX4WbjuMvTdeVL6+J3rK1RGhCTqjsFjX7UMSMgZiyxxaNLkoJENbrGExzERFeoTpGw3F3FypTiWAP9ZXzkEw==", "dev": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, "engines": { "node": ">=0.10.0" + }, + "peerDependencies": { + "eslint": ">=5.16.0" } }, - "node_modules/babel-code-frame/node_modules/supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "node_modules/eslint-config-standard": { + "version": "17.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-17.1.0.tgz", + "integrity": "sha512-IwHwmaBNtDK4zDHQukFDW5u/aTb8+meQWZvNFWkiGmbWjD6bqyuSSBxxXKkCftCUzc1zwCH2m/baCNDLGmuO5Q==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==", - "dependencies": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.0" + "node": ">=12.0.0" + }, + "peerDependencies": { + "eslint": "^8.0.1", + "eslint-plugin-import": "^2.25.2", + "eslint-plugin-n": "^15.0.0 || ^16.0.0 ", + "eslint-plugin-promise": "^6.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/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "node_modules/eslint-config-standard-jsx": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-standard-jsx/-/eslint-config-standard-jsx-11.0.0.tgz", + "integrity": "sha512-+1EV/R0JxEK1L0NGolAr8Iktm3Rgotx3BKwgaX+eAuSX8D952LULKtjgZD3F+e6SvibONnhLwoTi9DPxN5LvvQ==", "dev": true, "funding": [ { @@ -4359,1501 +4369,1469 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "peerDependencies": { + "eslint": "^8.8.0", + "eslint-plugin-react": "^7.28.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==", + "node_modules/eslint-import-resolver-node": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", + "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", + "dev": true, "dependencies": { - "safe-buffer": "5.1.2" - }, - "engines": { - "node": ">= 0.8" + "debug": "^3.2.7", + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" } }, - "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==" - }, - "node_modules/bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", + "node_modules/eslint-import-resolver-node/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": { - "tweetnacl": "^0.14.3" + "ms": "^2.1.1" } }, - "node_modules/bdd-lazy-var": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/bdd-lazy-var/-/bdd-lazy-var-2.5.2.tgz", - "integrity": "sha512-EBFk8uOTALu8crLChd+KfhHwv+frhxqE235jcy6NY1G1weB0Gyr5H7u0zvUnr1yduzX6M1I/ERaVGdY1cd+6ZQ==", + "node_modules/eslint-import-resolver-node/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==", "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/eslint-import-resolver-node/node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.13.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/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "node_modules/eslint-module-utils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz", + "integrity": "sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==", "dev": true, + "dependencies": { + "debug": "^3.2.7" + }, "engines": { - "node": ">=8" + "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } } }, - "node_modules/bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" + "node_modules/eslint-module-utils/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/body-parser": { - "version": "1.20.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", - "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", + "node_modules/eslint-module-utils/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==", + "dev": true + }, + "node_modules/eslint-plugin-es": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-4.1.0.tgz", + "integrity": "sha512-GILhQTnjYE2WorX5Jyi5i4dz5ALWxBIdQECVQavL6s7cI76IZTDWleTHkxz/QT3kvcs2QlGHvKLYsSlPOlPXnQ==", + "dev": true, "dependencies": { - "bytes": "3.1.2", - "content-type": "~1.0.5", - "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.2", - "type-is": "~1.6.18", - "unpipe": "1.0.0" + "eslint-utils": "^2.0.0", + "regexpp": "^3.0.0" }, "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" + "node": ">=8.10.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=4.19.1" } }, - "node_modules/body-parser/node_modules/qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "node_modules/eslint-plugin-es/node_modules/eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, "dependencies": { - "side-channel": "^1.0.4" + "eslint-visitor-keys": "^1.1.0" }, "engines": { - "node": ">=0.6" + "node": ">=6" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/mysticatea" } }, - "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/eslint-plugin-es/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true, + "engines": { + "node": ">=4" + } }, - "node_modules/bowser": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.11.0.tgz", - "integrity": "sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==" + "node_modules/eslint-plugin-import": { + "version": "2.29.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz", + "integrity": "sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.7", + "array.prototype.findlastindex": "^1.2.3", + "array.prototype.flat": "^1.3.2", + "array.prototype.flatmap": "^1.3.2", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.9", + "eslint-module-utils": "^2.8.0", + "hasown": "^2.0.0", + "is-core-module": "^2.13.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.7", + "object.groupby": "^1.0.1", + "object.values": "^1.1.7", + "semver": "^6.3.1", + "tsconfig-paths": "^3.15.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" + } }, - "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==", + "node_modules/eslint-plugin-import/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": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "ms": "^2.1.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==", + "node_modules/eslint-plugin-import/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, "dependencies": { - "fill-range": "^7.0.1" + "esutils": "^2.0.2" }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/brotli": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/brotli/-/brotli-1.3.3.tgz", - "integrity": "sha512-oTKjJdShmDuGW94SyyaoQvAjf30dZaHnjJ8uAF+u2/vGJkJbJPJAT1gDiOJP5v1Zb6f9KEyW/1HpuaWIXtGHPg==", + "node_modules/eslint-plugin-import/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": { - "base64-js": "^1.1.2" + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" } }, - "node_modules/browser-stdout": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", - "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "node_modules/eslint-plugin-import/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==", "dev": true }, - "node_modules/browserslist": { - "version": "4.21.5", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz", - "integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==", + "node_modules/eslint-plugin-import/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - } - ], - "dependencies": { - "caniuse-lite": "^1.0.30001449", - "electron-to-chromium": "^1.4.284", - "node-releases": "^2.0.8", - "update-browserslist-db": "^1.0.10" - }, "bin": { - "browserslist": "cli.js" + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-plugin-n": { + "version": "15.7.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-15.7.0.tgz", + "integrity": "sha512-jDex9s7D/Qial8AGVIHq4W7NswpUD5DPDL2RH8Lzd9EloWUuvUkHfv4FRLMipH5q2UtyurorBkPeNi1wVWNh3Q==", + "dev": true, + "dependencies": { + "builtins": "^5.0.1", + "eslint-plugin-es": "^4.1.0", + "eslint-utils": "^3.0.0", + "ignore": "^5.1.1", + "is-core-module": "^2.11.0", + "minimatch": "^3.1.2", + "resolve": "^1.22.1", + "semver": "^7.3.8" }, "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + "node": ">=12.22.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=7.0.0" } }, - "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==" - }, - "node_modules/busboy": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", - "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", + "node_modules/eslint-plugin-n/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": { - "streamsearch": "^1.1.0" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">=10.16.0" + "node": "*" } }, - "node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "node_modules/eslint-plugin-promise": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.1.1.tgz", + "integrity": "sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig==", + "dev": true, "engines": { - "node": ">= 0.8" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" } }, - "node_modules/cacache": { - "version": "15.3.0", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", - "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", - "optional": true, + "node_modules/eslint-plugin-react": { + "version": "7.33.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.33.2.tgz", + "integrity": "sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==", + "dev": true, "dependencies": { - "@npmcli/fs": "^1.0.0", - "@npmcli/move-file": "^1.0.1", - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "glob": "^7.1.4", - "infer-owner": "^1.0.4", - "lru-cache": "^6.0.0", - "minipass": "^3.1.1", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.2", - "mkdirp": "^1.0.3", - "p-map": "^4.0.0", - "promise-inflight": "^1.0.1", - "rimraf": "^3.0.2", - "ssri": "^8.0.1", - "tar": "^6.0.2", - "unique-filename": "^1.1.1" + "array-includes": "^3.1.6", + "array.prototype.flatmap": "^1.3.1", + "array.prototype.tosorted": "^1.1.1", + "doctrine": "^2.1.0", + "es-iterator-helpers": "^1.0.12", + "estraverse": "^5.3.0", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.6", + "object.fromentries": "^2.0.6", + "object.hasown": "^1.1.2", + "object.values": "^1.1.6", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.4", + "semver": "^6.3.1", + "string.prototype.matchall": "^4.0.8" }, "engines": { - "node": ">= 10" + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" } }, - "node_modules/cacache/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==", - "optional": true, + "node_modules/eslint-plugin-react/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, "dependencies": { - "yallist": "^4.0.0" + "esutils": "^2.0.2" }, "engines": { - "node": ">=10" + "node": ">=0.10.0" } }, - "node_modules/cacache/node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "optional": true, - "bin": { - "mkdirp": "bin/cmd.js" + "node_modules/eslint-plugin-react/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": ">=10" + "node": "*" } }, - "node_modules/cacache/node_modules/p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "optional": true, + "node_modules/eslint-plugin-react/node_modules/resolve": { + "version": "2.0.0-next.5", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", + "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", + "dev": true, "dependencies": { - "aggregate-error": "^3.0.0" + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" }, - "engines": { - "node": ">=10" + "bin": { + "resolve": "bin/resolve" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/cacache/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "optional": true, - "dependencies": { - "glob": "^7.1.3" - }, + "node_modules/eslint-plugin-react/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "semver": "bin/semver.js" } }, - "node_modules/cacache/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "optional": true - }, - "node_modules/caching-transform": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-4.0.0.tgz", - "integrity": "sha512-kpqOvwXnjjN44D89K5ccQC+RUrsy7jB/XLlRrx0D7/2HNcTPqzsb6XgYoErwko6QsV184CA2YgS1fxDiiDZMWA==", + "node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", "dev": true, "dependencies": { - "hasha": "^5.0.0", - "make-dir": "^3.0.0", - "package-hash": "^4.0.0", - "write-file-atomic": "^3.0.0" + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" }, "engines": { - "node": ">=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" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://opencollective.com/eslint" } }, - "node_modules/caller-path": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", - "integrity": "sha512-UJiE1otjXPF5/x+T3zTnSFiTOEmJoGTD9HmBoxnCUwho61a2eSNn/VwtwuIBDAo2SEOv1AJ7ARI5gCmohFLu/g==", + "node_modules/eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", "dev": true, "dependencies": { - "callsites": "^0.2.0" + "eslint-visitor-keys": "^2.0.0" }, "engines": { - "node": ">=0.10.0" + "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=5" } }, - "node_modules/caller-path/node_modules/callsites": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", - "integrity": "sha512-Zv4Dns9IbXXmPkgRRUjAaJQgfN4xX5p6+RQFhWUqscdvvK2xK/ZL8b3IXIJsj+4sD+f24NwnWy2BY8AJ82JB0A==", + "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", "dev": true, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "engines": { - "node": ">=6" + "node": ">=10" } }, - "node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, "engines": { - "node": ">=6" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/camelcase-keys": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", - "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", + "node_modules/eslint/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": { - "camelcase": "^5.3.1", - "map-obj": "^4.0.0", - "quick-lru": "^4.0.1" + "color-convert": "^2.0.1" }, "engines": { "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/camelize": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/camelize/-/camelize-1.0.0.tgz", - "integrity": "sha512-W2lPwkBkMZwFlPCXhIlYgxu+7gC/NUlCtdK652DAJ1JdgV0sTrvuPFshNPrFa1TY2JOkLhgdeEBplB4ezEa+xg==" - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001458", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001458.tgz", - "integrity": "sha512-lQ1VlUUq5q9ro9X+5gOEyH7i3vm+AYVT1WDCVB69XOZ17KZRhnZ9J0Sqz7wTHQaLBJccNCHq8/Ww5LlOIZbB0w==", + "node_modules/eslint/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, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - } - ] - }, - "node_modules/capture-stack-trace": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.2.tgz", - "integrity": "sha512-X/WM2UQs6VMHUtjUDnZTRI+i1crWteJySFzr9UpGoQa4WQffXVTTXuekjl7TjZRlcF2XfjgITT0HxZ9RnxeT0w==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/cardinal": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/cardinal/-/cardinal-2.1.1.tgz", - "integrity": "sha512-JSr5eOgoEymtYHBjNWyjrMqet9Am2miJhlfKNdqLp6zoeAh0KN5dRAcxlecj5mAJrmQomgiOBj35xHLrFjqBpw==", + "node_modules/eslint/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": { - "ansicolors": "~0.3.2", - "redeyed": "~2.1.0" + "color-name": "~1.1.4" }, - "bin": { - "cdl": "bin/cdl.js" + "engines": { + "node": ">=7.0.0" } }, - "node_modules/caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==" + "node_modules/eslint/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/chai": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.2.0.tgz", - "integrity": "sha512-XQU3bhBukrOsQCuwZndwGcCVQHyZi53fQ6Ys1Fym7E4olpIqqZZhhoFJoaKVvV17lWQoXYwgWN2nF5crA8J2jw==", + "node_modules/eslint/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, "dependencies": { - "assertion-error": "^1.1.0", - "check-error": "^1.0.2", - "deep-eql": "^3.0.1", - "get-func-name": "^2.0.0", - "pathval": "^1.1.0", - "type-detect": "^4.0.5" + "ms": "2.1.2" }, "engines": { - "node": ">=4" + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/chai-as-promised": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/chai-as-promised/-/chai-as-promised-7.1.1.tgz", - "integrity": "sha512-azL6xMoi+uxu6z4rhWQ1jbdUhOMhis2PvscD/xjLqNMkv3BPPp2JyyuTHOrf9BOosGpNQ11v6BKv/g57RXbiaA==", + "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, - "dependencies": { - "check-error": "^1.0.2" + "engines": { + "node": ">=10" }, - "peerDependencies": { - "chai": ">= 2.1.2 < 5" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/chai-http": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/chai-http/-/chai-http-4.2.1.tgz", - "integrity": "sha512-S2Ezy5uSVuOYleeXppfUKtTU/xbHCZyKkwjheNJ/76SGFTUPDpDkkpVdPNgC3sAO1Ap5J5LJ+/rXdLG8EGhCDA==", + "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": { - "@types/chai": "4", - "@types/superagent": "^3.8.3", - "cookiejar": "^2.1.1", - "is-ip": "^2.0.0", - "methods": "^1.1.2", - "qs": "^6.5.1", - "superagent": "^3.7.0" + "is-glob": "^4.0.3" }, "engines": { - "node": ">=4" + "node": ">=10.13.0" } }, - "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==", + "node_modules/eslint/node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "type-fest": "^0.20.2" }, "engines": { - "node": ">=4" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/chardet": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", - "dev": true + "node_modules/eslint/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/charenc": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", - "integrity": "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==", + "node_modules/eslint/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/charset": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/charset/-/charset-1.0.1.tgz", - "integrity": "sha512-6dVyOOYjpfFcL1Y4qChrAoQLRHvj2ziyhcm0QJlhOcAhykL/k1kTUPbeo+87MNRTRdk2OIIsIXbuF3x2wi5EXg==", + "node_modules/eslint/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/eslint/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": ">=4.0.0" + "node": ">=8" } }, - "node_modules/check-error": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", - "integrity": "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==", + "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": "*" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/child_process": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/child_process/-/child_process-1.0.2.tgz", - "integrity": "sha512-Wmza/JzL0SiWz7kl6MhIKT5ceIlnFPJX+lwUGj7Clhy5MMldsSoJR0+uvRzOS5Kv45Mq7t1PoE8TsOA9bzvb6g==" - }, - "node_modules/chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", "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" + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" }, "engines": { - "node": ">= 8.10.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, - "optionalDependencies": { - "fsevents": "~2.3.2" + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/chownr": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", - "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", - "engines": { - "node": ">=10" - } - }, - "node_modules/circular-json": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", - "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", - "deprecated": "CircularJSON is in maintenance only, flatted is its successor.", - "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==", + "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": ">=6" - } - }, - "node_modules/cli-color": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/cli-color/-/cli-color-1.4.0.tgz", - "integrity": "sha512-xu6RvQqqrWEo6MPR1eixqGPywhYBHRs653F9jfXB2Hx4jdM/3WxiNE1vppRmxtMIfl16SFYTpYlrnqH/HsK/2w==", - "dev": true, - "dependencies": { - "ansi-regex": "^2.1.1", - "d": "1", - "es5-ext": "^0.10.46", - "es6-iterator": "^2.0.3", - "memoizee": "^0.4.14", - "timers-ext": "^0.1.5" + "node": ">=4" } }, - "node_modules/cli-cursor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==", + "node_modules/esquery": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.2.tgz", + "integrity": "sha512-JVSoLdTlTDkmjFmab7H/9SL9qGSyjElT3myyKp7krqjVFQCDLmj1QFaCLRFBszBKI0XVZaiiXvuPIX3ZwHe1Ng==", "dev": true, "dependencies": { - "restore-cursor": "^2.0.0" + "estraverse": "^5.1.0" }, "engines": { - "node": ">=4" + "node": ">=0.10" } }, - "node_modules/cli-progress": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/cli-progress/-/cli-progress-3.10.0.tgz", - "integrity": "sha512-kLORQrhYCAtUPLZxqsAt2YJGOvRdt34+O6jl5cQGb7iF3dM55FQZlTR+rQyIK9JUcO9bBMwZsTlND+3dmFU2Cw==", + "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": { - "string-width": "^4.2.0" + "estraverse": "^5.2.0" }, "engines": { - "node": ">=4" + "node": ">=4.0" } }, - "node_modules/cli-progress/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==", + "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": ">=8" + "node": ">=4.0" } }, - "node_modules/cli-progress/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==", + "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": ">=8" + "node": ">=0.10.0" } }, - "node_modules/cli-progress/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" - }, + "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": ">=8" + "node": ">= 0.6" } }, - "node_modules/cli-progress/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==", + "node_modules/event-emitter": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", + "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==", "dev": true, "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" + "d": "1", + "es5-ext": "~0.10.14" } }, - "node_modules/cli-table3": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.1.tgz", - "integrity": "sha512-w0q/enDHhPLq44ovMGdQeeDLvwxwavsJX7oQGYt/LrBlYsyaxyDnp6z3QzFut/6kLLKnlcUVJLrpB7KBfgG/RA==", - "dependencies": { - "string-width": "^4.2.0" - }, + "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": "10.* || >= 12.*" - }, - "optionalDependencies": { - "colors": "1.4.0" + "node": ">=6" } }, - "node_modules/cli-table3/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==", + "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": ">=8" + "node": ">=0.8.x" + } + }, + "node_modules/eventuate": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eventuate/-/eventuate-4.0.0.tgz", + "integrity": "sha512-SysKo5/rgqCaXlO4H4DE62JXCFtDpdm+boWOzaeaYph3Xejy04Cc4/E2HDPnOES0MFb643WgKRlx09W2iVAIBw==", + "dependencies": { + "define-error": "~1.0.0", + "object-assign": "~3.0.0", + "shallow-copy": "0.0.1" } }, - "node_modules/cli-table3/node_modules/is-fullwidth-code-point": { + "node_modules/eventuate/node_modules/object-assign": { "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==", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz", + "integrity": "sha512-jHP15vXVGeVh1HuaA2wY6lxk+whK/x4KBG88VXeRma7CCun7iGD5qPc4eYykQ9sdQvg8jkwFKsSxHln2ybW3xQ==", "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/cli-table3/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==", + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + "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": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/cli-table3/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==", + "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": { - "ansi-regex": "^5.0.1" + "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": ">=8" + "node": ">= 0.10.0" } }, - "node_modules/cli-width": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", - "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==", - "dev": true - }, - "node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "node_modules/express/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": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "node_modules/cliui/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==", + "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": ">=8" + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" } }, - "node_modules/cliui/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==", + "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": ">=8" + "node": ">= 0.6" } }, - "node_modules/cliui/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==", + "node_modules/express/node_modules/qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + "side-channel": "^1.0.4" }, "engines": { - "node": ">=8" + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/cliui/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==", + "node_modules/express/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": { - "ansi-regex": "^5.0.1" + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" }, "engines": { - "node": ">=8" + "node": ">= 0.8" } }, - "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==", + "node_modules/ext": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", + "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", + "dev": true, "dependencies": { - "color-name": "1.1.3" + "type": "^2.7.2" } }, - "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/color-support": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", - "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", - "bin": { - "color-support": "bin.js" - } + "node_modules/ext/node_modules/type": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz", + "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==", + "dev": true }, - "node_modules/colors": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", - "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", - "devOptional": true, - "engines": { - "node": ">=0.1.90" - } + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" }, - "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==", - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } + "node_modules/extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", + "engines": [ + "node >=0.6.0" + ] }, - "node_modules/command-line-args": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-5.0.2.tgz", - "integrity": "sha512-/qPcbL8zpqg53x4rAaqMFlRV4opN3pbla7I7k9x8kyOBMQoGT6WltjN6sXZuxOXw6DgdK7Ad+ijYS5gjcr7vlA==", - "dependencies": { - "argv-tools": "^0.1.1", - "array-back": "^2.0.0", - "find-replace": "^2.0.1", - "lodash.camelcase": "^4.3.0", - "typical": "^2.6.1" - }, - "engines": { - "node": ">=4.0.0" - } + "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==" }, - "node_modules/command-line-usage": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/command-line-usage/-/command-line-usage-5.0.5.tgz", - "integrity": "sha512-d8NrGylA5oCXSbGoKz05FkehDAzSmIm4K03S5VDh4d5lZAtTWfc3D1RuETtuQCn8129nYfJfDdF7P/lwcz1BlA==", + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", "dependencies": { - "array-back": "^2.0.0", - "chalk": "^2.4.1", - "table-layout": "^0.4.3", - "typical": "^2.6.1" + "@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": ">=4.0.0" + "node": ">=8.6.0" } }, - "node_modules/commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", - "dev": true, - "engines": { - "node": ">= 10" - } + "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==" }, - "node_modules/commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", + "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/compare-func": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz", - "integrity": "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==", - "dependencies": { - "array-ify": "^1.0.0", - "dot-prop": "^5.1.0" + "node_modules/fast-redact": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-3.3.0.tgz", + "integrity": "sha512-6T5V1QK1u4oF+ATxs1lWUmlEk6P2T9HqJG3e2DnHOdVgZy2rFJBoEnrIedcTXlkAHU/zKC+7KETJ+KGGKwxgMQ==", + "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==", + "node_modules/fast-safe-stringify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", + "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", "dev": true }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" - }, - "node_modules/concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "engines": [ - "node >= 0.8" - ], + "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==", "dependencies": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" + "reusify": "^1.0.4" } }, - "node_modules/concat-stream/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" - }, - "node_modules/concat-stream/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "node_modules/figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==", "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=4" } }, - "node_modules/concat-stream/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==" - }, - "node_modules/concat-stream/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "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": { - "safe-buffer": "~5.1.0" + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/concurrent-queue": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/concurrent-queue/-/concurrent-queue-7.0.2.tgz", - "integrity": "sha512-icXDqc0JBdcQ3ubXiXcqVhuFeRrec39zVD2X5z7FKwwj0pImnfLWtAhGyX4CcBDD+YoqLesClOeRss+pZnm6/Q==", - "dependencies": { - "afterward": "~2.0.0", - "define-error": "~1.0.0", - "eventuate": "~4.0.0", - "object-assign": "~4.0.1", - "on-error": "~2.1.0", - "once": "~1.3.2", - "promise-polyfill": "~2.1.0" + "node_modules/file-type": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz", + "integrity": "sha512-RLoqTXE8/vPmMuTI88DAzhMYC99I8BWv7zYP4A1puo5HIjEJ5EX48ighy4ZyKMG9EDXxBgW6e++cn7d1xuFghA==", + "dev": true, + "engines": { + "node": ">=0.10.0" } }, - "node_modules/config-chain": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", - "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", + "node_modules/filelist": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", "dependencies": { - "ini": "^1.3.4", - "proto-list": "~1.2.1" + "minimatch": "^5.0.1" } }, - "node_modules/config-chain/node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" - }, - "node_modules/console-control-strings": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==" - }, - "node_modules/contains-path": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", - "integrity": "sha512-OKZnPGeMQy2RPaUIBPFFd71iNf4791H12MCRuVQDnzGRwCYNYmTDy5pdafo2SLAcEMKzTOQnLWG4QdcjeJUMEg==", - "dev": true, - "engines": { - "node": ">=0.10.0" + "node_modules/filelist/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/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==", + "node_modules/filelist/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "dependencies": { - "safe-buffer": "5.2.1" + "brace-expansion": "^2.0.1" }, "engines": { - "node": ">= 0.6" + "node": ">=10" } }, - "node_modules/content-security-policy-builder": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/content-security-policy-builder/-/content-security-policy-builder-2.1.0.tgz", - "integrity": "sha512-/MtLWhJVvJNkA9dVLAp6fg9LxD2gfI6R2Fi1hPmfjYXSahJJzcfvoeDOxSyp4NvxMuwWv3WMssE9o31DoULHrQ==", + "node_modules/filesize": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/filesize/-/filesize-10.1.0.tgz", + "integrity": "sha512-GTLKYyBSDz3nPhlLVPjPWZCnhkd9TrrRArNcy8Z+J2cqScB7h2McAzR6NBX6nYOoWafql0roY8hrocxnZBv9CQ==", + "dev": true, "engines": { - "node": ">=4.0.0" + "node": ">= 10.4.0" } }, - "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==", + "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==", + "dependencies": { + "to-regex-range": "^5.0.1" + }, "engines": { - "node": ">= 0.6" + "node": ">=8" } }, - "node_modules/conventional-changelog-angular": { - "version": "5.0.13", - "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.13.tgz", - "integrity": "sha512-i/gipMxs7s8L/QeuavPF2hLnJgH6pEZAttySB6aiQLWcX3puWDL3ACVmvBhJGxnAy52Qc15ua26BufY6KpmrVA==", + "node_modules/finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", "dependencies": { - "compare-func": "^2.0.0", - "q": "^1.5.1" + "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": ">=10" + "node": ">= 0.8" } }, - "node_modules/conventional-changelog-writer": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-5.0.1.tgz", - "integrity": "sha512-5WsuKUfxW7suLblAbFnxAcrvf6r+0b7GvNaWUwUIk0bXMnENP/PEieGKVUQrjPqwPT4o3EPAASBXiY6iHooLOQ==", + "node_modules/find-cache-dir": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "dev": true, "dependencies": { - "conventional-commits-filter": "^2.0.7", - "dateformat": "^3.0.0", - "handlebars": "^4.7.7", - "json-stringify-safe": "^5.0.1", - "lodash": "^4.17.15", - "meow": "^8.0.0", - "semver": "^6.0.0", - "split": "^1.0.0", - "through2": "^4.0.0" - }, - "bin": { - "conventional-changelog-writer": "cli.js" + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" }, "engines": { - "node": ">=10" - } - }, - "node_modules/conventional-changelog-writer/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "bin": { - "semver": "bin/semver.js" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/avajs/find-cache-dir?sponsor=1" } }, - "node_modules/conventional-commits-filter": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-2.0.7.tgz", - "integrity": "sha512-ASS9SamOP4TbCClsRHxIHXRfcGCnIoQqkvAzCSbZzTFLfcTqJVugB0agRgsEELsqaeWgsXv513eS116wnlSSPA==", + "node_modules/find-replace": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-3.0.0.tgz", + "integrity": "sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==", "dependencies": { - "lodash.ismatch": "^4.4.0", - "modify-values": "^1.0.0" + "array-back": "^3.0.1" }, "engines": { - "node": ">=10" + "node": ">=4.0.0" } }, - "node_modules/conventional-commits-parser": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-3.2.4.tgz", - "integrity": "sha512-nK7sAtfi+QXbxHCYfhpZsfRtaitZLIA6889kFIouLvz6repszQDgxBu7wf2WbU+Dco7sAnNCJYERCwt54WPC2Q==", + "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": { - "is-text-path": "^1.0.1", - "JSONStream": "^1.0.4", - "lodash": "^4.17.15", - "meow": "^8.0.0", - "split2": "^3.0.0", - "through2": "^4.0.0" - }, - "bin": { - "conventional-commits-parser": "cli.js" + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "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/cookie": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", - "integrity": "sha512-+IJOX0OqlHCszo2mBUq+SrEbCj6w7Kpffqx60zYbPTFaO4+yYgRjHwcZNpWvaTylDHaV7PPmBHzSecZiMhtPgw==", + "node_modules/find-up-simple": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/find-up-simple/-/find-up-simple-1.0.0.tgz", + "integrity": "sha512-q7Us7kcjj2VMePAa02hDAF6d+MzsdsAWEwYyOpwUtlerRBkOEPBCRZrAV4XfcSN8fHAgaD0hP7miwoay6DCprw==", "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie-parser": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.4.3.tgz", - "integrity": "sha512-EZyO2G+zVFsMjU8jDtxs2iLS1DmryYNjC0s4/IHtsS6pWPUJSr0kt0UPOctRZosebPHYekb7bNcIBt4YW0S9bg==", - "dependencies": { - "cookie": "0.3.1", - "cookie-signature": "1.0.6" + "node": ">=18" }, - "engines": { - "node": ">= 0.8.0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "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/core-js": { - "version": "2.6.12", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", - "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==", - "deprecated": "core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.", - "hasInstallScript": true - }, - "node_modules/core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" - }, - "node_modules/cors": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", - "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "node_modules/find-versions": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/find-versions/-/find-versions-5.1.0.tgz", + "integrity": "sha512-+iwzCJ7C5v5KgcBuueqVoNiHVoQpwiUK5XFLjf0affFTep+Wcw93tPvmb8tqujDNmzhBDPddnWV/qgWSXgq+Hg==", "dependencies": { - "object-assign": "^4", - "vary": "^1" + "semver-regex": "^4.0.5" }, "engines": { - "node": ">= 0.10" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/cosmiconfig": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", - "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", - "dependencies": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" - }, - "engines": { - "node": ">=10" + "node_modules/flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "dev": true, + "bin": { + "flat": "cli.js" } }, - "node_modules/cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "node_modules/flat-cache": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "dev": true, "dependencies": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" }, "engines": { - "node": ">=4.8" + "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/crypt": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", - "integrity": "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==", - "dev": true, - "engines": { - "node": "*" - } + "node_modules/flatted": { + "version": "3.2.9", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz", + "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", + "dev": true }, - "node_modules/crypto-random-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", - "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", + "node_modules/follow-redirects": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], "engines": { - "node": ">=8" + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } } }, - "node_modules/csv-parse": { - "version": "4.16.3", - "resolved": "https://registry.npmjs.org/csv-parse/-/csv-parse-4.16.3.tgz", - "integrity": "sha512-cO1I/zmz4w2dcKHVvpCr7JVRu8/FymG5OEpmvsZYlccYolPBLoVGKUHgNoc4ZGkFeFlWGEDmMyBM+TTqRdW/wg==", - "dev": true - }, - "node_modules/d": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", - "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", "dev": true, "dependencies": { - "es5-ext": "^0.10.50", - "type": "^1.0.1" - } - }, - "node_modules/daemonize2": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/daemonize2/-/daemonize2-0.4.2.tgz", - "integrity": "sha512-dzB3qdxvcJ2AWyESI8xv90qZ4wZt4P+lvQUT1sVKcrbEKSvBk/8zkDlZvMyaWmoKe7DXLGu00z59b7K9gkzbqQ==", - "engines": { - "node": ">0.8.x" + "is-callable": "^1.1.3" } }, - "node_modules/dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", + "node_modules/foreground-child": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", + "integrity": "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==", + "dev": true, "dependencies": { - "assert-plus": "^1.0.0" + "cross-spawn": "^7.0.0", + "signal-exit": "^3.0.2" }, "engines": { - "node": ">=0.10" + "node": ">=8.0.0" } }, - "node_modules/dasherize": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/dasherize/-/dasherize-2.0.0.tgz", - "integrity": "sha512-APql/TZ6FdLEpf2z7/X2a2zyqK8juYtqaSVqxw9mYoQ64CXkfU15AeLh8pUszT8+fnYjgm6t0aIYpWKJbnLkuA==" - }, - "node_modules/dateformat": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", - "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==", + "node_modules/forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", "engines": { "node": "*" } }, - "node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "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==", "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/debug-log": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/debug-log/-/debug-log-1.0.1.tgz", - "integrity": "sha512-gV/pe1YIaKNgLYnd1g9VNW80tcb7oV5qvNUxG7NM8rbDpnl6RGunzlAtlGSb0wEs3nesu2vHNiX9TSsZ+Y+RjA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, "engines": { - "node": ">=0.10.0" + "node": ">= 6" } }, - "node_modules/decamelize-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz", - "integrity": "sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==", + "node_modules/formidable": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/formidable/-/formidable-3.5.1.tgz", + "integrity": "sha512-WJWKelbRHN41m5dumb0/k8TeAx7Id/y3a+Z7QfhxP/htI9Js5zYaEDtG8uMgG0vM0lOlqnmjE99/kfpOYi/0Og==", "dependencies": { - "decamelize": "^1.1.0", - "map-obj": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" + "dezalgo": "^1.0.4", + "hexoid": "^1.0.0", + "once": "^1.4.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://ko-fi.com/tunnckoCore/commissions" } }, - "node_modules/decamelize-keys/node_modules/map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==", - "engines": { - "node": ">=0.10.0" + "node_modules/formidable/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/deep-eql": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", - "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", - "dev": true, - "dependencies": { - "type-detect": "^4.0.0" - }, + "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.12" + "node": ">= 0.6" } }, - "node_modules/deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", "engines": { - "node": ">=4.0.0" + "node": ">= 0.6" } }, - "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/default-require-extensions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-3.0.1.tgz", - "integrity": "sha512-eXTJmRbm2TIt9MgWTsOH1wEuhew6XGZcMeGKCtLedIg/NCsg1iBePXkceTdK4Fii7pzmN9tGsZhKzZ4h7O/fxw==", - "dev": true, + "node_modules/from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==", "dependencies": { - "strip-bom": "^4.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" } }, - "node_modules/define-error": { + "node_modules/from2/node_modules/isarray": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-error/-/define-error-1.0.0.tgz", - "integrity": "sha512-HLdUb9mNENZ/tjnZGlITfOnx7wSM7a6e+WEDyhKSrsN/g5dJUS6kepG6qJApRLAdjRofQ2W8R3yrtI6GeyGGVg==", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, + "node_modules/from2/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "dependencies": { - "capture-stack-trace": "~1.0.0" + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" } }, - "node_modules/define-properties": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", - "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==", + "node_modules/from2/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==" + }, + "node_modules/from2/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/fromentries": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fromentries/-/fromentries-1.3.2.tgz", + "integrity": "sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg==", "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/fs-extra": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", "dependencies": { - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=14.14" } }, - "node_modules/deglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/deglob/-/deglob-2.1.1.tgz", - "integrity": "sha512-2kjwuGGonL7gWE1XU4Fv79+vVzpoQCl0V+boMwWtOQJV2AGDabCwez++nB1Nli/8BabAfZQ/UuHPlp6AymKdWw==", - "dev": true, + "node_modules/fs-extra/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", "dependencies": { - "find-root": "^1.0.0", - "glob": "^7.0.5", - "ignore": "^3.0.9", - "pkg-config": "^1.1.0", - "run-parallel": "^1.1.2", - "uniq": "^1.0.1" + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" } }, - "node_modules/deglob/node_modules/ignore": { - "version": "3.3.10", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", - "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==", - "dev": true + "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/del": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/del/-/del-6.1.1.tgz", - "integrity": "sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==", - "dependencies": { - "globby": "^11.0.1", - "graceful-fs": "^4.2.4", - "is-glob": "^4.0.1", - "is-path-cwd": "^2.2.0", - "is-path-inside": "^3.0.2", - "p-map": "^4.0.0", - "rimraf": "^3.0.2", - "slash": "^3.0.0" - }, + "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": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, - "node_modules/del/node_modules/p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "node_modules/ftp": { + "version": "0.3.10", + "resolved": "https://registry.npmjs.org/ftp/-/ftp-0.3.10.tgz", + "integrity": "sha512-faFVML1aBx2UoDStmLwv2Wptt4vw5x03xxX172nhA5Y5HBshW5JweqQ2W4xL4dezQTG8inJsuYcpPHHU3X5OTQ==", "dependencies": { - "aggregate-error": "^3.0.0" + "readable-stream": "1.1.x", + "xregexp": "2.0.0" }, "engines": { - "node": ">=10" - }, + "node": ">=0.8.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/del/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "node_modules/function.prototype.name": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", + "dev": true, "dependencies": { - "glob": "^7.1.3" + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" }, - "bin": { - "rimraf": "bin.js" + "engines": { + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "engines": { - "node": ">=0.4.0" + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==" - }, - "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==", + "node_modules/gauge": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz", + "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==", + "dependencies": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.2", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.1", + "object-assign": "^4.1.1", + "signal-exit": "^3.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.2" + }, "engines": { - "node": ">= 0.8" + "node": ">=10" } }, - "node_modules/deprecation": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", - "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==" + "node_modules/gauge/node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "engines": { + "node": ">=0.10.0" + } }, - "node_modules/destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "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": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" + "node": ">=6.9.0" } }, - "node_modules/detect-libc": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz", - "integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==", + "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==", "engines": { - "node": ">=8" + "node": "6.* || 8.* || >= 10.*" } }, - "node_modules/diff": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", - "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", + "node_modules/get-func-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", + "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", "dev": true, "engines": { - "node": ">=0.3.1" + "node": "*" } }, - "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==", + "node_modules/get-intrinsic": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", + "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", "dependencies": { - "path-type": "^4.0.0" + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" }, - "engines": { - "node": ">=8" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/dns-prefetch-control": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/dns-prefetch-control/-/dns-prefetch-control-0.2.0.tgz", - "integrity": "sha512-hvSnros73+qyZXhHFjx2CMLwoj3Fe7eR9EJsFsqmcI1bB2OBWL/+0YzaEaKssCHnj/6crawNnUyw74Gm2EKe+Q==", + "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": ">=4.0.0" + "node": ">=8.0.0" } }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "node_modules/get-stdin": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-8.0.0.tgz", + "integrity": "sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==", "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, "engines": { - "node": ">=6.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/dont-sniff-mimetype": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/dont-sniff-mimetype/-/dont-sniff-mimetype-1.1.0.tgz", - "integrity": "sha512-ZjI4zqTaxveH2/tTlzS1wFp+7ncxNZaIEWYg3lzZRHkKf5zPT/MnEG6WL0BhHMJUabkh8GeU5NL5j+rEUCb7Ug==", + "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==", "engines": { - "node": ">=4.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/dot-prop": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", - "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "node_modules/get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dev": true, "dependencies": { - "is-obj": "^2.0.0" + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" }, "engines": { - "node": ">=8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/dottie": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/dottie/-/dottie-2.0.3.tgz", - "integrity": "sha512-4liA0PuRkZWQFQjwBypdxPfZaRWiv5tkhMXY2hzsa2pNf5s7U3m9cwUchfNKe8wZQxdGPQQzO6Rm2uGe0rvohQ==" + "node_modules/getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", + "dependencies": { + "assert-plus": "^1.0.0" + } }, - "node_modules/duplexer2": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", - "integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==", + "node_modules/git-log-parser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/git-log-parser/-/git-log-parser-1.2.0.tgz", + "integrity": "sha512-rnCVNfkTL8tdNryFuaY0fYiBWEBcgF748O6ZI61rslBvr2o7U65c2/6npCRqH40vuAhtgtDiqLTJjBVdrejCzA==", "dependencies": { - "readable-stream": "^2.0.2" + "argv-formatter": "~1.0.0", + "spawn-error-forwarder": "~1.0.0", + "split2": "~1.0.0", + "stream-combiner2": "~1.1.1", + "through2": "~2.0.0", + "traverse": "~0.6.6" } }, - "node_modules/duplexer2/node_modules/isarray": { + "node_modules/git-log-parser/node_modules/isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" }, - "node_modules/duplexer2/node_modules/readable-stream": { + "node_modules/git-log-parser/node_modules/readable-stream": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", @@ -5867,12 +5845,20 @@ "util-deprecate": "~1.0.1" } }, - "node_modules/duplexer2/node_modules/safe-buffer": { + "node_modules/git-log-parser/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==" }, - "node_modules/duplexer2/node_modules/string_decoder": { + "node_modules/git-log-parser/node_modules/split2": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-1.0.0.tgz", + "integrity": "sha512-NKywug4u4pX/AZBB1FCPzZ6/7O+Xhz1qMVbzTvvKvikjO99oPN87SkK08mEY9P63/5lWjK+wgOOgApnTg5r6qg==", + "dependencies": { + "through2": "~2.0.0" + } + }, + "node_modules/git-log-parser/node_modules/string_decoder": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", @@ -5880,333 +5866,247 @@ "safe-buffer": "~5.1.0" } }, - "node_modules/ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", + "node_modules/git-log-parser/node_modules/through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", "dependencies": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" } }, - "node_modules/editorconfig": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-0.15.3.tgz", - "integrity": "sha512-M9wIMFx96vq0R4F+gRpY3o2exzb8hEj/n9S8unZtHSvYjibBp/iMufSzvmOcV/laG0ZtuTVGtiJggPOSW2r93g==", - "dev": true, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "dependencies": { - "commander": "^2.19.0", - "lru-cache": "^4.1.5", - "semver": "^5.6.0", - "sigmund": "^1.0.1" + "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" }, - "bin": { - "editorconfig": "bin/editorconfig" - } - }, - "node_modules/editorconfig/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/editorconfig/node_modules/lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", - "dev": true, - "dependencies": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/editorconfig/node_modules/yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==", - "dev": true - }, - "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/ejs": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.7.tgz", - "integrity": "sha512-BIar7R6abbUxDA3bfXrO4DSgwo8I+fB5/1zgujl3HLLjwd6+9iOnrT+t3grn2qbk9vOgBubXOFwX2m9axoFaGw==", + "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==", "dependencies": { - "jake": "^10.8.5" - }, - "bin": { - "ejs": "bin/cli.js" + "is-glob": "^4.0.1" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/electron-to-chromium": { - "version": "1.4.313", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.313.tgz", - "integrity": "sha512-QckB9OVqr2oybjIrbMI99uF+b9+iTja5weFe0ePbqLb5BHqXOJUO1SG6kDj/1WtWPRIBr51N153AEq8m7HuIaA==", - "dev": true - }, - "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==" - }, - "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/encoding": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", - "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", - "optional": true, - "dependencies": { - "iconv-lite": "^0.6.2" + "node": ">= 6" } }, - "node_modules/encoding/node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "optional": true, + "node_modules/glob/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">=0.10.0" - } - }, - "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": "*" } }, - "node_modules/end-of-stream/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==", + "node_modules/global-agent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-agent/-/global-agent-3.0.0.tgz", + "integrity": "sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q==", + "dev": true, "dependencies": { - "wrappy": "1" + "boolean": "^3.0.1", + "es6-error": "^4.1.1", + "matcher": "^3.0.0", + "roarr": "^2.15.3", + "semver": "^7.3.2", + "serialize-error": "^7.0.1" + }, + "engines": { + "node": ">=10.0" } }, - "node_modules/env-ci": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/env-ci/-/env-ci-5.5.0.tgz", - "integrity": "sha512-o0JdWIbOLP+WJKIUt36hz1ImQQFuN92nhsfTkHHap+J8CiI8WgGpH/a9jEGHh4/TU5BUUGjlnKXNoDb57+ne+A==", - "dependencies": { - "execa": "^5.0.0", - "fromentries": "^1.3.2", - "java-properties": "^1.0.0" - }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, "engines": { - "node": ">=10.17" + "node": ">=4" } }, - "node_modules/env-ci/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==", + "node_modules/globalthis": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", + "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "dev": true, "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" + "define-properties": "^1.1.3" }, "engines": { - "node": ">= 8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/env-ci/node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "node_modules/globby": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-14.0.0.tgz", + "integrity": "sha512-/1WM/LNHRAOH9lZta77uGbq0dAEQM+XjNesWwhlERDVenqothRbnzTrL3/LrIoEPPjeUHC3vrS6TwoyxeHs7MQ==", "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" + "@sindresorhus/merge-streams": "^1.0.0", + "fast-glob": "^3.3.2", + "ignore": "^5.2.4", + "path-type": "^5.0.0", + "slash": "^5.1.0", + "unicorn-magic": "^0.1.0" }, "engines": { - "node": ">=10" + "node": ">=18" }, "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/env-ci/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==", + "node_modules/globby/node_modules/path-type": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-5.0.0.tgz", + "integrity": "sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==", "engines": { - "node": ">=10" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/env-ci/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==", - "engines": { - "node": ">=8" + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dependencies": { + "get-intrinsic": "^1.1.3" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/env-ci/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==", - "engines": { - "node": ">=6" - } + "node_modules/graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" }, - "node_modules/env-ci/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==", - "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=8" - } + "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/env-ci/node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "node_modules/handlebars": { + "version": "4.7.8", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", + "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==", "dependencies": { - "mimic-fn": "^2.1.0" + "minimist": "^1.2.5", + "neo-async": "^2.6.2", + "source-map": "^0.6.1", + "wordwrap": "^1.0.0" + }, + "bin": { + "handlebars": "bin/handlebars" }, "engines": { - "node": ">=6" + "node": ">=0.4.7" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "optionalDependencies": { + "uglify-js": "^3.1.4" } }, - "node_modules/env-ci/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==", + "node_modules/har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", "engines": { - "node": ">=8" + "node": ">=4" } }, - "node_modules/env-ci/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==", + "node_modules/har-validator": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "deprecated": "this library is no longer supported", "dependencies": { - "shebang-regex": "^3.0.0" + "ajv": "^6.12.3", + "har-schema": "^2.0.0" }, "engines": { - "node": ">=8" + "node": ">=6" + } + }, + "node_modules/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/env-ci/node_modules/shebang-regex": { + "node_modules/has-flag": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "engines": { - "node": ">=8" + "node": ">=4" } }, - "node_modules/env-ci/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "node_modules/has-property-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", + "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" + "get-intrinsic": "^1.2.2" }, - "engines": { - "node": ">= 8" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/env-paths": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", - "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", - "optional": true, + "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": ">=6" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/err-code": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", - "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", - "optional": true - }, - "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/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/es-abstract": { - "version": "1.21.1", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.1.tgz", - "integrity": "sha512-QudMsPOz86xYz/1dG1OuGBKOELjCh99IIWHLzy5znUB6j8xG2yMA7bfTV86VSqKF+Y/H08vQPR+9jyXpuC6hfg==", + "node_modules/has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", "dev": true, "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "es-set-tostringtag": "^2.0.1", - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "function.prototype.name": "^1.1.5", - "get-intrinsic": "^1.1.3", - "get-symbol-description": "^1.0.0", - "globalthis": "^1.0.3", - "gopd": "^1.0.1", - "has": "^1.0.3", - "has-property-descriptors": "^1.0.0", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.4", - "is-array-buffer": "^3.0.1", - "is-callable": "^1.2.7", - "is-negative-zero": "^2.0.2", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", - "is-string": "^1.0.7", - "is-typed-array": "^1.1.10", - "is-weakref": "^1.0.2", - "object-inspect": "^1.12.2", - "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.4.3", - "safe-regex-test": "^1.0.0", - "string.prototype.trimend": "^1.0.6", - "string.prototype.trimstart": "^1.0.6", - "typed-array-length": "^1.0.4", - "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.9" + "has-symbols": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -6215,2026 +6115,1787 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/es-set-tostringtag": { + "node_modules/has-unicode": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", - "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==" + }, + "node_modules/hasha": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/hasha/-/hasha-5.2.2.tgz", + "integrity": "sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ==", "dev": true, "dependencies": { - "get-intrinsic": "^1.1.3", - "has": "^1.0.3", - "has-tostringtag": "^1.0.0" + "is-stream": "^2.0.0", + "type-fest": "^0.8.0" }, "engines": { - "node": ">= 0.4" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, + "node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" + "function-bind": "^1.1.2" }, "engines": { "node": ">= 0.4" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true, + "bin": { + "he": "bin/he" + } + }, + "node_modules/helmet": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/helmet/-/helmet-7.1.0.tgz", + "integrity": "sha512-g+HZqgfbpXdCkme/Cd/mZkV0aV3BZZZSugecH03kl38m/Kmdx8jKjBikpDj2cr+Iynv4KpYEviojNdTJActJAg==", + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/hexoid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hexoid/-/hexoid-1.0.0.tgz", + "integrity": "sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g==", + "engines": { + "node": ">=8" + } + }, + "node_modules/hook-std": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hook-std/-/hook-std-3.0.0.tgz", + "integrity": "sha512-jHRQzjSDzMtFy34AGj1DN+vq54WVuhSvKgrHf0OMiFQTwDD4L/qqofVEWjLOBMTn5+lCD3fPg32W9yOfnEJTTw==", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/es5-ext": { - "version": "0.10.62", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.62.tgz", - "integrity": "sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==", - "dev": true, - "hasInstallScript": true, + "node_modules/hosted-git-info": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.1.tgz", + "integrity": "sha512-+K84LB1DYwMHoHSgaOY/Jfhw3ucPmSET5v98Ke/HdNSw4a0UktWzyW1mjhjpuxxTqOOsfWT/7iVshHmVZ4IpOA==", "dependencies": { - "es6-iterator": "^2.0.3", - "es6-symbol": "^3.1.3", - "next-tick": "^1.1.0" + "lru-cache": "^10.0.1" }, "engines": { - "node": ">=0.10" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/es6-error": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", - "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", + "node_modules/hosted-git-info/node_modules/lru-cache": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.1.0.tgz", + "integrity": "sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==", + "engines": { + "node": "14 || >=16.14" + } + }, + "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/es6-iterator": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", - "dev": true, - "dependencies": { - "d": "1", - "es5-ext": "^0.10.35", - "es6-symbol": "^3.1.1" - } - }, - "node_modules/es6-symbol": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", - "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", - "dev": true, - "dependencies": { - "d": "^1.0.1", - "ext": "^1.1.2" - } + "node_modules/http-cache-semantics": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", + "optional": true }, - "node_modules/es6-weak-map": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", - "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", - "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": { - "d": "1", - "es5-ext": "^0.10.46", - "es6-iterator": "^2.0.3", - "es6-symbol": "^3.1.1" - } - }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "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": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, "engines": { - "node": ">=0.8.0" + "node": ">= 0.8" } }, - "node_modules/eslint": { - "version": "5.14.1", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.14.1.tgz", - "integrity": "sha512-CyUMbmsjxedx8B0mr79mNOqetvkbij/zrXnFeK2zc3pGRn3/tibjiNAv/3UxFEyfMDjh+ZqTrJrEGBFiGfD5Og==", - "dev": true, + "node_modules/http-proxy-agent": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.0.tgz", + "integrity": "sha512-+ZT+iBxVUQ1asugqnD6oWoRiS25AkjNfG085dKJGtGxkdwLQrMKU5wJr2bOOFAXzKcTuqq+7fZlTMgG3SRfIYQ==", "dependencies": { - "@babel/code-frame": "^7.0.0", - "ajv": "^6.9.1", - "chalk": "^2.1.0", - "cross-spawn": "^6.0.5", - "debug": "^4.0.1", - "doctrine": "^3.0.0", - "eslint-scope": "^4.0.0", - "eslint-utils": "^1.3.1", - "eslint-visitor-keys": "^1.0.0", - "espree": "^5.0.1", - "esquery": "^1.0.1", - "esutils": "^2.0.2", - "file-entry-cache": "^5.0.1", - "functional-red-black-tree": "^1.0.1", - "glob": "^7.1.2", - "globals": "^11.7.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "inquirer": "^6.2.2", - "js-yaml": "^3.12.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.3.0", - "lodash": "^4.17.11", - "minimatch": "^3.0.4", - "mkdirp": "^0.5.1", - "natural-compare": "^1.4.0", - "optionator": "^0.8.2", - "path-is-inside": "^1.0.2", - "progress": "^2.0.0", - "regexpp": "^2.0.1", - "semver": "^5.5.1", - "strip-ansi": "^4.0.0", - "strip-json-comments": "^2.0.1", - "table": "^5.2.3", - "text-table": "^0.2.0" - }, - "bin": { - "eslint": "bin/eslint.js" + "agent-base": "^7.1.0", + "debug": "^4.3.4" }, "engines": { - "node": "^6.14.0 || ^8.10.0 || >=9.10.0" - } - }, - "node_modules/eslint-config-google": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/eslint-config-google/-/eslint-config-google-0.12.0.tgz", - "integrity": "sha512-SHDM3nIRCJBACjf8c/H6FvCwRmKbphESNl3gJFBNbw4KYDLCONB3ABYLXDGF+iaVP9XSTND/Q5/PuGoFkp4xbg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - }, - "peerDependencies": { - "eslint": ">=5.4.0" - } - }, - "node_modules/eslint-config-standard": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-12.0.0.tgz", - "integrity": "sha512-COUz8FnXhqFitYj4DTqHzidjIL/t4mumGZto5c7DrBpvWoie+Sn3P4sLEzUGeYhRElWuFEf8K1S1EfvD1vixCQ==", - "dev": true, - "peerDependencies": { - "eslint": ">=5.0.0", - "eslint-plugin-import": ">=2.13.0", - "eslint-plugin-node": ">=7.0.0", - "eslint-plugin-promise": ">=4.0.0", - "eslint-plugin-standard": ">=4.0.0" - } - }, - "node_modules/eslint-config-standard-jsx": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/eslint-config-standard-jsx/-/eslint-config-standard-jsx-6.0.2.tgz", - "integrity": "sha512-D+YWAoXw+2GIdbMBRAzWwr1ZtvnSf4n4yL0gKGg7ShUOGXkSOLerI17K4F6LdQMJPNMoWYqepzQD/fKY+tXNSg==", - "dev": true, - "peerDependencies": { - "eslint": ">=5.0.0", - "eslint-plugin-react": ">=7.11.1" - } - }, - "node_modules/eslint-import-resolver-node": { - "version": "0.3.7", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.7.tgz", - "integrity": "sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==", - "dev": true, - "dependencies": { - "debug": "^3.2.7", - "is-core-module": "^2.11.0", - "resolve": "^1.22.1" + "node": ">= 14" } }, - "node_modules/eslint-import-resolver-node/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, + "node_modules/http-proxy-agent/node_modules/agent-base": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz", + "integrity": "sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==", "dependencies": { - "ms": "^2.1.1" + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" } }, - "node_modules/eslint-import-resolver-node/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==", - "dev": true - }, - "node_modules/eslint-module-utils": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.4.tgz", - "integrity": "sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==", - "dev": true, + "node_modules/http-proxy-agent/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dependencies": { - "debug": "^3.2.7" + "ms": "2.1.2" }, "engines": { - "node": ">=4" + "node": ">=6.0" }, "peerDependenciesMeta": { - "eslint": { + "supports-color": { "optional": true } } }, - "node_modules/eslint-module-utils/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/http-proxy-agent/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/eslint-module-utils/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/http-reasons": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/http-reasons/-/http-reasons-0.1.0.tgz", + "integrity": "sha512-P6kYh0lKZ+y29T2Gqz+RlC9WBLhKe8kDmcJ+A+611jFfxdPsbMRQ5aNmFRM3lENqFkK+HTTL+tlQviAiv0AbLQ==", "dev": true }, - "node_modules/eslint-plugin-es": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-1.4.1.tgz", - "integrity": "sha512-5fa/gR2yR3NxQf+UXkeLeP8FBBl6tSgdrAz1+cF84v1FMM4twGwQoqTnn+QxFLcPOrF4pdKEJKDB/q9GoyJrCA==", + "node_modules/http-signature": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.3.6.tgz", + "integrity": "sha512-3adrsD6zqo4GsTqtO7FyrejHNv+NgiIfAfv68+jVlFmSr9OGy7zrxONceFRLKvnnZA5jbxQBX1u9PpB6Wi32Gw==", "dev": true, "dependencies": { - "eslint-utils": "^1.4.2", - "regexpp": "^2.0.1" + "assert-plus": "^1.0.0", + "jsprim": "^2.0.2", + "sshpk": "^1.14.1" }, "engines": { - "node": ">=6.5.0" - }, - "peerDependencies": { - "eslint": ">=4.19.1" + "node": ">=0.10" } }, - "node_modules/eslint-plugin-import": { - "version": "2.14.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.14.0.tgz", - "integrity": "sha512-FpuRtniD/AY6sXByma2Wr0TXvXJ4nA/2/04VPlfpmUDPOpOY264x+ILiwnrk/k4RINgDAyFZByxqPUbSQ5YE7g==", + "node_modules/httpntlm": { + "version": "1.8.13", + "resolved": "https://registry.npmjs.org/httpntlm/-/httpntlm-1.8.13.tgz", + "integrity": "sha512-2F2FDPiWT4rewPzNMg3uPhNkP3NExENlUGADRUDPQvuftuUTGW98nLZtGemCIW3G40VhWZYgkIDcQFAwZ3mf2Q==", "dev": true, + "funding": [ + { + "type": "paypal", + "url": "https://www.paypal.com/donate/?hosted_button_id=2CKNJLZJBW8ZC" + }, + { + "type": "buymeacoffee", + "url": "https://www.buymeacoffee.com/samdecrock" + } + ], "dependencies": { - "contains-path": "^0.1.0", - "debug": "^2.6.8", - "doctrine": "1.5.0", - "eslint-import-resolver-node": "^0.3.1", - "eslint-module-utils": "^2.2.0", - "has": "^1.0.1", - "lodash": "^4.17.4", - "minimatch": "^3.0.3", - "read-pkg-up": "^2.0.0", - "resolve": "^1.6.0" + "des.js": "^1.0.1", + "httpreq": ">=0.4.22", + "js-md4": "^0.3.2", + "underscore": "~1.12.1" }, "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "2.x - 5.x" + "node": ">=10.4.0" } }, - "node_modules/eslint-plugin-import/node_modules/doctrine": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", - "integrity": "sha512-lsGyRuYr4/PIB0txi+Fy2xOMI2dGaTguCaotzFGkVZuKR5usKfcRWIFKNM3QNrU7hh/+w2bwTW+ZeXPK5l8uVg==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2", - "isarray": "^1.0.0" - }, + "node_modules/httpntlm/node_modules/underscore": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.12.1.tgz", + "integrity": "sha512-hEQt0+ZLDVUMhebKxL4x1BTtDY7bavVofhZ9KZ4aI26X9SRaE+Y3m83XUL1UP2jn8ynjndwCCpEHdUG+9pP1Tw==", + "dev": true + }, + "node_modules/httpreq": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/httpreq/-/httpreq-1.1.1.tgz", + "integrity": "sha512-uhSZLPPD2VXXOSN8Cni3kIsoFHaU2pT/nySEU/fHr/ePbqHYr0jeiQRmUKLEirC09SFPsdMoA7LU7UXMd/w0Kw==", "engines": { - "node": ">=0.10.0" + "node": ">= 6.15.1" } }, - "node_modules/eslint-plugin-import/node_modules/find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", - "dev": true, + "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": { - "locate-path": "^2.0.0" + "agent-base": "6", + "debug": "4" }, "engines": { - "node": ">=4" + "node": ">= 6" } }, - "node_modules/eslint-plugin-import/node_modules/hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "dev": true - }, - "node_modules/eslint-plugin-import/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true - }, - "node_modules/eslint-plugin-import/node_modules/load-json-file": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", - "integrity": "sha512-3p6ZOGNbiX4CdvEd1VcE6yi78UrGNpjHO33noGwHCnT/o2fyllJDepsm8+mFFv/DvtwFHht5HIHSyOy5a+ChVQ==", - "dev": true, + "node_modules/https-proxy-agent/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dependencies": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "strip-bom": "^3.0.0" + "ms": "2.1.2" }, "engines": { - "node": ">=4" + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/eslint-plugin-import/node_modules/locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", - "dev": true, - "dependencies": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - }, + "node_modules/https-proxy-agent/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/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==", "engines": { - "node": ">=4" + "node": ">=10.17.0" } }, - "node_modules/eslint-plugin-import/node_modules/normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dev": true, - "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" + "node_modules/humanize-ms": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", + "optional": true, + "dependencies": { + "ms": "^2.0.0" } }, - "node_modules/eslint-plugin-import/node_modules/p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "dev": true, + "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": { - "p-try": "^1.0.0" + "safer-buffer": ">= 2.1.2 < 3" }, "engines": { - "node": ">=4" + "node": ">=0.10.0" } }, - "node_modules/eslint-plugin-import/node_modules/p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", - "dev": true, + "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/ignore": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz", + "integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==", + "engines": { + "node": ">= 4" + } + }, + "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==", "dependencies": { - "p-limit": "^1.1.0" + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" }, "engines": { - "node": ">=4" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint-plugin-import/node_modules/p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", - "dev": true, + "node_modules/import-from-esm": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/import-from-esm/-/import-from-esm-1.3.3.tgz", + "integrity": "sha512-U3Qt/CyfFpTUv6LOP2jRTLYjphH6zg3okMfHbyqRa/W2w6hr8OsJWVggNlR4jxuojQy81TgTJTxgSkyoteRGMQ==", + "dependencies": { + "debug": "^4.3.4", + "import-meta-resolve": "^4.0.0" + }, "engines": { - "node": ">=4" + "node": ">=16.20" } }, - "node_modules/eslint-plugin-import/node_modules/parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==", - "dev": true, + "node_modules/import-from-esm/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dependencies": { - "error-ex": "^1.2.0" + "ms": "2.1.2" }, "engines": { - "node": ">=0.10.0" + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/eslint-plugin-import/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==", - "dev": true, + "node_modules/import-from-esm/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/import-meta-resolve": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.0.0.tgz", + "integrity": "sha512-okYUR7ZQPH+efeuMJGlq4f8ubUgO50kByRPyt/Cy1Io4PSRsPjxME+YlVaCOx+NIToW7hCsZNFJyTPFFKepRSA==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "devOptional": true, "engines": { - "node": ">=4" + "node": ">=0.8.19" } }, - "node_modules/eslint-plugin-import/node_modules/path-type": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", - "integrity": "sha512-dUnb5dXUf+kzhC/W/F4e5/SkluXIFf5VUHolW1Eg1irn1hGWjPGdsRcvYJ1nD6lhk8Ir7VM0bHJKsYTx8Jx9OQ==", - "dev": true, - "dependencies": { - "pify": "^2.0.0" - }, + "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==", + "devOptional": true, "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/eslint-plugin-import/node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "dev": true, + "node_modules/index-to-position": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/index-to-position/-/index-to-position-0.1.2.tgz", + "integrity": "sha512-MWDKS3AS1bGCHLBA2VLImJz42f7bJh8wQsTGCzI3j519/CASStoDONUBVz2I/VID0MpiX3SGSnbOD2xUalbE5g==", "engines": { - "node": ">=0.10.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", + "optional": true + }, + "node_modules/inflection": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/inflection/-/inflection-1.13.4.tgz", + "integrity": "sha512-6I/HUDeYFfuNCVS3td055BaXBwKYuzw7K3ExVMStBowKo9oOAMJIXIHvdyR3iboTCp1b+1i5DSkIZTcwIktuDw==", + "engines": [ + "node >= 0.4.0" + ] + }, + "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/eslint-plugin-import/node_modules/read-pkg": { + "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/ini": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", - "integrity": "sha512-eFIBOPW7FGjzBuk3hdXEuNSiTZS/xEMlH49HxMyzb0hyPfu4EhVjT2DH32K1hSSmVq4sebAWnZuuY5auISUTGA==", + "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", + "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", + "engines": { + "node": ">=10" + } + }, + "node_modules/internal-slot": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.6.tgz", + "integrity": "sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==", "dev": true, "dependencies": { - "load-json-file": "^2.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^2.0.0" + "get-intrinsic": "^1.2.2", + "hasown": "^2.0.0", + "side-channel": "^1.0.4" }, "engines": { - "node": ">=4" + "node": ">= 0.4" } }, - "node_modules/eslint-plugin-import/node_modules/read-pkg-up": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", - "integrity": "sha512-1orxQfbWGUiTn9XsPlChs6rLie/AV9jwZTGmu2NZw/CUDJQchXJFYE0Fq5j7+n558T1JhDWLdhyd1Zj+wLY//w==", - "dev": true, + "node_modules/into-stream": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-7.0.0.tgz", + "integrity": "sha512-2dYz766i9HprMBasCMvHMuazJ7u4WzhJwo5kb3iPSiW/iRYV6uPari3zHoqZlnuaR7V1bEiNMxikhp37rdBXbw==", "dependencies": { - "find-up": "^2.0.0", - "read-pkg": "^2.0.0" + "from2": "^2.3.0", + "p-is-promise": "^3.0.0" }, "engines": { - "node": ">=4" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint-plugin-import/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==", + "node_modules/ip": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", + "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==", + "optional": true + }, + "node_modules/ip-regex": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", + "integrity": "sha512-58yWmlHpp7VYfcdTwMTvwMmqx/Elfxjd9RXTDyMsbL7lLWmhMylLEqiYVLKuLzOZqVgiWXD9MfR62Vv89VRxkw==", "dev": true, "engines": { "node": ">=4" } }, - "node_modules/eslint-plugin-node": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-7.0.1.tgz", - "integrity": "sha512-lfVw3TEqThwq0j2Ba/Ckn2ABdwmL5dkOgAux1rvOk6CO7A6yGyPI2+zIxN6FyNkp1X1X/BSvKOceD6mBWSj4Yw==", - "dev": true, + "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-admin": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-admin/-/is-admin-4.0.0.tgz", + "integrity": "sha512-ODl+ygFCyHXMauhn+0mBebcwO1tiB+b4FoBiIC97gFDcmdO3JMD+YmIhSA8+1KVZuGwfsX8ANo2yblgW5KUPTg==", "dependencies": { - "eslint-plugin-es": "^1.3.1", - "eslint-utils": "^1.3.1", - "ignore": "^4.0.2", - "minimatch": "^3.0.4", - "resolve": "^1.8.1", - "semver": "^5.5.0" + "execa": "^5.1.1" }, "engines": { - "node": ">=6" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, - "peerDependencies": { - "eslint": ">=4.19.1" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint-plugin-promise": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-4.0.1.tgz", - "integrity": "sha512-Si16O0+Hqz1gDHsys6RtFRrW7cCTB6P7p3OJmKp3Y3dxpQE2qwOA7d3xnV+0mBmrPoi0RBnxlCKvqu70te6wjg==", + "node_modules/is-array-buffer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", + "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", "dev": true, - "engines": { - "node": ">=6" + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.0", + "is-typed-array": "^1.1.10" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint-plugin-react": { - "version": "7.11.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.11.1.tgz", - "integrity": "sha512-cVVyMadRyW7qsIUh3FHp3u6QHNhOgVrLQYdQEB1bPWBsgbNCHdFAeNMquBMCcZJu59eNthX053L70l7gRt4SCw==", + "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-async-function": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz", + "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==", "dev": true, "dependencies": { - "array-includes": "^3.0.3", - "doctrine": "^2.1.0", - "has": "^1.0.3", - "jsx-ast-utils": "^2.0.1", - "prop-types": "^15.6.2" + "has-tostringtag": "^1.0.0" }, "engines": { - "node": ">=4" + "node": ">= 0.4" }, - "peerDependencies": { - "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint-plugin-react/node_modules/doctrine": { + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-binary-path": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", "dev": true, "dependencies": { - "esutils": "^2.0.2" + "binary-extensions": "^2.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/eslint-plugin-standard": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-standard/-/eslint-plugin-standard-4.0.2.tgz", - "integrity": "sha512-nKptN8l7jksXkwFk++PhJB3cCDTcXOEyhISIN86Ue2feJ1LFyY3PrY3/xT2keXlJSY5bpmbiTG0f885/YKAvTA==", - "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" - } - ], - "peerDependencies": { - "eslint": ">=5.0.0" - } - }, - "node_modules/eslint-scope": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", - "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", "dev": true, "dependencies": { - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" }, "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/eslint-utils": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", - "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^1.1.0" + "node": ">= 0.4" }, - "engines": { - "node": ">=6" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", "dev": true, "engines": { - "node": ">=4" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, + "node_modules/is-core-module": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" + "hasown": "^2.0.0" }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/espree": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-5.0.1.tgz", - "integrity": "sha512-qWAZcWh4XE/RwzLJejfcofscgMc9CamR6Tn1+XRXNzrvUSSbiAjGOI/fggztjIi7y9VLPqnICMIPiGyr8JaZ0A==", + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", "dev": true, "dependencies": { - "acorn": "^6.0.7", - "acorn-jsx": "^5.0.0", - "eslint-visitor-keys": "^1.0.0" + "has-tostringtag": "^1.0.0" }, "engines": { - "node": ">=6.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/espree/node_modules/acorn": { - "version": "6.4.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", - "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", - "dev": true, - "bin": { - "acorn": "bin/acorn" + "node_modules/is-elevated": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-elevated/-/is-elevated-4.0.0.tgz", + "integrity": "sha512-nHdo1tvG6ocQA+MESx+VmUae2dvB32mm87gzZxMlZT7gtURGC9quMpYrwuMqIFJTqKSP/wLLQnneG/Z2AIne6g==", + "dependencies": { + "is-admin": "^4.0.0", + "is-root": "^3.0.0" }, "engines": { - "node": ">=0.4.0" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "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" - }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "engines": { - "node": ">=4" + "node": ">=0.10.0" } }, - "node_modules/esquery": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.2.tgz", - "integrity": "sha512-JVSoLdTlTDkmjFmab7H/9SL9qGSyjElT3myyKp7krqjVFQCDLmj1QFaCLRFBszBKI0XVZaiiXvuPIX3ZwHe1Ng==", + "node_modules/is-finalizationregistry": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz", + "integrity": "sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==", "dev": true, "dependencies": { - "estraverse": "^5.1.0" + "call-bind": "^1.0.2" }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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==", "engines": { - "node": ">=0.10" + "node": ">=8" } }, - "node_modules/esquery/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "node_modules/is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, "engines": { - "node": ">=4.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "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, + "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==", "dependencies": { - "estraverse": "^5.2.0" + "is-extglob": "^2.1.1" }, "engines": { - "node": ">=4.0" + "node": ">=0.10.0" } }, - "node_modules/esrecurse/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "node_modules/is-ip": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ip/-/is-ip-2.0.0.tgz", + "integrity": "sha512-9MTn0dteHETtyUx8pxqMwg5hMBi3pvlyglJ+b79KOCca0po23337LbVV2Hl4xmMvfw++ljnO0/+5G6G+0Szh6g==", "dev": true, + "dependencies": { + "ip-regex": "^2.0.0" + }, "engines": { - "node": ">=4.0" + "node": ">=4" } }, - "node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "node_modules/is-lambda": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", + "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", + "optional": true + }, + "node_modules/is-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", + "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", "dev": true, - "engines": { - "node": ">=4.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "node_modules/is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "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==", "engines": { - "node": ">= 0.6" + "node": ">=0.12.0" } }, - "node_modules/event-emitter": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", - "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==", - "dev": true, + "node_modules/is-number-like": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/is-number-like/-/is-number-like-1.0.8.tgz", + "integrity": "sha512-6rZi3ezCyFcn5L71ywzz2bS5b2Igl1En3eTlZlvKjpz1n3IZLAYMbKYAIQgFmEu0GENg92ziU/faEOA/aixjbA==", "dependencies": { - "d": "1", - "es5-ext": "~0.10.14" + "lodash.isfinite": "^3.3.2" } }, - "node_modules/eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", - "dev": true - }, - "node_modules/eventuate": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/eventuate/-/eventuate-4.0.0.tgz", - "integrity": "sha512-SysKo5/rgqCaXlO4H4DE62JXCFtDpdm+boWOzaeaYph3Xejy04Cc4/E2HDPnOES0MFb643WgKRlx09W2iVAIBw==", + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dev": true, "dependencies": { - "define-error": "~1.0.0", - "object-assign": "~3.0.0", - "shallow-copy": "0.0.1" - } - }, - "node_modules/eventuate/node_modules/object-assign": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz", - "integrity": "sha512-jHP15vXVGeVh1HuaA2wY6lxk+whK/x4KBG88VXeRma7CCun7iGD5qPc4eYykQ9sdQvg8jkwFKsSxHln2ybW3xQ==", + "has-tostringtag": "^1.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "dependencies": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - }, + "node_modules/is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/expect-ct": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/expect-ct/-/expect-ct-0.2.0.tgz", - "integrity": "sha512-6SK3MG/Bbhm8MsgyJAylg+ucIOU71/FzyFalcfu5nY19dH8y/z0tBJU0wrNBXD4B27EoQtqPF/9wqH0iYAd04g==", + "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": ">=4.0.0" + "node": ">=8" } }, - "node_modules/express": { - "version": "4.17.3", - "resolved": "https://registry.npmjs.org/express/-/express-4.17.3.tgz", - "integrity": "sha512-yuSQpz5I+Ch7gFrPCk4/c+dIBKlQUxtgwqzph132bsT6qhuzss6I8cLJQz7B3rFblzd6wtcI0ZbGltH/C4LjUg==", - "dependencies": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.19.2", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.4.2", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "~1.1.2", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "~1.1.2", - "fresh": "0.5.2", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.7", - "qs": "6.9.7", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "0.17.2", - "serve-static": "1.14.2", - "setprototypeof": "1.2.0", - "statuses": "~1.5.0", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "engines": { - "node": ">= 0.10.0" - } + "node_modules/is-promise": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", + "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==", + "dev": true }, - "node_modules/express/node_modules/body-parser": { - "version": "1.19.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.2.tgz", - "integrity": "sha512-SAAwOxgoCKMGs9uUAUFHygfLAyaniaoun6I8mFY9pRAJL9+Kec34aU+oIjDhTycub1jozEfEwx1W1IuOYxVSFw==", + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, "dependencies": { - "bytes": "3.1.2", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "1.8.1", - "iconv-lite": "0.4.24", - "on-finished": "~2.3.0", - "qs": "6.9.7", - "raw-body": "2.4.3", - "type-is": "~1.6.18" + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" }, "engines": { - "node": ">= 0.8" - } - }, - "node_modules/express/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": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/express/node_modules/depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "node_modules/is-root": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-root/-/is-root-3.0.0.tgz", + "integrity": "sha512-C13bL54yQdgniduW8KFe81ttgQINcwMgil/zyNuDzr/xjIyDMkcvcc9dON62RH9VBAHOI7le+lTo/U3PY3irwg==", "engines": { - "node": ">= 0.6" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/express/node_modules/http-errors": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", - "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", - "dependencies": { - "depd": "~1.1.2", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.1" - }, - "engines": { - "node": ">= 0.6" + "node_modules/is-set": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz", + "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/express/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==", + "node_modules/is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "dev": true, "dependencies": { - "ee-first": "1.1.1" + "call-bind": "^1.0.2" }, - "engines": { - "node": ">= 0.8" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/express/node_modules/qs": { - "version": "6.9.7", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.7.tgz", - "integrity": "sha512-IhMFgUmuNpyRfxA90umL7ByLlgRXu6tIfKPpF5TmcfRLlLCckfP/g3IQmju6jjpu+Hh8rA+2p6A27ZSPOOHdKw==", + "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==", "engines": { - "node": ">=0.6" + "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/express/node_modules/raw-body": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.3.tgz", - "integrity": "sha512-UlTNLIcu0uzb4D2f4WltY6cVjLi+/jEN4lgEUj3E04tpMDpUlkBo/eSn6zou9hum2VMNpCCUone0O0WeJim07g==", + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, "dependencies": { - "bytes": "3.1.2", - "http-errors": "1.8.1", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" + "has-tostringtag": "^1.0.0" }, "engines": { - "node": ">= 0.8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/ext": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", - "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", "dev": true, "dependencies": { - "type": "^2.7.2" + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/ext/node_modules/type": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz", - "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==", - "dev": true - }, - "node_modules/extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" - }, - "node_modules/external-editor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", - "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", - "dev": true, + "node_modules/is-text-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-2.0.0.tgz", + "integrity": "sha512-+oDTluR6WEjdXEJMnC2z6A4FRwFoYuvShVVEGsS7ewc0UTi2QtAKMDJuL4BDEVt+5T7MjFo12RP8ghOM75oKJw==", "dependencies": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" + "text-extensions": "^2.0.0" }, "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", - "engines": [ - "node >=0.6.0" - ] - }, - "node_modules/faker": { - "version": "5.5.3", - "resolved": "https://registry.npmjs.org/faker/-/faker-5.5.3.tgz", - "integrity": "sha512-wLTv2a28wjUyWkbnX7u/ABZBkUkIF2fCd73V6P2oFqEGEktDfzWx4UxrSqtPRw0xPRAcjeAOIiJWqZm3pP4u3g==", - "dev": true - }, - "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==" - }, - "node_modules/fast-glob": { - "version": "3.2.12", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", - "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", + "node_modules/is-typed-array": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", + "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", + "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" + "which-typed-array": "^1.1.11" }, "engines": { - "node": ">=8.6.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "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==" - }, - "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/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" }, - "node_modules/fast-redact": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-2.1.0.tgz", - "integrity": "sha512-0LkHpTLyadJavq9sRzzyqIoMZemWli77K2/MGOkafrR64B9ItrvZ9aT+jluvNDsv0YEHjSNhlMBtbokuoqii4A==", + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true, "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/fastq": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", - "dependencies": { - "reusify": "^1.0.4" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/feature-policy": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/feature-policy/-/feature-policy-0.3.0.tgz", - "integrity": "sha512-ZtijOTFN7TzCujt1fnNhfWPFPSHeZkesff9AXZj+UEjYBynWNUIYpC87Ve4wHzyexQsImicLu7WsC2LHq7/xrQ==", - "engines": { - "node": ">=4.0.0" + "node_modules/is-weakmap": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", + "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/figures": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", - "integrity": "sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==", + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, "dependencies": { - "escape-string-regexp": "^1.0.5" + "call-bind": "^1.0.2" }, - "engines": { - "node": ">=4" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/file-entry-cache": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", - "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", + "node_modules/is-weakset": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz", + "integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==", "dev": true, "dependencies": { - "flat-cache": "^2.0.1" + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" }, - "engines": { - "node": ">=4" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/file-type": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz", - "integrity": "sha512-RLoqTXE8/vPmMuTI88DAzhMYC99I8BWv7zYP4A1puo5HIjEJ5EX48ighy4ZyKMG9EDXxBgW6e++cn7d1xuFghA==", + "node_modules/is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", "dev": true, "engines": { "node": ">=0.10.0" } }, - "node_modules/filelist": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", - "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", - "dependencies": { - "minimatch": "^5.0.1" - } + "node_modules/isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==" }, - "node_modules/filelist/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/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" }, - "node_modules/filelist/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "node_modules/isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==" + }, + "node_modules/issue-parser": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/issue-parser/-/issue-parser-6.0.0.tgz", + "integrity": "sha512-zKa/Dxq2lGsBIXQ7CUZWTHfvxPC2ej0KfO7fIPqLlHB9J2hJ7rGhZ5rilhuufylr4RXYPzJUeFjKxz305OsNlA==", "dependencies": { - "brace-expansion": "^2.0.1" + "lodash.capitalize": "^4.2.1", + "lodash.escaperegexp": "^4.1.2", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.uniqby": "^4.7.0" }, "engines": { - "node": ">=10" + "node": ">=10.13" } }, - "node_modules/filesize": { - "version": "8.0.7", - "resolved": "https://registry.npmjs.org/filesize/-/filesize-8.0.7.tgz", - "integrity": "sha512-pjmC+bkIF8XI7fWaH8KxHcZL3DPybs1roSKP4rKDvy20tAWwIObE4+JIseG2byfGKhud5ZnM4YSGKBz7Sh0ndQ==", + "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": ">= 0.4.0" + "node": ">=8" } }, - "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==", + "node_modules/istanbul-lib-hook": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-3.0.0.tgz", + "integrity": "sha512-Pt/uge1Q9s+5VAZ+pCo16TYMWPBIl+oaNIjgLQxcX0itS6ueeaA+pEfThZpH8WxhFgCiEb8sAJY6MdUKgiIWaQ==", + "dev": true, "dependencies": { - "to-regex-range": "^5.0.1" + "append-transform": "^2.0.0" }, "engines": { "node": ">=8" } }, - "node_modules/finalhandler": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "node_modules/istanbul-lib-instrument": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", + "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", + "dev": true, "dependencies": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "statuses": "~1.5.0", - "unpipe": "~1.0.0" + "@babel/core": "^7.7.5", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.0.0", + "semver": "^6.3.0" }, "engines": { - "node": ">= 0.8" + "node": ">=8" } }, - "node_modules/finalhandler/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==", - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" + "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==", + "dev": true, + "bin": { + "semver": "bin/semver.js" } }, - "node_modules/find-cache-dir": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", - "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "node_modules/istanbul-lib-processinfo": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-processinfo/-/istanbul-lib-processinfo-2.0.3.tgz", + "integrity": "sha512-NkwHbo3E00oybX6NGJi6ar0B29vxyvNwoC7eJ4G4Yq28UfY758Hgn/heV8VRFhevPED4LXfFz0DQ8z/0kw9zMg==", "dev": true, "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" + "archy": "^1.0.0", + "cross-spawn": "^7.0.3", + "istanbul-lib-coverage": "^3.2.0", + "p-map": "^3.0.0", + "rimraf": "^3.0.0", + "uuid": "^8.3.2" }, "engines": { "node": ">=8" - }, - "funding": { - "url": "https://github.com/avajs/find-cache-dir?sponsor=1" } }, - "node_modules/find-replace": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-2.0.1.tgz", - "integrity": "sha512-LzDo3Fpa30FLIBsh6DCDnMN1KW2g4QKkqKmejlImgWY67dDFPX/x9Kh/op/GK522DchQXEvDi/wD48HKW49XOQ==", - "dependencies": { - "array-back": "^2.0.0", - "test-value": "^3.0.0" - }, - "engines": { - "node": ">=4.0.0" + "node_modules/istanbul-lib-processinfo/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==", + "dev": true, + "bin": { + "uuid": "dist/bin/uuid" } }, - "node_modules/find-root": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", - "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==", - "dev": true - }, - "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==", + "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": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^3.0.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, - "node_modules/find-versions": { + "node_modules/istanbul-lib-report/node_modules/has-flag": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/find-versions/-/find-versions-4.0.0.tgz", - "integrity": "sha512-wgpWy002tA+wgmO27buH/9KzyEOQnKsG/R0yrcjPT9BOFm0zRBVQbZ95nRGXWMywS8YR5knRbpohio0bcJABxQ==", - "dependencies": { - "semver-regex": "^3.1.2" - }, + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, - "node_modules/flat": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", - "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "node_modules/istanbul-lib-report/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, - "bin": { - "flat": "cli.js" + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/flat-cache": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", - "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", + "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": { - "flatted": "^2.0.0", - "rimraf": "2.6.3", - "write": "1.0.3" + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" }, "engines": { - "node": ">=4" + "node": ">=10" } }, - "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": "2.0.2", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", - "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", - "dev": true - }, - "node_modules/follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], + "node_modules/istanbul-lib-source-maps/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, "engines": { - "node": ">=4.0" + "node": ">=6.0" }, "peerDependenciesMeta": { - "debug": { + "supports-color": { "optional": true } } }, - "node_modules/for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", - "dev": true, - "dependencies": { - "is-callable": "^1.1.3" - } + "node_modules/istanbul-lib-source-maps/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true }, - "node_modules/foreground-child": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", - "integrity": "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==", + "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": { - "cross-spawn": "^7.0.0", - "signal-exit": "^3.0.2" + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" }, "engines": { - "node": ">=8.0.0" + "node": ">=8" } }, - "node_modules/foreground-child/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==", + "node_modules/iterator.prototype": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz", + "integrity": "sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==", "dev": true, "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" + "define-properties": "^1.2.1", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "reflect.getprototypeof": "^1.0.4", + "set-function-name": "^2.0.1" } }, - "node_modules/foreground-child/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, + "node_modules/jake": { + "version": "10.8.5", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz", + "integrity": "sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==", + "dependencies": { + "async": "^3.2.3", + "chalk": "^4.0.2", + "filelist": "^1.0.1", + "minimatch": "^3.0.4" + }, + "bin": { + "jake": "bin/cli.js" + }, "engines": { - "node": ">=8" + "node": ">=10" } }, - "node_modules/foreground-child/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, + "node_modules/jake/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==", "dependencies": { - "shebang-regex": "^3.0.0" + "color-convert": "^2.0.1" }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/foreground-child/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, + "node_modules/jake/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/foreground-child/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, + "node_modules/jake/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==", "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" + "color-name": "~1.1.4" }, "engines": { - "node": ">= 8" + "node": ">=7.0.0" } }, - "node_modules/forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", - "engines": { - "node": "*" - } + "node_modules/jake/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==" }, - "node_modules/form-data": { + "node_modules/jake/node_modules/has-flag": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "engines": { - "node": ">= 6" + "node": ">=8" } }, - "node_modules/formidable": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.1.tgz", - "integrity": "sha512-Fs9VRguL0gqGHkXS5GQiMCr1VhZBxz0JnJs4JmMp/2jL18Fmbzvv7vOFRU+U8TBkHEE/CX1qDXzJplVULgsLeg==", - "deprecated": "Please upgrade to latest, formidable@v2 or formidable@v3! Check these notes: https://bit.ly/2ZEqIau" - }, - "node_modules/forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "node_modules/jake/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, "engines": { - "node": ">= 0.6" + "node": "*" } }, - "node_modules/frameguard": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/frameguard/-/frameguard-3.1.0.tgz", - "integrity": "sha512-TxgSKM+7LTA6sidjOiSZK9wxY0ffMPY3Wta//MqwmX0nZuEHc8QrkV8Fh3ZhMJeiH+Uyh/tcaarImRy8u77O7g==", + "node_modules/jake/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==", + "dependencies": { + "has-flag": "^4.0.0" + }, "engines": { - "node": ">=4.0.0" + "node": ">=8" } }, - "node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "node_modules/java-properties": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/java-properties/-/java-properties-1.0.2.tgz", + "integrity": "sha512-qjdpeo2yKlYTH7nFdK0vbZWuTCesk4o63v5iVOlhMQPfuIZQfW/HI35SjfhA+4qpg36rnFSvUK5b1m+ckIblQQ==", "engines": { - "node": ">= 0.6" + "node": ">= 0.6.0" } }, - "node_modules/from2": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", - "integrity": "sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==", - "dependencies": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.0" + "node_modules/jose": { + "version": "4.14.4", + "resolved": "https://registry.npmjs.org/jose/-/jose-4.14.4.tgz", + "integrity": "sha512-j8GhLiKmUAh+dsFXlX1aJCbt5KMibuKb+d7j1JaOJG6s2UjX1PQlW+OKB/sD4a/5ZYF4RcmYmLSndOoU3Lt/3g==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/panva" } }, - "node_modules/from2/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" - }, - "node_modules/from2/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "node_modules/js-beautify": { + "version": "1.14.7", + "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.14.7.tgz", + "integrity": "sha512-5SOX1KXPFKx+5f6ZrPsIPEY7NwKeQz47n3jm2i+XeHx9MoRsfQenlOP13FQhWvg8JRS0+XLO6XYUQ2GX+q+T9A==", + "dev": true, "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "config-chain": "^1.1.13", + "editorconfig": "^0.15.3", + "glob": "^8.0.3", + "nopt": "^6.0.0" + }, + "bin": { + "css-beautify": "js/bin/css-beautify.js", + "html-beautify": "js/bin/html-beautify.js", + "js-beautify": "js/bin/js-beautify.js" + }, + "engines": { + "node": ">=10" } }, - "node_modules/from2/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==" - }, - "node_modules/from2/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "node_modules/js-beautify/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==", + "dev": true, "dependencies": { - "safe-buffer": "~5.1.0" + "balanced-match": "^1.0.0" } }, - "node_modules/fromentries": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/fromentries/-/fromentries-1.3.2.tgz", - "integrity": "sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg==", - "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/fs-extra": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.0.tgz", - "integrity": "sha512-0rcTq621PD5jM/e0a3EJoGC/1TC5ZBCERW82LQuwfGnCa1V8w7dpYH1yNu+SLb6E5dkeCBzKEyLGlFrnr+dUyw==", + "node_modules/js-beautify/node_modules/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "dev": true, "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" }, "engines": { - "node": ">=14.14" - } - }, - "node_modules/fs-minipass": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", - "dependencies": { - "minipass": "^3.0.0" + "node": ">=12" }, - "engines": { - "node": ">= 8" + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "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==", + "node_modules/js-beautify/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/ftp": { - "version": "0.3.10", - "resolved": "https://registry.npmjs.org/ftp/-/ftp-0.3.10.tgz", - "integrity": "sha512-faFVML1aBx2UoDStmLwv2Wptt4vw5x03xxX172nhA5Y5HBshW5JweqQ2W4xL4dezQTG8inJsuYcpPHHU3X5OTQ==", "dependencies": { - "readable-stream": "1.1.x", - "xregexp": "2.0.0" + "brace-expansion": "^2.0.1" }, "engines": { - "node": ">=0.8.0" + "node": ">=10" } }, - "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/js-md4": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/js-md4/-/js-md4-0.3.2.tgz", + "integrity": "sha512-/GDnfQYsltsjRswQhN9fhv3EMw2sCpUdrdxyWDOUK7eyD++r3gRhzgiQgc/x4MAv2i1iuQ4lxO5mvqM3vj4bwA==", + "dev": true }, - "node_modules/function.prototype.name": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", - "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", - "dev": true, + "node_modules/js-sha512": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/js-sha512/-/js-sha512-0.8.0.tgz", + "integrity": "sha512-PWsmefG6Jkodqt+ePTvBZCSMFgN7Clckjd0O7su3I0+BW2QWUTJNzjktHsztGLhncP2h8mcF9V9Y2Ha59pAViQ==", + "dev": true + }, + "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==" + }, + "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": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0", - "functions-have-names": "^1.2.2" + "argparse": "^2.0.1" }, - "engines": { - "node": ">= 0.4" + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==" + }, + "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" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=4" } }, - "node_modules/functional-red-black-tree": { + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true + }, + "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==" + }, + "node_modules/json-schema": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" + }, + "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==" + }, + "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", + "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/functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "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==" + }, + "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, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" } }, - "node_modules/gauge": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz", - "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==", + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", "dependencies": { - "aproba": "^1.0.3 || ^2.0.0", - "color-support": "^1.1.2", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.1", - "object-assign": "^4.1.1", - "signal-exit": "^3.0.0", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "wide-align": "^1.1.2" + "universalify": "^2.0.0" }, - "engines": { - "node": ">=10" + "optionalDependencies": { + "graceful-fs": "^4.1.6" } }, - "node_modules/gauge/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==", + "node_modules/jsonfile/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "engines": { - "node": ">=8" + "node": ">= 10.0.0" } }, - "node_modules/gauge/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==", - "engines": { - "node": ">=8" - } + "node_modules/jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", + "engines": [ + "node >= 0.2.0" + ] }, - "node_modules/gauge/node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "node_modules/jsonschema": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsonschema/-/jsonschema-1.4.1.tgz", + "integrity": "sha512-S6cATIPVv1z0IlxdN+zUk5EPjkGCdnhN4wVSBlvoUO1tOLJootbo9CquNJmbIh4yikWHiUedhRYrNPn1arpEmQ==", "engines": { - "node": ">=0.10.0" + "node": "*" } }, - "node_modules/gauge/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==", + "node_modules/JSONStream": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", + "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + "jsonparse": "^1.2.0", + "through": ">=2.2.7 <3" + }, + "bin": { + "JSONStream": "bin.js" }, "engines": { - "node": ">=8" + "node": "*" } }, - "node_modules/gauge/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==", + "node_modules/jsprim": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-2.0.2.tgz", + "integrity": "sha512-gqXddjPqQ6G40VdnI6T6yObEC+pDNvyP95wdQhkWkg7crHH3km5qP1FsOXEkzEQwnz6gz5qGTn1c2Y52wP3OyQ==", + "dev": true, + "engines": [ + "node >=0.6.0" + ], "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.4.0", + "verror": "1.10.0" } }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "node_modules/jsx-ast-utils": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", + "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", "dev": true, + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "object.assign": "^4.1.4", + "object.values": "^1.1.6" + }, "engines": { - "node": ">=6.9.0" + "node": ">=4.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==", - "engines": { - "node": "6.* || 8.* || >= 10.*" - } + "node_modules/just-extend": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-4.2.1.tgz", + "integrity": "sha512-g3UB796vUFIY90VIv/WX3L2c8CS2MdWUww3CNrYmqza1Fg0DURc2K/O4YrnklBdQarSJ/y8JnJYDGc+1iumQjg==", + "dev": true }, - "node_modules/get-func-name": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", - "integrity": "sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==", + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", "dev": true, - "engines": { - "node": "*" + "dependencies": { + "json-buffer": "3.0.1" } }, - "node_modules/get-intrinsic": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", - "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", + "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": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.3" + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">= 0.8.0" } }, - "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==", + "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==" + }, + "node_modules/liquid-json": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/liquid-json/-/liquid-json-0.3.1.tgz", + "integrity": "sha512-wUayTU8MS827Dam6MxgD72Ui+KOSF+u/eIqpatOtjnvgJ0+mnDq33uC2M7J0tPK+upe/DpUAuK4JUU89iBoNKQ==", "dev": true, "engines": { - "node": ">=8.0.0" + "node": ">=4" } }, - "node_modules/get-stdin": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz", - "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==", - "dev": true, + "node_modules/load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==", + "dependencies": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + }, "engines": { "node": ">=4" } }, - "node_modules/get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "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": { - "pump": "^3.0.0" + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" }, "engines": { - "node": ">=6" + "node": ">=4" } }, - "node_modules/get-symbol-description": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "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/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": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" + "p-locate": "^5.0.0" }, "engines": { - "node": ">= 0.4" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", - "dependencies": { - "assert-plus": "^1.0.0" - } + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, - "node_modules/git-log-parser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/git-log-parser/-/git-log-parser-1.2.0.tgz", - "integrity": "sha512-rnCVNfkTL8tdNryFuaY0fYiBWEBcgF748O6ZI61rslBvr2o7U65c2/6npCRqH40vuAhtgtDiqLTJjBVdrejCzA==", - "dependencies": { - "argv-formatter": "~1.0.0", - "spawn-error-forwarder": "~1.0.0", - "split2": "~1.0.0", - "stream-combiner2": "~1.1.1", - "through2": "~2.0.0", - "traverse": "~0.6.6" - } + "node_modules/lodash-es": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" }, - "node_modules/git-log-parser/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + "node_modules/lodash.assignwith": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.assignwith/-/lodash.assignwith-4.2.0.tgz", + "integrity": "sha512-ZznplvbvtjK2gMvnQ1BR/zqPFZmS6jbK4p+6Up4xcRYA7yMIwxHCfbTcrYxXKzzqLsQ05eJPVznEW3tuwV7k1g==" }, - "node_modules/git-log-parser/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } + "node_modules/lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==" }, - "node_modules/git-log-parser/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==" + "node_modules/lodash.capitalize": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/lodash.capitalize/-/lodash.capitalize-4.2.1.tgz", + "integrity": "sha512-kZzYOKspf8XVX5AvmQF94gQW0lejFVgb80G85bU4ZWzoJ6C03PQg3coYAUpSTpQWelrZELd3XWgHzw4Ck5kaIw==" }, - "node_modules/git-log-parser/node_modules/split2": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/split2/-/split2-1.0.0.tgz", - "integrity": "sha512-NKywug4u4pX/AZBB1FCPzZ6/7O+Xhz1qMVbzTvvKvikjO99oPN87SkK08mEY9P63/5lWjK+wgOOgApnTg5r6qg==", - "dependencies": { - "through2": "~2.0.0" - } + "node_modules/lodash.escaperegexp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz", + "integrity": "sha512-TM9YBvyC84ZxE3rgfefxUWiQKLilstD6k7PTGt6wfbtXF8ixIJLOL3VYyV/z+ZiPLsVxAsKAFVwWlWeb2Y8Yyw==" }, - "node_modules/git-log-parser/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dependencies": { - "safe-buffer": "~5.1.0" - } + "node_modules/lodash.flattendeep": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", + "integrity": "sha512-uHaJFihxmJcEX3kT4I23ABqKKalJ/zDrDg0lsFtc1h+3uw49SIJ5beyhx5ExVRti3AvKoOJngIj7xz3oylPdWQ==", + "dev": true }, - "node_modules/git-log-parser/node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } + "node_modules/lodash.get": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==", + "dev": true }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "node_modules/lodash.isfinite": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/lodash.isfinite/-/lodash.isfinite-3.3.2.tgz", + "integrity": "sha512-7FGG40uhC8Mm633uKW1r58aElFlBlxCrg9JfSi3P6aYiWmfiWF0PgMd86ZUsxE5GwWPdHoS2+48bwTh2VPkIQA==" + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==" + }, + "node_modules/lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==" + }, + "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/lodash.uniqby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz", + "integrity": "sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww==" + }, + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "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" + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" }, "engines": { - "node": "*" + "node": ">=10" }, "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==", - "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" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/globalthis": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", - "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "node_modules/log-symbols/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": { - "define-properties": "^1.1.3" + "color-convert": "^2.0.1" }, "engines": { - "node": ">= 0.4" + "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "node_modules/log-symbols/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": { - "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" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/globby/node_modules/ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", - "engines": { - "node": ">= 4" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "node_modules/log-symbols/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": { - "get-intrinsic": "^1.1.3" + "color-name": "~1.1.4" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=7.0.0" } }, - "node_modules/graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" + "node_modules/log-symbols/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/growl": { - "version": "1.10.5", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", - "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", + "node_modules/log-symbols/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": ">=4.x" + "node": ">=8" } }, - "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==", + "node_modules/log-symbols/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": { - "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" + "has-flag": "^4.0.0" }, - "optionalDependencies": { - "uglify-js": "^3.1.4" - } - }, - "node_modules/har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/har-validator": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", - "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", - "deprecated": "this library is no longer supported", - "dependencies": { - "ajv": "^6.12.3", - "har-schema": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/hard-rejection": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", - "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", - "engines": { - "node": ">=6" - } - }, - "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-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==", + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", "dev": true, "dependencies": { - "ansi-regex": "^2.0.0" + "js-tokens": "^3.0.0 || ^4.0.0" }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-bigints": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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" + "bin": { + "loose-envify": "cli.js" } }, - "node_modules/has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "node_modules/loupe": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", + "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", "dev": true, "dependencies": { - "get-intrinsic": "^1.1.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "get-func-name": "^2.0.1" } }, - "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==", + "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, - "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" + "dependencies": { + "yallist": "^3.0.2" } }, - "node_modules/has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "node_modules/lru-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz", + "integrity": "sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ==", "dev": true, "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "es5-ext": "~0.10.2" } }, - "node_modules/has-unicode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==" - }, - "node_modules/hasha": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/hasha/-/hasha-5.2.2.tgz", - "integrity": "sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ==", - "dev": true, + "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==", "dependencies": { - "is-stream": "^2.0.0", - "type-fest": "^0.8.0" - }, - "engines": { - "node": ">=8" + "semver": "^6.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/hasha/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" }, @@ -8242,93 +7903,86 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true, + "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==", "bin": { - "he": "bin/he" + "semver": "bin/semver.js" } }, - "node_modules/helmet": { - "version": "3.21.2", - "resolved": "https://registry.npmjs.org/helmet/-/helmet-3.21.2.tgz", - "integrity": "sha512-okUo+MeWgg00cKB8Csblu8EXgcIoDyb5ZS/3u0W4spCimeVuCUvVZ6Vj3O2VJ1Sxpyb8jCDvzu0L1KKT11pkIg==", + "node_modules/make-fetch-happen": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz", + "integrity": "sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==", + "optional": true, "dependencies": { - "depd": "2.0.0", - "dns-prefetch-control": "0.2.0", - "dont-sniff-mimetype": "1.1.0", - "expect-ct": "0.2.0", - "feature-policy": "0.3.0", - "frameguard": "3.1.0", - "helmet-crossdomain": "0.4.0", - "helmet-csp": "2.9.4", - "hide-powered-by": "1.1.0", - "hpkp": "2.0.0", - "hsts": "2.2.0", - "ienoopen": "1.1.0", - "nocache": "2.1.0", - "referrer-policy": "1.2.0", - "x-xss-protection": "1.3.0" + "agentkeepalive": "^4.1.3", + "cacache": "^15.2.0", + "http-cache-semantics": "^4.1.0", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^6.0.0", + "minipass": "^3.1.3", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^1.3.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.2", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^6.0.0", + "ssri": "^8.0.0" }, "engines": { - "node": ">=4.0.0" + "node": ">= 10" } }, - "node_modules/helmet-crossdomain": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/helmet-crossdomain/-/helmet-crossdomain-0.4.0.tgz", - "integrity": "sha512-AB4DTykRw3HCOxovD1nPR16hllrVImeFp5VBV9/twj66lJ2nU75DP8FPL0/Jp4jj79JhTfG+pFI2MD02kWJ+fA==", + "node_modules/make-fetch-happen/node_modules/@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "optional": true, "engines": { - "node": ">=4.0.0" + "node": ">= 6" } }, - "node_modules/helmet-csp": { - "version": "2.9.4", - "resolved": "https://registry.npmjs.org/helmet-csp/-/helmet-csp-2.9.4.tgz", - "integrity": "sha512-qUgGx8+yk7Xl8XFEGI4MFu1oNmulxhQVTlV8HP8tV3tpfslCs30OZz/9uQqsWPvDISiu/NwrrCowsZBhFADYqg==", + "node_modules/make-fetch-happen/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "optional": true, "dependencies": { - "bowser": "^2.7.0", - "camelize": "1.0.0", - "content-security-policy-builder": "2.1.0", - "dasherize": "2.0.0" + "ms": "2.1.2" }, "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/hide-powered-by": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/hide-powered-by/-/hide-powered-by-1.1.0.tgz", - "integrity": "sha512-Io1zA2yOA1YJslkr+AJlWSf2yWFkKjvkcL9Ni1XSUqnGLr/qRQe2UI3Cn/J9MsJht7yEVCe0SscY1HgVMujbgg==", - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/hook-std": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/hook-std/-/hook-std-2.0.0.tgz", - "integrity": "sha512-zZ6T5WcuBMIUVh49iPQS9t977t7C0l7OtHrpeMb5uk48JdflRX0NSFvCekfYNmGQETnLq9W/isMyHl69kxGi8g==", - "engines": { - "node": ">=8" + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/hosted-git-info": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", - "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "node_modules/make-fetch-happen/node_modules/http-proxy-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "optional": true, "dependencies": { - "lru-cache": "^6.0.0" + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" }, "engines": { - "node": ">=10" + "node": ">= 6" } }, - "node_modules/hosted-git-info/node_modules/lru-cache": { + "node_modules/make-fetch-happen/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==", + "optional": true, "dependencies": { "yallist": "^4.0.0" }, @@ -8336,368 +7990,484 @@ "node": ">=10" } }, - "node_modules/hosted-git-info/node_modules/yallist": { + "node_modules/make-fetch-happen/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==", + "optional": true + }, + "node_modules/make-fetch-happen/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/hpkp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/hpkp/-/hpkp-2.0.0.tgz", - "integrity": "sha512-TaZpC6cO/k3DFsjfzz1LnOobbVSq+J+7WpJxrVtN4L+8+BPQj8iBDRB2Dx49613N+e7/+ZSQ9ra+xZm7Blf4wg==" + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "optional": true }, - "node_modules/hsts": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/hsts/-/hsts-2.2.0.tgz", - "integrity": "sha512-ToaTnQ2TbJkochoVcdXYm4HOCliNozlviNsg+X2XQLQvZNI/kCHR9rZxVYpJB3UPcHz80PgxRyWQ7PdU1r+VBQ==", - "dependencies": { - "depd": "2.0.0" + "node_modules/marked": { + "version": "9.1.6", + "resolved": "https://registry.npmjs.org/marked/-/marked-9.1.6.tgz", + "integrity": "sha512-jcByLnIFkd5gSXZmjNvS1TlmRhCXZjIzHYlaGkPlLIekG55JDR2Z4va9tZwCiP+/RDERiNhMOFu01xd6O5ct1Q==", + "bin": { + "marked": "bin/marked.js" }, "engines": { - "node": ">=4.0.0" + "node": ">= 16" } }, - "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-cache-semantics": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", - "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", - "optional": 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==", + "node_modules/marked-terminal": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/marked-terminal/-/marked-terminal-6.2.0.tgz", + "integrity": "sha512-ubWhwcBFHnXsjYNsu+Wndpg0zhY4CahSpPlA70PlO0rR9r2sZpkyU+rkCsOWH+KMEkx847UpALON+HWgxowFtw==", "dependencies": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" + "ansi-escapes": "^6.2.0", + "cardinal": "^2.1.1", + "chalk": "^5.3.0", + "cli-table3": "^0.6.3", + "node-emoji": "^2.1.3", + "supports-hyperlinks": "^3.0.0" }, "engines": { - "node": ">= 0.8" + "node": ">=16.0.0" + }, + "peerDependencies": { + "marked": ">=1 <12" } }, - "node_modules/http-errors/node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "node_modules/marked-terminal/node_modules/chalk": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", "engines": { - "node": ">= 0.8" + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/http-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", - "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "node_modules/matcher": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/matcher/-/matcher-3.0.0.tgz", + "integrity": "sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==", + "dev": true, "dependencies": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" + "escape-string-regexp": "^4.0.0" }, "engines": { - "node": ">= 6" + "node": ">=10" } }, - "node_modules/http-proxy-agent/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" - }, + "node_modules/matcher/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": ">=6.0" + "node": ">=10" }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/http-proxy-agent/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/http-reasons": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/http-reasons/-/http-reasons-0.1.0.tgz", - "integrity": "sha512-P6kYh0lKZ+y29T2Gqz+RlC9WBLhKe8kDmcJ+A+611jFfxdPsbMRQ5aNmFRM3lENqFkK+HTTL+tlQviAiv0AbLQ==", - "dev": true - }, - "node_modules/http-signature": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.3.6.tgz", - "integrity": "sha512-3adrsD6zqo4GsTqtO7FyrejHNv+NgiIfAfv68+jVlFmSr9OGy7zrxONceFRLKvnnZA5jbxQBX1u9PpB6Wi32Gw==", + "node_modules/md5": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz", + "integrity": "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==", "dev": true, "dependencies": { - "assert-plus": "^1.0.0", - "jsprim": "^2.0.2", - "sshpk": "^1.14.1" - }, + "charenc": "0.0.2", + "crypt": "0.0.2", + "is-buffer": "~1.1.6" + } + }, + "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.10" + "node": ">= 0.6" } }, - "node_modules/httpntlm": { - "version": "1.7.7", - "resolved": "https://registry.npmjs.org/httpntlm/-/httpntlm-1.7.7.tgz", - "integrity": "sha512-Pv2Rvrz8H0qv1Dne5mAdZ9JegG1uc6Vu5lwLflIY6s8RKHdZQbW39L4dYswSgqMDT0pkJILUTKjeyU0VPNRZjA==", + "node_modules/memoizee": { + "version": "0.4.15", + "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.15.tgz", + "integrity": "sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ==", "dev": true, "dependencies": { - "httpreq": ">=0.4.22", - "underscore": "~1.12.1" - }, + "d": "^1.0.1", + "es5-ext": "^0.10.53", + "es6-weak-map": "^2.0.3", + "event-emitter": "^0.3.5", + "is-promise": "^2.2.2", + "lru-queue": "^0.1.0", + "next-tick": "^1.1.0", + "timers-ext": "^0.1.7" + } + }, + "node_modules/meow": { + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/meow/-/meow-12.1.1.tgz", + "integrity": "sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==", "engines": { - "node": ">=0.8.0" + "node": ">=16.10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/httpntlm/node_modules/underscore": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.12.1.tgz", - "integrity": "sha512-hEQt0+ZLDVUMhebKxL4x1BTtDY7bavVofhZ9KZ4aI26X9SRaE+Y3m83XUL1UP2jn8ynjndwCCpEHdUG+9pP1Tw==", - "dev": 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/httpreq": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/httpreq/-/httpreq-0.5.2.tgz", - "integrity": "sha512-2Jm+x9WkExDOeFRrdBCBSpLPT5SokTcRHkunV3pjKmX/cx6av8zQ0WtHUMDrYb6O4hBFzNU6sxJEypvRUVYKnw==", - "dev": true, + "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==" + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", "engines": { - "node": ">= 6.15.1" + "node": ">= 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" - }, + "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": ">= 6" + "node": ">= 0.6" } }, - "node_modules/https-proxy-agent/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", "dependencies": { - "ms": "2.1.2" + "braces": "^3.0.2", + "picomatch": "^2.3.1" }, "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "node": ">=8.6" } }, - "node_modules/https-proxy-agent/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/mime": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/mime/-/mime-4.0.1.tgz", + "integrity": "sha512-5lZ5tyrIfliMXzFtkYyekWbtRXObT9OWa8IwQ5uxTBDHucNNwniRqo0yInflj+iYi5CBa6qxadGzGarDfuEOxA==", + "funding": [ + "https://github.com/sponsors/broofa" + ], + "bin": { + "mime": "bin/cli.js" + }, + "engines": { + "node": ">=16" + } }, - "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==", + "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": ">=10.17.0" + "node": ">= 0.6" } }, - "node_modules/humanize-ms": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", - "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", - "optional": true, + "node_modules/mime-format": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mime-format/-/mime-format-2.0.1.tgz", + "integrity": "sha512-XxU3ngPbEnrYnNbIX+lYSaYg0M01v6p2ntd2YaFksTu0vayaw5OJvbdRyWs07EYRlLED5qadUZ+xo+XhOvFhwg==", + "dev": true, "dependencies": { - "ms": "^2.0.0" + "charset": "^1.0.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==", + "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": { - "safer-buffer": ">= 2.1.2 < 3" + "mime-db": "1.52.0" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.6" } }, - "node_modules/ienoopen": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/ienoopen/-/ienoopen-1.1.0.tgz", - "integrity": "sha512-MFs36e/ca6ohEKtinTJ5VvAJ6oDRAYFdYXweUnGY9L9vcoqFOU4n2ZhmJ0C4z/cwGZ3YIQRSB3XZ1+ghZkY5NQ==", + "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==", "engines": { - "node": ">=4.0.0" + "node": ">=6" } }, - "node_modules/ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true, - "engines": { - "node": ">= 4" - } + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "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==", + "node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" + "brace-expansion": "^2.0.1" }, "engines": { - "node": ">=6" + "node": ">=16 || 14 >=14.17" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/import-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/import-from/-/import-from-4.0.0.tgz", - "integrity": "sha512-P9J71vT5nLlDeV8FHs5nNxaLbrpfAV5cF5srvbZfpwpcJoM/xZR3hiv+q+SAnuSmuGbXMWud063iIMx/V/EWZQ==", - "engines": { - "node": ">=12.2" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node_modules/minimatch/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/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "devOptional": true, - "engines": { - "node": ">=0.8.19" + "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/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==", + "node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dependencies": { + "yallist": "^4.0.0" + }, "engines": { "node": ">=8" } }, - "node_modules/infer-owner": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", - "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", - "optional": true + "node_modules/minipass-collect": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", + "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", + "optional": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } }, - "node_modules/inflection": { - "version": "1.13.4", - "resolved": "https://registry.npmjs.org/inflection/-/inflection-1.13.4.tgz", - "integrity": "sha512-6I/HUDeYFfuNCVS3td055BaXBwKYuzw7K3ExVMStBowKo9oOAMJIXIHvdyR3iboTCp1b+1i5DSkIZTcwIktuDw==", - "engines": [ - "node >= 0.4.0" - ] + "node_modules/minipass-fetch": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.4.1.tgz", + "integrity": "sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==", + "optional": true, + "dependencies": { + "minipass": "^3.1.0", + "minipass-sized": "^1.0.3", + "minizlib": "^2.0.0" + }, + "engines": { + "node": ">=8" + }, + "optionalDependencies": { + "encoding": "^0.1.12" + } }, - "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==", + "node_modules/minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "optional": true, "dependencies": { - "once": "^1.3.0", - "wrappy": "1" + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" } }, - "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/minipass-pipeline": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", + "optional": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } }, - "node_modules/ini": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", - "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", + "node_modules/minipass-sized": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", + "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", + "optional": true, + "dependencies": { + "minipass": "^3.0.0" + }, "engines": { - "node": ">=10" + "node": ">=8" } }, - "node_modules/inquirer": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz", - "integrity": "sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==", - "dev": true, + "node_modules/minipass/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/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", "dependencies": { - "ansi-escapes": "^3.2.0", - "chalk": "^2.4.2", - "cli-cursor": "^2.1.0", - "cli-width": "^2.0.0", - "external-editor": "^3.0.3", - "figures": "^2.0.0", - "lodash": "^4.17.12", - "mute-stream": "0.0.7", - "run-async": "^2.2.0", - "rxjs": "^6.4.0", - "string-width": "^2.1.0", - "strip-ansi": "^5.1.0", - "through": "^2.3.6" + "minipass": "^3.0.0", + "yallist": "^4.0.0" }, "engines": { - "node": ">=6.0.0" + "node": ">= 8" } }, - "node_modules/inquirer/node_modules/ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "node_modules/minizlib/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/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/mocha": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.2.0.tgz", + "integrity": "sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==", "dev": true, + "dependencies": { + "ansi-colors": "4.1.1", + "browser-stdout": "1.3.1", + "chokidar": "3.5.3", + "debug": "4.3.4", + "diff": "5.0.0", + "escape-string-regexp": "4.0.0", + "find-up": "5.0.0", + "glob": "7.2.0", + "he": "1.2.0", + "js-yaml": "4.1.0", + "log-symbols": "4.1.0", + "minimatch": "5.0.1", + "ms": "2.1.3", + "nanoid": "3.3.3", + "serialize-javascript": "6.0.0", + "strip-json-comments": "3.1.1", + "supports-color": "8.1.1", + "workerpool": "6.2.1", + "yargs": "16.2.0", + "yargs-parser": "20.2.4", + "yargs-unparser": "2.0.0" + }, + "bin": { + "_mocha": "bin/_mocha", + "mocha": "bin/mocha.js" + }, "engines": { - "node": ">=6" + "node": ">= 14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mochajs" } }, - "node_modules/inquirer/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "node_modules/mocha-junit-reporter": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/mocha-junit-reporter/-/mocha-junit-reporter-2.2.1.tgz", + "integrity": "sha512-iDn2tlKHn8Vh8o4nCzcUVW4q7iXp7cC4EB78N0cDHIobLymyHNwe0XG8HEHHjc3hJlXm0Vy6zcrxaIhnI2fWmw==", "dev": true, "dependencies": { - "ansi-regex": "^4.1.0" + "debug": "^4.3.4", + "md5": "^2.3.0", + "mkdirp": "^3.0.0", + "strip-ansi": "^6.0.1", + "xml": "^1.0.1" }, - "engines": { - "node": ">=6" + "peerDependencies": { + "mocha": ">=2.2.5" } }, - "node_modules/internal-slot": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", - "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", + "node_modules/mocha-junit-reporter/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, "dependencies": { - "get-intrinsic": "^1.2.0", - "has": "^1.0.3", - "side-channel": "^1.0.4" + "ms": "2.1.2" }, "engines": { - "node": ">= 0.4" + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/into-stream": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-6.0.0.tgz", - "integrity": "sha512-XHbaOAvP+uFKUFsOgoNPRjLkwB+I22JFPFe5OjTkQ0nwgj6+pSjb4NmB6VMxaPshLiOf+zcpOCBQuLwC1KHhZA==", + "node_modules/mocha-junit-reporter/node_modules/mkdirp": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz", + "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==", + "dev": true, + "bin": { + "mkdirp": "dist/cjs/src/bin.js" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/mocha-junit-reporter/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/mocha/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, "dependencies": { - "from2": "^2.3.0", - "p-is-promise": "^3.0.0" + "ms": "2.1.2" }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/mocha/node_modules/debug/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/mocha/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" }, @@ -8705,2688 +8475,3352 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/ip": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", - "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==", - "optional": true - }, - "node_modules/ip-regex": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", - "integrity": "sha512-58yWmlHpp7VYfcdTwMTvwMmqx/Elfxjd9RXTDyMsbL7lLWmhMylLEqiYVLKuLzOZqVgiWXD9MfR62Vv89VRxkw==", + "node_modules/mocha/node_modules/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, "engines": { - "node": ">=4" + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "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==", + "node_modules/mocha/node_modules/glob/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": ">= 0.10" + "node": "*" } }, - "node_modules/is-admin": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-admin/-/is-admin-3.0.0.tgz", - "integrity": "sha512-wOa3CXFJAu8BZ2BDtG9xYOOrsq6oiSvc2jFPy4X/HINx5bmJUcW8e+apItVbU2E7GIfBVaFVO7Zit4oAWtTJcw==", + "node_modules/mocha/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/mocha/node_modules/minimatch": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", + "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/mocha/node_modules/minimatch/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==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/mocha/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==", + "dev": true + }, + "node_modules/mocha/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/moment": { + "version": "2.30.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz", + "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==", + "engines": { + "node": "*" + } + }, + "node_modules/moment-timezone": { + "version": "0.5.44", + "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.44.tgz", + "integrity": "sha512-nv3YpzI/8lkQn0U6RkLd+f0W/zy/JnoR5/EyPz/dNkPTBjA2jNLCVxaiQ8QpeLymhSZvX0wCL5s27NQWdOPwAw==", + "dependencies": { + "moment": "^2.29.4" + }, + "engines": { + "node": "*" + } + }, + "node_modules/morgan": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.10.0.tgz", + "integrity": "sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==", + "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/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==", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/multer": { + "version": "1.4.5-lts.1", + "resolved": "https://registry.npmjs.org/multer/-/multer-1.4.5-lts.1.tgz", + "integrity": "sha512-ywPWvcDMeH+z9gQq5qYHCCy+ethsk4goepZ45GLD63fOu0YcNecQxi64nDs3qluZB+murG3/D4dJ7+dGctcCQQ==", + "dependencies": { + "append-field": "^1.0.0", + "busboy": "^1.0.0", + "concat-stream": "^1.5.2", + "mkdirp": "^0.5.4", + "object-assign": "^4.1.1", + "type-is": "^1.6.4", + "xtend": "^4.0.0" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/multer/node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nanoid": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", + "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", + "dev": true, + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "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/nconf": { + "version": "0.12.1", + "resolved": "https://registry.npmjs.org/nconf/-/nconf-0.12.1.tgz", + "integrity": "sha512-p2cfF+B3XXacQdswUYWZ0w6Vld0832A/tuqjLBu3H1sfUcby4N2oVbGhyuCkZv+t3iY3aiFEj7gZGqax9Q2c1w==", + "dependencies": { + "async": "^3.0.0", + "ini": "^2.0.0", + "secure-keys": "^1.0.0", + "yargs": "^16.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "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/nerf-dart": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/nerf-dart/-/nerf-dart-1.0.0.tgz", + "integrity": "sha512-EZSPZB70jiVsivaBLYDCyntd5eH8NTSMOn3rB+HxwdmKThGELLdYv8qVIMWvZEFy9w8ZZpW9h9OB32l1rGtj7g==" + }, + "node_modules/newman": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/newman/-/newman-6.1.0.tgz", + "integrity": "sha512-0A/dSVnGvmnNv6RatCNMIYnSfMqkUjBLMac/Lvo+C0Zr8BQbweBuEw+zNR1kgPiBwUQmYVkRvGWJwI/cE3N2qA==", + "dev": true, + "dependencies": { + "@postman/tough-cookie": "4.1.3-postman.1", + "async": "3.2.5", + "chardet": "2.0.0", + "cli-progress": "3.12.0", + "cli-table3": "0.6.3", + "colors": "1.4.0", + "commander": "11.1.0", + "csv-parse": "4.16.3", + "filesize": "10.1.0", + "liquid-json": "0.3.1", + "lodash": "4.17.21", + "mkdirp": "3.0.1", + "postman-collection": "4.3.0", + "postman-collection-transformer": "4.1.8", + "postman-request": "2.88.1-postman.33", + "postman-runtime": "7.36.1", + "pretty-ms": "7.0.1", + "semver": "7.5.4", + "serialised-error": "1.1.3", + "word-wrap": "1.2.5", + "xmlbuilder": "15.1.1" + }, + "bin": { + "newman": "bin/newman.js" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/newman-reporter-junitfull": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/newman-reporter-junitfull/-/newman-reporter-junitfull-1.1.1.tgz", + "integrity": "sha512-ET5rU1qkeJ5yvFxcKQFkqGxWia50kdnufm1uzyeNYlUg6T+k07AvOS0mfp/Ejr0njnsiPfFLb9kC48F8pafq9A==", + "dev": true, + "dependencies": { + "lodash": "^4.17.10", + "moment": "^2.22.2", + "xmlbuilder": "^10.0.0" + }, + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "newman": ">=4" + } + }, + "node_modules/newman-reporter-junitfull/node_modules/xmlbuilder": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-10.1.1.tgz", + "integrity": "sha512-OyzrcFLL/nb6fMGHbiRDuPup9ljBycsdCypwuyg5AAHvyWzGfChJpCXMG88AGTIMFhGZ9RccFN1e6lhg3hkwKg==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/newman/node_modules/mkdirp": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz", + "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==", + "dev": true, + "bin": { + "mkdirp": "dist/cjs/src/bin.js" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/next-tick": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", + "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==", + "dev": true + }, + "node_modules/nise": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/nise/-/nise-5.1.5.tgz", + "integrity": "sha512-VJuPIfUFaXNRzETTQEEItTOP8Y171ijr+JLq42wHes3DiryR8vT+1TXQW/Rx8JNUhyYYWyIvjXTU6dOhJcs9Nw==", + "dev": true, + "dependencies": { + "@sinonjs/commons": "^2.0.0", + "@sinonjs/fake-timers": "^10.0.2", + "@sinonjs/text-encoding": "^0.7.1", + "just-extend": "^4.0.2", + "path-to-regexp": "^1.7.0" + } + }, + "node_modules/nise/node_modules/@sinonjs/commons": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-2.0.0.tgz", + "integrity": "sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg==", + "dev": true, + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/nise/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/nise/node_modules/@sinonjs/fake-timers/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/nise/node_modules/path-to-regexp": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", + "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", + "dev": true, + "dependencies": { + "isarray": "0.0.1" + } + }, + "node_modules/node-addon-api": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz", + "integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==" + }, + "node_modules/node-emoji": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-2.1.3.tgz", + "integrity": "sha512-E2WEOVsgs7O16zsURJ/eH8BqhF029wGpEOnv7Urwdo2wmQanOACwJQh0devF9D9RhoZru0+9JXIS0dBXIAz+lA==", + "dependencies": { + "@sindresorhus/is": "^4.6.0", + "char-regex": "^1.0.2", + "emojilib": "^2.4.0", + "skin-tone": "^2.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/node-fetch": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.9.tgz", + "integrity": "sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==", + "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-forge": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", + "dev": true, + "engines": { + "node": ">= 6.13.0" + } + }, + "node_modules/node-gyp": { + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-8.4.1.tgz", + "integrity": "sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w==", + "optional": true, + "dependencies": { + "env-paths": "^2.2.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^9.1.0", + "nopt": "^5.0.0", + "npmlog": "^6.0.0", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.2", + "which": "^2.0.2" + }, + "bin": { + "node-gyp": "bin/node-gyp.js" + }, + "engines": { + "node": ">= 10.12.0" + } + }, + "node_modules/node-gyp/node_modules/are-we-there-yet": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz", + "integrity": "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==", + "optional": true, + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/node-gyp/node_modules/gauge": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", + "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", + "optional": true, + "dependencies": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.3", + "console-control-strings": "^1.1.0", + "has-unicode": "^2.0.1", + "signal-exit": "^3.0.7", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.5" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/node-gyp/node_modules/nopt": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", + "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "optional": true, + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/node-gyp/node_modules/npmlog": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", + "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", + "optional": true, + "dependencies": { + "are-we-there-yet": "^3.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^4.0.3", + "set-blocking": "^2.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/node-gyp/node_modules/readable-stream": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.1.tgz", + "integrity": "sha512-+rQmrWMYGA90yenhTYsLWAsLsqVC8osOw6PKE1HDYiO0gdPeKe/xDHNzIAIn4C91YQ6oenEhfYqqc1883qHbjQ==", + "optional": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/node-gyp/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==", + "optional": true, + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/node-oauth1": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/node-oauth1/-/node-oauth1-1.3.0.tgz", + "integrity": "sha512-0yggixNfrA1KcBwvh/Hy2xAS1Wfs9dcg6TdFf2zN7gilcAigMdrtZ4ybrBSXBgLvGDw9V1p2MRnGBMq7XjTWLg==", + "dev": true + }, + "node_modules/node-preload": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/node-preload/-/node-preload-0.2.1.tgz", + "integrity": "sha512-RM5oyBy45cLEoHqCeh+MNuFAxO0vTFBLskvQbOKnEE7YTTSN4tbN8QWDIPQ6L+WvKsB/qLEGpYe2ZZ9d4W9OIQ==", + "dev": true, + "dependencies": { + "process-on-spawn": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/node-releases": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.10.tgz", + "integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==", + "dev": true + }, + "node_modules/nodemailer": { + "version": "6.9.8", + "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.9.8.tgz", + "integrity": "sha512-cfrYUk16e67Ks051i4CntM9kshRYei1/o/Gi8K1d+R34OIs21xdFnW7Pt7EucmVKA0LKtqUGNcjMZ7ehjl49mQ==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/nodemailer-fetch": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/nodemailer-fetch/-/nodemailer-fetch-1.6.0.tgz", + "integrity": "sha512-P7S5CEVGAmDrrpn351aXOLYs1R/7fD5NamfMCHyi6WIkbjS2eeZUB/TkuvpOQr0bvRZicVqo59+8wbhR3yrJbQ==" + }, + "node_modules/nodemailer-shared": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/nodemailer-shared/-/nodemailer-shared-1.1.0.tgz", + "integrity": "sha512-68xW5LSyPWv8R0GLm6veAvm7E+XFXkVgvE3FW0FGxNMMZqMkPFeGDVALfR1DPdSfcoO36PnW7q5AAOgFImEZGg==", + "dependencies": { + "nodemailer-fetch": "1.6.0" + } + }, + "node_modules/nodemailer-smtp-transport": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/nodemailer-smtp-transport/-/nodemailer-smtp-transport-2.7.4.tgz", + "integrity": "sha512-1e86YhJ633OZWk3OHWS5TpuoYXG/LtY2/RzNiB5+EkFifDdqHCNHBnExd5cobx0ZSHJLNGM8EKnDuHRFIjFi6Q==", + "dependencies": { + "nodemailer-shared": "1.1.0", + "nodemailer-wellknown": "0.1.10", + "smtp-connection": "2.12.0" + } + }, + "node_modules/nodemailer-wellknown": { + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/nodemailer-wellknown/-/nodemailer-wellknown-0.1.10.tgz", + "integrity": "sha512-/VV4mjAEjfm2fn0loUvrpjvugw5rgurNjPO4WU24CuVSoeumsyLOTgaEWG8WoGdPxh1biOAp5JxDoy1hlA2zsw==" + }, + "node_modules/nopt": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz", + "integrity": "sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==", + "dev": true, + "dependencies": { + "abbrev": "^1.0.0" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/normalize-package-data": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.0.tgz", + "integrity": "sha512-UL7ELRVxYBHBgYEtZCXjxuD5vPxnmvMGq0jp/dGPKKrN7tfsBh2IY7TlJ15WWwdjRWD3RJbnsygUurTK3xkPkg==", + "dependencies": { + "hosted-git-info": "^7.0.0", + "is-core-module": "^2.8.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "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/normalize-url": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.0.tgz", + "integrity": "sha512-uVFpKhj5MheNBJRTiMZ9pE/7hD1QTeEvugSJW/OmLzAp78PB5O6adfMNTvmfKhXBkvCzC+rqifWcVYpGFwTjnw==", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm": { + "version": "10.2.5", + "resolved": "https://registry.npmjs.org/npm/-/npm-10.2.5.tgz", + "integrity": "sha512-lXdZ7titEN8CH5YJk9C/aYRU9JeDxQ4d8rwIIDsvH3SMjLjHTukB2CFstMiB30zXs4vCrPN2WH6cDq1yHBeJAw==", + "bundleDependencies": [ + "@isaacs/string-locale-compare", + "@npmcli/arborist", + "@npmcli/config", + "@npmcli/fs", + "@npmcli/map-workspaces", + "@npmcli/package-json", + "@npmcli/promise-spawn", + "@npmcli/run-script", + "@sigstore/tuf", + "abbrev", + "archy", + "cacache", + "chalk", + "ci-info", + "cli-columns", + "cli-table3", + "columnify", + "fastest-levenshtein", + "fs-minipass", + "glob", + "graceful-fs", + "hosted-git-info", + "ini", + "init-package-json", + "is-cidr", + "json-parse-even-better-errors", + "libnpmaccess", + "libnpmdiff", + "libnpmexec", + "libnpmfund", + "libnpmhook", + "libnpmorg", + "libnpmpack", + "libnpmpublish", + "libnpmsearch", + "libnpmteam", + "libnpmversion", + "make-fetch-happen", + "minimatch", + "minipass", + "minipass-pipeline", + "ms", + "node-gyp", + "nopt", + "normalize-package-data", + "npm-audit-report", + "npm-install-checks", + "npm-package-arg", + "npm-pick-manifest", + "npm-profile", + "npm-registry-fetch", + "npm-user-validate", + "npmlog", + "p-map", + "pacote", + "parse-conflict-json", + "proc-log", + "qrcode-terminal", + "read", + "semver", + "spdx-expression-parse", + "ssri", + "strip-ansi", + "supports-color", + "tar", + "text-table", + "tiny-relative-date", + "treeverse", + "validate-npm-package-name", + "which", + "write-file-atomic" + ], + "dependencies": { + "@isaacs/string-locale-compare": "^1.1.0", + "@npmcli/arborist": "^7.2.1", + "@npmcli/config": "^8.0.2", + "@npmcli/fs": "^3.1.0", + "@npmcli/map-workspaces": "^3.0.4", + "@npmcli/package-json": "^5.0.0", + "@npmcli/promise-spawn": "^7.0.0", + "@npmcli/run-script": "^7.0.2", + "@sigstore/tuf": "^2.2.0", + "abbrev": "^2.0.0", + "archy": "~1.0.0", + "cacache": "^18.0.1", + "chalk": "^5.3.0", + "ci-info": "^4.0.0", + "cli-columns": "^4.0.0", + "cli-table3": "^0.6.3", + "columnify": "^1.6.0", + "fastest-levenshtein": "^1.0.16", + "fs-minipass": "^3.0.3", + "glob": "^10.3.10", + "graceful-fs": "^4.2.11", + "hosted-git-info": "^7.0.1", + "ini": "^4.1.1", + "init-package-json": "^6.0.0", + "is-cidr": "^5.0.3", + "json-parse-even-better-errors": "^3.0.1", + "libnpmaccess": "^8.0.1", + "libnpmdiff": "^6.0.3", + "libnpmexec": "^7.0.4", + "libnpmfund": "^5.0.1", + "libnpmhook": "^10.0.0", + "libnpmorg": "^6.0.1", + "libnpmpack": "^6.0.3", + "libnpmpublish": "^9.0.2", + "libnpmsearch": "^7.0.0", + "libnpmteam": "^6.0.0", + "libnpmversion": "^5.0.1", + "make-fetch-happen": "^13.0.0", + "minimatch": "^9.0.3", + "minipass": "^7.0.4", + "minipass-pipeline": "^1.2.4", + "ms": "^2.1.2", + "node-gyp": "^10.0.1", + "nopt": "^7.2.0", + "normalize-package-data": "^6.0.0", + "npm-audit-report": "^5.0.0", + "npm-install-checks": "^6.3.0", + "npm-package-arg": "^11.0.1", + "npm-pick-manifest": "^9.0.0", + "npm-profile": "^9.0.0", + "npm-registry-fetch": "^16.1.0", + "npm-user-validate": "^2.0.0", + "npmlog": "^7.0.1", + "p-map": "^4.0.0", + "pacote": "^17.0.5", + "parse-conflict-json": "^3.0.1", + "proc-log": "^3.0.0", + "qrcode-terminal": "^0.12.0", + "read": "^2.1.0", + "semver": "^7.5.4", + "spdx-expression-parse": "^3.0.1", + "ssri": "^10.0.5", + "strip-ansi": "^7.1.0", + "supports-color": "^9.4.0", + "tar": "^6.2.0", + "text-table": "~0.2.0", + "tiny-relative-date": "^1.3.0", + "treeverse": "^3.0.0", + "validate-npm-package-name": "^5.0.0", + "which": "^4.0.0", + "write-file-atomic": "^5.0.1" + }, + "bin": { + "npm": "bin/npm-cli.js", + "npx": "bin/npx-cli.js" + }, + "engines": { + "node": "^18.17.0 || >=20.5.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==", "dependencies": { - "execa": "^1.0.0" + "path-key": "^3.0.0" }, "engines": { "node": ">=8" } }, - "node_modules/is-array-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.1.tgz", - "integrity": "sha512-ASfLknmY8Xa2XtB4wmbz13Wu202baeA18cJBCeCy0wXUHZF0IPyVEXqKEcd+t2fNSLLL1vC6k7lxZEojNbISXQ==", - "dev": true, + "node_modules/npm/node_modules/@colors/colors": { + "version": "1.5.0", + "inBundle": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/npm/node_modules/@isaacs/cliui": { + "version": "8.0.2", + "inBundle": true, + "license": "ISC", "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", - "is-typed-array": "^1.1.10" + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=12" } }, - "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/npm/node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "inBundle": true, + "license": "MIT" }, - "node_modules/is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", - "dev": true, + "node_modules/npm/node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "inBundle": true, + "license": "MIT", "dependencies": { - "has-bigints": "^1.0.1" + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "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, + "node_modules/npm/node_modules/@isaacs/string-locale-compare": { + "version": "1.1.0", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/@npmcli/agent": { + "version": "2.2.0", + "inBundle": true, + "license": "ISC", "dependencies": { - "binary-extensions": "^2.0.0" + "agent-base": "^7.1.0", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.1", + "lru-cache": "^10.0.1", + "socks-proxy-agent": "^8.0.1" }, "engines": { - "node": ">=8" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", - "dev": true, + "node_modules/npm/node_modules/@npmcli/arborist": { + "version": "7.2.2", + "inBundle": true, + "license": "ISC", "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" + "@isaacs/string-locale-compare": "^1.1.0", + "@npmcli/fs": "^3.1.0", + "@npmcli/installed-package-contents": "^2.0.2", + "@npmcli/map-workspaces": "^3.0.2", + "@npmcli/metavuln-calculator": "^7.0.0", + "@npmcli/name-from-folder": "^2.0.0", + "@npmcli/node-gyp": "^3.0.0", + "@npmcli/package-json": "^5.0.0", + "@npmcli/query": "^3.0.1", + "@npmcli/run-script": "^7.0.2", + "bin-links": "^4.0.1", + "cacache": "^18.0.0", + "common-ancestor-path": "^1.0.1", + "hosted-git-info": "^7.0.1", + "json-parse-even-better-errors": "^3.0.0", + "json-stringify-nice": "^1.1.4", + "minimatch": "^9.0.0", + "nopt": "^7.0.0", + "npm-install-checks": "^6.2.0", + "npm-package-arg": "^11.0.1", + "npm-pick-manifest": "^9.0.0", + "npm-registry-fetch": "^16.0.0", + "npmlog": "^7.0.1", + "pacote": "^17.0.4", + "parse-conflict-json": "^3.0.0", + "proc-log": "^3.0.0", + "promise-all-reject-late": "^1.0.0", + "promise-call-limit": "^1.0.2", + "read-package-json-fast": "^3.0.2", + "semver": "^7.3.7", + "ssri": "^10.0.5", + "treeverse": "^3.0.0", + "walk-up-path": "^3.0.1" }, - "engines": { - "node": ">= 0.4" + "bin": { + "arborist": "bin/index.js" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "dev": true, - "engines": { - "node": ">= 0.4" + "node_modules/npm/node_modules/@npmcli/config": { + "version": "8.0.3", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/map-workspaces": "^3.0.2", + "ci-info": "^4.0.0", + "ini": "^4.1.0", + "nopt": "^7.0.0", + "proc-log": "^3.0.0", + "read-package-json-fast": "^3.0.2", + "semver": "^7.3.5", + "walk-up-path": "^3.0.1" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/is-core-module": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", - "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", + "node_modules/npm/node_modules/@npmcli/disparity-colors": { + "version": "3.0.0", + "inBundle": true, + "license": "ISC", "dependencies": { - "has": "^1.0.3" + "ansi-styles": "^4.3.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "dev": true, + "node_modules/npm/node_modules/@npmcli/disparity-colors/node_modules/ansi-styles": { + "version": "4.3.0", + "inBundle": true, + "license": "MIT", "dependencies": { - "has-tostringtag": "^1.0.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">= 0.4" + "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/is-elevated": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-elevated/-/is-elevated-3.0.0.tgz", - "integrity": "sha512-wjcp6RkouU9jpg55zERl+BglvV5j4jx5c/EMvQ+d12j/+nIEenNWPu+qc0tCg3JkLodbKZMg1qhJzEwG4qjclg==", + "node_modules/npm/node_modules/@npmcli/fs": { + "version": "3.1.0", + "inBundle": true, + "license": "ISC", "dependencies": { - "is-admin": "^3.0.0", - "is-root": "^2.1.0" + "semver": "^7.3.5" }, "engines": { - "node": ">=8" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "node_modules/npm/node_modules/@npmcli/git": { + "version": "5.0.3", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/promise-spawn": "^7.0.0", + "lru-cache": "^10.0.1", + "npm-pick-manifest": "^9.0.0", + "proc-log": "^3.0.0", + "promise-inflight": "^1.0.1", + "promise-retry": "^2.0.1", + "semver": "^7.3.5", + "which": "^4.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", + "node_modules/npm/node_modules/@npmcli/installed-package-contents": { + "version": "2.0.2", + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-bundled": "^3.0.0", + "npm-normalize-package-bin": "^3.0.0" + }, + "bin": { + "installed-package-contents": "lib/index.js" + }, "engines": { - "node": ">=4" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "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==", + "node_modules/npm/node_modules/@npmcli/map-workspaces": { + "version": "3.0.4", + "inBundle": true, + "license": "ISC", "dependencies": { - "is-extglob": "^2.1.1" + "@npmcli/name-from-folder": "^2.0.0", + "glob": "^10.2.2", + "minimatch": "^9.0.0", + "read-package-json-fast": "^3.0.0" }, "engines": { - "node": ">=0.10.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/is-ip": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-ip/-/is-ip-2.0.0.tgz", - "integrity": "sha512-9MTn0dteHETtyUx8pxqMwg5hMBi3pvlyglJ+b79KOCca0po23337LbVV2Hl4xmMvfw++ljnO0/+5G6G+0Szh6g==", - "dev": true, + "node_modules/npm/node_modules/@npmcli/metavuln-calculator": { + "version": "7.0.0", + "inBundle": true, + "license": "ISC", "dependencies": { - "ip-regex": "^2.0.0" + "cacache": "^18.0.0", + "json-parse-even-better-errors": "^3.0.0", + "pacote": "^17.0.0", + "semver": "^7.3.5" }, "engines": { - "node": ">=4" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/is-lambda": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", - "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", - "optional": true - }, - "node_modules/is-negative-zero": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", - "dev": true, + "node_modules/npm/node_modules/@npmcli/name-from-folder": { + "version": "2.0.0", + "inBundle": true, + "license": "ISC", "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": "^14.17.0 || ^16.13.0 || >=18.0.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==", + "node_modules/npm/node_modules/@npmcli/node-gyp": { + "version": "3.0.0", + "inBundle": true, + "license": "ISC", "engines": { - "node": ">=0.12.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/is-number-like": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/is-number-like/-/is-number-like-1.0.8.tgz", - "integrity": "sha512-6rZi3ezCyFcn5L71ywzz2bS5b2Igl1En3eTlZlvKjpz1n3IZLAYMbKYAIQgFmEu0GENg92ziU/faEOA/aixjbA==", + "node_modules/npm/node_modules/@npmcli/package-json": { + "version": "5.0.0", + "inBundle": true, + "license": "ISC", "dependencies": { - "lodash.isfinite": "^3.3.2" + "@npmcli/git": "^5.0.0", + "glob": "^10.2.2", + "hosted-git-info": "^7.0.0", + "json-parse-even-better-errors": "^3.0.0", + "normalize-package-data": "^6.0.0", + "proc-log": "^3.0.0", + "semver": "^7.5.3" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/is-number-object": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", - "dev": true, + "node_modules/npm/node_modules/@npmcli/promise-spawn": { + "version": "7.0.0", + "inBundle": true, + "license": "ISC", "dependencies": { - "has-tostringtag": "^1.0.0" + "which": "^4.0.0" }, "engines": { - "node": ">= 0.4" + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@npmcli/query": { + "version": "3.0.1", + "inBundle": true, + "license": "ISC", + "dependencies": { + "postcss-selector-parser": "^6.0.10" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/is-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", - "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "node_modules/npm/node_modules/@npmcli/run-script": { + "version": "7.0.2", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/node-gyp": "^3.0.0", + "@npmcli/promise-spawn": "^7.0.0", + "node-gyp": "^10.0.0", + "read-package-json-fast": "^3.0.0", + "which": "^4.0.0" + }, "engines": { - "node": ">=8" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/is-path-cwd": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", - "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", + "node_modules/npm/node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "inBundle": true, + "license": "MIT", + "optional": true, "engines": { - "node": ">=6" + "node": ">=14" } }, - "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==", + "node_modules/npm/node_modules/@sigstore/bundle": { + "version": "2.1.0", + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "@sigstore/protobuf-specs": "^0.2.1" + }, "engines": { - "node": ">=8" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/is-plain-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", + "node_modules/npm/node_modules/@sigstore/protobuf-specs": { + "version": "0.2.1", + "inBundle": true, + "license": "Apache-2.0", "engines": { - "node": ">=0.10.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "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==", + "node_modules/npm/node_modules/@sigstore/sign": { + "version": "2.2.0", + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "@sigstore/bundle": "^2.1.0", + "@sigstore/protobuf-specs": "^0.2.1", + "make-fetch-happen": "^13.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/is-promise": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", - "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==", - "dev": true - }, - "node_modules/is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "dev": true, + "node_modules/npm/node_modules/@sigstore/tuf": { + "version": "2.2.0", + "inBundle": true, + "license": "Apache-2.0", "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" + "@sigstore/protobuf-specs": "^0.2.1", + "tuf-js": "^2.1.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/is-resolvable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", - "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", - "dev": true - }, - "node_modules/is-root": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-root/-/is-root-2.1.0.tgz", - "integrity": "sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg==", + "node_modules/npm/node_modules/@tufjs/canonical-json": { + "version": "2.0.0", + "inBundle": true, + "license": "MIT", "engines": { - "node": ">=6" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", - "dev": true, + "node_modules/npm/node_modules/@tufjs/models": { + "version": "2.0.0", + "inBundle": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2" + "@tufjs/canonical-json": "2.0.0", + "minimatch": "^9.0.3" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", + "node_modules/npm/node_modules/abbrev": { + "version": "2.0.0", + "inBundle": true, + "license": "ISC", "engines": { - "node": ">=0.10.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", - "dev": true, + "node_modules/npm/node_modules/abort-controller": { + "version": "3.0.0", + "inBundle": true, + "license": "MIT", "dependencies": { - "has-tostringtag": "^1.0.0" + "event-target-shim": "^5.0.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=6.5" } }, - "node_modules/is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "dev": true, + "node_modules/npm/node_modules/agent-base": { + "version": "7.1.0", + "inBundle": true, + "license": "MIT", "dependencies": { - "has-symbols": "^1.0.2" + "debug": "^4.3.4" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">= 14" } }, - "node_modules/is-text-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-1.0.1.tgz", - "integrity": "sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w==", + "node_modules/npm/node_modules/aggregate-error": { + "version": "3.1.0", + "inBundle": true, + "license": "MIT", "dependencies": { - "text-extensions": "^1.0.0" + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/is-typed-array": { - "version": "1.1.10", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", - "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", - "dev": true, - "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0" + "node_modules/npm/node_modules/ansi-regex": { + "version": "6.0.1", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=12" }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/npm/node_modules/ansi-styles": { + "version": "6.2.1", + "inBundle": true, + "license": "MIT", "engines": { - "node": ">= 0.4" + "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/is-typedarray": { + "node_modules/npm/node_modules/aproba": { + "version": "2.0.0", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/archy": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" + "inBundle": true, + "license": "MIT" }, - "node_modules/is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "dev": true, - "engines": { - "node": ">=10" + "node_modules/npm/node_modules/are-we-there-yet": { + "version": "4.0.1", + "inBundle": true, + "license": "ISC", + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^4.1.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/is-weakref": { + "node_modules/npm/node_modules/balanced-match": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", - "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/base64-js": { + "version": "1.5.1", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/bin-links": { + "version": "4.0.3", + "inBundle": true, + "license": "ISC", "dependencies": { - "call-bind": "^1.0.2" + "cmd-shim": "^6.0.0", + "npm-normalize-package-bin": "^3.0.0", + "read-cmd-shim": "^4.0.0", + "write-file-atomic": "^5.0.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "dev": true, + "node_modules/npm/node_modules/binary-extensions": { + "version": "2.2.0", + "inBundle": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==" + "node_modules/npm/node_modules/brace-expansion": { + "version": "2.0.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + "node_modules/npm/node_modules/buffer": { + "version": "6.0.3", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "inBundle": true, + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } }, - "node_modules/isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==" + "node_modules/npm/node_modules/builtins": { + "version": "5.0.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "semver": "^7.0.0" + } }, - "node_modules/issue-parser": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/issue-parser/-/issue-parser-6.0.0.tgz", - "integrity": "sha512-zKa/Dxq2lGsBIXQ7CUZWTHfvxPC2ej0KfO7fIPqLlHB9J2hJ7rGhZ5rilhuufylr4RXYPzJUeFjKxz305OsNlA==", + "node_modules/npm/node_modules/cacache": { + "version": "18.0.1", + "inBundle": true, + "license": "ISC", "dependencies": { - "lodash.capitalize": "^4.2.1", - "lodash.escaperegexp": "^4.1.2", - "lodash.isplainobject": "^4.0.6", - "lodash.isstring": "^4.0.1", - "lodash.uniqby": "^4.7.0" + "@npmcli/fs": "^3.1.0", + "fs-minipass": "^3.0.0", + "glob": "^10.2.2", + "lru-cache": "^10.0.1", + "minipass": "^7.0.3", + "minipass-collect": "^2.0.1", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "p-map": "^4.0.0", + "ssri": "^10.0.0", + "tar": "^6.1.11", + "unique-filename": "^3.0.0" }, "engines": { - "node": ">=10.13" + "node": "^16.14.0 || >=18.0.0" } }, - "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, + "node_modules/npm/node_modules/chalk": { + "version": "5.3.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/npm/node_modules/chownr": { + "version": "2.0.0", + "inBundle": true, + "license": "ISC", "engines": { - "node": ">=8" + "node": ">=10" } }, - "node_modules/istanbul-lib-hook": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-3.0.0.tgz", - "integrity": "sha512-Pt/uge1Q9s+5VAZ+pCo16TYMWPBIl+oaNIjgLQxcX0itS6ueeaA+pEfThZpH8WxhFgCiEb8sAJY6MdUKgiIWaQ==", - "dev": true, - "dependencies": { - "append-transform": "^2.0.0" - }, + "node_modules/npm/node_modules/ci-info": { + "version": "4.0.0", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "inBundle": true, + "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/istanbul-lib-instrument": { + "node_modules/npm/node_modules/cidr-regex": { "version": "4.0.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", - "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", - "dev": true, + "inBundle": true, + "license": "BSD-2-Clause", "dependencies": { - "@babel/core": "^7.7.5", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.0.0", - "semver": "^6.3.0" + "ip-regex": "^5.0.0" }, "engines": { - "node": ">=8" - } - }, - "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==", - "dev": true, - "bin": { - "semver": "bin/semver.js" + "node": ">=14" } }, - "node_modules/istanbul-lib-processinfo": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-processinfo/-/istanbul-lib-processinfo-2.0.3.tgz", - "integrity": "sha512-NkwHbo3E00oybX6NGJi6ar0B29vxyvNwoC7eJ4G4Yq28UfY758Hgn/heV8VRFhevPED4LXfFz0DQ8z/0kw9zMg==", - "dev": true, - "dependencies": { - "archy": "^1.0.0", - "cross-spawn": "^7.0.3", - "istanbul-lib-coverage": "^3.2.0", - "p-map": "^3.0.0", - "rimraf": "^3.0.0", - "uuid": "^8.3.2" - }, + "node_modules/npm/node_modules/clean-stack": { + "version": "2.2.0", + "inBundle": true, + "license": "MIT", "engines": { - "node": ">=8" + "node": ">=6" } }, - "node_modules/istanbul-lib-processinfo/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, + "node_modules/npm/node_modules/cli-columns": { + "version": "4.0.0", + "inBundle": true, + "license": "MIT", "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" }, "engines": { - "node": ">= 8" + "node": ">= 10" } }, - "node_modules/istanbul-lib-processinfo/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, + "node_modules/npm/node_modules/cli-columns/node_modules/ansi-regex": { + "version": "5.0.1", + "inBundle": true, + "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/istanbul-lib-processinfo/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, + "node_modules/npm/node_modules/cli-columns/node_modules/strip-ansi": { + "version": "6.0.1", + "inBundle": true, + "license": "MIT", "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" + "ansi-regex": "^5.0.1" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "engines": { + "node": ">=8" } }, - "node_modules/istanbul-lib-processinfo/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, + "node_modules/npm/node_modules/cli-table3": { + "version": "0.6.3", + "inBundle": true, + "license": "MIT", "dependencies": { - "shebang-regex": "^3.0.0" + "string-width": "^4.2.0" }, "engines": { - "node": ">=8" + "node": "10.* || >= 12.*" + }, + "optionalDependencies": { + "@colors/colors": "1.5.0" } }, - "node_modules/istanbul-lib-processinfo/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, + "node_modules/npm/node_modules/clone": { + "version": "1.0.4", + "inBundle": true, + "license": "MIT", "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-processinfo/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==", - "dev": true, - "bin": { - "uuid": "dist/bin/uuid" + "node": ">=0.8" } }, - "node_modules/istanbul-lib-processinfo/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" - }, + "node_modules/npm/node_modules/cmd-shim": { + "version": "6.0.2", + "inBundle": true, + "license": "ISC", "engines": { - "node": ">= 8" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "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, + "node_modules/npm/node_modules/color-convert": { + "version": "2.0.1", + "inBundle": true, + "license": "MIT", "dependencies": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^3.0.0", - "supports-color": "^7.1.0" + "color-name": "~1.1.4" }, "engines": { - "node": ">=8" + "node": ">=7.0.0" } }, - "node_modules/istanbul-lib-report/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/npm/node_modules/color-name": { + "version": "1.1.4", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/color-support": { + "version": "1.1.3", + "inBundle": true, + "license": "ISC", + "bin": { + "color-support": "bin.js" } }, - "node_modules/istanbul-lib-report/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, + "node_modules/npm/node_modules/columnify": { + "version": "1.6.0", + "inBundle": true, + "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "strip-ansi": "^6.0.1", + "wcwidth": "^1.0.0" }, "engines": { - "node": ">=8" + "node": ">=8.0.0" } }, - "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" - }, + "node_modules/npm/node_modules/columnify/node_modules/ansi-regex": { + "version": "5.0.1", + "inBundle": true, + "license": "MIT", "engines": { - "node": ">=10" + "node": ">=8" } }, - "node_modules/istanbul-lib-source-maps/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, + "node_modules/npm/node_modules/columnify/node_modules/strip-ansi": { + "version": "6.0.1", + "inBundle": true, + "license": "MIT", "dependencies": { - "ms": "2.1.2" + "ansi-regex": "^5.0.1" }, "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "node": ">=8" } }, - "node_modules/istanbul-lib-source-maps/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "node_modules/npm/node_modules/common-ancestor-path": { + "version": "1.0.1", + "inBundle": true, + "license": "ISC" }, - "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, + "node_modules/npm/node_modules/console-control-strings": { + "version": "1.1.0", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/cross-spawn": { + "version": "7.0.3", + "inBundle": true, + "license": "MIT", "dependencies": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" }, "engines": { - "node": ">=8" + "node": ">= 8" } }, - "node_modules/jake": { - "version": "10.8.5", - "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz", - "integrity": "sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==", - "dependencies": { - "async": "^3.2.3", - "chalk": "^4.0.2", - "filelist": "^1.0.1", - "minimatch": "^3.0.4" + "node_modules/npm/node_modules/cross-spawn/node_modules/which": { + "version": "2.0.2", + "inBundle": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" }, "bin": { - "jake": "bin/cli.js" + "node-which": "bin/node-which" }, "engines": { - "node": ">=10" + "node": ">= 8" } }, - "node_modules/jake/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==", - "dependencies": { - "color-convert": "^2.0.1" + "node_modules/npm/node_modules/cssesc": { + "version": "3.0.0", + "inBundle": true, + "license": "MIT", + "bin": { + "cssesc": "bin/cssesc" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=4" } }, - "node_modules/jake/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/npm/node_modules/debug": { + "version": "4.3.4", + "inBundle": true, + "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "ms": "2.1.2" }, "engines": { - "node": ">=10" + "node": ">=6.0" }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/jake/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==", + "node_modules/npm/node_modules/debug/node_modules/ms": { + "version": "2.1.2", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/defaults": { + "version": "1.0.4", + "inBundle": true, + "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "clone": "^1.0.2" }, - "engines": { - "node": ">=7.0.0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jake/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==" + "node_modules/npm/node_modules/delegates": { + "version": "1.0.0", + "inBundle": true, + "license": "MIT" }, - "node_modules/jake/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==", + "node_modules/npm/node_modules/diff": { + "version": "5.1.0", + "inBundle": true, + "license": "BSD-3-Clause", "engines": { - "node": ">=8" + "node": ">=0.3.1" } }, - "node_modules/jake/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==", + "node_modules/npm/node_modules/eastasianwidth": { + "version": "0.2.0", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/emoji-regex": { + "version": "8.0.0", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/encoding": { + "version": "0.1.13", + "inBundle": true, + "license": "MIT", + "optional": true, "dependencies": { - "has-flag": "^4.0.0" - }, + "iconv-lite": "^0.6.2" + } + }, + "node_modules/npm/node_modules/env-paths": { + "version": "2.2.1", + "inBundle": true, + "license": "MIT", "engines": { - "node": ">=8" + "node": ">=6" } }, - "node_modules/java-properties": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/java-properties/-/java-properties-1.0.2.tgz", - "integrity": "sha512-qjdpeo2yKlYTH7nFdK0vbZWuTCesk4o63v5iVOlhMQPfuIZQfW/HI35SjfhA+4qpg36rnFSvUK5b1m+ckIblQQ==", + "node_modules/npm/node_modules/err-code": { + "version": "2.0.3", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/event-target-shim": { + "version": "5.0.1", + "inBundle": true, + "license": "MIT", "engines": { - "node": ">= 0.6.0" + "node": ">=6" } }, - "node_modules/js-beautify": { - "version": "1.14.7", - "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.14.7.tgz", - "integrity": "sha512-5SOX1KXPFKx+5f6ZrPsIPEY7NwKeQz47n3jm2i+XeHx9MoRsfQenlOP13FQhWvg8JRS0+XLO6XYUQ2GX+q+T9A==", - "dev": true, - "dependencies": { - "config-chain": "^1.1.13", - "editorconfig": "^0.15.3", - "glob": "^8.0.3", - "nopt": "^6.0.0" - }, - "bin": { - "css-beautify": "js/bin/css-beautify.js", - "html-beautify": "js/bin/html-beautify.js", - "js-beautify": "js/bin/js-beautify.js" - }, + "node_modules/npm/node_modules/events": { + "version": "3.3.0", + "inBundle": true, + "license": "MIT", "engines": { - "node": ">=10" + "node": ">=0.8.x" } }, - "node_modules/js-beautify/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==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" + "node_modules/npm/node_modules/exponential-backoff": { + "version": "3.1.1", + "inBundle": true, + "license": "Apache-2.0" + }, + "node_modules/npm/node_modules/fastest-levenshtein": { + "version": "1.0.16", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 4.9.1" } }, - "node_modules/js-beautify/node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "dev": true, + "node_modules/npm/node_modules/foreground-child": { + "version": "3.1.1", + "inBundle": true, + "license": "ISC", "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" }, "engines": { - "node": ">=12" + "node": ">=14" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/js-beautify/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "dev": true, + "node_modules/npm/node_modules/fs-minipass": { + "version": "3.0.3", + "inBundle": true, + "license": "ISC", "dependencies": { - "brace-expansion": "^2.0.1" + "minipass": "^7.0.3" }, "engines": { - "node": ">=10" - } - }, - "node_modules/js-sha512": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/js-sha512/-/js-sha512-0.8.0.tgz", - "integrity": "sha512-PWsmefG6Jkodqt+ePTvBZCSMFgN7Clckjd0O7su3I0+BW2QWUTJNzjktHsztGLhncP2h8mcF9V9Y2Ha59pAViQ==", - "dev": true - }, - "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==" - }, - "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": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==" - }, - "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/npm/node_modules/function-bind": { + "version": "1.1.2", + "inBundle": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "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==" - }, - "node_modules/json-schema": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", - "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" - }, - "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==" - }, - "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": { + "node_modules/npm/node_modules/gauge": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==" - }, - "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" + "inBundle": true, + "license": "ISC", + "dependencies": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.3", + "console-control-strings": "^1.1.0", + "has-unicode": "^2.0.1", + "signal-exit": "^4.0.1", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.5" }, "engines": { - "node": ">=6" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" + "node_modules/npm/node_modules/gauge/node_modules/ansi-regex": { + "version": "5.0.1", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" } }, - "node_modules/jsonparse": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", - "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", - "engines": [ - "node >= 0.2.0" - ] - }, - "node_modules/jsonschema": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/jsonschema/-/jsonschema-1.2.5.tgz", - "integrity": "sha512-kVTF+08x25PQ0CjuVc0gRM9EUPb0Fe9Ln/utFOgcdxEIOHuU7ooBk/UPTd7t1M91pP35m0MU1T8M5P7vP1bRRw==", + "node_modules/npm/node_modules/gauge/node_modules/strip-ansi": { + "version": "6.0.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, "engines": { - "node": "*" + "node": ">=8" } }, - "node_modules/JSONStream": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", - "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", + "node_modules/npm/node_modules/glob": { + "version": "10.3.10", + "inBundle": true, + "license": "ISC", "dependencies": { - "jsonparse": "^1.2.0", - "through": ">=2.2.7 <3" + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" }, "bin": { - "JSONStream": "bin.js" + "glob": "dist/esm/bin.mjs" }, "engines": { - "node": "*" + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/jsprim": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-2.0.2.tgz", - "integrity": "sha512-gqXddjPqQ6G40VdnI6T6yObEC+pDNvyP95wdQhkWkg7crHH3km5qP1FsOXEkzEQwnz6gz5qGTn1c2Y52wP3OyQ==", - "dev": true, - "engines": [ - "node >=0.6.0" - ], + "node_modules/npm/node_modules/graceful-fs": { + "version": "4.2.11", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/has-unicode": { + "version": "2.0.1", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/hasown": { + "version": "2.0.0", + "inBundle": true, + "license": "MIT", "dependencies": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.4.0", - "verror": "1.10.0" + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" } }, - "node_modules/jsx-ast-utils": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.4.1.tgz", - "integrity": "sha512-z1xSldJ6imESSzOjd3NNkieVJKRlKYSOtMG8SFyCj2FIrvSaSuli/WjpBkEzCBoR9bYYYFgqJw61Xhu7Lcgk+w==", - "dev": true, + "node_modules/npm/node_modules/hosted-git-info": { + "version": "7.0.1", + "inBundle": true, + "license": "ISC", "dependencies": { - "array-includes": "^3.1.1", - "object.assign": "^4.1.0" + "lru-cache": "^10.0.1" }, "engines": { - "node": ">=4.0" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/just-extend": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-4.2.1.tgz", - "integrity": "sha512-g3UB796vUFIY90VIv/WX3L2c8CS2MdWUww3CNrYmqza1Fg0DURc2K/O4YrnklBdQarSJ/y8JnJYDGc+1iumQjg==", - "dev": true + "node_modules/npm/node_modules/http-cache-semantics": { + "version": "4.1.1", + "inBundle": true, + "license": "BSD-2-Clause" }, - "node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "node_modules/npm/node_modules/http-proxy-agent": { + "version": "7.0.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, "engines": { - "node": ">=0.10.0" + "node": ">= 14" } }, - "node_modules/levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", - "dev": true, + "node_modules/npm/node_modules/https-proxy-agent": { + "version": "7.0.2", + "inBundle": true, + "license": "MIT", "dependencies": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" + "agent-base": "^7.0.2", + "debug": "4" }, "engines": { - "node": ">= 0.8.0" + "node": ">= 14" } }, - "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==" - }, - "node_modules/liquid-json": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/liquid-json/-/liquid-json-0.3.1.tgz", - "integrity": "sha512-wUayTU8MS827Dam6MxgD72Ui+KOSF+u/eIqpatOtjnvgJ0+mnDq33uC2M7J0tPK+upe/DpUAuK4JUU89iBoNKQ==", - "dev": true, + "node_modules/npm/node_modules/iconv-lite": { + "version": "0.6.3", + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, "engines": { - "node": ">=4" + "node": ">=0.10.0" } }, - "node_modules/load-json-file": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", - "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==", + "node_modules/npm/node_modules/ieee754": { + "version": "1.2.1", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "inBundle": true, + "license": "BSD-3-Clause" + }, + "node_modules/npm/node_modules/ignore-walk": { + "version": "6.0.4", + "inBundle": true, + "license": "ISC", "dependencies": { - "graceful-fs": "^4.1.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0", - "strip-bom": "^3.0.0" + "minimatch": "^9.0.0" }, "engines": { - "node": ">=4" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/load-json-file/node_modules/parse-json": { + "node_modules/npm/node_modules/imurmurhash": { + "version": "0.1.4", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/npm/node_modules/indent-string": { "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" - }, + "inBundle": true, + "license": "MIT", "engines": { - "node": ">=4" + "node": ">=8" } }, - "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==", + "node_modules/npm/node_modules/ini": { + "version": "4.1.1", + "inBundle": true, + "license": "ISC", "engines": { - "node": ">=4" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/locate-path": { + "node_modules/npm/node_modules/init-package-json": { "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, + "inBundle": true, + "license": "ISC", "dependencies": { - "p-locate": "^5.0.0" + "npm-package-arg": "^11.0.0", + "promzard": "^1.0.0", + "read": "^2.0.0", + "read-package-json": "^7.0.0", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4", + "validate-npm-package-name": "^5.0.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^16.14.0 || >=18.0.0" } }, - "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.camelcase": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", - "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==" - }, - "node_modules/lodash.capitalize": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/lodash.capitalize/-/lodash.capitalize-4.2.1.tgz", - "integrity": "sha512-kZzYOKspf8XVX5AvmQF94gQW0lejFVgb80G85bU4ZWzoJ6C03PQg3coYAUpSTpQWelrZELd3XWgHzw4Ck5kaIw==" - }, - "node_modules/lodash.escaperegexp": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz", - "integrity": "sha512-TM9YBvyC84ZxE3rgfefxUWiQKLilstD6k7PTGt6wfbtXF8ixIJLOL3VYyV/z+ZiPLsVxAsKAFVwWlWeb2Y8Yyw==" - }, - "node_modules/lodash.flattendeep": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", - "integrity": "sha512-uHaJFihxmJcEX3kT4I23ABqKKalJ/zDrDg0lsFtc1h+3uw49SIJ5beyhx5ExVRti3AvKoOJngIj7xz3oylPdWQ==", - "dev": true - }, - "node_modules/lodash.isfinite": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/lodash.isfinite/-/lodash.isfinite-3.3.2.tgz", - "integrity": "sha512-7FGG40uhC8Mm633uKW1r58aElFlBlxCrg9JfSi3P6aYiWmfiWF0PgMd86ZUsxE5GwWPdHoS2+48bwTh2VPkIQA==" - }, - "node_modules/lodash.ismatch": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz", - "integrity": "sha512-fPMfXjGQEV9Xsq/8MTSgUf255gawYRbjwMyDbcvDhXgV7enSZA0hynz6vMPnpAb5iONEzBHBPsT+0zes5Z301g==" - }, - "node_modules/lodash.isplainobject": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==" - }, - "node_modules/lodash.isstring": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", - "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==" - }, - "node_modules/lodash.padend": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/lodash.padend/-/lodash.padend-4.6.1.tgz", - "integrity": "sha512-sOQs2aqGpbl27tmCS1QNZA09Uqp01ZzWfDUoD+xzTii0E7dSQfRKcRetFwa+uXaxaqL+TKm7CgD2JdKP7aZBSw==" - }, - "node_modules/lodash.uniqby": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz", - "integrity": "sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww==" + "node_modules/npm/node_modules/ip": { + "version": "2.0.0", + "inBundle": true, + "license": "MIT" }, - "node_modules/log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dev": true, - "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, + "node_modules/npm/node_modules/ip-regex": { + "version": "5.0.0", + "inBundle": true, + "license": "MIT", "engines": { - "node": ">=10" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/log-symbols/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, + "node_modules/npm/node_modules/is-cidr": { + "version": "5.0.3", + "inBundle": true, + "license": "BSD-2-Clause", "dependencies": { - "color-convert": "^2.0.1" + "cidr-regex": "4.0.3" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=14" } }, - "node_modules/log-symbols/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, + "node_modules/npm/node_modules/is-core-module": { + "version": "2.13.1", + "inBundle": true, + "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" + "hasown": "^2.0.0" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/log-symbols/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" - }, + "node_modules/npm/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "inBundle": true, + "license": "MIT", "engines": { - "node": ">=7.0.0" + "node": ">=8" } }, - "node_modules/log-symbols/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/npm/node_modules/is-lambda": { + "version": "1.0.1", + "inBundle": true, + "license": "MIT" }, - "node_modules/log-symbols/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/npm/node_modules/isexe": { + "version": "2.0.0", + "inBundle": true, + "license": "ISC" }, - "node_modules/log-symbols/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, + "node_modules/npm/node_modules/jackspeak": { + "version": "2.3.6", + "inBundle": true, + "license": "BlueOak-1.0.0", "dependencies": { - "has-flag": "^4.0.0" + "@isaacs/cliui": "^8.0.2" }, "engines": { - "node": ">=8" - } - }, - "node_modules/lolex": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lolex/-/lolex-4.2.0.tgz", - "integrity": "sha512-gKO5uExCXvSm6zbF562EvM+rd1kQDnB9AZBbiQVzf1ZmdDpxUSvpnAaVOP83N/31mRK8Ml8/VE8DMvsAZQ+7wg==", - "dev": true - }, - "node_modules/loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "dev": true, - "dependencies": { - "js-tokens": "^3.0.0 || ^4.0.0" + "node": ">=14" }, - "bin": { - "loose-envify": "cli.js" + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" } }, - "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/npm/node_modules/json-parse-even-better-errors": { + "version": "3.0.1", + "inBundle": true, + "license": "MIT", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/lru-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz", - "integrity": "sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ==", - "dev": true, - "dependencies": { - "es5-ext": "~0.10.2" + "node_modules/npm/node_modules/json-stringify-nice": { + "version": "1.1.4", + "inBundle": true, + "license": "ISC", + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "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==", + "node_modules/npm/node_modules/jsonparse": { + "version": "1.3.1", + "engines": [ + "node >= 0.2.0" + ], + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/just-diff": { + "version": "6.0.2", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/just-diff-apply": { + "version": "5.5.0", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/libnpmaccess": { + "version": "8.0.2", + "inBundle": true, + "license": "ISC", "dependencies": { - "semver": "^6.0.0" + "npm-package-arg": "^11.0.1", + "npm-registry-fetch": "^16.0.0" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^16.14.0 || >=18.0.0" } }, - "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==", - "bin": { - "semver": "bin/semver.js" + "node_modules/npm/node_modules/libnpmdiff": { + "version": "6.0.4", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/arborist": "^7.2.1", + "@npmcli/disparity-colors": "^3.0.0", + "@npmcli/installed-package-contents": "^2.0.2", + "binary-extensions": "^2.2.0", + "diff": "^5.1.0", + "minimatch": "^9.0.0", + "npm-package-arg": "^11.0.1", + "pacote": "^17.0.4", + "tar": "^6.2.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/make-fetch-happen": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz", - "integrity": "sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==", - "optional": true, + "node_modules/npm/node_modules/libnpmexec": { + "version": "7.0.5", + "inBundle": true, + "license": "ISC", "dependencies": { - "agentkeepalive": "^4.1.3", - "cacache": "^15.2.0", - "http-cache-semantics": "^4.1.0", - "http-proxy-agent": "^4.0.1", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^6.0.0", - "minipass": "^3.1.3", - "minipass-collect": "^1.0.2", - "minipass-fetch": "^1.3.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.2", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^6.0.0", - "ssri": "^8.0.0" + "@npmcli/arborist": "^7.2.1", + "@npmcli/run-script": "^7.0.2", + "ci-info": "^4.0.0", + "npm-package-arg": "^11.0.1", + "npmlog": "^7.0.1", + "pacote": "^17.0.4", + "proc-log": "^3.0.0", + "read": "^2.0.0", + "read-package-json-fast": "^3.0.2", + "semver": "^7.3.7", + "walk-up-path": "^3.0.1" }, "engines": { - "node": ">= 10" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/make-fetch-happen/node_modules/@tootallnate/once": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", - "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", - "optional": true, + "node_modules/npm/node_modules/libnpmfund": { + "version": "5.0.2", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/arborist": "^7.2.1" + }, "engines": { - "node": ">= 6" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/make-fetch-happen/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "optional": true, + "node_modules/npm/node_modules/libnpmhook": { + "version": "10.0.1", + "inBundle": true, + "license": "ISC", "dependencies": { - "ms": "2.1.2" + "aproba": "^2.0.0", + "npm-registry-fetch": "^16.0.0" }, "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/make-fetch-happen/node_modules/http-proxy-agent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", - "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", - "optional": true, + "node_modules/npm/node_modules/libnpmorg": { + "version": "6.0.2", + "inBundle": true, + "license": "ISC", "dependencies": { - "@tootallnate/once": "1", - "agent-base": "6", - "debug": "4" + "aproba": "^2.0.0", + "npm-registry-fetch": "^16.0.0" }, "engines": { - "node": ">= 6" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/make-fetch-happen/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==", - "optional": true, + "node_modules/npm/node_modules/libnpmpack": { + "version": "6.0.4", + "inBundle": true, + "license": "ISC", "dependencies": { - "yallist": "^4.0.0" + "@npmcli/arborist": "^7.2.1", + "@npmcli/run-script": "^7.0.2", + "npm-package-arg": "^11.0.1", + "pacote": "^17.0.4" }, "engines": { - "node": ">=10" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/make-fetch-happen/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==", - "optional": true - }, - "node_modules/make-fetch-happen/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "optional": true - }, - "node_modules/map-obj": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", - "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", - "engines": { - "node": ">=8" + "node_modules/npm/node_modules/libnpmpublish": { + "version": "9.0.3", + "inBundle": true, + "license": "ISC", + "dependencies": { + "ci-info": "^4.0.0", + "normalize-package-data": "^6.0.0", + "npm-package-arg": "^11.0.1", + "npm-registry-fetch": "^16.0.0", + "proc-log": "^3.0.0", + "semver": "^7.3.7", + "sigstore": "^2.1.0", + "ssri": "^10.0.5" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/marked": { - "version": "4.2.12", - "resolved": "https://registry.npmjs.org/marked/-/marked-4.2.12.tgz", - "integrity": "sha512-yr8hSKa3Fv4D3jdZmtMMPghgVt6TWbk86WQaWhDloQjRSQhMMYCAro7jP7VDJrjjdV8pxVxMssXS8B8Y5DZ5aw==", - "bin": { - "marked": "bin/marked.js" + "node_modules/npm/node_modules/libnpmsearch": { + "version": "7.0.1", + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-registry-fetch": "^16.0.0" }, "engines": { - "node": ">= 12" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/marked-terminal": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/marked-terminal/-/marked-terminal-5.1.1.tgz", - "integrity": "sha512-+cKTOx9P4l7HwINYhzbrBSyzgxO2HaHKGZGuB1orZsMIgXYaJyfidT81VXRdpelW/PcHEWxywscePVgI/oUF6g==", + "node_modules/npm/node_modules/libnpmteam": { + "version": "6.0.1", + "inBundle": true, + "license": "ISC", "dependencies": { - "ansi-escapes": "^5.0.0", - "cardinal": "^2.1.1", - "chalk": "^5.0.0", - "cli-table3": "^0.6.1", - "node-emoji": "^1.11.0", - "supports-hyperlinks": "^2.2.0" + "aproba": "^2.0.0", + "npm-registry-fetch": "^16.0.0" }, "engines": { - "node": ">=14.13.1 || >=16.0.0" - }, - "peerDependencies": { - "marked": "^1.0.0 || ^2.0.0 || ^3.0.0 || ^4.0.0" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/marked-terminal/node_modules/ansi-escapes": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-5.0.0.tgz", - "integrity": "sha512-5GFMVX8HqE/TB+FuBJGuO5XG0WrsA6ptUqoODaT/n9mmUaZFkqnBueB4leqGBCmrUHnCnC4PCZTCd0E7QQ83bA==", + "node_modules/npm/node_modules/libnpmversion": { + "version": "5.0.2", + "inBundle": true, + "license": "ISC", "dependencies": { - "type-fest": "^1.0.2" + "@npmcli/git": "^5.0.3", + "@npmcli/run-script": "^7.0.2", + "json-parse-even-better-errors": "^3.0.0", + "proc-log": "^3.0.0", + "semver": "^7.3.7" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/marked-terminal/node_modules/chalk": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.2.0.tgz", - "integrity": "sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==", + "node_modules/npm/node_modules/lru-cache": { + "version": "10.1.0", + "inBundle": true, + "license": "ISC", "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": "14 || >=16.14" } }, - "node_modules/marked-terminal/node_modules/type-fest": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", - "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", - "engines": { - "node": ">=10" + "node_modules/npm/node_modules/make-fetch-happen": { + "version": "13.0.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/agent": "^2.0.0", + "cacache": "^18.0.0", + "http-cache-semantics": "^4.1.1", + "is-lambda": "^1.0.1", + "minipass": "^7.0.2", + "minipass-fetch": "^3.0.0", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "ssri": "^10.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/md5": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz", - "integrity": "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==", - "dev": true, + "node_modules/npm/node_modules/minimatch": { + "version": "9.0.3", + "inBundle": true, + "license": "ISC", "dependencies": { - "charenc": "0.0.2", - "crypt": "0.0.2", - "is-buffer": "~1.1.6" + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "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==", + "node_modules/npm/node_modules/minipass": { + "version": "7.0.4", + "inBundle": true, + "license": "ISC", "engines": { - "node": ">= 0.6" + "node": ">=16 || 14 >=14.17" } }, - "node_modules/memoizee": { - "version": "0.4.15", - "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.15.tgz", - "integrity": "sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ==", - "dev": true, + "node_modules/npm/node_modules/minipass-collect": { + "version": "2.0.1", + "inBundle": true, + "license": "ISC", "dependencies": { - "d": "^1.0.1", - "es5-ext": "^0.10.53", - "es6-weak-map": "^2.0.3", - "event-emitter": "^0.3.5", - "is-promise": "^2.2.2", - "lru-queue": "^0.1.0", - "next-tick": "^1.1.0", - "timers-ext": "^0.1.7" + "minipass": "^7.0.3" + }, + "engines": { + "node": ">=16 || 14 >=14.17" } }, - "node_modules/meow": { - "version": "8.1.2", - "resolved": "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz", - "integrity": "sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==", - "dependencies": { - "@types/minimist": "^1.2.0", - "camelcase-keys": "^6.2.2", - "decamelize-keys": "^1.1.0", - "hard-rejection": "^2.1.0", - "minimist-options": "4.1.0", - "normalize-package-data": "^3.0.0", - "read-pkg-up": "^7.0.1", - "redent": "^3.0.0", - "trim-newlines": "^3.0.0", - "type-fest": "^0.18.0", - "yargs-parser": "^20.2.3" + "node_modules/npm/node_modules/minipass-fetch": { + "version": "3.0.4", + "inBundle": true, + "license": "MIT", + "dependencies": { + "minipass": "^7.0.3", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" }, "engines": { - "node": ">=10" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "optionalDependencies": { + "encoding": "^0.1.13" } }, - "node_modules/meow/node_modules/type-fest": { - "version": "0.18.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", - "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", + "node_modules/npm/node_modules/minipass-flush": { + "version": "1.0.5", + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, "engines": { - "node": ">=10" + "node": ">= 8" + } + }, + "node_modules/npm/node_modules/minipass-flush/node_modules/minipass": { + "version": "3.3.6", + "inBundle": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=8" } }, - "node_modules/merge-descriptors": { + "node_modules/npm/node_modules/minipass-json-stream": { "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==" - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "engines": { - "node": ">= 8" + "inBundle": true, + "license": "MIT", + "dependencies": { + "jsonparse": "^1.3.1", + "minipass": "^3.0.0" } }, - "node_modules/methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "node_modules/npm/node_modules/minipass-json-stream/node_modules/minipass": { + "version": "3.3.6", + "inBundle": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, "engines": { - "node": ">= 0.6" + "node": ">=8" } }, - "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "node_modules/npm/node_modules/minipass-pipeline": { + "version": "1.2.4", + "inBundle": true, + "license": "ISC", "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" + "minipass": "^3.0.0" }, "engines": { - "node": ">=8.6" + "node": ">=8" } }, - "node_modules/mime": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", - "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", - "bin": { - "mime": "cli.js" + "node_modules/npm/node_modules/minipass-pipeline/node_modules/minipass": { + "version": "3.3.6", + "inBundle": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" }, "engines": { - "node": ">=10.0.0" + "node": ">=8" } }, - "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==", + "node_modules/npm/node_modules/minipass-sized": { + "version": "1.0.3", + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, "engines": { - "node": ">= 0.6" + "node": ">=8" } }, - "node_modules/mime-format": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/mime-format/-/mime-format-2.0.1.tgz", - "integrity": "sha512-XxU3ngPbEnrYnNbIX+lYSaYg0M01v6p2ntd2YaFksTu0vayaw5OJvbdRyWs07EYRlLED5qadUZ+xo+XhOvFhwg==", - "dev": true, + "node_modules/npm/node_modules/minipass-sized/node_modules/minipass": { + "version": "3.3.6", + "inBundle": true, + "license": "ISC", "dependencies": { - "charset": "^1.0.0" + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "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==", + "node_modules/npm/node_modules/minizlib": { + "version": "2.1.2", + "inBundle": true, + "license": "MIT", "dependencies": { - "mime-db": "1.52.0" + "minipass": "^3.0.0", + "yallist": "^4.0.0" }, "engines": { - "node": ">= 0.6" + "node": ">= 8" } }, - "node_modules/mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", - "dev": true, + "node_modules/npm/node_modules/minizlib/node_modules/minipass": { + "version": "3.3.6", + "inBundle": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/min-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", - "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "node_modules/npm/node_modules/mkdirp": { + "version": "1.0.4", + "inBundle": true, + "license": "MIT", + "bin": { + "mkdirp": "bin/cmd.js" + }, "engines": { - "node": ">=4" + "node": ">=10" } }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dependencies": { - "brace-expansion": "^1.1.7" - }, + "node_modules/npm/node_modules/ms": { + "version": "2.1.3", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/mute-stream": { + "version": "1.0.0", + "inBundle": true, + "license": "ISC", "engines": { - "node": "*" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "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/npm/node_modules/negotiator": { + "version": "0.6.3", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" } }, - "node_modules/minimist-options": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", - "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", + "node_modules/npm/node_modules/node-gyp": { + "version": "10.0.1", + "inBundle": true, + "license": "MIT", "dependencies": { - "arrify": "^1.0.1", - "is-plain-obj": "^1.1.0", - "kind-of": "^6.0.3" + "env-paths": "^2.2.0", + "exponential-backoff": "^3.1.1", + "glob": "^10.3.10", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^13.0.0", + "nopt": "^7.0.0", + "proc-log": "^3.0.0", + "semver": "^7.3.5", + "tar": "^6.1.2", + "which": "^4.0.0" + }, + "bin": { + "node-gyp": "bin/node-gyp.js" }, "engines": { - "node": ">= 6" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "node_modules/npm/node_modules/nopt": { + "version": "7.2.0", + "inBundle": true, + "license": "ISC", "dependencies": { - "yallist": "^4.0.0" + "abbrev": "^2.0.0" + }, + "bin": { + "nopt": "bin/nopt.js" }, "engines": { - "node": ">=8" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/minipass-collect": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", - "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", - "optional": true, + "node_modules/npm/node_modules/normalize-package-data": { + "version": "6.0.0", + "inBundle": true, + "license": "BSD-2-Clause", "dependencies": { - "minipass": "^3.0.0" + "hosted-git-info": "^7.0.0", + "is-core-module": "^2.8.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" }, "engines": { - "node": ">= 8" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/minipass-fetch": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.4.1.tgz", - "integrity": "sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==", - "optional": true, - "dependencies": { - "minipass": "^3.1.0", - "minipass-sized": "^1.0.3", - "minizlib": "^2.0.0" - }, + "node_modules/npm/node_modules/npm-audit-report": { + "version": "5.0.0", + "inBundle": true, + "license": "ISC", "engines": { - "node": ">=8" - }, - "optionalDependencies": { - "encoding": "^0.1.12" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/minipass-flush": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", - "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", - "optional": true, + "node_modules/npm/node_modules/npm-bundled": { + "version": "3.0.0", + "inBundle": true, + "license": "ISC", "dependencies": { - "minipass": "^3.0.0" + "npm-normalize-package-bin": "^3.0.0" }, "engines": { - "node": ">= 8" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/minipass-pipeline": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", - "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", - "optional": true, + "node_modules/npm/node_modules/npm-install-checks": { + "version": "6.3.0", + "inBundle": true, + "license": "BSD-2-Clause", "dependencies": { - "minipass": "^3.0.0" + "semver": "^7.1.1" }, "engines": { - "node": ">=8" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/minipass-sized": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", - "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", - "optional": true, - "dependencies": { - "minipass": "^3.0.0" - }, + "node_modules/npm/node_modules/npm-normalize-package-bin": { + "version": "3.0.1", + "inBundle": true, + "license": "ISC", "engines": { - "node": ">=8" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/minipass/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/minizlib": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", - "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "node_modules/npm/node_modules/npm-package-arg": { + "version": "11.0.1", + "inBundle": true, + "license": "ISC", "dependencies": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" + "hosted-git-info": "^7.0.0", + "proc-log": "^3.0.0", + "semver": "^7.3.5", + "validate-npm-package-name": "^5.0.0" }, "engines": { - "node": ">= 8" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/minizlib/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/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "node_modules/npm/node_modules/npm-packlist": { + "version": "8.0.1", + "inBundle": true, + "license": "ISC", "dependencies": { - "minimist": "^1.2.6" + "ignore-walk": "^6.0.4" }, - "bin": { - "mkdirp": "bin/cmd.js" + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/mocha": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-9.2.2.tgz", - "integrity": "sha512-L6XC3EdwT6YrIk0yXpavvLkn8h+EU+Y5UcCHKECyMbdUIxyMuZj4bX4U9e1nvnvUUvQVsV2VHQr5zLdcUkhW/g==", - "dev": true, + "node_modules/npm/node_modules/npm-pick-manifest": { + "version": "9.0.0", + "inBundle": true, + "license": "ISC", "dependencies": { - "@ungap/promise-all-settled": "1.1.2", - "ansi-colors": "4.1.1", - "browser-stdout": "1.3.1", - "chokidar": "3.5.3", - "debug": "4.3.3", - "diff": "5.0.0", - "escape-string-regexp": "4.0.0", - "find-up": "5.0.0", - "glob": "7.2.0", - "growl": "1.10.5", - "he": "1.2.0", - "js-yaml": "4.1.0", - "log-symbols": "4.1.0", - "minimatch": "4.2.1", - "ms": "2.1.3", - "nanoid": "3.3.1", - "serialize-javascript": "6.0.0", - "strip-json-comments": "3.1.1", - "supports-color": "8.1.1", - "which": "2.0.2", - "workerpool": "6.2.0", - "yargs": "16.2.0", - "yargs-parser": "20.2.4", - "yargs-unparser": "2.0.0" - }, - "bin": { - "_mocha": "bin/_mocha", - "mocha": "bin/mocha" + "npm-install-checks": "^6.0.0", + "npm-normalize-package-bin": "^3.0.0", + "npm-package-arg": "^11.0.0", + "semver": "^7.3.5" }, "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mochajs" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/mocha-junit-reporter": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mocha-junit-reporter/-/mocha-junit-reporter-2.0.0.tgz", - "integrity": "sha512-20HoWh2HEfhqmigfXOKUhZQyX23JImskc37ZOhIjBKoBEsb+4cAFRJpAVhFpnvsztLklW/gFVzsrobjLwmX4lA==", - "dev": true, + "node_modules/npm/node_modules/npm-profile": { + "version": "9.0.0", + "inBundle": true, + "license": "ISC", "dependencies": { - "debug": "^2.2.0", - "md5": "^2.1.0", - "mkdirp": "~0.5.1", - "strip-ansi": "^4.0.0", - "xml": "^1.0.0" + "npm-registry-fetch": "^16.0.0", + "proc-log": "^3.0.0" }, - "peerDependencies": { - "mocha": ">=2.2.5" + "engines": { + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/mocha/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/mocha/node_modules/debug": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", - "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", - "dev": true, + "node_modules/npm/node_modules/npm-registry-fetch": { + "version": "16.1.0", + "inBundle": true, + "license": "ISC", "dependencies": { - "ms": "2.1.2" + "make-fetch-happen": "^13.0.0", + "minipass": "^7.0.2", + "minipass-fetch": "^3.0.0", + "minipass-json-stream": "^1.0.1", + "minizlib": "^2.1.2", + "npm-package-arg": "^11.0.0", + "proc-log": "^3.0.0" }, "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/mocha/node_modules/debug/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/mocha/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, + "node_modules/npm/node_modules/npm-user-validate": { + "version": "2.0.0", + "inBundle": true, + "license": "BSD-2-Clause", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/mocha/node_modules/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", - "dev": true, + "node_modules/npm/node_modules/npmlog": { + "version": "7.0.1", + "inBundle": true, + "license": "ISC", "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "are-we-there-yet": "^4.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^5.0.0", + "set-blocking": "^2.0.0" }, "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/mocha/node_modules/glob/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, + "node_modules/npm/node_modules/p-map": { + "version": "4.0.0", + "inBundle": true, + "license": "MIT", "dependencies": { - "brace-expansion": "^1.1.7" + "aggregate-error": "^3.0.0" }, "engines": { - "node": "*" - } - }, - "node_modules/mocha/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": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/mocha/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, + "node_modules/npm/node_modules/pacote": { + "version": "17.0.5", + "inBundle": true, + "license": "ISC", "dependencies": { - "argparse": "^2.0.1" + "@npmcli/git": "^5.0.0", + "@npmcli/installed-package-contents": "^2.0.1", + "@npmcli/promise-spawn": "^7.0.0", + "@npmcli/run-script": "^7.0.0", + "cacache": "^18.0.0", + "fs-minipass": "^3.0.0", + "minipass": "^7.0.2", + "npm-package-arg": "^11.0.0", + "npm-packlist": "^8.0.0", + "npm-pick-manifest": "^9.0.0", + "npm-registry-fetch": "^16.0.0", + "proc-log": "^3.0.0", + "promise-retry": "^2.0.1", + "read-package-json": "^7.0.0", + "read-package-json-fast": "^3.0.0", + "sigstore": "^2.0.0", + "ssri": "^10.0.0", + "tar": "^6.1.11" }, "bin": { - "js-yaml": "bin/js-yaml.js" + "pacote": "lib/bin.js" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/mocha/node_modules/minimatch": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-4.2.1.tgz", - "integrity": "sha512-9Uq1ChtSZO+Mxa/CL1eGizn2vRn3MlLgzhT0Iz8zaY8NdvxvB0d5QdPFmCKf7JKA9Lerx5vRrnwO03jsSfGG9g==", - "dev": true, + "node_modules/npm/node_modules/parse-conflict-json": { + "version": "3.0.1", + "inBundle": true, + "license": "ISC", "dependencies": { - "brace-expansion": "^1.1.7" + "json-parse-even-better-errors": "^3.0.0", + "just-diff": "^6.0.0", + "just-diff-apply": "^5.2.0" }, "engines": { - "node": ">=10" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/mocha/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==", - "dev": true - }, - "node_modules/mocha/node_modules/strip-json-comments": { + "node_modules/npm/node_modules/path-key": { "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, + "inBundle": true, + "license": "MIT", "engines": { "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/mocha/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, + "node_modules/npm/node_modules/path-scurry": { + "version": "1.10.1", + "inBundle": true, + "license": "BlueOak-1.0.0", "dependencies": { - "has-flag": "^4.0.0" + "lru-cache": "^9.1.1 || ^10.0.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" }, "engines": { - "node": ">=10" + "node": ">=16 || 14 >=14.17" }, "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/mocha/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, + "node_modules/npm/node_modules/postcss-selector-parser": { + "version": "6.0.13", + "inBundle": true, + "license": "MIT", "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" }, "engines": { - "node": ">= 8" + "node": ">=4" } }, - "node_modules/modify-values": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/modify-values/-/modify-values-1.0.1.tgz", - "integrity": "sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==", + "node_modules/npm/node_modules/proc-log": { + "version": "3.0.0", + "inBundle": true, + "license": "ISC", "engines": { - "node": ">=0.10.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/moment": { - "version": "2.29.4", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", - "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==", + "node_modules/npm/node_modules/process": { + "version": "0.11.10", + "inBundle": true, + "license": "MIT", "engines": { - "node": "*" + "node": ">= 0.6.0" } }, - "node_modules/moment-timezone": { - "version": "0.5.38", - "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.38.tgz", - "integrity": "sha512-nMIrzGah4+oYZPflDvLZUgoVUO4fvAqHstvG3xAUnMolWncuAiLDWNnJZj6EwJGMGfb1ZcuTFE6GI3hNOVWI/Q==", + "node_modules/npm/node_modules/promise-all-reject-late": { + "version": "1.0.1", + "inBundle": true, + "license": "ISC", + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/promise-call-limit": { + "version": "1.0.2", + "inBundle": true, + "license": "ISC", + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/promise-inflight": { + "version": "1.0.1", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/promise-retry": { + "version": "2.0.1", + "inBundle": true, + "license": "MIT", "dependencies": { - "moment": ">= 2.9.0" + "err-code": "^2.0.2", + "retry": "^0.12.0" }, "engines": { - "node": "*" + "node": ">=10" } }, - "node_modules/morgan": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.9.1.tgz", - "integrity": "sha512-HQStPIV4y3afTiCYVxirakhlCfGkI161c76kKFca7Fk1JusM//Qeo1ej2XaMniiNeaZklMVrh3vTtIzpzwbpmA==", + "node_modules/npm/node_modules/promzard": { + "version": "1.0.0", + "inBundle": true, + "license": "ISC", "dependencies": { - "basic-auth": "~2.0.0", - "debug": "2.6.9", - "depd": "~1.1.2", - "on-finished": "~2.3.0", - "on-headers": "~1.0.1" + "read": "^2.0.0" }, "engines": { - "node": ">= 0.8.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/morgan/node_modules/depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", - "engines": { - "node": ">= 0.6" + "node_modules/npm/node_modules/qrcode-terminal": { + "version": "0.12.0", + "inBundle": true, + "bin": { + "qrcode-terminal": "bin/qrcode-terminal.js" } }, - "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==", + "node_modules/npm/node_modules/read": { + "version": "2.1.0", + "inBundle": true, + "license": "ISC", "dependencies": { - "ee-first": "1.1.1" + "mute-stream": "~1.0.0" }, "engines": { - "node": ">= 0.8" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/multer": { - "version": "1.4.5-lts.1", - "resolved": "https://registry.npmjs.org/multer/-/multer-1.4.5-lts.1.tgz", - "integrity": "sha512-ywPWvcDMeH+z9gQq5qYHCCy+ethsk4goepZ45GLD63fOu0YcNecQxi64nDs3qluZB+murG3/D4dJ7+dGctcCQQ==", - "dependencies": { - "append-field": "^1.0.0", - "busboy": "^1.0.0", - "concat-stream": "^1.5.2", - "mkdirp": "^0.5.4", - "object-assign": "^4.1.1", - "type-is": "^1.6.4", - "xtend": "^4.0.0" - }, + "node_modules/npm/node_modules/read-cmd-shim": { + "version": "4.0.0", + "inBundle": true, + "license": "ISC", "engines": { - "node": ">= 6.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/multer/node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "node_modules/npm/node_modules/read-package-json": { + "version": "7.0.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "glob": "^10.2.2", + "json-parse-even-better-errors": "^3.0.0", + "normalize-package-data": "^6.0.0", + "npm-normalize-package-bin": "^3.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/mute-stream": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", - "integrity": "sha512-r65nCZhrbXXb6dXOACihYApHw2Q6pV0M3V0PSxd74N0+D8nzAdEAITq2oAjA1jVnKI+tGvEBUpqiMh0+rW6zDQ==", - "dev": true - }, - "node_modules/nanoid": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.1.tgz", - "integrity": "sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==", - "dev": true, - "bin": { - "nanoid": "bin/nanoid.cjs" + "node_modules/npm/node_modules/read-package-json-fast": { + "version": "3.0.2", + "inBundle": true, + "license": "ISC", + "dependencies": { + "json-parse-even-better-errors": "^3.0.0", + "npm-normalize-package-bin": "^3.0.0" }, "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "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/nconf": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/nconf/-/nconf-0.12.0.tgz", - "integrity": "sha512-T3fZPw3c7Dfrz8JBQEbEcZJ2s8f7cUMpKuyBtsGQe0b71pcXx6gNh4oti2xh5dxB+gO9ufNfISBlGvvWtfyMcA==", + "node_modules/npm/node_modules/readable-stream": { + "version": "4.4.2", + "inBundle": true, + "license": "MIT", "dependencies": { - "async": "^3.0.0", - "ini": "^2.0.0", - "secure-keys": "^1.0.0", - "yargs": "^16.1.1" + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" }, "engines": { - "node": ">= 0.4.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, - "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==", + "node_modules/npm/node_modules/retry": { + "version": "0.12.0", + "inBundle": true, + "license": "MIT", "engines": { - "node": ">= 0.6" + "node": ">= 4" } }, - "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/npm/node_modules/safe-buffer": { + "version": "5.2.1", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "inBundle": true, + "license": "MIT" }, - "node_modules/nerf-dart": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/nerf-dart/-/nerf-dart-1.0.0.tgz", - "integrity": "sha512-EZSPZB70jiVsivaBLYDCyntd5eH8NTSMOn3rB+HxwdmKThGELLdYv8qVIMWvZEFy9w8ZZpW9h9OB32l1rGtj7g==" + "node_modules/npm/node_modules/safer-buffer": { + "version": "2.1.2", + "inBundle": true, + "license": "MIT", + "optional": true }, - "node_modules/newman": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/newman/-/newman-5.3.2.tgz", - "integrity": "sha512-cWy8pV0iwvMOZLTw3hkAHcwo2ZA0GKkXm8oUMn1Ltii3ZI2nKpnrg9QGdIT0hGHChRkX6prY5e3Aar7uykMGNg==", - "dev": true, + "node_modules/npm/node_modules/semver": { + "version": "7.5.4", + "inBundle": true, + "license": "ISC", "dependencies": { - "async": "3.2.3", - "chardet": "1.4.0", - "cli-progress": "3.10.0", - "cli-table3": "0.6.1", - "colors": "1.4.0", - "commander": "7.2.0", - "csv-parse": "4.16.3", - "eventemitter3": "4.0.7", - "filesize": "8.0.7", - "lodash": "4.17.21", - "mkdirp": "1.0.4", - "postman-collection": "4.1.1", - "postman-collection-transformer": "4.1.6", - "postman-request": "2.88.1-postman.31", - "postman-runtime": "7.29.0", - "pretty-ms": "7.0.1", - "semver": "7.3.5", - "serialised-error": "1.1.3", - "tough-cookie": "3.0.1", - "word-wrap": "1.2.3", - "xmlbuilder": "15.1.1" + "lru-cache": "^6.0.0" }, "bin": { - "newman": "bin/newman.js" + "semver": "bin/semver.js" }, "engines": { "node": ">=10" } }, - "node_modules/newman-reporter-junitfull": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/newman-reporter-junitfull/-/newman-reporter-junitfull-1.1.1.tgz", - "integrity": "sha512-ET5rU1qkeJ5yvFxcKQFkqGxWia50kdnufm1uzyeNYlUg6T+k07AvOS0mfp/Ejr0njnsiPfFLb9kC48F8pafq9A==", - "dev": true, + "node_modules/npm/node_modules/semver/node_modules/lru-cache": { + "version": "6.0.0", + "inBundle": true, + "license": "ISC", "dependencies": { - "lodash": "^4.17.10", - "moment": "^2.22.2", - "xmlbuilder": "^10.0.0" + "yallist": "^4.0.0" }, "engines": { - "node": ">=6" + "node": ">=10" + } + }, + "node_modules/npm/node_modules/set-blocking": { + "version": "2.0.0", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/shebang-command": { + "version": "2.0.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" }, - "peerDependencies": { - "newman": ">=4" + "engines": { + "node": ">=8" } }, - "node_modules/newman-reporter-junitfull/node_modules/xmlbuilder": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-10.1.1.tgz", - "integrity": "sha512-OyzrcFLL/nb6fMGHbiRDuPup9ljBycsdCypwuyg5AAHvyWzGfChJpCXMG88AGTIMFhGZ9RccFN1e6lhg3hkwKg==", - "dev": true, + "node_modules/npm/node_modules/shebang-regex": { + "version": "3.0.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/signal-exit": { + "version": "4.1.0", + "inBundle": true, + "license": "ISC", "engines": { - "node": ">=4.0" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/newman/node_modules/async": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.3.tgz", - "integrity": "sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==", - "dev": true - }, - "node_modules/newman/node_modules/chardet": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-1.4.0.tgz", - "integrity": "sha512-NpwMDdSIprbYx1CLnfbxEIarI0Z+s9MssEgggMNheGM+WD68yOhV7IEA/3r6tr0yTRgQD0HuZJDw32s99i6L+A==", - "dev": true - }, - "node_modules/newman/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, + "node_modules/npm/node_modules/sigstore": { + "version": "2.1.0", + "inBundle": true, + "license": "Apache-2.0", "dependencies": { - "yallist": "^4.0.0" + "@sigstore/bundle": "^2.1.0", + "@sigstore/protobuf-specs": "^0.2.1", + "@sigstore/sign": "^2.1.0", + "@sigstore/tuf": "^2.1.0" }, "engines": { - "node": ">=10" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/newman/node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true, - "bin": { - "mkdirp": "bin/cmd.js" - }, + "node_modules/npm/node_modules/smart-buffer": { + "version": "4.2.0", + "inBundle": true, + "license": "MIT", "engines": { - "node": ">=10" + "node": ">= 6.0.0", + "npm": ">= 3.0.0" } }, - "node_modules/newman/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, + "node_modules/npm/node_modules/socks": { + "version": "2.7.1", + "inBundle": true, + "license": "MIT", "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" + "ip": "^2.0.0", + "smart-buffer": "^4.2.0" }, "engines": { - "node": ">=10" + "node": ">= 10.13.0", + "npm": ">= 3.0.0" } }, - "node_modules/newman/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/next-tick": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", - "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==", - "dev": true - }, - "node_modules/nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" - }, - "node_modules/nise": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/nise/-/nise-1.5.3.tgz", - "integrity": "sha512-Ymbac/94xeIrMf59REBPOv0thr+CJVFMhrlAkW/gjCIE58BGQdCj0x7KRCb3yz+Ga2Rz3E9XXSvUyyxqqhjQAQ==", - "dev": true, + "node_modules/npm/node_modules/socks-proxy-agent": { + "version": "8.0.2", + "inBundle": true, + "license": "MIT", "dependencies": { - "@sinonjs/formatio": "^3.2.1", - "@sinonjs/text-encoding": "^0.7.1", - "just-extend": "^4.0.2", - "lolex": "^5.0.1", - "path-to-regexp": "^1.7.0" + "agent-base": "^7.0.2", + "debug": "^4.3.4", + "socks": "^2.7.1" + }, + "engines": { + "node": ">= 14" } }, - "node_modules/nise/node_modules/lolex": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/lolex/-/lolex-5.1.2.tgz", - "integrity": "sha512-h4hmjAvHTmd+25JSwrtTIuwbKdwg5NzZVRMLn9saij4SZaepCrTCxPr35H/3bjwfMJtN+t3CX8672UIkglz28A==", - "dev": true, + "node_modules/npm/node_modules/spdx-correct": { + "version": "3.2.0", + "inBundle": true, + "license": "Apache-2.0", "dependencies": { - "@sinonjs/commons": "^1.7.0" + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" } }, - "node_modules/nise/node_modules/path-to-regexp": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", - "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", - "dev": true, + "node_modules/npm/node_modules/spdx-exceptions": { + "version": "2.3.0", + "inBundle": true, + "license": "CC-BY-3.0" + }, + "node_modules/npm/node_modules/spdx-expression-parse": { + "version": "3.0.1", + "inBundle": true, + "license": "MIT", "dependencies": { - "isarray": "0.0.1" + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" } }, - "node_modules/nocache": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/nocache/-/nocache-2.1.0.tgz", - "integrity": "sha512-0L9FvHG3nfnnmaEQPjT9xhfN4ISk0A8/2j4M37Np4mcDesJjHgEUfgPhdCyZuFI954tjokaIj/A3NdpFNdEh4Q==", + "node_modules/npm/node_modules/spdx-license-ids": { + "version": "3.0.16", + "inBundle": true, + "license": "CC0-1.0" + }, + "node_modules/npm/node_modules/ssri": { + "version": "10.0.5", + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^7.0.3" + }, "engines": { - "node": ">=4.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/node-addon-api": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz", - "integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==" - }, - "node_modules/node-emoji": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz", - "integrity": "sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==", + "node_modules/npm/node_modules/string_decoder": { + "version": "1.3.0", + "inBundle": true, + "license": "MIT", "dependencies": { - "lodash": "^4.17.21" + "safe-buffer": "~5.2.0" } }, - "node_modules/node-fetch": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.9.tgz", - "integrity": "sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==", + "node_modules/npm/node_modules/string-width": { + "version": "4.2.3", + "inBundle": true, + "license": "MIT", "dependencies": { - "whatwg-url": "^5.0.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" }, "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } + "node": ">=8" } }, - "node_modules/node-gyp": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-8.4.1.tgz", - "integrity": "sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w==", - "optional": true, + "node_modules/npm/node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "inBundle": true, + "license": "MIT", "dependencies": { - "env-paths": "^2.2.0", - "glob": "^7.1.4", - "graceful-fs": "^4.2.6", - "make-fetch-happen": "^9.1.0", - "nopt": "^5.0.0", - "npmlog": "^6.0.0", - "rimraf": "^3.0.2", - "semver": "^7.3.5", - "tar": "^6.1.2", - "which": "^2.0.2" - }, - "bin": { - "node-gyp": "bin/node-gyp.js" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" }, "engines": { - "node": ">= 10.12.0" + "node": ">=8" } }, - "node_modules/node-gyp/node_modules/ansi-regex": { + "node_modules/npm/node_modules/string-width-cjs/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==", - "optional": true, + "inBundle": true, + "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/node-gyp/node_modules/are-we-there-yet": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz", - "integrity": "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==", - "optional": true, - "dependencies": { - "delegates": "^1.0.0", - "readable-stream": "^3.6.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/node-gyp/node_modules/gauge": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", - "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", - "optional": true, + "node_modules/npm/node_modules/string-width-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "inBundle": true, + "license": "MIT", "dependencies": { - "aproba": "^1.0.3 || ^2.0.0", - "color-support": "^1.1.3", - "console-control-strings": "^1.1.0", - "has-unicode": "^2.0.1", - "signal-exit": "^3.0.7", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "wide-align": "^1.1.5" + "ansi-regex": "^5.0.1" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=8" } }, - "node_modules/node-gyp/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==", - "optional": true, + "node_modules/npm/node_modules/string-width/node_modules/ansi-regex": { + "version": "5.0.1", + "inBundle": true, + "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/node-gyp/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==", - "optional": true, + "node_modules/npm/node_modules/string-width/node_modules/strip-ansi": { + "version": "6.0.1", + "inBundle": true, + "license": "MIT", "dependencies": { - "yallist": "^4.0.0" + "ansi-regex": "^5.0.1" }, "engines": { - "node": ">=10" + "node": ">=8" } }, - "node_modules/node-gyp/node_modules/nopt": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", - "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", - "optional": true, + "node_modules/npm/node_modules/strip-ansi": { + "version": "7.1.0", + "inBundle": true, + "license": "MIT", "dependencies": { - "abbrev": "1" - }, - "bin": { - "nopt": "bin/nopt.js" + "ansi-regex": "^6.0.1" }, "engines": { - "node": ">=6" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/node-gyp/node_modules/npmlog": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", - "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", - "optional": true, + "node_modules/npm/node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "inBundle": true, + "license": "MIT", "dependencies": { - "are-we-there-yet": "^3.0.0", - "console-control-strings": "^1.1.0", - "gauge": "^4.0.3", - "set-blocking": "^2.0.0" + "ansi-regex": "^5.0.1" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=8" } }, - "node_modules/node-gyp/node_modules/readable-stream": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.1.tgz", - "integrity": "sha512-+rQmrWMYGA90yenhTYsLWAsLsqVC8osOw6PKE1HDYiO0gdPeKe/xDHNzIAIn4C91YQ6oenEhfYqqc1883qHbjQ==", - "optional": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, + "node_modules/npm/node_modules/strip-ansi-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "inBundle": true, + "license": "MIT", "engines": { - "node": ">= 6" + "node": ">=8" } }, - "node_modules/node-gyp/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "optional": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" + "node_modules/npm/node_modules/supports-color": { + "version": "9.4.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/node-gyp/node_modules/semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", - "optional": true, + "node_modules/npm/node_modules/tar": { + "version": "6.2.0", + "inBundle": true, + "license": "ISC", "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^5.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" }, "engines": { "node": ">=10" } }, - "node_modules/node-gyp/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==", - "optional": true, - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/node-gyp/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==", - "optional": true, + "node_modules/npm/node_modules/tar/node_modules/fs-minipass": { + "version": "2.1.0", + "inBundle": true, + "license": "ISC", "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + "minipass": "^3.0.0" }, "engines": { - "node": ">=8" + "node": ">= 8" } }, - "node_modules/node-gyp/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==", - "optional": true, + "node_modules/npm/node_modules/tar/node_modules/fs-minipass/node_modules/minipass": { + "version": "3.3.6", + "inBundle": true, + "license": "ISC", "dependencies": { - "ansi-regex": "^5.0.1" + "yallist": "^4.0.0" }, "engines": { "node": ">=8" } }, - "node_modules/node-gyp/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "optional": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, + "node_modules/npm/node_modules/tar/node_modules/minipass": { + "version": "5.0.0", + "inBundle": true, + "license": "ISC", "engines": { - "node": ">= 8" + "node": ">=8" } }, - "node_modules/node-gyp/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "optional": true + "node_modules/npm/node_modules/text-table": { + "version": "0.2.0", + "inBundle": true, + "license": "MIT" }, - "node_modules/node-oauth1": { + "node_modules/npm/node_modules/tiny-relative-date": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/node-oauth1/-/node-oauth1-1.3.0.tgz", - "integrity": "sha512-0yggixNfrA1KcBwvh/Hy2xAS1Wfs9dcg6TdFf2zN7gilcAigMdrtZ4ybrBSXBgLvGDw9V1p2MRnGBMq7XjTWLg==", - "dev": true + "inBundle": true, + "license": "MIT" }, - "node_modules/node-preload": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/node-preload/-/node-preload-0.2.1.tgz", - "integrity": "sha512-RM5oyBy45cLEoHqCeh+MNuFAxO0vTFBLskvQbOKnEE7YTTSN4tbN8QWDIPQ6L+WvKsB/qLEGpYe2ZZ9d4W9OIQ==", - "dev": true, + "node_modules/npm/node_modules/treeverse": { + "version": "3.0.0", + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/tuf-js": { + "version": "2.1.0", + "inBundle": true, + "license": "MIT", "dependencies": { - "process-on-spawn": "^1.0.0" + "@tufjs/models": "2.0.0", + "debug": "^4.3.4", + "make-fetch-happen": "^13.0.0" }, "engines": { - "node": ">=8" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/node-releases": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.10.tgz", - "integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==", - "dev": true + "node_modules/npm/node_modules/unique-filename": { + "version": "3.0.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "unique-slug": "^4.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } }, - "node_modules/nodemailer": { - "version": "6.7.3", - "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.7.3.tgz", - "integrity": "sha512-KUdDsspqx89sD4UUyUKzdlUOper3hRkDVkrKh/89G+d9WKsU5ox51NWS4tB1XR5dPUdR4SP0E3molyEfOvSa3g==", + "node_modules/npm/node_modules/unique-slug": { + "version": "4.0.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4" + }, "engines": { - "node": ">=6.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/nodemailer-fetch": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/nodemailer-fetch/-/nodemailer-fetch-1.3.0.tgz", - "integrity": "sha512-5P5+lR0+sWvk1UZGFoTida33dG0xAqk1Pv0t7cPlrJ09dLdZWh/kenxb0vOoUoNVOci4gmSYOnMHzvheSBeFag==" + "node_modules/npm/node_modules/util-deprecate": { + "version": "1.0.2", + "inBundle": true, + "license": "MIT" }, - "node_modules/nodemailer-shared": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/nodemailer-shared/-/nodemailer-shared-1.0.4.tgz", - "integrity": "sha512-tfqdDPbj6L3PywhNqCa988bDxxnffo3Gw0DZkaYwOYVsnMZFgF7LoffS4FAFbiGb1M+mcNBPX/Vy9l0A95fJAg==", + "node_modules/npm/node_modules/validate-npm-package-license": { + "version": "3.0.4", + "inBundle": true, + "license": "Apache-2.0", "dependencies": { - "nodemailer-fetch": "1.3.0" + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" } }, - "node_modules/nodemailer-smtp-transport": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/nodemailer-smtp-transport/-/nodemailer-smtp-transport-2.4.2.tgz", - "integrity": "sha512-VD3oQ5Xzgszg+2f0H3qAnXhciF6pZ9j2hHNaJqHEzh+caEs/cU1dDmCbpdN2bJxPYBeCilA2XshhtEnvxJgZGQ==", + "node_modules/npm/node_modules/validate-npm-package-name": { + "version": "5.0.0", + "inBundle": true, + "license": "ISC", "dependencies": { - "nodemailer-shared": "1.0.4", - "nodemailer-wellknown": "0.1.8", - "smtp-connection": "2.3.2" + "builtins": "^5.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/nodemailer-wellknown": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/nodemailer-wellknown/-/nodemailer-wellknown-0.1.8.tgz", - "integrity": "sha512-kxDRGWY6ZYtcKsCr4IMw5B9nST0EKK8Ay/JjgK96lBEdpt6nRl2ds5khTVv/BGLECbLIAzOsmIwP7KUt1C9frA==" + "node_modules/npm/node_modules/walk-up-path": { + "version": "3.0.1", + "inBundle": true, + "license": "ISC" }, - "node_modules/nopt": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz", - "integrity": "sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==", - "dev": true, + "node_modules/npm/node_modules/wcwidth": { + "version": "1.0.1", + "inBundle": true, + "license": "MIT", "dependencies": { - "abbrev": "^1.0.0" + "defaults": "^1.0.3" + } + }, + "node_modules/npm/node_modules/which": { + "version": "4.0.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "isexe": "^3.1.1" }, "bin": { - "nopt": "bin/nopt.js" + "node-which": "bin/which.js" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^16.13.0 || >=18.0.0" } }, - "node_modules/normalize-package-data": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", - "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", + "node_modules/npm/node_modules/which/node_modules/isexe": { + "version": "3.1.1", + "inBundle": true, + "license": "ISC", + "engines": { + "node": ">=16" + } + }, + "node_modules/npm/node_modules/wide-align": { + "version": "1.1.5", + "inBundle": true, + "license": "ISC", + "dependencies": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, + "node_modules/npm/node_modules/wrap-ansi": { + "version": "8.1.0", + "inBundle": true, + "license": "MIT", "dependencies": { - "hosted-git-info": "^4.0.1", - "is-core-module": "^2.5.0", - "semver": "^7.3.4", - "validate-npm-package-license": "^3.0.1" + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" }, "engines": { - "node": ">=10" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/normalize-package-data/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==", + "node_modules/npm/node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "inBundle": true, + "license": "MIT", "dependencies": { - "yallist": "^4.0.0" + "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/npm/node_modules/wrap-ansi-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" } }, - "node_modules/normalize-package-data/node_modules/semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "node_modules/npm/node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { + "version": "4.3.0", + "inBundle": true, + "license": "MIT", "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=10" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/normalize-package-data/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/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, + "node_modules/npm/node_modules/wrap-ansi-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/normalize-url": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", - "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", + "node_modules/npm/node_modules/wrap-ansi/node_modules/emoji-regex": { + "version": "9.2.2", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/wrap-ansi/node_modules/string-width": { + "version": "5.1.2", + "inBundle": true, + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, "engines": { - "node": ">=10" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", + "node_modules/npm/node_modules/write-file-atomic": { + "version": "5.0.1", + "inBundle": true, + "license": "ISC", "dependencies": { - "path-key": "^2.0.0" + "imurmurhash": "^0.1.4", + "signal-exit": "^4.0.1" }, "engines": { - "node": ">=4" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, + "node_modules/npm/node_modules/yallist": { + "version": "4.0.0", + "inBundle": true, + "license": "ISC" + }, "node_modules/npmlog": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz", @@ -11399,9 +11833,9 @@ } }, "node_modules/nyc": { - "version": "15.0.0", - "resolved": "https://registry.npmjs.org/nyc/-/nyc-15.0.0.tgz", - "integrity": "sha512-qcLBlNCKMDVuKb7d1fpxjPR8sHeMVX0CHarXAVzrVWoFrigCkYR8xcrjfXSPi5HXM7EU78L6ywO7w1c5rZNCNg==", + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/nyc/-/nyc-15.1.0.tgz", + "integrity": "sha512-jMW04n9SxKdKi1ZMGhvUTHBN0EICCRkHemEoE5jm6mTYcqcdas0ATzgUgejlQUHMvpnOZqGB5Xxsv9KxJW1j8A==", "dev": true, "dependencies": { "@istanbuljs/load-nyc-config": "^1.0.0", @@ -11412,6 +11846,7 @@ "find-cache-dir": "^3.2.0", "find-up": "^4.1.0", "foreground-child": "^2.0.0", + "get-package-type": "^0.1.0", "glob": "^7.1.6", "istanbul-lib-coverage": "^3.0.0", "istanbul-lib-hook": "^3.0.0", @@ -11419,10 +11854,9 @@ "istanbul-lib-processinfo": "^2.0.2", "istanbul-lib-report": "^3.0.0", "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.0.0", - "js-yaml": "^3.13.1", + "istanbul-reports": "^3.0.2", "make-dir": "^3.0.0", - "node-preload": "^0.2.0", + "node-preload": "^0.2.1", "p-map": "^3.0.0", "process-on-spawn": "^1.0.0", "resolve-from": "^5.0.0", @@ -11430,7 +11864,6 @@ "signal-exit": "^3.0.2", "spawn-wrap": "^2.0.0", "test-exclude": "^6.0.0", - "uuid": "^3.3.3", "yargs": "^15.0.2" }, "bin": { @@ -11440,15 +11873,6 @@ "node": ">=8.9" } }, - "node_modules/nyc/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/nyc/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -11506,15 +11930,6 @@ "node": ">=8" } }, - "node_modules/nyc/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/nyc/node_modules/locate-path": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", @@ -11563,47 +11978,6 @@ "node": ">=8" } }, - "node_modules/nyc/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/nyc/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/nyc/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/nyc/node_modules/wrap-ansi": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", @@ -11685,9 +12059,9 @@ } }, "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==", + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -11702,13 +12076,13 @@ } }, "node_modules/object.assign": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", - "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", "has-symbols": "^1.0.3", "object-keys": "^1.1.1" }, @@ -11719,11 +12093,92 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/object.entries": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.7.tgz", + "integrity": "sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.fromentries": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.7.tgz", + "integrity": "sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.groupby": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.1.tgz", + "integrity": "sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1" + } + }, + "node_modules/object.hasown": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.3.tgz", + "integrity": "sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA==", + "dev": true, + "dependencies": { + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.values": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.7.tgz", + "integrity": "sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/on-error": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/on-error/-/on-error-2.1.0.tgz", "integrity": "sha512-wpKXxCW2wXLI+9DB9DDBVuOCN9C5rjyaP4GWwqhgrSd2ys1Vyc9yGaPmC5HSOdQ30x9zCLozi9mHx3lm01E+LQ==" }, + "node_modules/on-exit-leak-free": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/on-exit-leak-free/-/on-exit-leak-free-2.1.2.tgz", + "integrity": "sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==", + "engines": { + "node": ">=14.0.0" + } + }, "node_modules/on-finished": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", @@ -11752,84 +12207,75 @@ } }, "node_modules/onetime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==", - "dev": true, + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "dependencies": { - "mimic-fn": "^1.0.0" + "mimic-fn": "^2.1.0" }, "engines": { - "node": ">=4" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", "dev": true, "dependencies": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" + "@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/os": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/os/-/os-0.1.1.tgz", - "integrity": "sha512-jg06S2xr5De63mLjZVJDf3/k37tpjppr2LR7MUOsxv8XuUCVpCnvbCksXCBcB5gQqQf/K0+87WGTRlAj5q7r1A==" - }, - "node_modules/os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/os/-/os-0.1.2.tgz", + "integrity": "sha512-ZoXJkvAnljwvc56MbvhtKVWmSkzV712k42Is2mA0+0KTSRakq5XXuXpjZjgAt9ctzl51ojhQWakQQpmOvXWfjQ==" }, "node_modules/p-each-series": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-2.2.0.tgz", - "integrity": "sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-3.0.0.tgz", + "integrity": "sha512-lastgtAdoH9YaLyDa5i5z64q+kzOcQHsQ5SsZJD3q0VEyI8mq872S3geuNbRUQLVAE9siMfgKrpj7MloKFHruw==", "engines": { - "node": ">=8" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/p-filter": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-filter/-/p-filter-2.1.0.tgz", - "integrity": "sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-filter/-/p-filter-4.1.0.tgz", + "integrity": "sha512-37/tPdZ3oJwHaS3gNJdenCDB3Tz26i9sjhnguBtvN0vYlRIiDNnvTWkuh+0hETV9rLPdJ3rlL3yVOYPIAnM8rw==", "dependencies": { - "p-map": "^2.0.0" + "p-map": "^7.0.1" }, "engines": { - "node": ">=8" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/p-filter/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-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-7.0.1.tgz", + "integrity": "sha512-2wnaR0XL/FDOj+TgpDuRb2KTjLnu3Fma6b1ZUwGY7LcqenMcvP/YFpjpbPKY6WVGsbuJZRuoUz8iPrt8ORnAFw==", "engines": { - "node": ">=4" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/p-is-promise": { @@ -11883,29 +12329,21 @@ } }, "node_modules/p-reduce": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-2.1.0.tgz", - "integrity": "sha512-2USApvnsutq8uoxZBGbbWM0JIYLiEMJ9RlaN7fAzVNb9OZN0SHjjTTfIcb667XynS5Y1VhwDJVDa72TnPzAYWw==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-3.0.0.tgz", + "integrity": "sha512-xsrIUgI0Kn6iyDYm9StOpOeK29XM1aboGji26+QEortiFST1hGZaUQOLhtEbqHErPpGW/aSz6allwK2qcptp0Q==", "engines": { - "node": ">=8" - } - }, - "node_modules/p-retry": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", - "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", - "dependencies": { - "@types/retry": "0.12.0", - "retry": "^0.13.1" + "node": ">=12" }, - "engines": { - "node": ">=8" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "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" } @@ -11983,6 +12421,7 @@ "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" } @@ -11995,24 +12434,19 @@ "node": ">=0.10.0" } }, - "node_modules/path-is-inside": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==", - "dev": true - }, "node_modules/path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "engines": { - "node": ">=4" + "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==" + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true }, "node_modules/path-to-regexp": { "version": "0.1.7", @@ -12042,9 +12476,9 @@ "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==" }, "node_modules/pg-connection-string": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.5.0.tgz", - "integrity": "sha512-r5o/V/ORTA6TmUnyWZR9nCj1klXCO2CEKNRlVuJptZe85QuhFayC7WeMic7ndayT5IRIR0S0xFxFi2ousartlQ==" + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.6.2.tgz", + "integrity": "sha512-ch6OwaeaPYcova4kKZ15sbJ2hKb/VP48ZD2gE7i1J+L4MspCtBMAx8nMgz7bksc7IojCIIWuEhHibSMFH8m8oA==" }, "node_modules/picocolors": { "version": "1.0.0", @@ -12072,25 +12506,62 @@ } }, "node_modules/pino": { - "version": "6.6.1", - "resolved": "https://registry.npmjs.org/pino/-/pino-6.6.1.tgz", - "integrity": "sha512-DOgm7rn6ctBkBYemHXSLj7+j3o3U1q1FWBXbHcprur8mA93QcJSycEkEqhqKiFB9Mx/3Qld2FGr6+9yfQza0kA==", + "version": "8.17.2", + "resolved": "https://registry.npmjs.org/pino/-/pino-8.17.2.tgz", + "integrity": "sha512-LA6qKgeDMLr2ux2y/YiUt47EfgQ+S9LznBWOJdN3q1dx2sv0ziDLUBeVpyVv17TEcGCBuWf0zNtg3M5m1NhhWQ==", "dependencies": { - "fast-redact": "^2.0.0", - "fast-safe-stringify": "^2.0.7", - "flatstr": "^1.0.12", - "pino-std-serializers": "^2.4.2", - "quick-format-unescaped": "^4.0.1", - "sonic-boom": "^1.0.2" + "atomic-sleep": "^1.0.0", + "fast-redact": "^3.1.1", + "on-exit-leak-free": "^2.1.0", + "pino-abstract-transport": "v1.1.0", + "pino-std-serializers": "^6.0.0", + "process-warning": "^3.0.0", + "quick-format-unescaped": "^4.0.3", + "real-require": "^0.2.0", + "safe-stable-stringify": "^2.3.1", + "sonic-boom": "^3.7.0", + "thread-stream": "^2.0.0" }, "bin": { "pino": "bin.js" } }, + "node_modules/pino-abstract-transport": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pino-abstract-transport/-/pino-abstract-transport-1.1.0.tgz", + "integrity": "sha512-lsleG3/2a/JIWUtf9Q5gUNErBqwIu1tUKTT3dUzaf5DySw9ra1wcqKjJjLX1VTY64Wk1eEOYsVGSaGfCK85ekA==", + "dependencies": { + "readable-stream": "^4.0.0", + "split2": "^4.0.0" + } + }, + "node_modules/pino-abstract-transport/node_modules/readable-stream": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz", + "integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==", + "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-abstract-transport/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/pino-std-serializers": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-2.5.0.tgz", - "integrity": "sha512-wXqbqSrIhE58TdrxxlfLwU9eDhrzppQDvGhBEr1gYbzzM4KKo3Y63gSjiDXRKLVS2UOXdPNR2v+KnQgNrs+xUg==" + "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/pkg-conf": { "version": "2.1.0", @@ -12165,20 +12636,6 @@ "node": ">=4" } }, - "node_modules/pkg-config": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/pkg-config/-/pkg-config-1.1.1.tgz", - "integrity": "sha512-ft/WI9YK6FuTuw4Ql+QUaNXtm/ASQNqDUUsZEgFZKyFpW6amyP8Gx01xrRs8KdiNbbqXfYxkOXplpq1euWbOjw==", - "dev": true, - "dependencies": { - "debug-log": "^1.0.0", - "find-root": "^1.0.0", - "xtend": "^4.0.1" - }, - "engines": { - "node": ">=0.10" - } - }, "node_modules/pkg-dir": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", @@ -12243,13 +12700,12 @@ "node": ">=8" } }, - "node_modules/pluralize": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz", - "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", - "dev": true, + "node_modules/pony-cause": { + "version": "2.1.10", + "resolved": "https://registry.npmjs.org/pony-cause/-/pony-cause-2.1.10.tgz", + "integrity": "sha512-3IKLNXclQgkU++2fSi93sQ6BznFuxSLB11HdvZQ6JW/spahf/P1pAHBQEahr20rs0htZW0UDkM1HmA+nZkXKsw==", "engines": { - "node": ">=4" + "node": ">=12.0.0" } }, "node_modules/portscanner": { @@ -12274,100 +12730,55 @@ } }, "node_modules/postman-collection": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/postman-collection/-/postman-collection-4.1.1.tgz", - "integrity": "sha512-ODpJtlf8r99DMcTU7gFmi/yvQYckFzcuE6zL/fWnyrFT34ugdCBFlX+DN7M+AnP6lmR822fv5s60H4DnL4+fAg==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/postman-collection/-/postman-collection-4.3.0.tgz", + "integrity": "sha512-QpmNOw1JhAVQTFWRz443/qpKs4/3T1MFrKqDZ84RS1akxOzhXXr15kD8+/+jeA877qyy9rfMsrFgLe2W7aCPjw==", "dev": true, "dependencies": { - "faker": "5.5.3", + "@faker-js/faker": "5.5.3", "file-type": "3.9.0", "http-reasons": "0.1.0", - "iconv-lite": "0.6.3", - "liquid-json": "0.3.1", - "lodash": "4.17.21", - "mime-format": "2.0.1", - "mime-types": "2.1.34", - "postman-url-encoder": "3.0.5", - "semver": "7.3.5", - "uuid": "8.3.2" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/postman-collection-transformer": { - "version": "4.1.6", - "resolved": "https://registry.npmjs.org/postman-collection-transformer/-/postman-collection-transformer-4.1.6.tgz", - "integrity": "sha512-xvdQb6sZoWcG9xZXUPSuxocjcd6WCZlINlGGiuHdSfxhgiwQhj9qhF0JRFbagZ8xB0+pYUairD5MiCENc6DEVA==", - "dev": true, - "dependencies": { - "commander": "8.3.0", - "inherits": "2.0.4", - "lodash": "4.17.21", - "semver": "7.3.5", - "strip-json-comments": "3.1.1" - }, - "bin": { - "postman-collection-transformer": "bin/transform-collection.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/postman-collection-transformer/node_modules/commander": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", - "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", - "dev": true, - "engines": { - "node": ">= 12" - } - }, - "node_modules/postman-collection-transformer/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" + "iconv-lite": "0.6.3", + "liquid-json": "0.3.1", + "lodash": "4.17.21", + "mime-format": "2.0.1", + "mime-types": "2.1.35", + "postman-url-encoder": "3.0.5", + "semver": "7.5.4", + "uuid": "8.3.2" }, "engines": { "node": ">=10" } }, - "node_modules/postman-collection-transformer/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "node_modules/postman-collection-transformer": { + "version": "4.1.8", + "resolved": "https://registry.npmjs.org/postman-collection-transformer/-/postman-collection-transformer-4.1.8.tgz", + "integrity": "sha512-smJ6X7Z7kbg6hp7JZPFixrSN3J3WkQed7DrWCC5tF7IxOMpFLqhtTtGssY8nD1inP8+mJf+N72Pf2ttUAHgBKw==", "dev": true, "dependencies": { - "lru-cache": "^6.0.0" + "commander": "8.3.0", + "inherits": "2.0.4", + "lodash": "4.17.21", + "semver": "7.5.4", + "strip-json-comments": "3.1.1" }, "bin": { - "semver": "bin/semver.js" + "postman-collection-transformer": "bin/transform-collection.js" }, "engines": { "node": ">=10" } }, - "node_modules/postman-collection-transformer/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==", + "node_modules/postman-collection-transformer/node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", "dev": true, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 12" } }, - "node_modules/postman-collection-transformer/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/postman-collection/node_modules/iconv-lite": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", @@ -12380,54 +12791,6 @@ "node": ">=0.10.0" } }, - "node_modules/postman-collection/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/postman-collection/node_modules/mime-db": { - "version": "1.51.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", - "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/postman-collection/node_modules/mime-types": { - "version": "2.1.34", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", - "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", - "dev": true, - "dependencies": { - "mime-db": "1.51.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/postman-collection/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/postman-collection/node_modules/uuid": { "version": "8.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", @@ -12437,23 +12800,18 @@ "uuid": "dist/bin/uuid" } }, - "node_modules/postman-collection/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/postman-request": { - "version": "2.88.1-postman.31", - "resolved": "https://registry.npmjs.org/postman-request/-/postman-request-2.88.1-postman.31.tgz", - "integrity": "sha512-OJbYqP7ItxQ84yHyuNpDywCZB0HYbpHJisMQ9lb1cSL3N5H3Td6a2+3l/a74UMd3u82BiGC5yQyYmdOIETP/nQ==", + "version": "2.88.1-postman.33", + "resolved": "https://registry.npmjs.org/postman-request/-/postman-request-2.88.1-postman.33.tgz", + "integrity": "sha512-uL9sCML4gPH6Z4hreDWbeinKU0p0Ke261nU7OvII95NU22HN6Dk7T/SaVPaj6T4TsQqGKIFw6/woLZnH7ugFNA==", "dev": true, "dependencies": { "@postman/form-data": "~3.1.1", + "@postman/tough-cookie": "~4.1.3-postman.1", "@postman/tunnel-agent": "^0.6.3", "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "brotli": "~1.3.2", + "aws4": "^1.12.0", + "brotli": "^1.3.3", "caseless": "~0.12.0", "combined-stream": "~1.0.6", "extend": "~3.0.2", @@ -12463,14 +12821,13 @@ "is-typedarray": "~1.0.0", "isstream": "~0.1.2", "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", + "mime-types": "^2.1.35", "oauth-sign": "~0.9.0", "performance-now": "^2.1.0", - "qs": "~6.5.2", + "qs": "~6.5.3", "safe-buffer": "^5.1.2", "stream-length": "^1.0.2", - "tough-cookie": "~2.5.0", - "uuid": "^3.3.2" + "uuid": "^8.3.2" }, "engines": { "node": ">= 6" @@ -12485,77 +12842,43 @@ "node": ">=0.6" } }, - "node_modules/postman-request/node_modules/tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "node_modules/postman-request/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==", "dev": true, - "dependencies": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=0.8" + "bin": { + "uuid": "dist/bin/uuid" } }, "node_modules/postman-runtime": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/postman-runtime/-/postman-runtime-7.29.0.tgz", - "integrity": "sha512-eXxHREE/fUpohkGPRgBY1YccSGx9cyW3mtGiPyIE4zD5fYzasgBHqW6kbEND3Xrd3yf/uht/YI1H8O7J1+A1+w==", + "version": "7.36.1", + "resolved": "https://registry.npmjs.org/postman-runtime/-/postman-runtime-7.36.1.tgz", + "integrity": "sha512-SarhTewd+rp2cAdC6WFDdT4No0BR3e+tzBcQWZm/o+BDBeOf0W8MQsMKs3BozLMKoKOb/ImqW0jTsa0Rewo0cg==", "dev": true, "dependencies": { - "async": "3.2.3", - "aws4": "1.11.0", - "handlebars": "4.7.7", - "httpntlm": "1.7.7", + "@postman/tough-cookie": "4.1.3-postman.1", + "async": "3.2.5", + "aws4": "1.12.0", + "handlebars": "4.7.8", + "httpntlm": "1.8.13", + "jose": "4.14.4", "js-sha512": "0.8.0", "lodash": "4.17.21", - "mime-types": "2.1.34", + "mime-types": "2.1.35", + "node-forge": "1.3.1", "node-oauth1": "1.3.0", "performance-now": "2.1.0", - "postman-collection": "4.1.1", - "postman-request": "2.88.1-postman.31", - "postman-sandbox": "4.0.6", + "postman-collection": "4.3.0", + "postman-request": "2.88.1-postman.33", + "postman-sandbox": "4.4.0", "postman-url-encoder": "3.0.5", "serialised-error": "1.1.3", - "tough-cookie": "3.0.1", + "strip-json-comments": "3.1.1", "uuid": "8.3.2" }, "engines": { - "node": ">=10" - } - }, - "node_modules/postman-runtime/node_modules/async": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.3.tgz", - "integrity": "sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==", - "dev": true - }, - "node_modules/postman-runtime/node_modules/aws4": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", - "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", - "dev": true - }, - "node_modules/postman-runtime/node_modules/mime-db": { - "version": "1.51.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", - "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/postman-runtime/node_modules/mime-types": { - "version": "2.1.34", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", - "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", - "dev": true, - "dependencies": { - "mime-db": "1.51.0" - }, - "engines": { - "node": ">= 0.6" + "node": ">=12" } }, "node_modules/postman-runtime/node_modules/uuid": { @@ -12568,14 +12891,15 @@ } }, "node_modules/postman-sandbox": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/postman-sandbox/-/postman-sandbox-4.0.6.tgz", - "integrity": "sha512-PPRanSNEE4zy3kO7CeSBHmAfJnGdD9ecHY/Mjh26CQuZZarGkNO8c0U/n+xX3+5M1BRNc82UYq6YCtdsSDqcng==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/postman-sandbox/-/postman-sandbox-4.4.0.tgz", + "integrity": "sha512-NvNodj44vqtZrgLvnqoqFxvqRL1Pw0MSLXGlzSu252iurmHCz59wUykNUQ8mQh0AXNM00gbN/lS1nrGfS1zqwA==", "dev": true, "dependencies": { "lodash": "4.17.21", + "postman-collection": "4.3.0", "teleport-javascript": "1.0.0", - "uvm": "2.0.2" + "uvm": "2.1.1" }, "engines": { "node": ">=10" @@ -12594,9 +12918,9 @@ } }, "node_modules/prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", + "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" @@ -12642,14 +12966,10 @@ "node": ">=8" } }, - "node_modules/progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } + "node_modules/process-warning": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-3.0.0.tgz", + "integrity": "sha512-mqn0kFRl0EoqhnL0GQ0veqFHyIN1yig9RHh/InzORTUiZHFRAur+aMtRkELNwGs9aNwKS6tg/An4NYBPGwvtzQ==" }, "node_modules/promise-inflight": { "version": "1.0.1", @@ -12737,15 +13057,6 @@ "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==" }, - "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", @@ -12754,19 +13065,10 @@ "node": ">=6" } }, - "node_modules/q": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==", - "engines": { - "node": ">=0.6.0", - "teleport": ">=0.2.0" - } - }, "node_modules/qs": { - "version": "6.10.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", - "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", + "version": "6.11.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz", + "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==", "dependencies": { "side-channel": "^1.0.4" }, @@ -12777,6 +13079,12 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "dev": true + }, "node_modules/queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -12801,14 +13109,6 @@ "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": "4.0.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", - "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", - "engines": { - "node": ">=8" - } - }, "node_modules/randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", @@ -12859,6 +13159,14 @@ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" }, + "node_modules/rc/node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/react-is": { "version": "16.13.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", @@ -12866,105 +13174,76 @@ "dev": true }, "node_modules/read-pkg": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-9.0.1.tgz", + "integrity": "sha512-9viLL4/n1BJUCT1NXVTdS1jtm80yDEgR5T4yCelII49Mbj0v1rZdKqj7zCiYdbB0CuCgdrvHcNogAKTFPBocFA==", "dependencies": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" + "@types/normalize-package-data": "^2.4.3", + "normalize-package-data": "^6.0.0", + "parse-json": "^8.0.0", + "type-fest": "^4.6.0", + "unicorn-magic": "^0.1.0" }, "engines": { - "node": ">=8" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/read-pkg-up": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", - "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-11.0.0.tgz", + "integrity": "sha512-LOVbvF1Q0SZdjClSefZ0Nz5z8u+tIE7mV5NibzmE9VYmDe9CaBbAVtz1veOSZbofrdsilxuDAYnFenukZVp8/Q==", + "deprecated": "Renamed to read-package-up", "dependencies": { - "find-up": "^4.1.0", - "read-pkg": "^5.2.0", - "type-fest": "^0.8.1" + "find-up-simple": "^1.0.0", + "read-pkg": "^9.0.0", + "type-fest": "^4.6.0" }, "engines": { - "node": ">=8" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/read-pkg-up/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==", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, + "node_modules/read-pkg-up/node_modules/type-fest": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.9.0.tgz", + "integrity": "sha512-KS/6lh/ynPGiHD/LnAobrEFq3Ad4pBzOlJ1wAnJx9N4EYoqFhMfLIBjUT2UEx4wg5ZE+cC1ob6DCSpppVo+rtg==", "engines": { - "node": ">=8" - } - }, - "node_modules/read-pkg-up/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==", - "dependencies": { - "p-locate": "^4.1.0" + "node": ">=16" }, - "engines": { - "node": ">=8" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/read-pkg-up/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==", + "node_modules/read-pkg/node_modules/parse-json": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-8.1.0.tgz", + "integrity": "sha512-rum1bPifK5SSar35Z6EKZuYPJx85pkNaFrxBK3mwdfSJ1/WKbYrjoW/zTPSjRRamfmVX1ACBIdFAO0VRErW/EA==", "dependencies": { - "p-try": "^2.0.0" + "@babel/code-frame": "^7.22.13", + "index-to-position": "^0.1.2", + "type-fest": "^4.7.1" }, "engines": { - "node": ">=6" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/read-pkg-up/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==", - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/read-pkg/node_modules/hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" - }, - "node_modules/read-pkg/node_modules/normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, "node_modules/read-pkg/node_modules/type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.9.0.tgz", + "integrity": "sha512-KS/6lh/ynPGiHD/LnAobrEFq3Ad4pBzOlJ1wAnJx9N4EYoqFhMfLIBjUT2UEx4wg5ZE+cC1ob6DCSpppVo+rtg==", "engines": { - "node": ">=8" + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/readable-stream": { @@ -12990,16 +13269,12 @@ "node": ">=8.10.0" } }, - "node_modules/redent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", - "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", - "dependencies": { - "indent-string": "^4.0.0", - "strip-indent": "^3.0.0" - }, + "node_modules/real-require": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/real-require/-/real-require-0.2.0.tgz", + "integrity": "sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==", "engines": { - "node": ">=8" + "node": ">= 12.13.0" } }, "node_modules/redeyed": { @@ -13010,36 +13285,35 @@ "esprima": "~4.0.0" } }, - "node_modules/reduce-flatten": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-1.0.1.tgz", - "integrity": "sha512-j5WfFJfc9CoXv/WbwVLHq74i/hdTUpy+iNC534LxczMRP67vJeK3V9JOdnL0N1cIRbn9mYhE2yVjvvKXDxvNXQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/referrer-policy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/referrer-policy/-/referrer-policy-1.2.0.tgz", - "integrity": "sha512-LgQJIuS6nAy1Jd88DCQRemyE3mS+ispwlqMk3b0yjZ257fI1v9c+/p6SD5gP5FGyXUIgrNOAfmyioHwZtYv2VA==", + "node_modules/reflect.getprototypeof": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.4.tgz", + "integrity": "sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "globalthis": "^1.0.3", + "which-builtin-type": "^1.1.3" + }, "engines": { - "node": ">=4.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/regenerator-runtime": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" - }, "node_modules/regexp.prototype.flags": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", - "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz", + "integrity": "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "functions-have-names": "^1.2.2" + "define-properties": "^1.2.0", + "set-function-name": "^2.0.0" }, "engines": { "node": ">= 0.4" @@ -13049,20 +13323,23 @@ } }, "node_modules/regexpp": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", - "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", "dev": true, "engines": { - "node": ">=6.5.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" } }, "node_modules/registry-auth-token": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-5.0.1.tgz", - "integrity": "sha512-UfxVOj8seK1yaIOiieV4FIP01vfBDLsY0H9sQzi9EbbUdJiuuBjJgLa1DpImXMNPnVkBD4eVxTEXcrZA6kfpJA==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-5.0.2.tgz", + "integrity": "sha512-o/3ikDxtXaA59BmZuZrJZDJv8NMDGSj+6j6XaeBmHw8eY1i1qd9+6H+LjVvQXx3HN6aRCGa1cUdJ9RaJZUugnQ==", "dependencies": { - "@pnpm/npm-conf": "^1.0.4" + "@pnpm/npm-conf": "^2.1.0" }, "engines": { "node": ">=14" @@ -13235,32 +13512,17 @@ "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", "dev": true }, - "node_modules/require-uncached": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", - "integrity": "sha512-Xct+41K3twrbBHdxAgMoOS+cNcoqIjfM2/VxBF4LL2hVph7YsF8VSKyQ3BDFZwEVbok9yeDl2le/qo0S77WG2w==", - "dev": true, - "dependencies": { - "caller-path": "^0.1.0", - "resolve-from": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/require-uncached/node_modules/resolve-from": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", - "integrity": "sha512-kT10v4dhrlLNcnO084hEjvXCI1wUG9qZLoz2RogxqDQQYy7IxjI/iMUkOtQTNEh6rzHxvdQWHsJyel1pKOVCxg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true }, "node_modules/resolve": { "version": "1.22.1", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "dev": true, "dependencies": { "is-core-module": "^2.9.0", "path-parse": "^1.0.7", @@ -13278,37 +13540,13 @@ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "engines": { - "node": ">=4" - } - }, - "node_modules/restore-cursor": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==", - "dev": true, - "dependencies": { - "onetime": "^2.0.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/retry": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", - "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", - "engines": { - "node": ">= 4" + "node": ">=4" } }, "node_modules/retry-as-promised": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/retry-as-promised/-/retry-as-promised-3.1.0.tgz", - "integrity": "sha512-g6T9rr5G4AfRVJZcnCbbmpcTDw8NJSnmVrvrJ9Pm9OWAzigocIcFp4+ItwHGJIr0wx0YzwlCJOvvEKQrZhzPOw==", - "dependencies": { - "any-promise": "^1.3.0" - } + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/retry-as-promised/-/retry-as-promised-7.0.4.tgz", + "integrity": "sha512-XgmCoxKWkDofwH8WddD0w85ZfqYz+ZHlr5yo+3YUCfycWawU56T5ckWXsScsj5B8tqUcIG67DxXByo3VUgiAdA==" }, "node_modules/reusify": { "version": "1.0.4", @@ -13320,24 +13558,34 @@ } }, "node_modules/rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", - "dev": true, + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dependencies": { "glob": "^7.1.3" }, "bin": { "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/run-async": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", - "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "node_modules/roarr": { + "version": "2.15.4", + "resolved": "https://registry.npmjs.org/roarr/-/roarr-2.15.4.tgz", + "integrity": "sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==", "dev": true, + "dependencies": { + "boolean": "^3.0.1", + "detect-node": "^2.0.4", + "globalthis": "^1.0.1", + "json-stringify-safe": "^5.0.1", + "semver-compare": "^1.0.0", + "sprintf-js": "^1.1.2" + }, "engines": { - "node": ">=0.12.0" + "node": ">=8.0" } }, "node_modules/run-parallel": { @@ -13362,18 +13610,30 @@ "queue-microtask": "^1.2.2" } }, - "node_modules/rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "node_modules/safe-array-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.1.tgz", + "integrity": "sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==", "dev": true, "dependencies": { - "tslib": "^1.9.0" + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" }, "engines": { - "npm": ">=2.0.0" + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/safe-array-concat/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, "node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -13407,6 +13667,14 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/safe-stable-stringify": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz", + "integrity": "sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==", + "engines": { + "node": ">=10" + } + }, "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", @@ -13418,640 +13686,531 @@ "integrity": "sha512-nZi59hW3Sl5P3+wOO89eHBAAGwmCPd2aE1+dLZV5MO+ItQctIvAqihzaAXIQhvtH4KJPxM080HsnqltR2y8cWg==" }, "node_modules/semantic-release": { - "version": "19.0.3", - "resolved": "https://registry.npmjs.org/semantic-release/-/semantic-release-19.0.3.tgz", - "integrity": "sha512-HaFbydST1cDKZHuFZxB8DTrBLJVK/AnDExpK0s3EqLIAAUAHUgnd+VSJCUtTYQKkAkauL8G9CucODrVCc7BuAA==", - "dependencies": { - "@semantic-release/commit-analyzer": "^9.0.2", - "@semantic-release/error": "^3.0.0", - "@semantic-release/github": "^8.0.0", - "@semantic-release/npm": "^9.0.0", - "@semantic-release/release-notes-generator": "^10.0.0", - "aggregate-error": "^3.0.0", - "cosmiconfig": "^7.0.0", + "version": "22.0.12", + "resolved": "https://registry.npmjs.org/semantic-release/-/semantic-release-22.0.12.tgz", + "integrity": "sha512-0mhiCR/4sZb00RVFJIUlMuiBkW3NMpVIW2Gse7noqEMoFGkvfPPAImEQbkBV8xga4KOPP4FdTRYuLLy32R1fPw==", + "dependencies": { + "@semantic-release/commit-analyzer": "^11.0.0", + "@semantic-release/error": "^4.0.0", + "@semantic-release/github": "^9.0.0", + "@semantic-release/npm": "^11.0.0", + "@semantic-release/release-notes-generator": "^12.0.0", + "aggregate-error": "^5.0.0", + "cosmiconfig": "^8.0.0", "debug": "^4.0.0", - "env-ci": "^5.0.0", - "execa": "^5.0.0", - "figures": "^3.0.0", - "find-versions": "^4.0.0", + "env-ci": "^10.0.0", + "execa": "^8.0.0", + "figures": "^6.0.0", + "find-versions": "^5.1.0", "get-stream": "^6.0.0", "git-log-parser": "^1.2.0", - "hook-std": "^2.0.0", - "hosted-git-info": "^4.0.0", - "lodash": "^4.17.21", - "marked": "^4.0.10", - "marked-terminal": "^5.0.0", + "hook-std": "^3.0.0", + "hosted-git-info": "^7.0.0", + "import-from-esm": "^1.3.1", + "lodash-es": "^4.17.21", + "marked": "^9.0.0", + "marked-terminal": "^6.0.0", "micromatch": "^4.0.2", - "p-each-series": "^2.1.0", - "p-reduce": "^2.0.0", - "read-pkg-up": "^7.0.0", + "p-each-series": "^3.0.0", + "p-reduce": "^3.0.0", + "read-pkg-up": "^11.0.0", "resolve-from": "^5.0.0", "semver": "^7.3.2", - "semver-diff": "^3.1.1", + "semver-diff": "^4.0.0", "signale": "^1.2.1", - "yargs": "^16.2.0" + "yargs": "^17.5.1" }, "bin": { "semantic-release": "bin/semantic-release.js" }, "engines": { - "node": ">=16 || ^14.17" - } - }, - "node_modules/semantic-release/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==", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/semantic-release/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/semantic-release/node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "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": "^18.17 || >=20.6.1" } }, - "node_modules/semantic-release/node_modules/figures": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "node_modules/semantic-release/node_modules/aggregate-error": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-5.0.0.tgz", + "integrity": "sha512-gOsf2YwSlleG6IjRYG2A7k0HmBMEo6qVNk9Bp/EaLgAJT5ngH6PXbqa4ItvnEwCm/velL5jAnQgsHsWnjhGmvw==", "dependencies": { - "escape-string-regexp": "^1.0.5" + "clean-stack": "^5.2.0", + "indent-string": "^5.0.0" }, "engines": { - "node": ">=8" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/semantic-release/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==", - "engines": { - "node": ">=10" + "node_modules/semantic-release/node_modules/clean-stack": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-5.2.0.tgz", + "integrity": "sha512-TyUIUJgdFnCISzG5zu3291TAsE77ddchd0bepon1VVQrKLGKFED4iXFEDQ24mIPdPBbyE16PK3F8MYE1CmcBEQ==", + "dependencies": { + "escape-string-regexp": "5.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/semantic-release/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==", "engines": { - "node": ">=8" + "node": ">=14.16" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/semantic-release/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/semantic-release/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==", - "engines": { - "node": ">=6" - } - }, - "node_modules/semantic-release/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/semantic-release/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==", + "node_modules/semantic-release/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==", "dependencies": { - "path-key": "^3.0.0" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" }, "engines": { - "node": ">=8" + "node": ">=12" } }, - "node_modules/semantic-release/node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "node_modules/semantic-release/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dependencies": { - "mimic-fn": "^2.1.0" + "ms": "2.1.2" }, "engines": { - "node": ">=6" + "node": ">=6.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/semantic-release/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==", - "engines": { - "node": ">=8" + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/semantic-release/node_modules/resolve-from": { + "node_modules/semantic-release/node_modules/escape-string-regexp": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "engines": { - "node": ">=8" - } - }, - "node_modules/semantic-release/node_modules/semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", "engines": { - "node": ">=10" - } - }, - "node_modules/semantic-release/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==", - "dependencies": { - "shebang-regex": "^3.0.0" + "node": ">=12" }, - "engines": { - "node": ">=8" - } - }, - "node_modules/semantic-release/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==", - "engines": { - "node": ">=8" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/semantic-release/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "node_modules/semantic-release/node_modules/execa": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", + "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" + "cross-spawn": "^7.0.3", + "get-stream": "^8.0.1", + "human-signals": "^5.0.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^3.0.0" }, "engines": { - "node": ">= 8" - } - }, - "node_modules/semantic-release/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/semver": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", - "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==", - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/semver-diff": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz", - "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==", - "dependencies": { - "semver": "^6.3.0" + "node": ">=16.17" }, - "engines": { - "node": ">=8" - } - }, - "node_modules/semver-diff/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "bin": { - "semver": "bin/semver.js" + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/semver-regex": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/semver-regex/-/semver-regex-3.1.4.tgz", - "integrity": "sha512-6IiqeZNgq01qGf0TId0t3NvKzSvUsjcpdEO3AQNeIjR6A2+ckTnQlDpl4qu1bjRv0RzN3FP9hzFmws3lKqRWkA==", + "node_modules/semantic-release/node_modules/execa/node_modules/get-stream": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", + "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", "engines": { - "node": ">=8" + "node": ">=16" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/send": { - "version": "0.17.2", - "resolved": "https://registry.npmjs.org/send/-/send-0.17.2.tgz", - "integrity": "sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww==", - "dependencies": { - "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "1.8.1", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "~2.3.0", - "range-parser": "~1.2.1", - "statuses": "~1.5.0" + "node_modules/semantic-release/node_modules/figures": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/figures/-/figures-6.0.1.tgz", + "integrity": "sha512-0oY/olScYD4IhQ8u//gCPA4F3mlTn2dacYmiDm/mbDQvpmLjV4uH+zhsQ5IyXRyvqkvtUkXkNdGvg5OFJTCsuQ==", + "dependencies": { + "is-unicode-supported": "^2.0.0" }, "engines": { - "node": ">= 0.8.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/send/node_modules/depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "node_modules/semantic-release/node_modules/human-signals": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", + "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", "engines": { - "node": ">= 0.6" + "node": ">=16.17.0" } }, - "node_modules/send/node_modules/destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha512-3NdhDuEXnfun/z7x9GOElY49LoqVHoGScmOKwmxhsS8N5Y+Z8KyPPDnaSzqWgYt/ji4mqwfTS34Htrk0zPIXVg==" - }, - "node_modules/send/node_modules/http-errors": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", - "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", - "dependencies": { - "depd": "~1.1.2", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.1" - }, + "node_modules/semantic-release/node_modules/indent-string": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", + "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", "engines": { - "node": ">= 0.6" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/send/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" - }, + "node_modules/semantic-release/node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", "engines": { - "node": ">=4" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "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/send/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==", - "dependencies": { - "ee-first": "1.1.1" + "node_modules/semantic-release/node_modules/is-unicode-supported": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.0.0.tgz", + "integrity": "sha512-FRdAyx5lusK1iHG0TWpVtk9+1i+GjrzRffhDg4ovQ7mcidMQ6mj+MhKPmvh7Xwyv5gIS06ns49CA7Sqg7lC22Q==", + "engines": { + "node": ">=18" }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semantic-release/node_modules/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", "engines": { - "node": ">= 0.8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/sequelize": { - "version": "6.29.0", - "resolved": "https://registry.npmjs.org/sequelize/-/sequelize-6.29.0.tgz", - "integrity": "sha512-m8Wi90rs3NZP9coXE52c7PL4Q078nwYZXqt1IxPvgki7nOFn0p/F0eKsYDBXCPw9G8/BCEa6zZNk0DQUAT4ypA==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/sequelize" - } - ], + "node_modules/semantic-release/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/semantic-release/node_modules/npm-run-path": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.2.0.tgz", + "integrity": "sha512-W4/tgAXFqFA0iL7fk0+uQ3g7wkL8xJmx3XdK0VGb4cHW//eZTtKGvFBBoRKVTpY7n6ze4NL9ly7rgXcHufqXKg==", "dependencies": { - "@types/debug": "^4.1.7", - "@types/validator": "^13.7.1", - "debug": "^4.3.3", - "dottie": "^2.0.2", - "inflection": "^1.13.2", - "lodash": "^4.17.21", - "moment": "^2.29.1", - "moment-timezone": "^0.5.35", - "pg-connection-string": "^2.5.0", - "retry-as-promised": "^7.0.3", - "semver": "^7.3.5", - "sequelize-pool": "^7.1.0", - "toposort-class": "^1.0.1", - "uuid": "^8.3.2", - "validator": "^13.7.0", - "wkx": "^0.5.0" + "path-key": "^4.0.0" }, "engines": { - "node": ">=10.0.0" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, - "peerDependenciesMeta": { - "ibm_db": { - "optional": true - }, - "mariadb": { - "optional": true - }, - "mysql2": { - "optional": true - }, - "oracledb": { - "optional": true - }, - "pg": { - "optional": true - }, - "pg-hstore": { - "optional": true - }, - "snowflake-sdk": { - "optional": true - }, - "sqlite3": { - "optional": true - }, - "tedious": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/sequelize-cli": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/sequelize-cli/-/sequelize-cli-5.5.0.tgz", - "integrity": "sha512-twVQ02alCpr2XvxNmpi32C48WZs6xHTH1OFTfTS5Meg3BVqOM8ghiZoml4FITFjlD8sAJSQjlAHTwqTbuolA6Q==", - "dev": true, + "node_modules/semantic-release/node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", "dependencies": { - "bluebird": "^3.5.3", - "cli-color": "^1.4.0", - "fs-extra": "^7.0.1", - "js-beautify": "^1.8.8", - "lodash": "^4.17.5", - "resolve": "^1.5.0", - "umzug": "^2.1.0", - "yargs": "^13.1.0" - }, - "bin": { - "sequelize": "lib/sequelize" + "mimic-fn": "^4.0.0" }, "engines": { - "node": ">=6.0.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/sequelize-cli/node_modules/ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", - "dev": true, + "node_modules/semantic-release/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", "engines": { - "node": ">=6" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/sequelize-cli/node_modules/cliui": { + "node_modules/semantic-release/node_modules/resolve-from": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", - "dev": true, - "dependencies": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "engines": { + "node": ">=8" } }, - "node_modules/sequelize-cli/node_modules/emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true + "node_modules/semantic-release/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } }, - "node_modules/sequelize-cli/node_modules/find-up": { + "node_modules/semantic-release/node_modules/strip-final-newline": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "dependencies": { - "locate-path": "^3.0.0" - }, + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", "engines": { - "node": ">=6" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/sequelize-cli/node_modules/fs-extra": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", - "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", - "dev": true, + "node_modules/semantic-release/node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", "dependencies": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" + "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": ">=6 <7 || >=8" + "node": ">=12" } }, - "node_modules/sequelize-cli/node_modules/jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", - "dev": true, - "optionalDependencies": { - "graceful-fs": "^4.1.6" + "node_modules/semantic-release/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==", + "engines": { + "node": ">=12" } }, - "node_modules/sequelize-cli/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==", - "dev": true, + "node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" }, "engines": { - "node": ">=6" + "node": ">=10" } }, - "node_modules/sequelize-cli/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, + "node_modules/semver-compare": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", + "integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==", + "dev": true + }, + "node_modules/semver-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-4.0.0.tgz", + "integrity": "sha512-0Ju4+6A8iOnpL/Thra7dZsSlOHYAHIeMxfhWQRI1/VLcT3WDBZKKtQt/QkBOsiIN9ZpuvHE6cGZ0x4glCMmfiA==", "dependencies": { - "p-try": "^2.0.0" + "semver": "^7.3.5" }, "engines": { - "node": ">=6" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/sequelize-cli/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==", - "dev": true, + "node_modules/semver-regex": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/semver-regex/-/semver-regex-4.0.5.tgz", + "integrity": "sha512-hunMQrEy1T6Jr2uEVjrAIqjwWcQTgOAcIM52C8MY1EZSD3DDNft04XzvYKPqjED65bNVVko0YI38nYeEHCX3yw==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semver/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": { - "p-limit": "^2.0.0" + "yallist": "^4.0.0" }, "engines": { - "node": ">=6" + "node": ">=10" } }, - "node_modules/sequelize-cli/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==", - "dev": true, + "node_modules/semver/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/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/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/sequelize-cli/node_modules/string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, + "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/sequelize": { + "version": "6.35.2", + "resolved": "https://registry.npmjs.org/sequelize/-/sequelize-6.35.2.tgz", + "integrity": "sha512-EdzLaw2kK4/aOnWQ7ed/qh3B6/g+1DvmeXr66RwbcqSm/+QRS9X0LDI5INBibsy4eNJHWIRPo3+QK0zL+IPBHg==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/sequelize" + } + ], "dependencies": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" + "@types/debug": "^4.1.8", + "@types/validator": "^13.7.17", + "debug": "^4.3.4", + "dottie": "^2.0.6", + "inflection": "^1.13.4", + "lodash": "^4.17.21", + "moment": "^2.29.4", + "moment-timezone": "^0.5.43", + "pg-connection-string": "^2.6.1", + "retry-as-promised": "^7.0.4", + "semver": "^7.5.4", + "sequelize-pool": "^7.1.0", + "toposort-class": "^1.0.1", + "uuid": "^8.3.2", + "validator": "^13.9.0", + "wkx": "^0.5.0" }, "engines": { - "node": ">=6" + "node": ">=10.0.0" + }, + "peerDependenciesMeta": { + "ibm_db": { + "optional": true + }, + "mariadb": { + "optional": true + }, + "mysql2": { + "optional": true + }, + "oracledb": { + "optional": true + }, + "pg": { + "optional": true + }, + "pg-hstore": { + "optional": true + }, + "snowflake-sdk": { + "optional": true + }, + "sqlite3": { + "optional": true + }, + "tedious": { + "optional": true + } } }, - "node_modules/sequelize-cli/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "node_modules/sequelize-cli": { + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/sequelize-cli/-/sequelize-cli-6.6.2.tgz", + "integrity": "sha512-V8Oh+XMz2+uquLZltZES6MVAD+yEnmMfwfn+gpXcDiwE3jyQygLt4xoI0zG8gKt6cRcs84hsKnXAKDQjG/JAgg==", "dev": true, "dependencies": { - "ansi-regex": "^4.1.0" + "cli-color": "^2.0.3", + "fs-extra": "^9.1.0", + "js-beautify": "^1.14.5", + "lodash": "^4.17.21", + "resolve": "^1.22.1", + "umzug": "^2.3.0", + "yargs": "^16.2.0" + }, + "bin": { + "sequelize": "lib/sequelize", + "sequelize-cli": "lib/sequelize" }, "engines": { - "node": ">=6" - } - }, - "node_modules/sequelize-cli/node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true, - "engines": { - "node": ">= 4.0.0" + "node": ">=10.0.0" } }, - "node_modules/sequelize-cli/node_modules/wrap-ansi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "node_modules/sequelize-cli/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", "dev": true, "dependencies": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" }, "engines": { - "node": ">=6" + "node": ">=10" } }, - "node_modules/sequelize-cli/node_modules/y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "dev": true - }, - "node_modules/sequelize-cli/node_modules/yargs": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", - "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "node_modules/sequelize-cli/node_modules/umzug": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/umzug/-/umzug-2.3.0.tgz", + "integrity": "sha512-Z274K+e8goZK8QJxmbRPhl89HPO1K+ORFtm6rySPhFKfKc5GHhqdzD0SGhSWHkzoXasqJuItdhorSvY7/Cgflw==", "dev": true, "dependencies": { - "cliui": "^5.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^13.1.2" + "bluebird": "^3.7.2" + }, + "engines": { + "node": ">=6.0.0" } }, - "node_modules/sequelize-cli/node_modules/yargs-parser": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", - "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", + "node_modules/sequelize-cli/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "dev": true, - "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" + "engines": { + "node": ">= 10.0.0" } }, "node_modules/sequelize-pool": { @@ -14078,41 +14237,11 @@ } } }, - "node_modules/sequelize/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/sequelize/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/sequelize/node_modules/retry-as-promised": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/retry-as-promised/-/retry-as-promised-7.0.4.tgz", - "integrity": "sha512-XgmCoxKWkDofwH8WddD0w85ZfqYz+ZHlr5yo+3YUCfycWawU56T5ckWXsScsj5B8tqUcIG67DxXByo3VUgiAdA==" - }, - "node_modules/sequelize/node_modules/semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/sequelize/node_modules/uuid": { "version": "8.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", @@ -14121,11 +14250,6 @@ "uuid": "dist/bin/uuid" } }, - "node_modules/sequelize/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/serialised-error": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/serialised-error/-/serialised-error-1.1.3.tgz", @@ -14137,6 +14261,33 @@ "uuid": "^3.0.0" } }, + "node_modules/serialize-error": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-7.0.1.tgz", + "integrity": "sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==", + "dev": true, + "dependencies": { + "type-fest": "^0.13.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/serialize-error/node_modules/type-fest": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", + "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/serialize-javascript": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", @@ -14147,14 +14298,14 @@ } }, "node_modules/serve-static": { - "version": "1.14.2", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.2.tgz", - "integrity": "sha512-+TMNA9AFxUEGuC0z2mevogSnn9MXKb4fa7ngeRMJaaGv8vTwnIEkKi+QGvPt33HSnf8pRS+WGM0EbMtCJLKMBQ==", + "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.17.2" + "send": "0.18.0" }, "engines": { "node": ">= 0.8.0" @@ -14165,6 +14316,34 @@ "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" }, + "node_modules/set-function-length": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz", + "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==", + "dependencies": { + "define-data-property": "^1.1.1", + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", + "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==", + "dev": true, + "dependencies": { + "define-data-property": "^1.0.1", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", @@ -14176,22 +14355,22 @@ "integrity": "sha512-b6i4ZpVuUxB9h5gfCxPiusKYkqTMOjEbBs4wMaFbkfia4yFv92UKZ6Df8WXcKbn08JNL/abvg3FnMAOfakDvUw==" }, "node_modules/shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dependencies": { - "shebang-regex": "^1.0.0" + "shebang-regex": "^3.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, "node_modules/shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, "node_modules/side-channel": { @@ -14232,59 +14411,83 @@ } }, "node_modules/sinon": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-7.5.0.tgz", - "integrity": "sha512-AoD0oJWerp0/rY9czP/D6hDTTUYGpObhZjMpd7Cl/A6+j0xBE+ayL/ldfggkBXUs0IkvIiM1ljM8+WkOc5k78Q==", + "version": "17.0.1", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-17.0.1.tgz", + "integrity": "sha512-wmwE19Lie0MLT+ZYNpDymasPHUKTaZHUH/pKEubRXIzySv9Atnlw+BUMGCzWgV7b7wO+Hw6f1TEOr0IUnmU8/g==", "dev": true, "dependencies": { - "@sinonjs/commons": "^1.4.0", - "@sinonjs/formatio": "^3.2.1", - "@sinonjs/samsam": "^3.3.3", - "diff": "^3.5.0", - "lolex": "^4.2.0", - "nise": "^1.5.2", - "supports-color": "^5.5.0" + "@sinonjs/commons": "^3.0.0", + "@sinonjs/fake-timers": "^11.2.2", + "@sinonjs/samsam": "^8.0.0", + "diff": "^5.1.0", + "nise": "^5.1.5", + "supports-color": "^7.2.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/sinon" } }, "node_modules/sinon-chai": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/sinon-chai/-/sinon-chai-3.3.0.tgz", - "integrity": "sha512-r2JhDY7gbbmh5z3Q62pNbrjxZdOAjpsqW/8yxAZRSqLZqowmfGZPGUZPFf3UX36NLis0cv8VEM5IJh9HgkSOAA==", + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/sinon-chai/-/sinon-chai-3.7.0.tgz", + "integrity": "sha512-mf5NURdUaSdnatJx3uhoBOrY9dtL19fiOtAdT1Azxg3+lNJFiuN0uzaU3xX1LeAfL17kHQhTAJgpsfhbMJMY2g==", "dev": true, "peerDependencies": { "chai": "^4.0.0", - "sinon": ">=4.0.0 <8.0.0" + "sinon": ">=4.0.0" } }, "node_modules/sinon/node_modules/diff": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.1.0.tgz", + "integrity": "sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==", "dev": true, "engines": { "node": ">=0.3.1" } }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "node_modules/sinon/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/slice-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", - "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", + "node_modules/sinon/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": { - "ansi-styles": "^3.2.0", - "astral-regex": "^1.0.0", - "is-fullwidth-code-point": "^2.0.0" + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/skin-tone": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/skin-tone/-/skin-tone-2.0.0.tgz", + "integrity": "sha512-kUMbT1oBJCpgrnKoSr0o6wPtvRWT9W9UKvGLwfJYO2WuahZRHOpEyL1ckyMGgMWh0UdpmaoFqKKD29WTomNEGA==", + "dependencies": { + "unicode-emoji-modifier-base": "^1.0.0" }, "engines": { - "node": ">=6" + "node": ">=8" + } + }, + "node_modules/slash": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz", + "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/smart-buffer": { @@ -14298,18 +14501,41 @@ } }, "node_modules/smtp-connection": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/smtp-connection/-/smtp-connection-2.3.2.tgz", - "integrity": "sha512-ORefDrSgddCYkJE7oH3jB6WRv2Z7laZLCMRYD4GFFB8oaZw/hnil7exDBP4yBYs3OgschOuvVdCauUQAblTWvQ==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/smtp-connection/-/smtp-connection-2.12.0.tgz", + "integrity": "sha512-UP5jK4s5SGcUcqPN4U9ingqKt9mXYSKa52YhqxPuMecAnUOsVJpOmtgGaOm1urUBJZlzDt1M9WhZZkgbhxQlvg==", + "dependencies": { + "httpntlm": "1.6.1", + "nodemailer-shared": "1.1.0" + } + }, + "node_modules/smtp-connection/node_modules/httpntlm": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/httpntlm/-/httpntlm-1.6.1.tgz", + "integrity": "sha512-Tcz3Ct9efvNqw3QdTl3h6IgRRlIQxwKkJELN/aAIGnzi2xvb3pDHdnMs8BrxWLV6OoT4DlVyhzSVhFt/tk0lIw==", "dependencies": { - "nodemailer-shared": "1.0.4" + "httpreq": ">=0.4.22", + "underscore": "~1.7.0" + }, + "engines": { + "node": ">=0.8.0" } }, + "node_modules/smtp-connection/node_modules/underscore": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.7.0.tgz", + "integrity": "sha512-cp0oQQyZhUM1kpJDLdGO1jPZHgS/MpzoWYfe9+CM2h/QGDZlqwT2T3YGukuBdaNJ/CAPoeyAZRRHz8JFo176vA==" + }, "node_modules/snyk": { - "version": "1.1109.0", - "resolved": "https://registry.npmjs.org/snyk/-/snyk-1.1109.0.tgz", - "integrity": "sha512-sBcibkAfcq6nXr6t0GieDjdc8kQfEf429+M1VKavGfLaJPQNIqSjtOhQJ5FcZqaB/mCWa1szektkHeyAiB4m9A==", + "version": "1.1266.0", + "resolved": "https://registry.npmjs.org/snyk/-/snyk-1.1266.0.tgz", + "integrity": "sha512-upsITfOo/ioJn4F9BmKUIHeVtHNijvk4fx/2u5SfsNCHYabWSbMR2bmGdB1aD1TUonm92VB2hTJTBTYL2FRo5A==", "dev": true, + "hasInstallScript": true, + "dependencies": { + "@sentry/node": "^7.36.0", + "global-agent": "^3.0.0" + }, "bin": { "snyk": "bin/snyk" }, @@ -14369,12 +14595,11 @@ "optional": true }, "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==", + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-3.7.0.tgz", + "integrity": "sha512-IudtNvSqA/ObjN97tfgNmOKyDOs4dNcg4cUUsHDebqsgb8wGBBwb31LIgShNO8fye0dFI52X1+tFoKKI6Rq1Gg==", "dependencies": { - "atomic-sleep": "^1.0.0", - "flatstr": "^1.0.12" + "atomic-sleep": "^1.0.0" } }, "node_modules/source-map": { @@ -14398,49 +14623,19 @@ "dependencies": { "foreground-child": "^2.0.0", "is-windows": "^1.0.2", - "make-dir": "^3.0.0", - "rimraf": "^3.0.0", - "signal-exit": "^3.0.2", - "which": "^2.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/spawn-wrap/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/spawn-wrap/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" + "make-dir": "^3.0.0", + "rimraf": "^3.0.0", + "signal-exit": "^3.0.2", + "which": "^2.0.1" }, "engines": { - "node": ">= 8" + "node": ">=8" } }, "node_modules/spdx-correct": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", - "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", + "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", "dependencies": { "spdx-expression-parse": "^3.0.0", "spdx-license-ids": "^3.0.0" @@ -14461,59 +14656,28 @@ } }, "node_modules/spdx-license-ids": { - "version": "3.0.12", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz", - "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==" - }, - "node_modules/split": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", - "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", - "dependencies": { - "through": "2" - }, - "engines": { - "node": "*" - } + "version": "3.0.16", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.16.tgz", + "integrity": "sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==" }, "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/split2/node_modules/readable-stream": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.1.tgz", - "integrity": "sha512-+rQmrWMYGA90yenhTYsLWAsLsqVC8osOw6PKE1HDYiO0gdPeKe/xDHNzIAIn4C91YQ6oenEhfYqqc1883qHbjQ==", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", + "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", "engines": { - "node": ">= 6" - } - }, - "node_modules/split2/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": ">= 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==" + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", + "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", + "dev": true }, "node_modules/sqlite3": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/sqlite3/-/sqlite3-5.1.5.tgz", - "integrity": "sha512-7sP16i4wI+yKnGOO2q2ijze7EjQ9US+Vw7DYYwxfFtqNZDGgBcEw0oeDaDvUTq66uJOzVd/z6MkIg+c9erSJKg==", + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/sqlite3/-/sqlite3-5.1.6.tgz", + "integrity": "sha512-olYkWoKFVNSSSQNvxVUfjiVbz3YtBwTJj+mfV5zpHmqW3sELx2Cf4QCdirMelhM5Zh+KDVaKgQHqCxrqiWHybw==", "hasInstallScript": true, "dependencies": { "@mapbox/node-pre-gyp": "^1.0.0", @@ -14578,276 +14742,207 @@ } }, "node_modules/standard": { - "version": "12.0.1", - "resolved": "https://registry.npmjs.org/standard/-/standard-12.0.1.tgz", - "integrity": "sha512-UqdHjh87OG2gUrNCSM4QRLF5n9h3TFPwrCNyVlkqu31Hej0L/rc8hzKqVvkb2W3x0WMq7PzZdkLfEcBhVOR6lg==", + "version": "17.1.0", + "resolved": "https://registry.npmjs.org/standard/-/standard-17.1.0.tgz", + "integrity": "sha512-jaDqlNSzLtWYW4lvQmU0EnxWMUGQiwHasZl5ZEIwx3S/ijZDjZOzs1y1QqKwKs5vqnFpGtizo4NOYX2s0Voq/g==", "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": { - "eslint": "~5.4.0", - "eslint-config-standard": "12.0.0", - "eslint-config-standard-jsx": "6.0.2", - "eslint-plugin-import": "~2.14.0", - "eslint-plugin-node": "~7.0.1", - "eslint-plugin-promise": "~4.0.0", - "eslint-plugin-react": "~7.11.1", - "eslint-plugin-standard": "~4.0.0", - "standard-engine": "~9.0.0" + "eslint": "^8.41.0", + "eslint-config-standard": "17.1.0", + "eslint-config-standard-jsx": "^11.0.0", + "eslint-plugin-import": "^2.27.5", + "eslint-plugin-n": "^15.7.0", + "eslint-plugin-promise": "^6.1.1", + "eslint-plugin-react": "^7.32.2", + "standard-engine": "^15.0.0", + "version-guard": "^1.1.1" }, "bin": { - "standard": "bin/cmd.js" + "standard": "bin/cmd.cjs" }, "engines": { - "node": ">=4" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, "node_modules/standard-engine": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/standard-engine/-/standard-engine-9.0.0.tgz", - "integrity": "sha512-ZfNfCWZ2Xq67VNvKMPiVMKHnMdvxYzvZkf1AH8/cw2NLDBm5LRsxMqvEJpsjLI/dUosZ3Z1d6JlHDp5rAvvk2w==", + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/standard-engine/-/standard-engine-15.1.0.tgz", + "integrity": "sha512-VHysfoyxFu/ukT+9v49d4BRXIokFRZuH3z1VRxzFArZdjSCFpro6rEIU3ji7e4AoAtuSfKBkiOmsrDqKW5ZSRw==", "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": { - "deglob": "^2.1.0", - "get-stdin": "^6.0.0", - "minimist": "^1.1.0", - "pkg-conf": "^2.0.0" - } - }, - "node_modules/standard/node_modules/acorn": { - "version": "6.4.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", - "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", - "dev": true, - "bin": { - "acorn": "bin/acorn" + "get-stdin": "^8.0.0", + "minimist": "^1.2.6", + "pkg-conf": "^3.1.0", + "xdg-basedir": "^4.0.0" }, "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/standard/node_modules/chardet": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz", - "integrity": "sha512-j/Toj7f1z98Hh2cYo2BVr85EpIRWqUi7rtRSGxh/cqUjqrnJe9l9UE7IUGd2vQ2p+kSHLkSzObQPZPLUC6TQwg==", - "dev": true - }, - "node_modules/standard/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": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, - "node_modules/standard/node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "node_modules/standard-engine/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==", "dev": true, "dependencies": { - "esutils": "^2.0.2" + "locate-path": "^3.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "node_modules/standard/node_modules/eslint": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.4.0.tgz", - "integrity": "sha512-UIpL91XGex3qtL6qwyCQJar2j3osKxK9e3ano3OcGEIRM4oWIpCkDg9x95AXEC2wMs7PnxzOkPZ2gq+tsMS9yg==", + "node_modules/standard-engine/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==", "dev": true, "dependencies": { - "ajv": "^6.5.0", - "babel-code-frame": "^6.26.0", - "chalk": "^2.1.0", - "cross-spawn": "^6.0.5", - "debug": "^3.1.0", - "doctrine": "^2.1.0", - "eslint-scope": "^4.0.0", - "eslint-utils": "^1.3.1", - "eslint-visitor-keys": "^1.0.0", - "espree": "^4.0.0", - "esquery": "^1.0.1", - "esutils": "^2.0.2", - "file-entry-cache": "^2.0.0", - "functional-red-black-tree": "^1.0.1", - "glob": "^7.1.2", - "globals": "^11.7.0", - "ignore": "^4.0.2", - "imurmurhash": "^0.1.4", - "inquirer": "^5.2.0", - "is-resolvable": "^1.1.0", - "js-yaml": "^3.11.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.3.0", - "lodash": "^4.17.5", - "minimatch": "^3.0.4", - "mkdirp": "^0.5.1", - "natural-compare": "^1.4.0", - "optionator": "^0.8.2", - "path-is-inside": "^1.0.2", - "pluralize": "^7.0.0", - "progress": "^2.0.0", - "regexpp": "^2.0.0", - "require-uncached": "^1.0.3", - "semver": "^5.5.0", - "strip-ansi": "^4.0.0", - "strip-json-comments": "^2.0.1", - "table": "^4.0.3", - "text-table": "^0.2.0" - }, - "bin": { - "eslint": "bin/eslint.js" + "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.14.0 || ^8.10.0 || >=9.10.0" + "node": ">=6" } }, - "node_modules/standard/node_modules/espree": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-4.1.0.tgz", - "integrity": "sha512-I5BycZW6FCVIub93TeVY1s7vjhP9CY6cXCznIRfiig7nRviKZYdRnj/sHEWC6A7WE9RDWOFq9+7OsWSYz8qv2w==", + "node_modules/standard-engine/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==", "dev": true, "dependencies": { - "acorn": "^6.0.2", - "acorn-jsx": "^5.0.0", - "eslint-visitor-keys": "^1.0.0" + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" }, "engines": { - "node": ">=6.0.0" + "node": ">=6" } }, - "node_modules/standard/node_modules/external-editor": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz", - "integrity": "sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==", + "node_modules/standard-engine/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": { - "chardet": "^0.4.0", - "iconv-lite": "^0.4.17", - "tmp": "^0.0.33" + "p-try": "^2.0.0" }, "engines": { - "node": ">=0.12" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/standard/node_modules/file-entry-cache": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", - "integrity": "sha512-uXP/zGzxxFvFfcZGgBIwotm+Tdc55ddPAzF7iHshP4YGaXMww7rSF9peD9D1sui5ebONg5UobsZv+FfgEpGv/w==", + "node_modules/standard-engine/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==", "dev": true, "dependencies": { - "flat-cache": "^1.2.1", - "object-assign": "^4.0.1" + "p-limit": "^2.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "node_modules/standard/node_modules/flat-cache": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.4.tgz", - "integrity": "sha512-VwyB3Lkgacfik2vhqR4uv2rvebqmDvFu4jlN/C1RzWoJEo8I7z4Q404oiqYCkq41mni8EzQnm95emU9seckwtg==", + "node_modules/standard-engine/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==", "dev": true, "dependencies": { - "circular-json": "^0.3.1", - "graceful-fs": "^4.1.2", - "rimraf": "~2.6.2", - "write": "^0.2.1" + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "node_modules/standard/node_modules/inquirer": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-5.2.0.tgz", - "integrity": "sha512-E9BmnJbAKLPGonz0HeWHtbKf+EeSP93paWO3ZYoUpq/aowXvYGjjCSuashhXPpzbArIjBbji39THkxTz9ZeEUQ==", + "node_modules/standard-engine/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==", "dev": true, - "dependencies": { - "ansi-escapes": "^3.0.0", - "chalk": "^2.0.0", - "cli-cursor": "^2.1.0", - "cli-width": "^2.0.0", - "external-editor": "^2.1.0", - "figures": "^2.0.0", - "lodash": "^4.3.0", - "mute-stream": "0.0.7", - "run-async": "^2.2.0", - "rxjs": "^5.5.2", - "string-width": "^2.1.0", - "strip-ansi": "^4.0.0", - "through": "^2.3.6" - }, "engines": { - "node": ">=6.0.0" + "node": ">=4" } }, - "node_modules/standard/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==", - "dev": true - }, - "node_modules/standard/node_modules/rxjs": { - "version": "5.5.12", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.12.tgz", - "integrity": "sha512-xx2itnL5sBbqeeiVgNPVuQQ1nC8Jp2WfNJhXWHmElW9YmrpS9UVnNzhP3EH3HFqexO5Tlp8GhYY+WEcqcVMvGw==", + "node_modules/standard-engine/node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", "dev": true, - "dependencies": { - "symbol-observable": "1.0.1" - }, "engines": { - "npm": ">=2.0.0" + "node": ">=6" } }, - "node_modules/standard/node_modules/slice-ansi": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz", - "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==", + "node_modules/standard-engine/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==", "dev": true, "dependencies": { - "is-fullwidth-code-point": "^2.0.0" + "find-up": "^3.0.0", + "load-json-file": "^5.2.0" }, "engines": { - "node": ">=4" + "node": ">=6" } }, - "node_modules/standard/node_modules/table": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/table/-/table-4.0.3.tgz", - "integrity": "sha512-S7rnFITmBH1EnyKcvxBh1LjYeQMmnZtCXSEbHcH6S0NoKit24ZuFO/T1vDcLdYsLQkM188PVVhQmzKIuThNkKg==", + "node_modules/standard-engine/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==", "dev": true, - "dependencies": { - "ajv": "^6.0.1", - "ajv-keywords": "^3.0.0", - "chalk": "^2.1.0", - "lodash": "^4.17.4", - "slice-ansi": "1.0.0", - "string-width": "^2.1.1" - }, "engines": { - "node": ">=4.0.0" + "node": ">=4" } }, - "node_modules/standard/node_modules/write": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", - "integrity": "sha512-CJ17OoULEKXpA5pef3qLj5AxTJ6mSt7g84he2WIskKwqFO4T97d5V7Tadl0DYDk7qyUOQD5WlUlOMChaYrhxeA==", + "node_modules/standard-engine/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==", "dev": true, - "dependencies": { - "mkdirp": "^0.5.1" - }, "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, "node_modules/statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", "engines": { - "node": ">= 0.6" + "node": ">= 0.8" } }, "node_modules/stealthy-require": { @@ -14914,6 +15009,14 @@ "integrity": "sha512-UfFSr22dmHPQqPP9XWHRhq+gWnHCYguQGkXQlbyPtW5qTnhFWA8/iXg765tH0cAjy7l/zPJ1aBTO0g5XgA7kvQ==", "dev": true }, + "node_modules/stream-read-all": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/stream-read-all/-/stream-read-all-3.0.1.tgz", + "integrity": "sha512-EWZT9XOceBPlVJRrYcykW8jyRSZYbkb/0ZK36uLEmoWVO5gxBOnntNTseNzfREsqxqdfEGQrD8SXQ3QWbBmq8A==", + "engines": { + "node": ">=10" + } + }, "node_modules/streamsearch": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", @@ -14927,68 +15030,106 @@ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==" }, + "node_modules/string-argv": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.2.tgz", + "integrity": "sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==", + "engines": { + "node": ">=0.6.19" + } + }, "node_modules/string-format": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/string-format/-/string-format-2.0.0.tgz", "integrity": "sha512-bbEs3scLeYNXLecRRuk6uJxdXUSj6le/8rNPHChIJTn2V79aXVTR1EH2OH5zLKKoz0V02fOUKZZcw01pLUShZA==" }, "node_modules/string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dependencies": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" }, "engines": { - "node": ">=4" + "node": ">=8" + } + }, + "node_modules/string.prototype.matchall": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.10.tgz", + "integrity": "sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.5", + "regexp.prototype.flags": "^1.5.0", + "set-function-name": "^2.0.0", + "side-channel": "^1.0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz", + "integrity": "sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/string.prototype.trimend": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", - "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz", + "integrity": "sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/string.prototype.trimstart": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", - "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz", + "integrity": "sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dependencies": { - "ansi-regex": "^3.0.0" + "ansi-regex": "^5.0.1" }, "engines": { - "node": ">=4" - } - }, - "node_modules/strip-ansi/node_modules/ansi-regex": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", - "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", - "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/strip-bom": { @@ -15000,138 +15141,104 @@ "node": ">=8" } }, - "node_modules/strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==", - "engines": { - "node": ">=0.10.0" - } - }, "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==", "engines": { - "node": ">=6" - } - }, - "node_modules/strip-indent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", - "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", - "dependencies": { - "min-indent": "^1.0.0" - }, - "engines": { - "node": ">=8" + "node": ">=6" } }, "node_modules/strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "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": ">=0.10.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/superagent": { - "version": "3.8.3", - "resolved": "https://registry.npmjs.org/superagent/-/superagent-3.8.3.tgz", - "integrity": "sha512-GLQtLMCoEIK4eDv6OGtkOoSMt3D+oq0y3dsxMuYuDvaNUvuT8eFBuLmfR0iYYzHC1e8hpzC6ZsxbuP6DIalMFA==", - "deprecated": "Please upgrade to v7.0.2+ of superagent. We have fixed numerous issues with streams, form-data, attach(), filesystem errors not bubbling up (ENOENT on attach()), and all tests are now passing. See the releases tab for more information at .", + "version": "8.1.2", + "resolved": "https://registry.npmjs.org/superagent/-/superagent-8.1.2.tgz", + "integrity": "sha512-6WTxW1EB6yCxV5VFOIPQruWGHqc3yI7hEmZK6h+pyk69Lk/Ut7rLUY6W/ONF2MjBuGjvmMiIpsrVJ2vjrHlslA==", "dev": true, "dependencies": { - "component-emitter": "^1.2.0", - "cookiejar": "^2.1.0", - "debug": "^3.1.0", - "extend": "^3.0.0", - "form-data": "^2.3.1", - "formidable": "^1.2.0", - "methods": "^1.1.1", - "mime": "^1.4.1", - "qs": "^6.5.1", - "readable-stream": "^2.3.5" + "component-emitter": "^1.3.0", + "cookiejar": "^2.1.4", + "debug": "^4.3.4", + "fast-safe-stringify": "^2.1.1", + "form-data": "^4.0.0", + "formidable": "^2.1.2", + "methods": "^1.1.2", + "mime": "2.6.0", + "qs": "^6.11.0", + "semver": "^7.3.8" }, "engines": { - "node": ">= 4.0" + "node": ">=6.4.0 <13 || >=14" } }, "node_modules/superagent/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, "dependencies": { - "ms": "^2.1.1" + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/superagent/node_modules/form-data": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", - "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", + "node_modules/superagent/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": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" + "dezalgo": "^1.0.4", + "hexoid": "^1.0.0", + "once": "^1.4.0", + "qs": "^6.11.0" }, - "engines": { - "node": ">= 0.12" + "funding": { + "url": "https://ko-fi.com/tunnckoCore/commissions" } }, - "node_modules/superagent/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true - }, "node_modules/superagent/node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "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" + "node": ">=4.0.0" } }, "node_modules/superagent/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==", - "dev": true - }, - "node_modules/superagent/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "dev": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/superagent/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==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, - "node_modules/superagent/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "node_modules/superagent/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==", "dev": true, "dependencies": { - "safe-buffer": "~5.1.0" + "wrappy": "1" } }, "node_modules/supports-color": { @@ -15146,15 +15253,15 @@ } }, "node_modules/supports-hyperlinks": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz", - "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-3.0.0.tgz", + "integrity": "sha512-QBDPHyPQDRTy9ku4URNGY5Lah8PAaXs6tAAwp55sL5WCsSW7GIfdf6W5ixfziW+t7wh3GVvHyHHyQ1ESsoRvaA==", "dependencies": { "has-flag": "^4.0.0", "supports-color": "^7.0.0" }, "engines": { - "node": ">=8" + "node": ">=14.18" } }, "node_modules/supports-hyperlinks/node_modules/has-flag": { @@ -15180,6 +15287,7 @@ "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" }, @@ -15188,102 +15296,58 @@ } }, "node_modules/swagger-ui-dist": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/swagger-ui-dist/-/swagger-ui-dist-4.18.1.tgz", - "integrity": "sha512-n7AT4wzKIPpHy/BGflJOepGMrbY/7Cd5yVd9ptVczaJGAKScbVJrZxFbAE2ZSZa8KmqdQ0+pOs3/5mWY5tSMZQ==" + "version": "5.10.5", + "resolved": "https://registry.npmjs.org/swagger-ui-dist/-/swagger-ui-dist-5.10.5.tgz", + "integrity": "sha512-Uv8E7hV/nXALQKgW86X1i58gl1O6DFg+Uq54sDwhYqucBBxj/47dLNw872TNILNlOTuPA6dRvUMGQdmlpaX8qQ==" }, "node_modules/swagger-ui-express": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/swagger-ui-express/-/swagger-ui-express-4.6.2.tgz", - "integrity": "sha512-MHIOaq9JrTTB3ygUJD+08PbjM5Tt/q7x80yz9VTFIatw8j5uIWKcr90S0h5NLMzFEDC6+eVprtoeA5MDZXCUKQ==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/swagger-ui-express/-/swagger-ui-express-5.0.0.tgz", + "integrity": "sha512-tsU9tODVvhyfkNSvf03E6FAk+z+5cU3lXAzMy6Pv4av2Gt2xA0++fogwC4qo19XuFf6hdxevPuVCSKFuMHJhFA==", "dependencies": { - "swagger-ui-dist": ">=4.11.0" + "swagger-ui-dist": ">=5.0.0" }, "engines": { "node": ">= v0.10.32" }, "peerDependencies": { - "express": ">=4.0.0" - } - }, - "node_modules/symbol-observable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.1.tgz", - "integrity": "sha512-Kb3PrPYz4HanVF1LVGuAdW6LoVgIwjUYJGzFe7NDrBLCN4lsV/5J0MFurV+ygS4bRVwrCEt2c7MQ1R2a72oJDw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/table": { - "version": "5.4.6", - "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", - "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", - "dev": true, - "dependencies": { - "ajv": "^6.10.2", - "lodash": "^4.17.14", - "slice-ansi": "^2.1.0", - "string-width": "^3.0.0" - }, - "engines": { - "node": ">=6.0.0" + "express": ">=4.0.0 || >=5.0.0-beta" } }, "node_modules/table-layout": { - "version": "0.4.5", - "resolved": "https://registry.npmjs.org/table-layout/-/table-layout-0.4.5.tgz", - "integrity": "sha512-zTvf0mcggrGeTe/2jJ6ECkJHAQPIYEwDoqsiqBjI24mvRmQbInK5jq33fyypaCBxX08hMkfmdOqj6haT33EqWw==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/table-layout/-/table-layout-3.0.2.tgz", + "integrity": "sha512-rpyNZYRw+/C+dYkcQ3Pr+rLxW4CfHpXjPDnG7lYhdRoUcZTUt+KEsX+94RGp/aVp/MQU35JCITv2T/beY4m+hw==", "dependencies": { - "array-back": "^2.0.0", - "deep-extend": "~0.6.0", - "lodash.padend": "^4.6.1", - "typical": "^2.6.1", - "wordwrapjs": "^3.0.0" + "@75lb/deep-merge": "^1.1.1", + "array-back": "^6.2.2", + "command-line-args": "^5.2.1", + "command-line-usage": "^7.0.0", + "stream-read-all": "^3.0.1", + "typical": "^7.1.1", + "wordwrapjs": "^5.1.0" + }, + "bin": { + "table-layout": "bin/cli.js" }, "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/table/node_modules/ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", - "dev": true, - "engines": { - "node": ">=6" + "node": ">=12.17" } }, - "node_modules/table/node_modules/emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true - }, - "node_modules/table/node_modules/string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "dependencies": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - }, + "node_modules/table-layout/node_modules/array-back": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-6.2.2.tgz", + "integrity": "sha512-gUAZ7HPyb4SJczXAMUXMGAvI976JoK3qEx9v1FTmeYuJj0IBiaKttG1ydtGKdkfqWkIkouke7nG8ufGy77+Cvw==", "engines": { - "node": ">=6" + "node": ">=12.17" } }, - "node_modules/table/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "dependencies": { - "ansi-regex": "^4.1.0" - }, + "node_modules/table-layout/node_modules/typical": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/typical/-/typical-7.1.1.tgz", + "integrity": "sha512-T+tKVNs6Wu7IWiAce5BgMd7OZfNYUndHwc5MknN+UHOudi7sGZzuHdCadllRuqJ3fPtgFtIH9+lt9qRv6lmpfA==", "engines": { - "node": ">=6" + "node": ">=12.17" } }, "node_modules/tar": { @@ -15333,48 +15397,47 @@ "dev": true }, "node_modules/temp-dir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz", - "integrity": "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-3.0.0.tgz", + "integrity": "sha512-nHc6S/bwIilKHNRgK/3jlhDoIHcp45YgyiwcAk46Tr0LfEqGBVpmiAyuiuxeVE44m3mXnEeVhaipLOEWmH+Njw==", "engines": { - "node": ">=8" + "node": ">=14.16" } }, "node_modules/tempy": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tempy/-/tempy-1.0.1.tgz", - "integrity": "sha512-biM9brNqxSc04Ee71hzFbryD11nX7VPhQQY32AdDmjFvodsRFz/3ufeoTZ6uYkRFfGo188tENcASNs3vTdsM0w==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/tempy/-/tempy-3.1.0.tgz", + "integrity": "sha512-7jDLIdD2Zp0bDe5r3D2qtkd1QOCacylBuL7oa4udvN6v2pqr4+LcCr67C8DR1zkpaZ8XosF5m1yQSabKAW6f2g==", "dependencies": { - "del": "^6.0.0", - "is-stream": "^2.0.0", - "temp-dir": "^2.0.0", - "type-fest": "^0.16.0", - "unique-string": "^2.0.0" + "is-stream": "^3.0.0", + "temp-dir": "^3.0.0", + "type-fest": "^2.12.2", + "unique-string": "^3.0.0" }, "engines": { - "node": ">=10" + "node": ">=14.16" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/tempy/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==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", "engines": { - "node": ">=8" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/tempy/node_modules/type-fest": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz", - "integrity": "sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==", + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", "engines": { - "node": ">=10" + "node": ">=12.20" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -15394,24 +15457,27 @@ "node": ">=8" } }, - "node_modules/test-value": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/test-value/-/test-value-3.0.0.tgz", - "integrity": "sha512-sVACdAWcZkSU9x7AOmJo5TqE+GyNJknHaHsMrR6ZnhjVlVN9Yx6FjHrsKZ3BjIpPCT68zYesPWkakrNupwfOTQ==", + "node_modules/test-exclude/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": { - "array-back": "^2.0.0", - "typical": "^2.6.1" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">=4.0.0" + "node": "*" } }, "node_modules/text-extensions": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-1.9.0.tgz", - "integrity": "sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-2.4.0.tgz", + "integrity": "sha512-te/NtwBwfiNRLf9Ijqx3T0nlqZiQ2XrrtBvu+cLL8ZRrGkO0NHTug8MYFKyoSrv/sHTaSKfilUkizV6XhxMJ3g==", "engines": { - "node": ">=0.10" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/text-table": { @@ -15420,40 +15486,19 @@ "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", "dev": true }, + "node_modules/thread-stream": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/thread-stream/-/thread-stream-2.4.1.tgz", + "integrity": "sha512-d/Ex2iWd1whipbT681JmTINKw0ZwOUBZm7+Gjs64DHuX34mmw8vJL2bFAaNacaW72zYiTJxSHi5abUuOi5nsfg==", + "dependencies": { + "real-require": "^0.2.0" + } + }, "node_modules/through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" }, - "node_modules/through2": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", - "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", - "dependencies": { - "readable-stream": "3" - } - }, - "node_modules/through2/node_modules/readable-stream": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.1.tgz", - "integrity": "sha512-+rQmrWMYGA90yenhTYsLWAsLsqVC8osOw6PKE1HDYiO0gdPeKe/xDHNzIAIn4C91YQ6oenEhfYqqc1883qHbjQ==", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/through2/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/timers-ext": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.7.tgz", @@ -15464,18 +15509,6 @@ "next-tick": "1" } }, - "node_modules/tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dev": true, - "dependencies": { - "os-tmpdir": "~1.0.2" - }, - "engines": { - "node": ">=0.6.0" - } - }, "node_modules/to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", @@ -15509,20 +15542,6 @@ "resolved": "https://registry.npmjs.org/toposort-class/-/toposort-class-1.0.1.tgz", "integrity": "sha512-OsLcGGbYF3rMjPUf8oKktyvCiUxSbqMMS39m33MAjLTC1DVIH6x3WSt63/M77ihI09+Sdfk1AXvfhCEeUmC7mg==" }, - "node_modules/tough-cookie": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-3.0.1.tgz", - "integrity": "sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg==", - "dev": true, - "dependencies": { - "ip-regex": "^2.1.0", - "psl": "^1.1.28", - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/tr46": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", @@ -15536,19 +15555,38 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/trim-newlines": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", - "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", - "engines": { - "node": ">=8" + "node_modules/tsconfig-paths": { + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", + "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", + "dev": true, + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" } }, - "node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true + "node_modules/tsconfig-paths/node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/tsconfig-paths/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==", + "dev": true, + "engines": { + "node": ">=4" + } }, "node_modules/tunnel-agent": { "version": "0.6.0", @@ -15573,12 +15611,12 @@ "dev": true }, "node_modules/type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", + "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.1.2" + "prelude-ls": "^1.2.1" }, "engines": { "node": ">= 0.8.0" @@ -15597,20 +15635,72 @@ "version": "0.8.1", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "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/typed-array-buffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz", + "integrity": "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz", + "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" + }, "engines": { - "node": ">=8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "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==", + "node_modules/typed-array-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz", + "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==", + "dev": true, "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" }, "engines": { - "node": ">= 0.6" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/typed-array-length": { @@ -15642,9 +15732,12 @@ } }, "node_modules/typical": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/typical/-/typical-2.6.1.tgz", - "integrity": "sha512-ofhi8kjIje6npGozTip9Fr8iecmYfEbS06i0JnIg+rh51KakryWF4+jX8lLKZVhy6N+ID45WYSFCxPOdTWCzNg==" + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-4.0.0.tgz", + "integrity": "sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==", + "engines": { + "node": ">=8" + } }, "node_modules/uglify-js": { "version": "3.17.4", @@ -15659,15 +15752,66 @@ } }, "node_modules/umzug": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/umzug/-/umzug-2.2.0.tgz", - "integrity": "sha512-xZLW76ax70pND9bx3wqwb8zqkFGzZIK8dIHD9WdNy/CrNfjWcwQgQkGCuUqcuwEBvUm+g07z+qWvY+pxDmMEEw==", + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/umzug/-/umzug-3.5.0.tgz", + "integrity": "sha512-bL6JjH716l0kg7V2Acrw5UmUgeLxdAZv3drMhKrJCXxEfK/qyM+B5s3ai1BjG1NyEGeXTOkhFIUgkMFo6zqVBg==", + "dependencies": { + "@rushstack/ts-command-line": "^4.12.2", + "emittery": "^0.13.0", + "glob": "^8.0.3", + "pony-cause": "^2.1.4", + "type-fest": "^3.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/umzug/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/umzug/node_modules/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", "dependencies": { - "babel-runtime": "^6.23.0", - "bluebird": "^3.5.3" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" }, "engines": { - "node": ">=6.0.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/umzug/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/umzug/node_modules/type-fest": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.13.1.tgz", + "integrity": "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/unbox-primitive": { @@ -15686,15 +15830,28 @@ } }, "node_modules/underscore": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.1.tgz", - "integrity": "sha512-hzSoAVtJF+3ZtiFX0VgfFPHEDRm7Y/QPjGyNo4TVdnDTdft3tr8hEkD25a1jC+TjTuE7tkHGKkhwCgs9dgBB2g==" + "version": "1.13.6", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.6.tgz", + "integrity": "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==" }, - "node_modules/uniq": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", - "integrity": "sha512-Gw+zz50YNKPDKXs+9d+aKAjVwpjNwqzvNpLigIruT4HA9lMZNdMqs9x07kKHB/L9WRzqp4+DlTU5s4wG2esdoA==", - "dev": true + "node_modules/unicode-emoji-modifier-base": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unicode-emoji-modifier-base/-/unicode-emoji-modifier-base-1.0.0.tgz", + "integrity": "sha512-yLSH4py7oFH3oG/9K+XWrz1pSi3dfUrWEnInbxMfArOfc1+33BlGPQtLsOYwvdMy11AwUBetYuaRxSPqgkq+8g==", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicorn-magic": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.1.0.tgz", + "integrity": "sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, "node_modules/unique-filename": { "version": "1.1.1", @@ -15715,27 +15872,31 @@ } }, "node_modules/unique-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", - "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-3.0.0.tgz", + "integrity": "sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==", "dependencies": { - "crypto-random-string": "^2.0.0" + "crypto-random-string": "^4.0.0" }, "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "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==" + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.1.tgz", + "integrity": "sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ==" }, "node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", + "dev": true, "engines": { - "node": ">= 10.0.0" + "node": ">= 4.0.0" } }, "node_modules/unpipe": { @@ -15781,9 +15942,22 @@ } }, "node_modules/url-join": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz", - "integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==" + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/url-join/-/url-join-5.0.0.tgz", + "integrity": "sha512-n2huDr9h9yzd6exQVnH/jU5mr+Pfx08LRXXZhkLLetAMESRj+anQsTAh940iMrIetKAmry9coFuZQ2jY8/p3WA==", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "dev": true, + "dependencies": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } }, "node_modules/util": { "version": "0.10.4", @@ -15821,21 +15995,21 @@ } }, "node_modules/uvm": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/uvm/-/uvm-2.0.2.tgz", - "integrity": "sha512-Ra+aPiS5GXAbwXmyNExqdS42sTqmmx4XWEDF8uJlsTfOkKf9Rd9xNgav1Yckv4HfVEZg4iOFODWHFYuJ+9Fzfg==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/uvm/-/uvm-2.1.1.tgz", + "integrity": "sha512-BZ5w8adTpNNr+zczOBRpaX/hH8UPKAf7fmCnidrcsqt3bn8KT9bDIfuS7hgRU9RXgiN01su2pwysBONY6w8W5w==", "dev": true, "dependencies": { - "flatted": "3.1.1" + "flatted": "3.2.6" }, "engines": { "node": ">=10" } }, "node_modules/uvm/node_modules/flatted": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.1.1.tgz", - "integrity": "sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA==", + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.6.tgz", + "integrity": "sha512-0sQoMh9s0BYsm+12Huy/rkKxVu4R1+r96YX5cG44rHV0pQ6iC3Q+mkoMFaGWObMFYQxCVT+ssG1ksneA2MI9KQ==", "dev": true }, "node_modules/validate-npm-package-license": { @@ -15881,6 +16055,15 @@ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==" }, + "node_modules/version-guard": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/version-guard/-/version-guard-1.1.1.tgz", + "integrity": "sha512-MGQLX89UxmYHgDvcXyjBI0cbmoW+t/dANDppNPrno64rYr8nH4SHSuElQuSYdXGEs0mUzdQe1BY+FhVPNsAmJQ==", + "dev": true, + "engines": { + "node": ">=0.10.48" + } + }, "node_modules/webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", @@ -15896,14 +16079,17 @@ } }, "node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dependencies": { "isexe": "^2.0.0" }, "bin": { - "which": "bin/which" + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" } }, "node_modules/which-boxed-primitive": { @@ -15922,6 +16108,53 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/which-builtin-type": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.3.tgz", + "integrity": "sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==", + "dev": true, + "dependencies": { + "function.prototype.name": "^1.1.5", + "has-tostringtag": "^1.0.0", + "is-async-function": "^2.0.0", + "is-date-object": "^1.0.5", + "is-finalizationregistry": "^1.0.2", + "is-generator-function": "^1.0.10", + "is-regex": "^1.1.4", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.9" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-builtin-type/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, + "node_modules/which-collection": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", + "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", + "dev": true, + "dependencies": { + "is-map": "^2.0.1", + "is-set": "^2.0.1", + "is-weakmap": "^2.0.1", + "is-weakset": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/which-module": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", @@ -15929,17 +16162,16 @@ "dev": true }, "node_modules/which-typed-array": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", - "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==", + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.13.tgz", + "integrity": "sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==", "dev": true, "dependencies": { "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", + "call-bind": "^1.0.4", "for-each": "^0.3.3", "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0", - "is-typed-array": "^1.1.10" + "has-tostringtag": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -15965,9 +16197,9 @@ } }, "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==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", "dev": true, "engines": { "node": ">=0.10.0" @@ -15979,21 +16211,17 @@ "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==" }, "node_modules/wordwrapjs": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-3.0.0.tgz", - "integrity": "sha512-mO8XtqyPvykVCsrwj5MlOVWvSnCdT+C+QVbm6blradR7JExAhbkZ7hZ9A+9NUtwzSqrlUo9a67ws0EiILrvRpw==", - "dependencies": { - "reduce-flatten": "^1.0.1", - "typical": "^2.6.1" - }, + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-5.1.0.tgz", + "integrity": "sha512-JNjcULU2e4KJwUNv6CHgI46UvDGitb6dGryHajXTDiLgg1/RiGoPSDw4kZfYnwGtEXf2ZMeIewDQgFGzkCB2Sg==", "engines": { - "node": ">=4.0.0" + "node": ">=12.17" } }, "node_modules/workerpool": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.0.tgz", - "integrity": "sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", + "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==", "dev": true }, "node_modules/wrap-ansi": { @@ -16012,14 +16240,6 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/wrap-ansi/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==", - "engines": { - "node": ">=8" - } - }, "node_modules/wrap-ansi/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -16050,55 +16270,11 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, - "node_modules/wrap-ansi/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==", - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi/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==", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi/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==", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "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": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", - "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", - "dev": true, - "dependencies": { - "mkdirp": "^0.5.1" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/write-file-atomic": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", @@ -16111,12 +16287,13 @@ "typedarray-to-buffer": "^3.1.5" } }, - "node_modules/x-xss-protection": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/x-xss-protection/-/x-xss-protection-1.3.0.tgz", - "integrity": "sha512-kpyBI9TlVipZO4diReZMAHWtS0MMa/7Kgx8hwG/EuZLiA6sg4Ah/4TRdASHhRRN3boobzcYgFRUFSgHRge6Qhg==", + "node_modules/xdg-basedir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", + "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==", + "dev": true, "engines": { - "node": ">=4.0.0" + "node": ">=8" } }, "node_modules/xml": { @@ -16177,14 +16354,6 @@ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", "dev": true }, - "node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "engines": { - "node": ">= 6" - } - }, "node_modules/yargs": { "version": "16.2.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", @@ -16258,46 +16427,6 @@ "node": ">=8" } }, - "node_modules/yargs/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==", - "engines": { - "node": ">=8" - } - }, - "node_modules/yargs/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==", - "engines": { - "node": ">=8" - } - }, - "node_modules/yargs/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==", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/yargs/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==", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", From 9d4f5f95bdb9cec444db5bd63b05b3051a25dc1f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Tue, 2 Jan 2024 17:03:08 +0300 Subject: [PATCH 007/146] workflow --- .github/workflows/ci.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 625cdd9fa..fda904366 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -145,7 +145,7 @@ jobs: env: PAT: ${{ secrets.PAT }} run: | - sed -i.back "s|PAT|${PAT}|g" ./path/to/.npmrc + sed -i.back "s|PAT|${PAT}|g" .npmrc - run: npm install From 79158213cb2ab771263e98ae52b28aac83761b35 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Tue, 2 Jan 2024 17:13:11 +0300 Subject: [PATCH 008/146] pack --- package-lock.json | 16443 -------------------------------------------- 1 file changed, 16443 deletions(-) delete mode 100644 package-lock.json diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index 980ea504b..000000000 --- a/package-lock.json +++ /dev/null @@ -1,16443 +0,0 @@ -{ - "name": "iofogcontroller", - "version": "3.0.4", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "iofogcontroller", - "version": "3.0.4", - "hasInstallScript": true, - "license": "EPL-2.0", - "dependencies": { - "@iofog/ecn-viewer": "3.0.2", - "axios": "1.6.3", - "body-parser": "^1.20.2", - "child_process": "1.0.2", - "command-line-args": "5.2.1", - "command-line-usage": "7.0.1", - "concurrent-queue": "7.0.2", - "cookie-parser": "1.4.6", - "cors": "2.8.5", - "daemonize2": "0.4.2", - "ejs": "3.1.9", - "express": "4.18.2", - "formidable": "3.5.1", - "ftp": "0.3.10", - "helmet": "7.1.0", - "is-elevated": "4.0.0", - "js-yaml": "4.1.0", - "jsonschema": "1.4.1", - "minimatch": "9.0.3", - "moment": "2.30.1", - "moment-timezone": "0.5.44", - "morgan": "1.10.0", - "multer": "1.4.5-lts.1", - "nconf": "0.12.1", - "nodemailer": "6.9.8", - "nodemailer-smtp-transport": "2.7.4", - "os": "0.1.2", - "path": "0.12.7", - "pino": "8.17.2", - "pino-std-serializers": "6.2.2", - "portscanner": "2.2.0", - "qs": "6.11.2", - "request": "2.88.0", - "request-promise": "4.2.4", - "retry-as-promised": "7.0.4", - "semantic-release": "22.0.12", - "semver": "7.5.4", - "sequelize": "6.35.2", - "sqlite3": "^5.1.6", - "string-format": "2.0.0", - "swagger-ui-express": "^5.0.0", - "umzug": "3.5.0", - "underscore": "1.13.6", - "xss-clean": "0.1.1" - }, - "bin": { - "iofog-controller": "src/main.js" - }, - "devDependencies": { - "acorn": "8.11.3", - "bdd-lazy-var": "2.6.1", - "chai": "4.3.10", - "chai-as-promised": "7.1.1", - "chai-http": "4.4.0", - "eslint": "8.56.0", - "eslint-config-google": "0.14.0", - "mocha": "10.2.0", - "mocha-junit-reporter": "2.2.1", - "newman": "6.1.0", - "newman-reporter-junitfull": "1.1.1", - "nyc": "15.1.0", - "sequelize-cli": "6.6.2", - "sinon": "17.0.1", - "sinon-chai": "3.7.0", - "snyk": "^1.1266.0", - "standard": "17.1.0" - } - }, - "node_modules/@75lb/deep-merge": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@75lb/deep-merge/-/deep-merge-1.1.1.tgz", - "integrity": "sha512-xvgv6pkMGBA6GwdyJbNAnDmfAIR/DfWhrj9jgWh3TY7gRm3KO46x/GPjRg6wJ0nOepwqrNxFfojebh0Df4h4Tw==", - "dependencies": { - "lodash.assignwith": "^4.2.0", - "typical": "^7.1.1" - }, - "engines": { - "node": ">=12.17" - } - }, - "node_modules/@75lb/deep-merge/node_modules/typical": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/typical/-/typical-7.1.1.tgz", - "integrity": "sha512-T+tKVNs6Wu7IWiAce5BgMd7OZfNYUndHwc5MknN+UHOudi7sGZzuHdCadllRuqJ3fPtgFtIH9+lt9qRv6lmpfA==", - "engines": { - "node": ">=12.17" - } - }, - "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.0", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", - "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", - "dev": true, - "dependencies": { - "@jridgewell/gen-mapping": "^0.1.0", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", - "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", - "dependencies": { - "@babel/highlight": "^7.23.4", - "chalk": "^2.4.2" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/compat-data": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.21.0.tgz", - "integrity": "sha512-gMuZsmsgxk/ENC3O/fRw5QY8A9/uxQbbCEypnLIiYYc/qVJtEV7ouxC3EllIIwNzMqAQee5tanFabWsUOutS7g==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.21.0.tgz", - "integrity": "sha512-PuxUbxcW6ZYe656yL3EAhpy7qXKq0DmYsrJLpbB8XrsCP9Nm+XCg9XFMb5vIDliPD7+U/+M+QJlH17XOcB7eXA==", - "dev": true, - "dependencies": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.21.0", - "@babel/helper-compilation-targets": "^7.20.7", - "@babel/helper-module-transforms": "^7.21.0", - "@babel/helpers": "^7.21.0", - "@babel/parser": "^7.21.0", - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.21.0", - "@babel/types": "^7.21.0", - "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/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@babel/core/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/@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==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/generator": { - "version": "7.21.1", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.21.1.tgz", - "integrity": "sha512-1lT45bAYlQhFn/BHivJs43AiW2rg3/UbLyShGfF3C0KmHvO5fSghWd5kBJy30kpRRucGzXStvnnCFniCR2kXAA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.21.0", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", - "jsesc": "^2.5.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", - "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/@babel/helper-compilation-targets": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz", - "integrity": "sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.20.5", - "@babel/helper-validator-option": "^7.18.6", - "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-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==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/helper-environment-visitor": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", - "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-function-name": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz", - "integrity": "sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==", - "dev": true, - "dependencies": { - "@babel/template": "^7.20.7", - "@babel/types": "^7.21.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", - "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", - "dev": true, - "dependencies": { - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-imports": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", - "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.21.2", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.21.2.tgz", - "integrity": "sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ==", - "dev": true, - "dependencies": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-simple-access": "^7.20.2", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/helper-validator-identifier": "^7.19.1", - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.21.2", - "@babel/types": "^7.21.2" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-simple-access": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", - "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.20.2" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", - "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-string-parser": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", - "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", - "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-option": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz", - "integrity": "sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.21.0.tgz", - "integrity": "sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA==", - "dev": true, - "dependencies": { - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.21.0", - "@babel/types": "^7.21.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", - "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", - "dependencies": { - "@babel/helper-validator-identifier": "^7.22.20", - "chalk": "^2.4.2", - "js-tokens": "^4.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/parser": { - "version": "7.21.2", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.21.2.tgz", - "integrity": "sha512-URpaIJQwEkEC2T9Kn+Ai6Xe/02iNaVCuT/PtoRz3GPVJVDpPd7mLo+VddTbhCRU9TXqW5mSrQfXZyi8kDKOVpQ==", - "dev": true, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/template": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", - "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse": { - "version": "7.21.2", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.21.2.tgz", - "integrity": "sha512-ts5FFU/dSUPS13tv8XiEObDu9K+iagEKME9kAbaP7r0Y9KtZJZ+NGndDvWoRAYNpeWafbpFeki3q9QoMD6gxyw==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.21.1", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.21.0", - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.21.2", - "@babel/types": "^7.21.2", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@babel/traverse/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/@babel/types": { - "version": "7.21.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.2.tgz", - "integrity": "sha512-3wRZSs7jiFaB8AjxiiD+VqN5DTG2iRvJGQ+qYFrs/654lg6kGTQWIOFjlBo5RaXuAZjBmP3+OQH4dmhqiiyYxw==", - "dev": true, - "dependencies": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@colors/colors": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", - "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", - "optional": true, - "engines": { - "node": ">=0.1.90" - } - }, - "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.10.0", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", - "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", - "dev": true, - "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", - "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", - "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/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "13.24.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", - "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@eslint/eslintrc/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/@eslint/eslintrc/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/@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.56.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.56.0.tgz", - "integrity": "sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/@faker-js/faker": { - "version": "5.5.3", - "resolved": "https://registry.npmjs.org/@faker-js/faker/-/faker-5.5.3.tgz", - "integrity": "sha512-R11tGE6yIFwqpaIqcfkcg7AICXzFg14+5h5v0TfF/9+RMDL6jhzCy/pxHVOfbALGdtVYdt6JdR21tuxEgl34dw==", - "dev": true - }, - "node_modules/@gar/promisify": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", - "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", - "optional": true - }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.11.13", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz", - "integrity": "sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==", - "dev": true, - "dependencies": { - "@humanwhocodes/object-schema": "^2.0.1", - "debug": "^4.1.1", - "minimatch": "^3.0.5" - }, - "engines": { - "node": ">=10.10.0" - } - }, - "node_modules/@humanwhocodes/config-array/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@humanwhocodes/config-array/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/@humanwhocodes/config-array/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/@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": "2.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz", - "integrity": "sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==", - "dev": true - }, - "node_modules/@iofog/ecn-viewer": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@iofog/ecn-viewer/-/ecn-viewer-3.0.2.tgz", - "integrity": "sha512-Uq8BWdFc164bKn21biLKvRufr0XKaLyJklGiOLIIz6e0Xu2f5Xp0Bvc3Mi2DdgLdlO7f1xohE5Ms3cO1rGF1Vw==" - }, - "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/load-nyc-config/node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/@istanbuljs/load-nyc-config/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/@istanbuljs/load-nyc-config/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==", - "dev": true, - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/@istanbuljs/load-nyc-config/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/@istanbuljs/load-nyc-config/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/@istanbuljs/load-nyc-config/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/@istanbuljs/load-nyc-config/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/@istanbuljs/load-nyc-config/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 - }, - "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/@jridgewell/gen-mapping": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", - "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", - "dev": true, - "dependencies": { - "@jridgewell/set-array": "^1.0.0", - "@jridgewell/sourcemap-codec": "^1.4.10" - }, - "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==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "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/@jridgewell/trace-mapping": { - "version": "0.3.17", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", - "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", - "dev": true, - "dependencies": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" - } - }, - "node_modules/@mapbox/node-pre-gyp": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.10.tgz", - "integrity": "sha512-4ySo4CjzStuprMwk35H5pPbkymjv1SF3jGLj6rAHp/xT/RF7TL7bd9CTm1xDY49K2qF7jmR/g7k+SkLETP6opA==", - "dependencies": { - "detect-libc": "^2.0.0", - "https-proxy-agent": "^5.0.0", - "make-dir": "^3.1.0", - "node-fetch": "^2.6.7", - "nopt": "^5.0.0", - "npmlog": "^5.0.1", - "rimraf": "^3.0.2", - "semver": "^7.3.5", - "tar": "^6.1.11" - }, - "bin": { - "node-pre-gyp": "bin/node-pre-gyp" - } - }, - "node_modules/@mapbox/node-pre-gyp/node_modules/nopt": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", - "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", - "dependencies": { - "abbrev": "1" - }, - "bin": { - "nopt": "bin/nopt.js" - }, - "engines": { - "node": ">=6" - } - }, - "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==", - "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==", - "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==", - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@npmcli/fs": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz", - "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==", - "optional": true, - "dependencies": { - "@gar/promisify": "^1.0.1", - "semver": "^7.3.5" - } - }, - "node_modules/@npmcli/move-file": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", - "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", - "deprecated": "This functionality has been moved to @npmcli/fs", - "optional": true, - "dependencies": { - "mkdirp": "^1.0.4", - "rimraf": "^3.0.2" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@npmcli/move-file/node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "optional": true, - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@octokit/auth-token": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-4.0.0.tgz", - "integrity": "sha512-tY/msAuJo6ARbK6SPIxZrPBms3xPbfwBrulZe0Wtr/DIY9lje2HeV1uoebShn6mx7SjCHif6EjMvoREj+gZ+SA==", - "engines": { - "node": ">= 18" - } - }, - "node_modules/@octokit/core": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@octokit/core/-/core-5.0.2.tgz", - "integrity": "sha512-cZUy1gUvd4vttMic7C0lwPed8IYXWYp8kHIMatyhY8t8n3Cpw2ILczkV5pGMPqef7v0bLo0pOHrEHarsau2Ydg==", - "dependencies": { - "@octokit/auth-token": "^4.0.0", - "@octokit/graphql": "^7.0.0", - "@octokit/request": "^8.0.2", - "@octokit/request-error": "^5.0.0", - "@octokit/types": "^12.0.0", - "before-after-hook": "^2.2.0", - "universal-user-agent": "^6.0.0" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/@octokit/endpoint": { - "version": "9.0.4", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-9.0.4.tgz", - "integrity": "sha512-DWPLtr1Kz3tv8L0UvXTDP1fNwM0S+z6EJpRcvH66orY6Eld4XBMCSYsaWp4xIm61jTWxK68BrR7ibO+vSDnZqw==", - "dependencies": { - "@octokit/types": "^12.0.0", - "universal-user-agent": "^6.0.0" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/@octokit/graphql": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-7.0.2.tgz", - "integrity": "sha512-OJ2iGMtj5Tg3s6RaXH22cJcxXRi7Y3EBqbHTBRq+PQAqfaS8f/236fUrWhfSn8P4jovyzqucxme7/vWSSZBX2Q==", - "dependencies": { - "@octokit/request": "^8.0.1", - "@octokit/types": "^12.0.0", - "universal-user-agent": "^6.0.0" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/@octokit/openapi-types": { - "version": "19.1.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-19.1.0.tgz", - "integrity": "sha512-6G+ywGClliGQwRsjvqVYpklIfa7oRPA0vyhPQG/1Feh+B+wU0vGH1JiJ5T25d3g1JZYBHzR2qefLi9x8Gt+cpw==" - }, - "node_modules/@octokit/plugin-paginate-rest": { - "version": "9.1.5", - "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-9.1.5.tgz", - "integrity": "sha512-WKTQXxK+bu49qzwv4qKbMMRXej1DU2gq017euWyKVudA6MldaSSQuxtz+vGbhxV4CjxpUxjZu6rM2wfc1FiWVg==", - "dependencies": { - "@octokit/types": "^12.4.0" - }, - "engines": { - "node": ">= 18" - }, - "peerDependencies": { - "@octokit/core": ">=5" - } - }, - "node_modules/@octokit/plugin-retry": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@octokit/plugin-retry/-/plugin-retry-6.0.1.tgz", - "integrity": "sha512-SKs+Tz9oj0g4p28qkZwl/topGcb0k0qPNX/i7vBKmDsjoeqnVfFUquqrE/O9oJY7+oLzdCtkiWSXLpLjvl6uog==", - "dependencies": { - "@octokit/request-error": "^5.0.0", - "@octokit/types": "^12.0.0", - "bottleneck": "^2.15.3" - }, - "engines": { - "node": ">= 18" - }, - "peerDependencies": { - "@octokit/core": ">=5" - } - }, - "node_modules/@octokit/plugin-throttling": { - "version": "8.1.3", - "resolved": "https://registry.npmjs.org/@octokit/plugin-throttling/-/plugin-throttling-8.1.3.tgz", - "integrity": "sha512-pfyqaqpc0EXh5Cn4HX9lWYsZ4gGbjnSmUILeu4u2gnuM50K/wIk9s1Pxt3lVeVwekmITgN/nJdoh43Ka+vye8A==", - "dependencies": { - "@octokit/types": "^12.2.0", - "bottleneck": "^2.15.3" - }, - "engines": { - "node": ">= 18" - }, - "peerDependencies": { - "@octokit/core": "^5.0.0" - } - }, - "node_modules/@octokit/request": { - "version": "8.1.6", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-8.1.6.tgz", - "integrity": "sha512-YhPaGml3ncZC1NfXpP3WZ7iliL1ap6tLkAp6MvbK2fTTPytzVUyUesBBogcdMm86uRYO5rHaM1xIWxigWZ17MQ==", - "dependencies": { - "@octokit/endpoint": "^9.0.0", - "@octokit/request-error": "^5.0.0", - "@octokit/types": "^12.0.0", - "universal-user-agent": "^6.0.0" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/@octokit/request-error": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-5.0.1.tgz", - "integrity": "sha512-X7pnyTMV7MgtGmiXBwmO6M5kIPrntOXdyKZLigNfQWSEQzVxR4a4vo49vJjTWX70mPndj8KhfT4Dx+2Ng3vnBQ==", - "dependencies": { - "@octokit/types": "^12.0.0", - "deprecation": "^2.0.0", - "once": "^1.4.0" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/@octokit/request-error/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/@octokit/types": { - "version": "12.4.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-12.4.0.tgz", - "integrity": "sha512-FLWs/AvZllw/AGVs+nJ+ELCDZZJk+kY0zMen118xhL2zD0s1etIUHm1odgjP7epxYU1ln7SZxEUWYop5bhsdgQ==", - "dependencies": { - "@octokit/openapi-types": "^19.1.0" - } - }, - "node_modules/@pnpm/config.env-replace": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@pnpm/config.env-replace/-/config.env-replace-1.1.0.tgz", - "integrity": "sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==", - "engines": { - "node": ">=12.22.0" - } - }, - "node_modules/@pnpm/network.ca-file": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@pnpm/network.ca-file/-/network.ca-file-1.0.2.tgz", - "integrity": "sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==", - "dependencies": { - "graceful-fs": "4.2.10" - }, - "engines": { - "node": ">=12.22.0" - } - }, - "node_modules/@pnpm/npm-conf": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/@pnpm/npm-conf/-/npm-conf-2.2.2.tgz", - "integrity": "sha512-UA91GwWPhFExt3IizW6bOeY/pQ0BkuNwKjk9iQW9KqxluGCrg4VenZ0/L+2Y0+ZOtme72EVvg6v0zo3AMQRCeA==", - "dependencies": { - "@pnpm/config.env-replace": "^1.1.0", - "@pnpm/network.ca-file": "^1.0.1", - "config-chain": "^1.1.11" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@postman/form-data": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@postman/form-data/-/form-data-3.1.1.tgz", - "integrity": "sha512-vjh8Q2a8S6UCm/KKs31XFJqEEgmbjBmpPNVV2eVav6905wyFAwaUOBGA1NPBI4ERH9MMZc6w0umFgM6WbEPMdg==", - "dev": true, - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/@postman/tough-cookie": { - "version": "4.1.3-postman.1", - "resolved": "https://registry.npmjs.org/@postman/tough-cookie/-/tough-cookie-4.1.3-postman.1.tgz", - "integrity": "sha512-txpgUqZOnWYnUHZpHjkfb0IwVH4qJmyq77pPnJLlfhMtdCLMFTEeQHlzQiK906aaNCe4NEB5fGJHo9uzGbFMeA==", - "dev": true, - "dependencies": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.2.0", - "url-parse": "^1.5.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@postman/tunnel-agent": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/@postman/tunnel-agent/-/tunnel-agent-0.6.3.tgz", - "integrity": "sha512-k57fzmAZ2PJGxfOA4SGR05ejorHbVAa/84Hxh/2nAztjNXc4ZjOm9NUIk6/Z6LCrBvJZqjRZbN8e/nROVUPVdg==", - "dev": true, - "dependencies": { - "safe-buffer": "^5.0.1" - }, - "engines": { - "node": "*" - } - }, - "node_modules/@rushstack/ts-command-line": { - "version": "4.17.1", - "resolved": "https://registry.npmjs.org/@rushstack/ts-command-line/-/ts-command-line-4.17.1.tgz", - "integrity": "sha512-2jweO1O57BYP5qdBGl6apJLB+aRIn5ccIRTPDyULh0KMwVzFqWtw6IZWt1qtUoZD/pD2RNkIOosH6Cq45rIYeg==", - "dependencies": { - "@types/argparse": "1.0.38", - "argparse": "~1.0.9", - "colors": "~1.2.1", - "string-argv": "~0.3.1" - } - }, - "node_modules/@rushstack/ts-command-line/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/@rushstack/ts-command-line/node_modules/colors": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.2.5.tgz", - "integrity": "sha512-erNRLao/Y3Fv54qUa0LBB+//Uf3YwMUmdJinN20yMXm9zdKKqH9wt7R9IIVZ+K7ShzfpLV/Zg8+VyrBJYB4lpg==", - "engines": { - "node": ">=0.1.90" - } - }, - "node_modules/@rushstack/ts-command-line/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/@semantic-release/commit-analyzer": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/@semantic-release/commit-analyzer/-/commit-analyzer-11.1.0.tgz", - "integrity": "sha512-cXNTbv3nXR2hlzHjAMgbuiQVtvWHTlwwISt60B+4NZv01y/QRY7p2HcJm8Eh2StzcTJoNnflvKjHH/cjFS7d5g==", - "dependencies": { - "conventional-changelog-angular": "^7.0.0", - "conventional-commits-filter": "^4.0.0", - "conventional-commits-parser": "^5.0.0", - "debug": "^4.0.0", - "import-from-esm": "^1.0.3", - "lodash-es": "^4.17.21", - "micromatch": "^4.0.2" - }, - "engines": { - "node": "^18.17 || >=20.6.1" - }, - "peerDependencies": { - "semantic-release": ">=20.1.0" - } - }, - "node_modules/@semantic-release/commit-analyzer/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/@semantic-release/commit-analyzer/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/@semantic-release/error": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-4.0.0.tgz", - "integrity": "sha512-mgdxrHTLOjOddRVYIYDo0fR3/v61GNN1YGkfbrjuIKg/uMgCd+Qzo3UAXJ+woLQQpos4pl5Esuw5A7AoNlzjUQ==", - "engines": { - "node": ">=18" - } - }, - "node_modules/@semantic-release/github": { - "version": "9.2.6", - "resolved": "https://registry.npmjs.org/@semantic-release/github/-/github-9.2.6.tgz", - "integrity": "sha512-shi+Lrf6exeNZF+sBhK+P011LSbhmIAoUEgEY6SsxF8irJ+J2stwI5jkyDQ+4gzYyDImzV6LCKdYB9FXnQRWKA==", - "dependencies": { - "@octokit/core": "^5.0.0", - "@octokit/plugin-paginate-rest": "^9.0.0", - "@octokit/plugin-retry": "^6.0.0", - "@octokit/plugin-throttling": "^8.0.0", - "@semantic-release/error": "^4.0.0", - "aggregate-error": "^5.0.0", - "debug": "^4.3.4", - "dir-glob": "^3.0.1", - "globby": "^14.0.0", - "http-proxy-agent": "^7.0.0", - "https-proxy-agent": "^7.0.0", - "issue-parser": "^6.0.0", - "lodash-es": "^4.17.21", - "mime": "^4.0.0", - "p-filter": "^4.0.0", - "url-join": "^5.0.0" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "semantic-release": ">=20.1.0" - } - }, - "node_modules/@semantic-release/github/node_modules/agent-base": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz", - "integrity": "sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==", - "dependencies": { - "debug": "^4.3.4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/@semantic-release/github/node_modules/aggregate-error": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-5.0.0.tgz", - "integrity": "sha512-gOsf2YwSlleG6IjRYG2A7k0HmBMEo6qVNk9Bp/EaLgAJT5ngH6PXbqa4ItvnEwCm/velL5jAnQgsHsWnjhGmvw==", - "dependencies": { - "clean-stack": "^5.2.0", - "indent-string": "^5.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@semantic-release/github/node_modules/clean-stack": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-5.2.0.tgz", - "integrity": "sha512-TyUIUJgdFnCISzG5zu3291TAsE77ddchd0bepon1VVQrKLGKFED4iXFEDQ24mIPdPBbyE16PK3F8MYE1CmcBEQ==", - "dependencies": { - "escape-string-regexp": "5.0.0" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@semantic-release/github/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/@semantic-release/github/node_modules/escape-string-regexp": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", - "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@semantic-release/github/node_modules/https-proxy-agent": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.2.tgz", - "integrity": "sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==", - "dependencies": { - "agent-base": "^7.0.2", - "debug": "4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/@semantic-release/github/node_modules/indent-string": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", - "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@semantic-release/github/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/@semantic-release/npm": { - "version": "11.0.2", - "resolved": "https://registry.npmjs.org/@semantic-release/npm/-/npm-11.0.2.tgz", - "integrity": "sha512-owtf3RjyPvRE63iUKZ5/xO4uqjRpVQDUB9+nnXj0xwfIeM9pRl+cG+zGDzdftR4m3f2s4Wyf3SexW+kF5DFtWA==", - "dependencies": { - "@semantic-release/error": "^4.0.0", - "aggregate-error": "^5.0.0", - "execa": "^8.0.0", - "fs-extra": "^11.0.0", - "lodash-es": "^4.17.21", - "nerf-dart": "^1.0.0", - "normalize-url": "^8.0.0", - "npm": "^10.0.0", - "rc": "^1.2.8", - "read-pkg": "^9.0.0", - "registry-auth-token": "^5.0.0", - "semver": "^7.1.2", - "tempy": "^3.0.0" - }, - "engines": { - "node": "^18.17 || >=20" - }, - "peerDependencies": { - "semantic-release": ">=20.1.0" - } - }, - "node_modules/@semantic-release/npm/node_modules/aggregate-error": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-5.0.0.tgz", - "integrity": "sha512-gOsf2YwSlleG6IjRYG2A7k0HmBMEo6qVNk9Bp/EaLgAJT5ngH6PXbqa4ItvnEwCm/velL5jAnQgsHsWnjhGmvw==", - "dependencies": { - "clean-stack": "^5.2.0", - "indent-string": "^5.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@semantic-release/npm/node_modules/clean-stack": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-5.2.0.tgz", - "integrity": "sha512-TyUIUJgdFnCISzG5zu3291TAsE77ddchd0bepon1VVQrKLGKFED4iXFEDQ24mIPdPBbyE16PK3F8MYE1CmcBEQ==", - "dependencies": { - "escape-string-regexp": "5.0.0" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@semantic-release/npm/node_modules/escape-string-regexp": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", - "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@semantic-release/npm/node_modules/execa": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", - "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^8.0.1", - "human-signals": "^5.0.0", - "is-stream": "^3.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^5.1.0", - "onetime": "^6.0.0", - "signal-exit": "^4.1.0", - "strip-final-newline": "^3.0.0" - }, - "engines": { - "node": ">=16.17" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/@semantic-release/npm/node_modules/get-stream": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", - "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@semantic-release/npm/node_modules/human-signals": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", - "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", - "engines": { - "node": ">=16.17.0" - } - }, - "node_modules/@semantic-release/npm/node_modules/indent-string": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", - "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@semantic-release/npm/node_modules/is-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", - "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@semantic-release/npm/node_modules/mimic-fn": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", - "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@semantic-release/npm/node_modules/npm-run-path": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.2.0.tgz", - "integrity": "sha512-W4/tgAXFqFA0iL7fk0+uQ3g7wkL8xJmx3XdK0VGb4cHW//eZTtKGvFBBoRKVTpY7n6ze4NL9ly7rgXcHufqXKg==", - "dependencies": { - "path-key": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@semantic-release/npm/node_modules/onetime": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", - "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", - "dependencies": { - "mimic-fn": "^4.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@semantic-release/npm/node_modules/path-key": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", - "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@semantic-release/npm/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@semantic-release/npm/node_modules/strip-final-newline": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", - "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@semantic-release/release-notes-generator": { - "version": "12.1.0", - "resolved": "https://registry.npmjs.org/@semantic-release/release-notes-generator/-/release-notes-generator-12.1.0.tgz", - "integrity": "sha512-g6M9AjUKAZUZnxaJZnouNBeDNTCUrJ5Ltj+VJ60gJeDaRRahcHsry9HW8yKrnKkKNkx5lbWiEP1FPMqVNQz8Kg==", - "dependencies": { - "conventional-changelog-angular": "^7.0.0", - "conventional-changelog-writer": "^7.0.0", - "conventional-commits-filter": "^4.0.0", - "conventional-commits-parser": "^5.0.0", - "debug": "^4.0.0", - "get-stream": "^7.0.0", - "import-from-esm": "^1.0.3", - "into-stream": "^7.0.0", - "lodash-es": "^4.17.21", - "read-pkg-up": "^11.0.0" - }, - "engines": { - "node": "^18.17 || >=20.6.1" - }, - "peerDependencies": { - "semantic-release": ">=20.1.0" - } - }, - "node_modules/@semantic-release/release-notes-generator/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/@semantic-release/release-notes-generator/node_modules/get-stream": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-7.0.1.tgz", - "integrity": "sha512-3M8C1EOFN6r8AMUhwUAACIoXZJEOufDU5+0gFFN5uNs6XYOralD2Pqkl7m046va6x77FwposWXbAhPPIOus7mQ==", - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@semantic-release/release-notes-generator/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/@sentry-internal/tracing": { - "version": "7.91.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.91.0.tgz", - "integrity": "sha512-JH5y6gs6BS0its7WF2DhySu7nkhPDfZcdpAXldxzIlJpqFkuwQKLU5nkYJpiIyZz1NHYYtW5aum2bV2oCOdDRA==", - "dev": true, - "dependencies": { - "@sentry/core": "7.91.0", - "@sentry/types": "7.91.0", - "@sentry/utils": "7.91.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@sentry/core": { - "version": "7.91.0", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.91.0.tgz", - "integrity": "sha512-tu+gYq4JrTdrR+YSh5IVHF0fJi/Pi9y0HZ5H9HnYy+UMcXIotxf6hIEaC6ZKGeLWkGXffz2gKpQLe/g6vy/lPA==", - "dev": true, - "dependencies": { - "@sentry/types": "7.91.0", - "@sentry/utils": "7.91.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@sentry/node": { - "version": "7.91.0", - "resolved": "https://registry.npmjs.org/@sentry/node/-/node-7.91.0.tgz", - "integrity": "sha512-hTIfSQxD7L+AKIqyjoq8CWBRkEQrrMZmA3GSZgPI5JFWBHgO0HBo5TH/8TU81oEJh6kqqHAl2ObMhmcnaFqlzg==", - "dev": true, - "dependencies": { - "@sentry-internal/tracing": "7.91.0", - "@sentry/core": "7.91.0", - "@sentry/types": "7.91.0", - "@sentry/utils": "7.91.0", - "https-proxy-agent": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@sentry/types": { - "version": "7.91.0", - "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.91.0.tgz", - "integrity": "sha512-bcQnb7J3P3equbCUc+sPuHog2Y47yGD2sCkzmnZBjvBT0Z1B4f36fI/5WjyZhTjLSiOdg3F2otwvikbMjmBDew==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@sentry/utils": { - "version": "7.91.0", - "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.91.0.tgz", - "integrity": "sha512-fvxjrEbk6T6Otu++Ax9ntlQ0sGRiwSC179w68aC3u26Wr30FAIRKqHTCCdc2jyWk7Gd9uWRT/cq+g8NG/8BfSg==", - "dev": true, - "dependencies": { - "@sentry/types": "7.91.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@sindresorhus/is": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", - "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/is?sponsor=1" - } - }, - "node_modules/@sindresorhus/merge-streams": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-1.0.0.tgz", - "integrity": "sha512-rUV5WyJrJLoloD4NDN1V1+LDMDWOa4OTsT4yYJwQNpTU6FWxkxHpL7eu4w+DmiH8x/EAM1otkPE1+LaspIbplw==", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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": "11.2.2", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-11.2.2.tgz", - "integrity": "sha512-G2piCSxQ7oWOxwGSAyFHfPIsyeJGXYtc6mFbnFA+kRXkiEnTl8c/8jul2S329iFBnDI9HGoeWWAZvuvOkZccgw==", - "dev": true, - "dependencies": { - "@sinonjs/commons": "^3.0.0" - } - }, - "node_modules/@sinonjs/samsam": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-8.0.0.tgz", - "integrity": "sha512-Bp8KUVlLp8ibJZrnvq2foVhP0IVX2CIprMJPK0vqGqgrDa0OHVKeZyBykqskkrdxV6yKBPmGasO8LVjAKR3Gew==", - "dev": true, - "dependencies": { - "@sinonjs/commons": "^2.0.0", - "lodash.get": "^4.4.2", - "type-detect": "^4.0.8" - } - }, - "node_modules/@sinonjs/samsam/node_modules/@sinonjs/commons": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-2.0.0.tgz", - "integrity": "sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg==", - "dev": true, - "dependencies": { - "type-detect": "4.0.8" - } - }, - "node_modules/@sinonjs/text-encoding": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.2.tgz", - "integrity": "sha512-sXXKG+uL9IrKqViTtao2Ws6dy0znu9sOaP1di/jKGW1M6VssO8vlpXCQcpZ+jisQ1tTFAC5Jo/EOzFbggBagFQ==", - "dev": true - }, - "node_modules/@types/argparse": { - "version": "1.0.38", - "resolved": "https://registry.npmjs.org/@types/argparse/-/argparse-1.0.38.tgz", - "integrity": "sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA==" - }, - "node_modules/@types/chai": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.4.tgz", - "integrity": "sha512-KnRanxnpfpjUTqTCXslZSEdLfXExwgNxYPdiO2WGUj8+HDjFi8R3k5RVKPeSCzLjCcshCAtVO2QBbVuAV4kTnw==", - "dev": true - }, - "node_modules/@types/cookiejar": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@types/cookiejar/-/cookiejar-2.1.5.tgz", - "integrity": "sha512-he+DHOWReW0nghN24E1WUqM0efK4kI9oTqDm6XmK8ZPe2djZ90BSNdGnIyCLzCPw7/pogPlGbzI2wHGGmi4O/Q==", - "dev": true - }, - "node_modules/@types/debug": { - "version": "4.1.12", - "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", - "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", - "dependencies": { - "@types/ms": "*" - } - }, - "node_modules/@types/json5": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", - "dev": true - }, - "node_modules/@types/ms": { - "version": "0.7.34", - "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz", - "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==" - }, - "node_modules/@types/node": { - "version": "18.14.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.14.2.tgz", - "integrity": "sha512-1uEQxww3DaghA0RxqHx0O0ppVlo43pJhepY51OxuQIKHpjbnYLA7vcdwioNPzIqmC2u3I/dmylcqjlh0e7AyUA==" - }, - "node_modules/@types/normalize-package-data": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", - "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==" - }, - "node_modules/@types/superagent": { - "version": "4.1.13", - "resolved": "https://registry.npmjs.org/@types/superagent/-/superagent-4.1.13.tgz", - "integrity": "sha512-YIGelp3ZyMiH0/A09PMAORO0EBGlF5xIKfDpK74wdYvWUs2o96b5CItJcWPdH409b7SAXIIG6p8NdU/4U2Maww==", - "dev": true, - "dependencies": { - "@types/cookiejar": "*", - "@types/node": "*" - } - }, - "node_modules/@types/validator": { - "version": "13.11.7", - "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.11.7.tgz", - "integrity": "sha512-q0JomTsJ2I5Mv7dhHhQLGjMvX0JJm5dyZ1DXQySIUzU1UlwzB8bt+R6+LODUbz0UDIOvEzGc28tk27gBJw2N8Q==" - }, - "node_modules/@ungap/structured-clone": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", - "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", - "dev": true - }, - "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==" - }, - "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", - "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.11.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", - "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", - "dev": true, - "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/afterward": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/afterward/-/afterward-2.0.0.tgz", - "integrity": "sha512-7n9Vkbb8cmMRKKSfe5qgyqX4Yjdaty0QP/+GXYawZK8Vcq+8E5FCmbWbwfCoiBnDoAY/edKLNg2TwgGcwdA+3Q==", - "dependencies": { - "define-error": "~1.0.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/agent-base/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/agent-base/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/agentkeepalive": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.2.1.tgz", - "integrity": "sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==", - "optional": true, - "dependencies": { - "debug": "^4.1.0", - "depd": "^1.1.2", - "humanize-ms": "^1.2.1" - }, - "engines": { - "node": ">= 8.0.0" - } - }, - "node_modules/agentkeepalive/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "optional": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/agentkeepalive/node_modules/depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", - "optional": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/agentkeepalive/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==", - "optional": true - }, - "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==", - "devOptional": true, - "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==", - "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-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/ansi-escapes": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-6.2.0.tgz", - "integrity": "sha512-kzRaCqXnpzWs+3z5ABPQiVke+iq0KXkHo8xiWV4RPTi5Yli0l97BEQuhXV1s7+aSU/fu1kUuxgS4MsQ0fRuygw==", - "dependencies": { - "type-fest": "^3.0.0" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ansi-escapes/node_modules/type-fest": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.13.1.tgz", - "integrity": "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==", - "engines": { - "node": ">=14.16" - }, - "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==", - "engines": { - "node": ">=8" - } - }, - "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/ansicolors": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/ansicolors/-/ansicolors-0.3.2.tgz", - "integrity": "sha512-QXu7BPrP29VllRxH8GwB7x5iX5qWKAAMLqKQGWTeLWVlNHNOpVMJ91dsxQAIWXpjuW5wqvxu3Jd/nRjrJ+0pqg==" - }, - "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/append-field": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz", - "integrity": "sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw==" - }, - "node_modules/append-transform": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-2.0.0.tgz", - "integrity": "sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg==", - "dev": true, - "dependencies": { - "default-require-extensions": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/aproba": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", - "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==" - }, - "node_modules/archy": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", - "integrity": "sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==", - "dev": true - }, - "node_modules/are-we-there-yet": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", - "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==", - "dependencies": { - "delegates": "^1.0.0", - "readable-stream": "^3.6.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/are-we-there-yet/node_modules/readable-stream": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.1.tgz", - "integrity": "sha512-+rQmrWMYGA90yenhTYsLWAsLsqVC8osOw6PKE1HDYiO0gdPeKe/xDHNzIAIn4C91YQ6oenEhfYqqc1883qHbjQ==", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/are-we-there-yet/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/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/argv-formatter": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/argv-formatter/-/argv-formatter-1.0.0.tgz", - "integrity": "sha512-F2+Hkm9xFaRg+GkaNnbwXNDV5O6pnCFEmqyhvfC/Ic5LbgOWjJh3L+mN/s91rxVL3znE7DYVpW0GJFT+4YBgWw==" - }, - "node_modules/array-back": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz", - "integrity": "sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==", - "engines": { - "node": ">=6" - } - }, - "node_modules/array-buffer-byte-length": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", - "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "is-array-buffer": "^3.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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-ify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", - "integrity": "sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==" - }, - "node_modules/array-includes": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.7.tgz", - "integrity": "sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1", - "is-string": "^1.0.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.findlastindex": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.3.tgz", - "integrity": "sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0", - "get-intrinsic": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.flat": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", - "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.flatmap": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", - "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.tosorted": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.2.tgz", - "integrity": "sha512-HuQCHOlk1Weat5jzStICBCd83NxiIMwqDg/dHEsoefabn/hJRj5pVdWcPUSpRrwhwxZOsQassMpgN/xRYFBMIg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0", - "get-intrinsic": "^1.2.1" - } - }, - "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz", - "integrity": "sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==", - "dev": true, - "dependencies": { - "array-buffer-byte-length": "^1.0.0", - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1", - "is-array-buffer": "^3.0.2", - "is-shared-array-buffer": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/asap": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==" - }, - "node_modules/asn1": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", - "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", - "dependencies": { - "safer-buffer": "~2.1.0" - } - }, - "node_modules/assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", - "engines": { - "node": ">=0.8" - } - }, - "node_modules/assertion-error": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", - "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/async": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", - "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==" - }, - "node_modules/asynciterator.prototype": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/asynciterator.prototype/-/asynciterator.prototype-1.0.0.tgz", - "integrity": "sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==", - "dev": true, - "dependencies": { - "has-symbols": "^1.0.3" - } - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" - }, - "node_modules/at-least-node": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", - "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", - "dev": true, - "engines": { - "node": ">= 4.0.0" - } - }, - "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", - "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", - "engines": { - "node": "*" - } - }, - "node_modules/aws4": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz", - "integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==" - }, - "node_modules/axios": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.3.tgz", - "integrity": "sha512-fWyNdeawGam70jXSVlKl+SUNVcL6j6W79CuSIPfi6HnDUmSCH6gyUys/HrqHeA/wU0Az41rRgean494d0Jb+ww==", - "dependencies": { - "follow-redirects": "^1.15.0", - "form-data": "^4.0.0", - "proxy-from-env": "^1.1.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/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "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/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==", - "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==" - }, - "node_modules/bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", - "dependencies": { - "tweetnacl": "^0.14.3" - } - }, - "node_modules/bdd-lazy-var": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/bdd-lazy-var/-/bdd-lazy-var-2.6.1.tgz", - "integrity": "sha512-X3ADwcFji/IHIrYJhTTpaiWhoOx4pl4whdAx1dmvdeUPsMUb7fVYFvf/Q33VEAEAVkEwi5rgNSZ0Y9oOVeQV+A==", - "dev": true, - "peerDependencies": { - "jasmine": ">=2", - "jasmine-core": ">=2", - "jest": ">=20", - "mocha": ">=2.3" - }, - "peerDependenciesMeta": { - "jasmine": { - "optional": true - }, - "jasmine-core": { - "optional": true - }, - "jest": { - "optional": true - }, - "mocha": { - "optional": 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/bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" - }, - "node_modules/body-parser": { - "version": "1.20.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", - "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", - "dependencies": { - "bytes": "3.1.2", - "content-type": "~1.0.5", - "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.2", - "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/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/boolean": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/boolean/-/boolean-3.2.0.tgz", - "integrity": "sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==", - "dev": true - }, - "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==", - "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==", - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/brotli": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/brotli/-/brotli-1.3.3.tgz", - "integrity": "sha512-oTKjJdShmDuGW94SyyaoQvAjf30dZaHnjJ8uAF+u2/vGJkJbJPJAT1gDiOJP5v1Zb6f9KEyW/1HpuaWIXtGHPg==", - "dev": true, - "dependencies": { - "base64-js": "^1.1.2" - } - }, - "node_modules/browser-stdout": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", - "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", - "dev": true - }, - "node_modules/browserslist": { - "version": "4.21.5", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz", - "integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - } - ], - "dependencies": { - "caniuse-lite": "^1.0.30001449", - "electron-to-chromium": "^1.4.284", - "node-releases": "^2.0.8", - "update-browserslist-db": "^1.0.10" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "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/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==" - }, - "node_modules/builtins": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", - "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==", - "dev": true, - "dependencies": { - "semver": "^7.0.0" - } - }, - "node_modules/busboy": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", - "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", - "dependencies": { - "streamsearch": "^1.1.0" - }, - "engines": { - "node": ">=10.16.0" - } - }, - "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/cacache": { - "version": "15.3.0", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", - "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", - "optional": true, - "dependencies": { - "@npmcli/fs": "^1.0.0", - "@npmcli/move-file": "^1.0.1", - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "glob": "^7.1.4", - "infer-owner": "^1.0.4", - "lru-cache": "^6.0.0", - "minipass": "^3.1.1", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.2", - "mkdirp": "^1.0.3", - "p-map": "^4.0.0", - "promise-inflight": "^1.0.1", - "rimraf": "^3.0.2", - "ssri": "^8.0.1", - "tar": "^6.0.2", - "unique-filename": "^1.1.1" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/cacache/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==", - "optional": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/cacache/node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "optional": true, - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/cacache/node_modules/p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "optional": true, - "dependencies": { - "aggregate-error": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cacache/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "optional": true - }, - "node_modules/caching-transform": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-4.0.0.tgz", - "integrity": "sha512-kpqOvwXnjjN44D89K5ccQC+RUrsy7jB/XLlRrx0D7/2HNcTPqzsb6XgYoErwko6QsV184CA2YgS1fxDiiDZMWA==", - "dev": true, - "dependencies": { - "hasha": "^5.0.0", - "make-dir": "^3.0.0", - "package-hash": "^4.0.0", - "write-file-atomic": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/call-bind": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", - "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", - "dependencies": { - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.1", - "set-function-length": "^1.1.1" - }, - "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==", - "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.30001458", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001458.tgz", - "integrity": "sha512-lQ1VlUUq5q9ro9X+5gOEyH7i3vm+AYVT1WDCVB69XOZ17KZRhnZ9J0Sqz7wTHQaLBJccNCHq8/Ww5LlOIZbB0w==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - } - ] - }, - "node_modules/capture-stack-trace": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.2.tgz", - "integrity": "sha512-X/WM2UQs6VMHUtjUDnZTRI+i1crWteJySFzr9UpGoQa4WQffXVTTXuekjl7TjZRlcF2XfjgITT0HxZ9RnxeT0w==", - "engines": { - "node": ">=0.10.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cardinal": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/cardinal/-/cardinal-2.1.1.tgz", - "integrity": "sha512-JSr5eOgoEymtYHBjNWyjrMqet9Am2miJhlfKNdqLp6zoeAh0KN5dRAcxlecj5mAJrmQomgiOBj35xHLrFjqBpw==", - "dependencies": { - "ansicolors": "~0.3.2", - "redeyed": "~2.1.0" - }, - "bin": { - "cdl": "bin/cdl.js" - } - }, - "node_modules/caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==" - }, - "node_modules/chai": { - "version": "4.3.10", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.10.tgz", - "integrity": "sha512-0UXG04VuVbruMUYbJ6JctvH0YnC/4q3/AkT18q4NaITo91CUm0liMS9VqzT9vZhVQ/1eqPanMWjBM+Juhfb/9g==", - "dev": true, - "dependencies": { - "assertion-error": "^1.1.0", - "check-error": "^1.0.3", - "deep-eql": "^4.1.3", - "get-func-name": "^2.0.2", - "loupe": "^2.3.6", - "pathval": "^1.1.1", - "type-detect": "^4.0.8" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/chai-as-promised": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/chai-as-promised/-/chai-as-promised-7.1.1.tgz", - "integrity": "sha512-azL6xMoi+uxu6z4rhWQ1jbdUhOMhis2PvscD/xjLqNMkv3BPPp2JyyuTHOrf9BOosGpNQ11v6BKv/g57RXbiaA==", - "dev": true, - "dependencies": { - "check-error": "^1.0.2" - }, - "peerDependencies": { - "chai": ">= 2.1.2 < 5" - } - }, - "node_modules/chai-http": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/chai-http/-/chai-http-4.4.0.tgz", - "integrity": "sha512-uswN3rZpawlRaa5NiDUHcDZ3v2dw5QgLyAwnQ2tnVNuP7CwIsOFuYJ0xR1WiR7ymD4roBnJIzOUep7w9jQMFJA==", - "dev": true, - "dependencies": { - "@types/chai": "4", - "@types/superagent": "4.1.13", - "charset": "^1.0.1", - "cookiejar": "^2.1.4", - "is-ip": "^2.0.0", - "methods": "^1.1.2", - "qs": "^6.11.2", - "superagent": "^8.0.9" - }, - "engines": { - "node": ">=10" - } - }, - "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/chalk-template": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/chalk-template/-/chalk-template-0.4.0.tgz", - "integrity": "sha512-/ghrgmhfY8RaSdeo43hNXxpoHAtxdbskUHjPpfqUWGttFgycUhYPGx3YZBCnUCvOa7Doivn1IZec3DEGFoMgLg==", - "dependencies": { - "chalk": "^4.1.2" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/chalk-template?sponsor=1" - } - }, - "node_modules/chalk-template/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==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/chalk-template/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "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/chalk-template/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==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/chalk-template/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==" - }, - "node_modules/chalk-template/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==", - "engines": { - "node": ">=8" - } - }, - "node_modules/chalk-template/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==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "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==", - "engines": { - "node": ">=10" - } - }, - "node_modules/chardet": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-2.0.0.tgz", - "integrity": "sha512-xVgPpulCooDjY6zH4m9YW3jbkaBe3FKIAvF5sj5t7aBNsVl2ljIE+xwJ4iNgiDZHFQvNIpjdKdVOQvvk5ZfxbQ==", - "dev": true - }, - "node_modules/charenc": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", - "integrity": "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/charset": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/charset/-/charset-1.0.1.tgz", - "integrity": "sha512-6dVyOOYjpfFcL1Y4qChrAoQLRHvj2ziyhcm0QJlhOcAhykL/k1kTUPbeo+87MNRTRdk2OIIsIXbuF3x2wi5EXg==", - "dev": true, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/check-error": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", - "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", - "dev": true, - "dependencies": { - "get-func-name": "^2.0.2" - }, - "engines": { - "node": "*" - } - }, - "node_modules/child_process": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/child_process/-/child_process-1.0.2.tgz", - "integrity": "sha512-Wmza/JzL0SiWz7kl6MhIKT5ceIlnFPJX+lwUGj7Clhy5MMldsSoJR0+uvRzOS5Kv45Mq7t1PoE8TsOA9bzvb6g==" - }, - "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/chownr": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", - "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", - "engines": { - "node": ">=10" - } - }, - "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==", - "devOptional": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/cli-color": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/cli-color/-/cli-color-2.0.3.tgz", - "integrity": "sha512-OkoZnxyC4ERN3zLzZaY9Emb7f/MhBOIpePv0Ycok0fJYT+Ouo00UBEIwsVsr0yoow++n5YWlSUgST9GKhNHiRQ==", - "dev": true, - "dependencies": { - "d": "^1.0.1", - "es5-ext": "^0.10.61", - "es6-iterator": "^2.0.3", - "memoizee": "^0.4.15", - "timers-ext": "^0.1.7" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/cli-progress": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/cli-progress/-/cli-progress-3.12.0.tgz", - "integrity": "sha512-tRkV3HJ1ASwm19THiiLIXLO7Im7wlTuKnvkYaTkyoAPefqjNg7W7DHKUlGRxy9vxDvbyCYQkQozvptuMkGCg8A==", - "dev": true, - "dependencies": { - "string-width": "^4.2.3" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/cli-table3": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.3.tgz", - "integrity": "sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==", - "dependencies": { - "string-width": "^4.2.0" - }, - "engines": { - "node": "10.* || >= 12.*" - }, - "optionalDependencies": { - "@colors/colors": "1.5.0" - } - }, - "node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "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/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/color-support": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", - "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", - "bin": { - "color-support": "bin.js" - } - }, - "node_modules/colors": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", - "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", - "dev": true, - "engines": { - "node": ">=0.1.90" - } - }, - "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==", - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/command-line-args": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-5.2.1.tgz", - "integrity": "sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg==", - "dependencies": { - "array-back": "^3.1.0", - "find-replace": "^3.0.0", - "lodash.camelcase": "^4.3.0", - "typical": "^4.0.0" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/command-line-usage": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/command-line-usage/-/command-line-usage-7.0.1.tgz", - "integrity": "sha512-NCyznE//MuTjwi3y84QVUGEOT+P5oto1e1Pk/jFPVdPPfsG03qpTIl3yw6etR+v73d0lXsoojRpvbru2sqePxQ==", - "dependencies": { - "array-back": "^6.2.2", - "chalk-template": "^0.4.0", - "table-layout": "^3.0.0", - "typical": "^7.1.1" - }, - "engines": { - "node": ">=12.20.0" - } - }, - "node_modules/command-line-usage/node_modules/array-back": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/array-back/-/array-back-6.2.2.tgz", - "integrity": "sha512-gUAZ7HPyb4SJczXAMUXMGAvI976JoK3qEx9v1FTmeYuJj0IBiaKttG1ydtGKdkfqWkIkouke7nG8ufGy77+Cvw==", - "engines": { - "node": ">=12.17" - } - }, - "node_modules/command-line-usage/node_modules/typical": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/typical/-/typical-7.1.1.tgz", - "integrity": "sha512-T+tKVNs6Wu7IWiAce5BgMd7OZfNYUndHwc5MknN+UHOudi7sGZzuHdCadllRuqJ3fPtgFtIH9+lt9qRv6lmpfA==", - "engines": { - "node": ">=12.17" - } - }, - "node_modules/commander": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz", - "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==", - "dev": true, - "engines": { - "node": ">=16" - } - }, - "node_modules/commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", - "dev": true - }, - "node_modules/compare-func": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz", - "integrity": "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==", - "dependencies": { - "array-ify": "^1.0.0", - "dot-prop": "^5.1.0" - } - }, - "node_modules/component-emitter": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.1.tgz", - "integrity": "sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" - }, - "node_modules/concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "engines": [ - "node >= 0.8" - ], - "dependencies": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, - "node_modules/concat-stream/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" - }, - "node_modules/concat-stream/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/concat-stream/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==" - }, - "node_modules/concat-stream/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/concurrent-queue": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/concurrent-queue/-/concurrent-queue-7.0.2.tgz", - "integrity": "sha512-icXDqc0JBdcQ3ubXiXcqVhuFeRrec39zVD2X5z7FKwwj0pImnfLWtAhGyX4CcBDD+YoqLesClOeRss+pZnm6/Q==", - "dependencies": { - "afterward": "~2.0.0", - "define-error": "~1.0.0", - "eventuate": "~4.0.0", - "object-assign": "~4.0.1", - "on-error": "~2.1.0", - "once": "~1.3.2", - "promise-polyfill": "~2.1.0" - } - }, - "node_modules/config-chain": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", - "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", - "dependencies": { - "ini": "^1.3.4", - "proto-list": "~1.2.1" - } - }, - "node_modules/config-chain/node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" - }, - "node_modules/console-control-strings": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==" - }, - "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/conventional-changelog-angular": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-7.0.0.tgz", - "integrity": "sha512-ROjNchA9LgfNMTTFSIWPzebCwOGFdgkEq45EnvvrmSLvCtAw0HSmrCs7/ty+wAeYUZyNay0YMUNYFTRL72PkBQ==", - "dependencies": { - "compare-func": "^2.0.0" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/conventional-changelog-writer": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-7.0.1.tgz", - "integrity": "sha512-Uo+R9neH3r/foIvQ0MKcsXkX642hdm9odUp7TqgFS7BsalTcjzRlIfWZrZR1gbxOozKucaKt5KAbjW8J8xRSmA==", - "dependencies": { - "conventional-commits-filter": "^4.0.0", - "handlebars": "^4.7.7", - "json-stringify-safe": "^5.0.1", - "meow": "^12.0.1", - "semver": "^7.5.2", - "split2": "^4.0.0" - }, - "bin": { - "conventional-changelog-writer": "cli.mjs" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/conventional-commits-filter": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-4.0.0.tgz", - "integrity": "sha512-rnpnibcSOdFcdclpFwWa+pPlZJhXE7l+XK04zxhbWrhgpR96h33QLz8hITTXbcYICxVr3HZFtbtUAQ+4LdBo9A==", - "engines": { - "node": ">=16" - } - }, - "node_modules/conventional-commits-parser": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-5.0.0.tgz", - "integrity": "sha512-ZPMl0ZJbw74iS9LuX9YIAiW8pfM5p3yh2o/NbXHbkFuZzY5jvdi5jFycEOkmBW5H5I7nA+D6f3UcsCLP2vvSEA==", - "dependencies": { - "is-text-path": "^2.0.0", - "JSONStream": "^1.3.5", - "meow": "^12.0.1", - "split2": "^4.0.0" - }, - "bin": { - "conventional-commits-parser": "cli.mjs" - }, - "engines": { - "node": ">=16" - } - }, - "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/cookie": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz", - "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie-parser": { - "version": "1.4.6", - "resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.4.6.tgz", - "integrity": "sha512-z3IzaNjdwUC2olLIB5/ITd0/setiaFMLYiZJle7xg5Fe9KWAceil7xszYfHHBtDFYLSgJduS2Ty0P1uJdPDJeA==", - "dependencies": { - "cookie": "0.4.1", - "cookie-signature": "1.0.6" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "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/core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" - }, - "node_modules/cors": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", - "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", - "dependencies": { - "object-assign": "^4", - "vary": "^1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/cosmiconfig": { - "version": "8.3.6", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", - "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", - "dependencies": { - "import-fresh": "^3.3.0", - "js-yaml": "^4.1.0", - "parse-json": "^5.2.0", - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/d-fischer" - }, - "peerDependencies": { - "typescript": ">=4.9.5" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "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==", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/crypt": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", - "integrity": "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/crypto-random-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-4.0.0.tgz", - "integrity": "sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==", - "dependencies": { - "type-fest": "^1.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/crypto-random-string/node_modules/type-fest": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", - "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/csv-parse": { - "version": "4.16.3", - "resolved": "https://registry.npmjs.org/csv-parse/-/csv-parse-4.16.3.tgz", - "integrity": "sha512-cO1I/zmz4w2dcKHVvpCr7JVRu8/FymG5OEpmvsZYlccYolPBLoVGKUHgNoc4ZGkFeFlWGEDmMyBM+TTqRdW/wg==", - "dev": true - }, - "node_modules/d": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", - "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", - "dev": true, - "dependencies": { - "es5-ext": "^0.10.50", - "type": "^1.0.1" - } - }, - "node_modules/daemonize2": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/daemonize2/-/daemonize2-0.4.2.tgz", - "integrity": "sha512-dzB3qdxvcJ2AWyESI8xv90qZ4wZt4P+lvQUT1sVKcrbEKSvBk/8zkDlZvMyaWmoKe7DXLGu00z59b7K9gkzbqQ==", - "engines": { - "node": ">0.8.x" - } - }, - "node_modules/dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", - "dependencies": { - "assert-plus": "^1.0.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "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/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/deep-eql": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz", - "integrity": "sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==", - "dev": true, - "dependencies": { - "type-detect": "^4.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "engines": { - "node": ">=4.0.0" - } - }, - "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/default-require-extensions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-3.0.1.tgz", - "integrity": "sha512-eXTJmRbm2TIt9MgWTsOH1wEuhew6XGZcMeGKCtLedIg/NCsg1iBePXkceTdK4Fii7pzmN9tGsZhKzZ4h7O/fxw==", - "dev": true, - "dependencies": { - "strip-bom": "^4.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/define-data-property": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", - "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", - "dependencies": { - "get-intrinsic": "^1.2.1", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/define-error": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-error/-/define-error-1.0.0.tgz", - "integrity": "sha512-HLdUb9mNENZ/tjnZGlITfOnx7wSM7a6e+WEDyhKSrsN/g5dJUS6kepG6qJApRLAdjRofQ2W8R3yrtI6GeyGGVg==", - "dependencies": { - "capture-stack-trace": "~1.0.0" - } - }, - "node_modules/define-properties": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", - "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", - "dev": true, - "dependencies": { - "define-data-property": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==" - }, - "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/des.js": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.1.0.tgz", - "integrity": "sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg==", - "dev": true, - "dependencies": { - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, - "node_modules/destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/detect-libc": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz", - "integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==", - "engines": { - "node": ">=8" - } - }, - "node_modules/detect-node": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", - "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", - "dev": true - }, - "node_modules/dezalgo": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz", - "integrity": "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==", - "dependencies": { - "asap": "^2.0.0", - "wrappy": "1" - } - }, - "node_modules/diff": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", - "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", - "dev": true, - "engines": { - "node": ">=0.3.1" - } - }, - "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==", - "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/dot-prop": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", - "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", - "dependencies": { - "is-obj": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/dottie": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/dottie/-/dottie-2.0.6.tgz", - "integrity": "sha512-iGCHkfUc5kFekGiqhe8B/mdaurD+lakO9txNnTvKtA6PISrw86LgqHvRzWYPyoE2Ph5aMIrCw9/uko6XHTKCwA==" - }, - "node_modules/duplexer2": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", - "integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==", - "dependencies": { - "readable-stream": "^2.0.2" - } - }, - "node_modules/duplexer2/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" - }, - "node_modules/duplexer2/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/duplexer2/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==" - }, - "node_modules/duplexer2/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", - "dependencies": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, - "node_modules/editorconfig": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-0.15.3.tgz", - "integrity": "sha512-M9wIMFx96vq0R4F+gRpY3o2exzb8hEj/n9S8unZtHSvYjibBp/iMufSzvmOcV/laG0ZtuTVGtiJggPOSW2r93g==", - "dev": true, - "dependencies": { - "commander": "^2.19.0", - "lru-cache": "^4.1.5", - "semver": "^5.6.0", - "sigmund": "^1.0.1" - }, - "bin": { - "editorconfig": "bin/editorconfig" - } - }, - "node_modules/editorconfig/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/editorconfig/node_modules/lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", - "dev": true, - "dependencies": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "node_modules/editorconfig/node_modules/semver": { - "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" - } - }, - "node_modules/editorconfig/node_modules/yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==", - "dev": true - }, - "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/ejs": { - "version": "3.1.9", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.9.tgz", - "integrity": "sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==", - "dependencies": { - "jake": "^10.8.5" - }, - "bin": { - "ejs": "bin/cli.js" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/electron-to-chromium": { - "version": "1.4.313", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.313.tgz", - "integrity": "sha512-QckB9OVqr2oybjIrbMI99uF+b9+iTja5weFe0ePbqLb5BHqXOJUO1SG6kDj/1WtWPRIBr51N153AEq8m7HuIaA==", - "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==", - "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==" - }, - "node_modules/emojilib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/emojilib/-/emojilib-2.4.0.tgz", - "integrity": "sha512-5U0rVMU5Y2n2+ykNLQqMoqklN9ICBT/KsvC1Gz6vqHbz2AXXGkG+Pm5rMWk/8Vjrr/mY9985Hi8DYzn1F09Nyw==" - }, - "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/encoding": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", - "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", - "optional": true, - "dependencies": { - "iconv-lite": "^0.6.2" - } - }, - "node_modules/encoding/node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "optional": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/env-ci": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/env-ci/-/env-ci-10.0.0.tgz", - "integrity": "sha512-U4xcd/utDYFgMh0yWj07R1H6L5fwhVbmxBCpnL0DbVSDZVnsC82HONw0wxtxNkIAcua3KtbomQvIk5xFZGAQJw==", - "dependencies": { - "execa": "^8.0.0", - "java-properties": "^1.0.2" - }, - "engines": { - "node": "^18.17 || >=20.6.1" - } - }, - "node_modules/env-ci/node_modules/execa": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", - "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^8.0.1", - "human-signals": "^5.0.0", - "is-stream": "^3.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^5.1.0", - "onetime": "^6.0.0", - "signal-exit": "^4.1.0", - "strip-final-newline": "^3.0.0" - }, - "engines": { - "node": ">=16.17" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/env-ci/node_modules/get-stream": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", - "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/env-ci/node_modules/human-signals": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", - "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", - "engines": { - "node": ">=16.17.0" - } - }, - "node_modules/env-ci/node_modules/is-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", - "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/env-ci/node_modules/mimic-fn": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", - "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/env-ci/node_modules/npm-run-path": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.2.0.tgz", - "integrity": "sha512-W4/tgAXFqFA0iL7fk0+uQ3g7wkL8xJmx3XdK0VGb4cHW//eZTtKGvFBBoRKVTpY7n6ze4NL9ly7rgXcHufqXKg==", - "dependencies": { - "path-key": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/env-ci/node_modules/onetime": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", - "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", - "dependencies": { - "mimic-fn": "^4.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/env-ci/node_modules/path-key": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", - "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/env-ci/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/env-ci/node_modules/strip-final-newline": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", - "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/env-paths": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", - "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", - "optional": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/err-code": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", - "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", - "optional": true - }, - "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/es-abstract": { - "version": "1.22.3", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.3.tgz", - "integrity": "sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==", - "dev": true, - "dependencies": { - "array-buffer-byte-length": "^1.0.0", - "arraybuffer.prototype.slice": "^1.0.2", - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.5", - "es-set-tostringtag": "^2.0.1", - "es-to-primitive": "^1.2.1", - "function.prototype.name": "^1.1.6", - "get-intrinsic": "^1.2.2", - "get-symbol-description": "^1.0.0", - "globalthis": "^1.0.3", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0", - "internal-slot": "^1.0.5", - "is-array-buffer": "^3.0.2", - "is-callable": "^1.2.7", - "is-negative-zero": "^2.0.2", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", - "is-string": "^1.0.7", - "is-typed-array": "^1.1.12", - "is-weakref": "^1.0.2", - "object-inspect": "^1.13.1", - "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.5.1", - "safe-array-concat": "^1.0.1", - "safe-regex-test": "^1.0.0", - "string.prototype.trim": "^1.2.8", - "string.prototype.trimend": "^1.0.7", - "string.prototype.trimstart": "^1.0.7", - "typed-array-buffer": "^1.0.0", - "typed-array-byte-length": "^1.0.0", - "typed-array-byte-offset": "^1.0.0", - "typed-array-length": "^1.0.4", - "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.13" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es-iterator-helpers": { - "version": "1.0.15", - "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.15.tgz", - "integrity": "sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g==", - "dev": true, - "dependencies": { - "asynciterator.prototype": "^1.0.0", - "call-bind": "^1.0.2", - "define-properties": "^1.2.1", - "es-abstract": "^1.22.1", - "es-set-tostringtag": "^2.0.1", - "function-bind": "^1.1.1", - "get-intrinsic": "^1.2.1", - "globalthis": "^1.0.3", - "has-property-descriptors": "^1.0.0", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.5", - "iterator.prototype": "^1.1.2", - "safe-array-concat": "^1.0.1" - } - }, - "node_modules/es-set-tostringtag": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz", - "integrity": "sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.2.2", - "has-tostringtag": "^1.0.0", - "hasown": "^2.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-shim-unscopables": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", - "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", - "dev": true, - "dependencies": { - "hasown": "^2.0.0" - } - }, - "node_modules/es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, - "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es5-ext": { - "version": "0.10.62", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.62.tgz", - "integrity": "sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==", - "dev": true, - "hasInstallScript": true, - "dependencies": { - "es6-iterator": "^2.0.3", - "es6-symbol": "^3.1.3", - "next-tick": "^1.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/es6-error": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", - "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", - "dev": true - }, - "node_modules/es6-iterator": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", - "dev": true, - "dependencies": { - "d": "1", - "es5-ext": "^0.10.35", - "es6-symbol": "^3.1.1" - } - }, - "node_modules/es6-symbol": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", - "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", - "dev": true, - "dependencies": { - "d": "^1.0.1", - "ext": "^1.1.2" - } - }, - "node_modules/es6-weak-map": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", - "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", - "dev": true, - "dependencies": { - "d": "1", - "es5-ext": "^0.10.46", - "es6-iterator": "^2.0.3", - "es6-symbol": "^3.1.1" - } - }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "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": "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/eslint": { - "version": "8.56.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.56.0.tgz", - "integrity": "sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==", - "dev": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.4", - "@eslint/js": "8.56.0", - "@humanwhocodes/config-array": "^0.11.13", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "@ungap/structured-clone": "^1.2.0", - "ajv": "^6.12.4", - "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.2", - "eslint-visitor-keys": "^3.4.3", - "espree": "^9.6.1", - "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", - "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", - "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-config-google": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/eslint-config-google/-/eslint-config-google-0.14.0.tgz", - "integrity": "sha512-WsbX4WbjuMvTdeVL6+J3rK1RGhCTqjsFjX7UMSMgZiyxxaNLkoJENbrGExzERFeoTpGw3F3FypTiWAP9ZXzkEw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - }, - "peerDependencies": { - "eslint": ">=5.16.0" - } - }, - "node_modules/eslint-config-standard": { - "version": "17.1.0", - "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-17.1.0.tgz", - "integrity": "sha512-IwHwmaBNtDK4zDHQukFDW5u/aTb8+meQWZvNFWkiGmbWjD6bqyuSSBxxXKkCftCUzc1zwCH2m/baCNDLGmuO5Q==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "eslint": "^8.0.1", - "eslint-plugin-import": "^2.25.2", - "eslint-plugin-n": "^15.0.0 || ^16.0.0 ", - "eslint-plugin-promise": "^6.0.0" - } - }, - "node_modules/eslint-config-standard-jsx": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/eslint-config-standard-jsx/-/eslint-config-standard-jsx-11.0.0.tgz", - "integrity": "sha512-+1EV/R0JxEK1L0NGolAr8Iktm3Rgotx3BKwgaX+eAuSX8D952LULKtjgZD3F+e6SvibONnhLwoTi9DPxN5LvvQ==", - "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" - } - ], - "peerDependencies": { - "eslint": "^8.8.0", - "eslint-plugin-react": "^7.28.0" - } - }, - "node_modules/eslint-import-resolver-node": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", - "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", - "dev": true, - "dependencies": { - "debug": "^3.2.7", - "is-core-module": "^2.13.0", - "resolve": "^1.22.4" - } - }, - "node_modules/eslint-import-resolver-node/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/eslint-import-resolver-node/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==", - "dev": true - }, - "node_modules/eslint-import-resolver-node/node_modules/resolve": { - "version": "1.22.8", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", - "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", - "dev": true, - "dependencies": { - "is-core-module": "^2.13.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/eslint-module-utils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz", - "integrity": "sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==", - "dev": true, - "dependencies": { - "debug": "^3.2.7" - }, - "engines": { - "node": ">=4" - }, - "peerDependenciesMeta": { - "eslint": { - "optional": true - } - } - }, - "node_modules/eslint-module-utils/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/eslint-module-utils/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==", - "dev": true - }, - "node_modules/eslint-plugin-es": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-4.1.0.tgz", - "integrity": "sha512-GILhQTnjYE2WorX5Jyi5i4dz5ALWxBIdQECVQavL6s7cI76IZTDWleTHkxz/QT3kvcs2QlGHvKLYsSlPOlPXnQ==", - "dev": true, - "dependencies": { - "eslint-utils": "^2.0.0", - "regexpp": "^3.0.0" - }, - "engines": { - "node": ">=8.10.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=4.19.1" - } - }, - "node_modules/eslint-plugin-es/node_modules/eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^1.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/eslint-plugin-es/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-plugin-import": { - "version": "2.29.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz", - "integrity": "sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==", - "dev": true, - "dependencies": { - "array-includes": "^3.1.7", - "array.prototype.findlastindex": "^1.2.3", - "array.prototype.flat": "^1.3.2", - "array.prototype.flatmap": "^1.3.2", - "debug": "^3.2.7", - "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.9", - "eslint-module-utils": "^2.8.0", - "hasown": "^2.0.0", - "is-core-module": "^2.13.1", - "is-glob": "^4.0.3", - "minimatch": "^3.1.2", - "object.fromentries": "^2.0.7", - "object.groupby": "^1.0.1", - "object.values": "^1.1.7", - "semver": "^6.3.1", - "tsconfig-paths": "^3.15.0" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" - } - }, - "node_modules/eslint-plugin-import/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/eslint-plugin-import/node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eslint-plugin-import/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/eslint-plugin-import/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==", - "dev": true - }, - "node_modules/eslint-plugin-import/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/eslint-plugin-n": { - "version": "15.7.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-15.7.0.tgz", - "integrity": "sha512-jDex9s7D/Qial8AGVIHq4W7NswpUD5DPDL2RH8Lzd9EloWUuvUkHfv4FRLMipH5q2UtyurorBkPeNi1wVWNh3Q==", - "dev": true, - "dependencies": { - "builtins": "^5.0.1", - "eslint-plugin-es": "^4.1.0", - "eslint-utils": "^3.0.0", - "ignore": "^5.1.1", - "is-core-module": "^2.11.0", - "minimatch": "^3.1.2", - "resolve": "^1.22.1", - "semver": "^7.3.8" - }, - "engines": { - "node": ">=12.22.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=7.0.0" - } - }, - "node_modules/eslint-plugin-n/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/eslint-plugin-promise": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.1.1.tgz", - "integrity": "sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" - } - }, - "node_modules/eslint-plugin-react": { - "version": "7.33.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.33.2.tgz", - "integrity": "sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==", - "dev": true, - "dependencies": { - "array-includes": "^3.1.6", - "array.prototype.flatmap": "^1.3.1", - "array.prototype.tosorted": "^1.1.1", - "doctrine": "^2.1.0", - "es-iterator-helpers": "^1.0.12", - "estraverse": "^5.3.0", - "jsx-ast-utils": "^2.4.1 || ^3.0.0", - "minimatch": "^3.1.2", - "object.entries": "^1.1.6", - "object.fromentries": "^2.0.6", - "object.hasown": "^1.1.2", - "object.values": "^1.1.6", - "prop-types": "^15.8.1", - "resolve": "^2.0.0-next.4", - "semver": "^6.3.1", - "string.prototype.matchall": "^4.0.8" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" - } - }, - "node_modules/eslint-plugin-react/node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eslint-plugin-react/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/eslint-plugin-react/node_modules/resolve": { - "version": "2.0.0-next.5", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", - "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", - "dev": true, - "dependencies": { - "is-core-module": "^2.13.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/eslint-plugin-react/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/eslint-scope": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", - "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-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^2.0.0" - }, - "engines": { - "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=5" - } - }, - "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint/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/eslint/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/eslint/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/eslint/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/eslint/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/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/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.24.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", - "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/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/eslint/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/eslint/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/eslint/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/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.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", - "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.4.2", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.2.tgz", - "integrity": "sha512-JVSoLdTlTDkmjFmab7H/9SL9qGSyjElT3myyKp7krqjVFQCDLmj1QFaCLRFBszBKI0XVZaiiXvuPIX3ZwHe1Ng==", - "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/event-emitter": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", - "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==", - "dev": true, - "dependencies": { - "d": "1", - "es5-ext": "~0.10.14" - } - }, - "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": "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/eventuate": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/eventuate/-/eventuate-4.0.0.tgz", - "integrity": "sha512-SysKo5/rgqCaXlO4H4DE62JXCFtDpdm+boWOzaeaYph3Xejy04Cc4/E2HDPnOES0MFb643WgKRlx09W2iVAIBw==", - "dependencies": { - "define-error": "~1.0.0", - "object-assign": "~3.0.0", - "shallow-copy": "0.0.1" - } - }, - "node_modules/eventuate/node_modules/object-assign": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz", - "integrity": "sha512-jHP15vXVGeVh1HuaA2wY6lxk+whK/x4KBG88VXeRma7CCun7iGD5qPc4eYykQ9sdQvg8jkwFKsSxHln2ybW3xQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "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/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/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/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/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/express/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/ext": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", - "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", - "dev": true, - "dependencies": { - "type": "^2.7.2" - } - }, - "node_modules/ext/node_modules/type": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz", - "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==", - "dev": true - }, - "node_modules/extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" - }, - "node_modules/extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", - "engines": [ - "node >=0.6.0" - ] - }, - "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==" - }, - "node_modules/fast-glob": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", - "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", - "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==" - }, - "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.3.0", - "resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-3.3.0.tgz", - "integrity": "sha512-6T5V1QK1u4oF+ATxs1lWUmlEk6P2T9HqJG3e2DnHOdVgZy2rFJBoEnrIedcTXlkAHU/zKC+7KETJ+KGGKwxgMQ==", - "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 - }, - "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==", - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/figures": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", - "integrity": "sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==", - "dependencies": { - "escape-string-regexp": "^1.0.5" - }, - "engines": { - "node": ">=4" - } - }, - "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/file-type": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz", - "integrity": "sha512-RLoqTXE8/vPmMuTI88DAzhMYC99I8BWv7zYP4A1puo5HIjEJ5EX48ighy4ZyKMG9EDXxBgW6e++cn7d1xuFghA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/filelist": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", - "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", - "dependencies": { - "minimatch": "^5.0.1" - } - }, - "node_modules/filelist/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/filelist/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/filesize": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/filesize/-/filesize-10.1.0.tgz", - "integrity": "sha512-GTLKYyBSDz3nPhlLVPjPWZCnhkd9TrrRArNcy8Z+J2cqScB7h2McAzR6NBX6nYOoWafql0roY8hrocxnZBv9CQ==", - "dev": true, - "engines": { - "node": ">= 10.4.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==", - "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/find-cache-dir": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", - "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", - "dev": true, - "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/avajs/find-cache-dir?sponsor=1" - } - }, - "node_modules/find-replace": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-3.0.0.tgz", - "integrity": "sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==", - "dependencies": { - "array-back": "^3.0.1" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "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/find-up-simple": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/find-up-simple/-/find-up-simple-1.0.0.tgz", - "integrity": "sha512-q7Us7kcjj2VMePAa02hDAF6d+MzsdsAWEwYyOpwUtlerRBkOEPBCRZrAV4XfcSN8fHAgaD0hP7miwoay6DCprw==", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/find-versions": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/find-versions/-/find-versions-5.1.0.tgz", - "integrity": "sha512-+iwzCJ7C5v5KgcBuueqVoNiHVoQpwiUK5XFLjf0affFTep+Wcw93tPvmb8tqujDNmzhBDPddnWV/qgWSXgq+Hg==", - "dependencies": { - "semver-regex": "^4.0.5" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/flat": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", - "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", - "dev": true, - "bin": { - "flat": "cli.js" - } - }, - "node_modules/flat-cache": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", - "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", - "dev": true, - "dependencies": { - "flatted": "^3.2.9", - "keyv": "^4.5.3", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/flatted": { - "version": "3.2.9", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz", - "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", - "dev": true - }, - "node_modules/follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, - "node_modules/for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", - "dev": true, - "dependencies": { - "is-callable": "^1.1.3" - } - }, - "node_modules/foreground-child": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", - "integrity": "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", - "engines": { - "node": "*" - } - }, - "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==", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/formidable": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/formidable/-/formidable-3.5.1.tgz", - "integrity": "sha512-WJWKelbRHN41m5dumb0/k8TeAx7Id/y3a+Z7QfhxP/htI9Js5zYaEDtG8uMgG0vM0lOlqnmjE99/kfpOYi/0Og==", - "dependencies": { - "dezalgo": "^1.0.4", - "hexoid": "^1.0.0", - "once": "^1.4.0" - }, - "funding": { - "url": "https://ko-fi.com/tunnckoCore/commissions" - } - }, - "node_modules/formidable/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/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/from2": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", - "integrity": "sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==", - "dependencies": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.0" - } - }, - "node_modules/from2/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" - }, - "node_modules/from2/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/from2/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==" - }, - "node_modules/from2/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/fromentries": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/fromentries/-/fromentries-1.3.2.tgz", - "integrity": "sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg==", - "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/fs-extra": { - "version": "11.2.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", - "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=14.14" - } - }, - "node_modules/fs-extra/node_modules/universalify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/fs-minipass": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "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/ftp": { - "version": "0.3.10", - "resolved": "https://registry.npmjs.org/ftp/-/ftp-0.3.10.tgz", - "integrity": "sha512-faFVML1aBx2UoDStmLwv2Wptt4vw5x03xxX172nhA5Y5HBshW5JweqQ2W4xL4dezQTG8inJsuYcpPHHU3X5OTQ==", - "dependencies": { - "readable-stream": "1.1.x", - "xregexp": "2.0.0" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/function.prototype.name": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", - "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "functions-have-names": "^1.2.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/gauge": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz", - "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==", - "dependencies": { - "aproba": "^1.0.3 || ^2.0.0", - "color-support": "^1.1.2", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.1", - "object-assign": "^4.1.1", - "signal-exit": "^3.0.0", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "wide-align": "^1.1.2" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/gauge/node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true, - "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==", - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/get-func-name": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", - "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/get-intrinsic": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", - "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", - "dependencies": { - "function-bind": "^1.1.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0" - }, - "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-stdin": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-8.0.0.tgz", - "integrity": "sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/get-symbol-description": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", - "dependencies": { - "assert-plus": "^1.0.0" - } - }, - "node_modules/git-log-parser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/git-log-parser/-/git-log-parser-1.2.0.tgz", - "integrity": "sha512-rnCVNfkTL8tdNryFuaY0fYiBWEBcgF748O6ZI61rslBvr2o7U65c2/6npCRqH40vuAhtgtDiqLTJjBVdrejCzA==", - "dependencies": { - "argv-formatter": "~1.0.0", - "spawn-error-forwarder": "~1.0.0", - "split2": "~1.0.0", - "stream-combiner2": "~1.1.1", - "through2": "~2.0.0", - "traverse": "~0.6.6" - } - }, - "node_modules/git-log-parser/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" - }, - "node_modules/git-log-parser/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/git-log-parser/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==" - }, - "node_modules/git-log-parser/node_modules/split2": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/split2/-/split2-1.0.0.tgz", - "integrity": "sha512-NKywug4u4pX/AZBB1FCPzZ6/7O+Xhz1qMVbzTvvKvikjO99oPN87SkK08mEY9P63/5lWjK+wgOOgApnTg5r6qg==", - "dependencies": { - "through2": "~2.0.0" - } - }, - "node_modules/git-log-parser/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/git-log-parser/node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "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==", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/glob/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/global-agent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/global-agent/-/global-agent-3.0.0.tgz", - "integrity": "sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q==", - "dev": true, - "dependencies": { - "boolean": "^3.0.1", - "es6-error": "^4.1.1", - "matcher": "^3.0.0", - "roarr": "^2.15.3", - "semver": "^7.3.2", - "serialize-error": "^7.0.1" - }, - "engines": { - "node": ">=10.0" - } - }, - "node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/globalthis": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", - "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", - "dev": true, - "dependencies": { - "define-properties": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/globby": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-14.0.0.tgz", - "integrity": "sha512-/1WM/LNHRAOH9lZta77uGbq0dAEQM+XjNesWwhlERDVenqothRbnzTrL3/LrIoEPPjeUHC3vrS6TwoyxeHs7MQ==", - "dependencies": { - "@sindresorhus/merge-streams": "^1.0.0", - "fast-glob": "^3.3.2", - "ignore": "^5.2.4", - "path-type": "^5.0.0", - "slash": "^5.1.0", - "unicorn-magic": "^0.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/globby/node_modules/path-type": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-5.0.0.tgz", - "integrity": "sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "dependencies": { - "get-intrinsic": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" - }, - "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.8", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", - "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==", - "dependencies": { - "minimist": "^1.2.5", - "neo-async": "^2.6.2", - "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/har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", - "engines": { - "node": ">=4" - } - }, - "node_modules/har-validator": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", - "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", - "deprecated": "this library is no longer supported", - "dependencies": { - "ajv": "^6.12.3", - "har-schema": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/has-bigints": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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/has-property-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", - "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", - "dependencies": { - "get-intrinsic": "^1.2.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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/has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", - "dev": true, - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-unicode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==" - }, - "node_modules/hasha": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/hasha/-/hasha-5.2.2.tgz", - "integrity": "sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ==", - "dev": true, - "dependencies": { - "is-stream": "^2.0.0", - "type-fest": "^0.8.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/hasown": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", - "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true, - "bin": { - "he": "bin/he" - } - }, - "node_modules/helmet": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/helmet/-/helmet-7.1.0.tgz", - "integrity": "sha512-g+HZqgfbpXdCkme/Cd/mZkV0aV3BZZZSugecH03kl38m/Kmdx8jKjBikpDj2cr+Iynv4KpYEviojNdTJActJAg==", - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/hexoid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/hexoid/-/hexoid-1.0.0.tgz", - "integrity": "sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g==", - "engines": { - "node": ">=8" - } - }, - "node_modules/hook-std": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/hook-std/-/hook-std-3.0.0.tgz", - "integrity": "sha512-jHRQzjSDzMtFy34AGj1DN+vq54WVuhSvKgrHf0OMiFQTwDD4L/qqofVEWjLOBMTn5+lCD3fPg32W9yOfnEJTTw==", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/hosted-git-info": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.1.tgz", - "integrity": "sha512-+K84LB1DYwMHoHSgaOY/Jfhw3ucPmSET5v98Ke/HdNSw4a0UktWzyW1mjhjpuxxTqOOsfWT/7iVshHmVZ4IpOA==", - "dependencies": { - "lru-cache": "^10.0.1" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/hosted-git-info/node_modules/lru-cache": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.1.0.tgz", - "integrity": "sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==", - "engines": { - "node": "14 || >=16.14" - } - }, - "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-cache-semantics": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", - "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", - "optional": 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/http-proxy-agent": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.0.tgz", - "integrity": "sha512-+ZT+iBxVUQ1asugqnD6oWoRiS25AkjNfG085dKJGtGxkdwLQrMKU5wJr2bOOFAXzKcTuqq+7fZlTMgG3SRfIYQ==", - "dependencies": { - "agent-base": "^7.1.0", - "debug": "^4.3.4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/http-proxy-agent/node_modules/agent-base": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz", - "integrity": "sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==", - "dependencies": { - "debug": "^4.3.4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/http-proxy-agent/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/http-proxy-agent/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/http-reasons": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/http-reasons/-/http-reasons-0.1.0.tgz", - "integrity": "sha512-P6kYh0lKZ+y29T2Gqz+RlC9WBLhKe8kDmcJ+A+611jFfxdPsbMRQ5aNmFRM3lENqFkK+HTTL+tlQviAiv0AbLQ==", - "dev": true - }, - "node_modules/http-signature": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.3.6.tgz", - "integrity": "sha512-3adrsD6zqo4GsTqtO7FyrejHNv+NgiIfAfv68+jVlFmSr9OGy7zrxONceFRLKvnnZA5jbxQBX1u9PpB6Wi32Gw==", - "dev": true, - "dependencies": { - "assert-plus": "^1.0.0", - "jsprim": "^2.0.2", - "sshpk": "^1.14.1" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/httpntlm": { - "version": "1.8.13", - "resolved": "https://registry.npmjs.org/httpntlm/-/httpntlm-1.8.13.tgz", - "integrity": "sha512-2F2FDPiWT4rewPzNMg3uPhNkP3NExENlUGADRUDPQvuftuUTGW98nLZtGemCIW3G40VhWZYgkIDcQFAwZ3mf2Q==", - "dev": true, - "funding": [ - { - "type": "paypal", - "url": "https://www.paypal.com/donate/?hosted_button_id=2CKNJLZJBW8ZC" - }, - { - "type": "buymeacoffee", - "url": "https://www.buymeacoffee.com/samdecrock" - } - ], - "dependencies": { - "des.js": "^1.0.1", - "httpreq": ">=0.4.22", - "js-md4": "^0.3.2", - "underscore": "~1.12.1" - }, - "engines": { - "node": ">=10.4.0" - } - }, - "node_modules/httpntlm/node_modules/underscore": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.12.1.tgz", - "integrity": "sha512-hEQt0+ZLDVUMhebKxL4x1BTtDY7bavVofhZ9KZ4aI26X9SRaE+Y3m83XUL1UP2jn8ynjndwCCpEHdUG+9pP1Tw==", - "dev": true - }, - "node_modules/httpreq": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/httpreq/-/httpreq-1.1.1.tgz", - "integrity": "sha512-uhSZLPPD2VXXOSN8Cni3kIsoFHaU2pT/nySEU/fHr/ePbqHYr0jeiQRmUKLEirC09SFPsdMoA7LU7UXMd/w0Kw==", - "engines": { - "node": ">= 6.15.1" - } - }, - "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/https-proxy-agent/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/https-proxy-agent/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/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==", - "engines": { - "node": ">=10.17.0" - } - }, - "node_modules/humanize-ms": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", - "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", - "optional": true, - "dependencies": { - "ms": "^2.0.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/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/ignore": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz", - "integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==", - "engines": { - "node": ">= 4" - } - }, - "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==", - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/import-from-esm": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/import-from-esm/-/import-from-esm-1.3.3.tgz", - "integrity": "sha512-U3Qt/CyfFpTUv6LOP2jRTLYjphH6zg3okMfHbyqRa/W2w6hr8OsJWVggNlR4jxuojQy81TgTJTxgSkyoteRGMQ==", - "dependencies": { - "debug": "^4.3.4", - "import-meta-resolve": "^4.0.0" - }, - "engines": { - "node": ">=16.20" - } - }, - "node_modules/import-from-esm/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/import-from-esm/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/import-meta-resolve": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.0.0.tgz", - "integrity": "sha512-okYUR7ZQPH+efeuMJGlq4f8ubUgO50kByRPyt/Cy1Io4PSRsPjxME+YlVaCOx+NIToW7hCsZNFJyTPFFKepRSA==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "devOptional": 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==", - "devOptional": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/index-to-position": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/index-to-position/-/index-to-position-0.1.2.tgz", - "integrity": "sha512-MWDKS3AS1bGCHLBA2VLImJz42f7bJh8wQsTGCzI3j519/CASStoDONUBVz2I/VID0MpiX3SGSnbOD2xUalbE5g==", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/infer-owner": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", - "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", - "optional": true - }, - "node_modules/inflection": { - "version": "1.13.4", - "resolved": "https://registry.npmjs.org/inflection/-/inflection-1.13.4.tgz", - "integrity": "sha512-6I/HUDeYFfuNCVS3td055BaXBwKYuzw7K3ExVMStBowKo9oOAMJIXIHvdyR3iboTCp1b+1i5DSkIZTcwIktuDw==", - "engines": [ - "node >= 0.4.0" - ] - }, - "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/ini": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", - "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", - "engines": { - "node": ">=10" - } - }, - "node_modules/internal-slot": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.6.tgz", - "integrity": "sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.2.2", - "hasown": "^2.0.0", - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/into-stream": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-7.0.0.tgz", - "integrity": "sha512-2dYz766i9HprMBasCMvHMuazJ7u4WzhJwo5kb3iPSiW/iRYV6uPari3zHoqZlnuaR7V1bEiNMxikhp37rdBXbw==", - "dependencies": { - "from2": "^2.3.0", - "p-is-promise": "^3.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ip": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", - "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==", - "optional": true - }, - "node_modules/ip-regex": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", - "integrity": "sha512-58yWmlHpp7VYfcdTwMTvwMmqx/Elfxjd9RXTDyMsbL7lLWmhMylLEqiYVLKuLzOZqVgiWXD9MfR62Vv89VRxkw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "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-admin": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-admin/-/is-admin-4.0.0.tgz", - "integrity": "sha512-ODl+ygFCyHXMauhn+0mBebcwO1tiB+b4FoBiIC97gFDcmdO3JMD+YmIhSA8+1KVZuGwfsX8ANo2yblgW5KUPTg==", - "dependencies": { - "execa": "^5.1.1" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-array-buffer": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", - "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.0", - "is-typed-array": "^1.1.10" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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-async-function": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz", - "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", - "dev": true, - "dependencies": { - "has-bigints": "^1.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-core-module": { - "version": "2.13.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", - "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", - "dependencies": { - "hasown": "^2.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-elevated": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-elevated/-/is-elevated-4.0.0.tgz", - "integrity": "sha512-nHdo1tvG6ocQA+MESx+VmUae2dvB32mm87gzZxMlZT7gtURGC9quMpYrwuMqIFJTqKSP/wLLQnneG/Z2AIne6g==", - "dependencies": { - "is-admin": "^4.0.0", - "is-root": "^3.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-finalizationregistry": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz", - "integrity": "sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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==", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-generator-function": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", - "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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==", - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-ip": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-ip/-/is-ip-2.0.0.tgz", - "integrity": "sha512-9MTn0dteHETtyUx8pxqMwg5hMBi3pvlyglJ+b79KOCca0po23337LbVV2Hl4xmMvfw++ljnO0/+5G6G+0Szh6g==", - "dev": true, - "dependencies": { - "ip-regex": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/is-lambda": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", - "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", - "optional": true - }, - "node_modules/is-map": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", - "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-negative-zero": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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==", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-number-like": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/is-number-like/-/is-number-like-1.0.8.tgz", - "integrity": "sha512-6rZi3ezCyFcn5L71ywzz2bS5b2Igl1En3eTlZlvKjpz1n3IZLAYMbKYAIQgFmEu0GENg92ziU/faEOA/aixjbA==", - "dependencies": { - "lodash.isfinite": "^3.3.2" - } - }, - "node_modules/is-number-object": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", - "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", - "engines": { - "node": ">=8" - } - }, - "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-promise": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", - "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==", - "dev": true - }, - "node_modules/is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-root": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-root/-/is-root-3.0.0.tgz", - "integrity": "sha512-C13bL54yQdgniduW8KFe81ttgQINcwMgil/zyNuDzr/xjIyDMkcvcc9dON62RH9VBAHOI7le+lTo/U3PY3irwg==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-set": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz", - "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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==", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "dev": true, - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-text-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-2.0.0.tgz", - "integrity": "sha512-+oDTluR6WEjdXEJMnC2z6A4FRwFoYuvShVVEGsS7ewc0UTi2QtAKMDJuL4BDEVt+5T7MjFo12RP8ghOM75oKJw==", - "dependencies": { - "text-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-typed-array": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", - "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", - "dev": true, - "dependencies": { - "which-typed-array": "^1.1.11" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" - }, - "node_modules/is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-weakmap": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", - "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakset": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz", - "integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==" - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" - }, - "node_modules/isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==" - }, - "node_modules/issue-parser": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/issue-parser/-/issue-parser-6.0.0.tgz", - "integrity": "sha512-zKa/Dxq2lGsBIXQ7CUZWTHfvxPC2ej0KfO7fIPqLlHB9J2hJ7rGhZ5rilhuufylr4RXYPzJUeFjKxz305OsNlA==", - "dependencies": { - "lodash.capitalize": "^4.2.1", - "lodash.escaperegexp": "^4.1.2", - "lodash.isplainobject": "^4.0.6", - "lodash.isstring": "^4.0.1", - "lodash.uniqby": "^4.7.0" - }, - "engines": { - "node": ">=10.13" - } - }, - "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-hook": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-3.0.0.tgz", - "integrity": "sha512-Pt/uge1Q9s+5VAZ+pCo16TYMWPBIl+oaNIjgLQxcX0itS6ueeaA+pEfThZpH8WxhFgCiEb8sAJY6MdUKgiIWaQ==", - "dev": true, - "dependencies": { - "append-transform": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-instrument": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", - "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", - "dev": true, - "dependencies": { - "@babel/core": "^7.7.5", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.0.0", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "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==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/istanbul-lib-processinfo": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-processinfo/-/istanbul-lib-processinfo-2.0.3.tgz", - "integrity": "sha512-NkwHbo3E00oybX6NGJi6ar0B29vxyvNwoC7eJ4G4Yq28UfY758Hgn/heV8VRFhevPED4LXfFz0DQ8z/0kw9zMg==", - "dev": true, - "dependencies": { - "archy": "^1.0.0", - "cross-spawn": "^7.0.3", - "istanbul-lib-coverage": "^3.2.0", - "p-map": "^3.0.0", - "rimraf": "^3.0.0", - "uuid": "^8.3.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-processinfo/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==", - "dev": true, - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "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-report/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/istanbul-lib-report/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/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-lib-source-maps/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/istanbul-lib-source-maps/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/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/iterator.prototype": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz", - "integrity": "sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==", - "dev": true, - "dependencies": { - "define-properties": "^1.2.1", - "get-intrinsic": "^1.2.1", - "has-symbols": "^1.0.3", - "reflect.getprototypeof": "^1.0.4", - "set-function-name": "^2.0.1" - } - }, - "node_modules/jake": { - "version": "10.8.5", - "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz", - "integrity": "sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==", - "dependencies": { - "async": "^3.2.3", - "chalk": "^4.0.2", - "filelist": "^1.0.1", - "minimatch": "^3.0.4" - }, - "bin": { - "jake": "bin/cli.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/jake/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==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jake/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "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/jake/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==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jake/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==" - }, - "node_modules/jake/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==", - "engines": { - "node": ">=8" - } - }, - "node_modules/jake/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/jake/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==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/java-properties": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/java-properties/-/java-properties-1.0.2.tgz", - "integrity": "sha512-qjdpeo2yKlYTH7nFdK0vbZWuTCesk4o63v5iVOlhMQPfuIZQfW/HI35SjfhA+4qpg36rnFSvUK5b1m+ckIblQQ==", - "engines": { - "node": ">= 0.6.0" - } - }, - "node_modules/jose": { - "version": "4.14.4", - "resolved": "https://registry.npmjs.org/jose/-/jose-4.14.4.tgz", - "integrity": "sha512-j8GhLiKmUAh+dsFXlX1aJCbt5KMibuKb+d7j1JaOJG6s2UjX1PQlW+OKB/sD4a/5ZYF4RcmYmLSndOoU3Lt/3g==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/panva" - } - }, - "node_modules/js-beautify": { - "version": "1.14.7", - "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.14.7.tgz", - "integrity": "sha512-5SOX1KXPFKx+5f6ZrPsIPEY7NwKeQz47n3jm2i+XeHx9MoRsfQenlOP13FQhWvg8JRS0+XLO6XYUQ2GX+q+T9A==", - "dev": true, - "dependencies": { - "config-chain": "^1.1.13", - "editorconfig": "^0.15.3", - "glob": "^8.0.3", - "nopt": "^6.0.0" - }, - "bin": { - "css-beautify": "js/bin/css-beautify.js", - "html-beautify": "js/bin/html-beautify.js", - "js-beautify": "js/bin/js-beautify.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/js-beautify/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==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/js-beautify/node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "dev": true, - "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/js-beautify/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/js-md4": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/js-md4/-/js-md4-0.3.2.tgz", - "integrity": "sha512-/GDnfQYsltsjRswQhN9fhv3EMw2sCpUdrdxyWDOUK7eyD++r3gRhzgiQgc/x4MAv2i1iuQ4lxO5mvqM3vj4bwA==", - "dev": true - }, - "node_modules/js-sha512": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/js-sha512/-/js-sha512-0.8.0.tgz", - "integrity": "sha512-PWsmefG6Jkodqt+ePTvBZCSMFgN7Clckjd0O7su3I0+BW2QWUTJNzjktHsztGLhncP2h8mcF9V9Y2Ha59pAViQ==", - "dev": true - }, - "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==" - }, - "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/jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==" - }, - "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-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true - }, - "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==" - }, - "node_modules/json-schema": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", - "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" - }, - "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==" - }, - "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==" - }, - "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/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/jsonfile/node_modules/universalify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/jsonparse": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", - "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", - "engines": [ - "node >= 0.2.0" - ] - }, - "node_modules/jsonschema": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsonschema/-/jsonschema-1.4.1.tgz", - "integrity": "sha512-S6cATIPVv1z0IlxdN+zUk5EPjkGCdnhN4wVSBlvoUO1tOLJootbo9CquNJmbIh4yikWHiUedhRYrNPn1arpEmQ==", - "engines": { - "node": "*" - } - }, - "node_modules/JSONStream": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", - "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", - "dependencies": { - "jsonparse": "^1.2.0", - "through": ">=2.2.7 <3" - }, - "bin": { - "JSONStream": "bin.js" - }, - "engines": { - "node": "*" - } - }, - "node_modules/jsprim": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-2.0.2.tgz", - "integrity": "sha512-gqXddjPqQ6G40VdnI6T6yObEC+pDNvyP95wdQhkWkg7crHH3km5qP1FsOXEkzEQwnz6gz5qGTn1c2Y52wP3OyQ==", - "dev": true, - "engines": [ - "node >=0.6.0" - ], - "dependencies": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.4.0", - "verror": "1.10.0" - } - }, - "node_modules/jsx-ast-utils": { - "version": "3.3.5", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", - "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", - "dev": true, - "dependencies": { - "array-includes": "^3.1.6", - "array.prototype.flat": "^1.3.1", - "object.assign": "^4.1.4", - "object.values": "^1.1.6" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/just-extend": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-4.2.1.tgz", - "integrity": "sha512-g3UB796vUFIY90VIv/WX3L2c8CS2MdWUww3CNrYmqza1Fg0DURc2K/O4YrnklBdQarSJ/y8JnJYDGc+1iumQjg==", - "dev": true - }, - "node_modules/keyv": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", - "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", - "dev": true, - "dependencies": { - "json-buffer": "3.0.1" - } - }, - "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==" - }, - "node_modules/liquid-json": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/liquid-json/-/liquid-json-0.3.1.tgz", - "integrity": "sha512-wUayTU8MS827Dam6MxgD72Ui+KOSF+u/eIqpatOtjnvgJ0+mnDq33uC2M7J0tPK+upe/DpUAuK4JUU89iBoNKQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/load-json-file": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", - "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==", - "dependencies": { - "graceful-fs": "^4.1.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0", - "strip-bom": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "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/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/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, - "node_modules/lodash-es": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", - "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" - }, - "node_modules/lodash.assignwith": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.assignwith/-/lodash.assignwith-4.2.0.tgz", - "integrity": "sha512-ZznplvbvtjK2gMvnQ1BR/zqPFZmS6jbK4p+6Up4xcRYA7yMIwxHCfbTcrYxXKzzqLsQ05eJPVznEW3tuwV7k1g==" - }, - "node_modules/lodash.camelcase": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", - "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==" - }, - "node_modules/lodash.capitalize": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/lodash.capitalize/-/lodash.capitalize-4.2.1.tgz", - "integrity": "sha512-kZzYOKspf8XVX5AvmQF94gQW0lejFVgb80G85bU4ZWzoJ6C03PQg3coYAUpSTpQWelrZELd3XWgHzw4Ck5kaIw==" - }, - "node_modules/lodash.escaperegexp": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz", - "integrity": "sha512-TM9YBvyC84ZxE3rgfefxUWiQKLilstD6k7PTGt6wfbtXF8ixIJLOL3VYyV/z+ZiPLsVxAsKAFVwWlWeb2Y8Yyw==" - }, - "node_modules/lodash.flattendeep": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", - "integrity": "sha512-uHaJFihxmJcEX3kT4I23ABqKKalJ/zDrDg0lsFtc1h+3uw49SIJ5beyhx5ExVRti3AvKoOJngIj7xz3oylPdWQ==", - "dev": true - }, - "node_modules/lodash.get": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", - "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==", - "dev": true - }, - "node_modules/lodash.isfinite": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/lodash.isfinite/-/lodash.isfinite-3.3.2.tgz", - "integrity": "sha512-7FGG40uhC8Mm633uKW1r58aElFlBlxCrg9JfSi3P6aYiWmfiWF0PgMd86ZUsxE5GwWPdHoS2+48bwTh2VPkIQA==" - }, - "node_modules/lodash.isplainobject": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==" - }, - "node_modules/lodash.isstring": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", - "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==" - }, - "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/lodash.uniqby": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz", - "integrity": "sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww==" - }, - "node_modules/log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dev": true, - "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/log-symbols/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/log-symbols/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/log-symbols/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/log-symbols/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/log-symbols/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/log-symbols/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/loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "dev": true, - "dependencies": { - "js-tokens": "^3.0.0 || ^4.0.0" - }, - "bin": { - "loose-envify": "cli.js" - } - }, - "node_modules/loupe": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", - "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", - "dev": true, - "dependencies": { - "get-func-name": "^2.0.1" - } - }, - "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/lru-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz", - "integrity": "sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ==", - "dev": true, - "dependencies": { - "es5-ext": "~0.10.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==", - "dependencies": { - "semver": "^6.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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==", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/make-fetch-happen": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz", - "integrity": "sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==", - "optional": true, - "dependencies": { - "agentkeepalive": "^4.1.3", - "cacache": "^15.2.0", - "http-cache-semantics": "^4.1.0", - "http-proxy-agent": "^4.0.1", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^6.0.0", - "minipass": "^3.1.3", - "minipass-collect": "^1.0.2", - "minipass-fetch": "^1.3.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.2", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^6.0.0", - "ssri": "^8.0.0" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/make-fetch-happen/node_modules/@tootallnate/once": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", - "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", - "optional": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/make-fetch-happen/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "optional": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/make-fetch-happen/node_modules/http-proxy-agent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", - "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", - "optional": true, - "dependencies": { - "@tootallnate/once": "1", - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/make-fetch-happen/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==", - "optional": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/make-fetch-happen/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==", - "optional": true - }, - "node_modules/make-fetch-happen/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "optional": true - }, - "node_modules/marked": { - "version": "9.1.6", - "resolved": "https://registry.npmjs.org/marked/-/marked-9.1.6.tgz", - "integrity": "sha512-jcByLnIFkd5gSXZmjNvS1TlmRhCXZjIzHYlaGkPlLIekG55JDR2Z4va9tZwCiP+/RDERiNhMOFu01xd6O5ct1Q==", - "bin": { - "marked": "bin/marked.js" - }, - "engines": { - "node": ">= 16" - } - }, - "node_modules/marked-terminal": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/marked-terminal/-/marked-terminal-6.2.0.tgz", - "integrity": "sha512-ubWhwcBFHnXsjYNsu+Wndpg0zhY4CahSpPlA70PlO0rR9r2sZpkyU+rkCsOWH+KMEkx847UpALON+HWgxowFtw==", - "dependencies": { - "ansi-escapes": "^6.2.0", - "cardinal": "^2.1.1", - "chalk": "^5.3.0", - "cli-table3": "^0.6.3", - "node-emoji": "^2.1.3", - "supports-hyperlinks": "^3.0.0" - }, - "engines": { - "node": ">=16.0.0" - }, - "peerDependencies": { - "marked": ">=1 <12" - } - }, - "node_modules/marked-terminal/node_modules/chalk": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", - "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/matcher": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/matcher/-/matcher-3.0.0.tgz", - "integrity": "sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==", - "dev": true, - "dependencies": { - "escape-string-regexp": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/matcher/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/md5": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz", - "integrity": "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==", - "dev": true, - "dependencies": { - "charenc": "0.0.2", - "crypt": "0.0.2", - "is-buffer": "~1.1.6" - } - }, - "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/memoizee": { - "version": "0.4.15", - "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.15.tgz", - "integrity": "sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ==", - "dev": true, - "dependencies": { - "d": "^1.0.1", - "es5-ext": "^0.10.53", - "es6-weak-map": "^2.0.3", - "event-emitter": "^0.3.5", - "is-promise": "^2.2.2", - "lru-queue": "^0.1.0", - "next-tick": "^1.1.0", - "timers-ext": "^0.1.7" - } - }, - "node_modules/meow": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/meow/-/meow-12.1.1.tgz", - "integrity": "sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==", - "engines": { - "node": ">=16.10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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==" - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "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==", - "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/mime": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/mime/-/mime-4.0.1.tgz", - "integrity": "sha512-5lZ5tyrIfliMXzFtkYyekWbtRXObT9OWa8IwQ5uxTBDHucNNwniRqo0yInflj+iYi5CBa6qxadGzGarDfuEOxA==", - "funding": [ - "https://github.com/sponsors/broofa" - ], - "bin": { - "mime": "bin/cli.js" - }, - "engines": { - "node": ">=16" - } - }, - "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-format": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/mime-format/-/mime-format-2.0.1.tgz", - "integrity": "sha512-XxU3ngPbEnrYnNbIX+lYSaYg0M01v6p2ntd2YaFksTu0vayaw5OJvbdRyWs07EYRlLED5qadUZ+xo+XhOvFhwg==", - "dev": true, - "dependencies": { - "charset": "^1.0.0" - } - }, - "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==", - "engines": { - "node": ">=6" - } - }, - "node_modules/minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", - "dev": true - }, - "node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/minimatch/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/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/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/minipass-collect": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", - "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", - "optional": true, - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/minipass-fetch": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.4.1.tgz", - "integrity": "sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==", - "optional": true, - "dependencies": { - "minipass": "^3.1.0", - "minipass-sized": "^1.0.3", - "minizlib": "^2.0.0" - }, - "engines": { - "node": ">=8" - }, - "optionalDependencies": { - "encoding": "^0.1.12" - } - }, - "node_modules/minipass-flush": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", - "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", - "optional": true, - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/minipass-pipeline": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", - "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", - "optional": true, - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/minipass-sized": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", - "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", - "optional": true, - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/minipass/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/minizlib": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", - "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", - "dependencies": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/minizlib/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/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/mocha": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.2.0.tgz", - "integrity": "sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==", - "dev": true, - "dependencies": { - "ansi-colors": "4.1.1", - "browser-stdout": "1.3.1", - "chokidar": "3.5.3", - "debug": "4.3.4", - "diff": "5.0.0", - "escape-string-regexp": "4.0.0", - "find-up": "5.0.0", - "glob": "7.2.0", - "he": "1.2.0", - "js-yaml": "4.1.0", - "log-symbols": "4.1.0", - "minimatch": "5.0.1", - "ms": "2.1.3", - "nanoid": "3.3.3", - "serialize-javascript": "6.0.0", - "strip-json-comments": "3.1.1", - "supports-color": "8.1.1", - "workerpool": "6.2.1", - "yargs": "16.2.0", - "yargs-parser": "20.2.4", - "yargs-unparser": "2.0.0" - }, - "bin": { - "_mocha": "bin/_mocha", - "mocha": "bin/mocha.js" - }, - "engines": { - "node": ">= 14.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mochajs" - } - }, - "node_modules/mocha-junit-reporter": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/mocha-junit-reporter/-/mocha-junit-reporter-2.2.1.tgz", - "integrity": "sha512-iDn2tlKHn8Vh8o4nCzcUVW4q7iXp7cC4EB78N0cDHIobLymyHNwe0XG8HEHHjc3hJlXm0Vy6zcrxaIhnI2fWmw==", - "dev": true, - "dependencies": { - "debug": "^4.3.4", - "md5": "^2.3.0", - "mkdirp": "^3.0.0", - "strip-ansi": "^6.0.1", - "xml": "^1.0.1" - }, - "peerDependencies": { - "mocha": ">=2.2.5" - } - }, - "node_modules/mocha-junit-reporter/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/mocha-junit-reporter/node_modules/mkdirp": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz", - "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==", - "dev": true, - "bin": { - "mkdirp": "dist/cjs/src/bin.js" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/mocha-junit-reporter/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/mocha/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/mocha/node_modules/debug/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/mocha/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/mocha/node_modules/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/mocha/node_modules/glob/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/mocha/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/mocha/node_modules/minimatch": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", - "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/mocha/node_modules/minimatch/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==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/mocha/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==", - "dev": true - }, - "node_modules/mocha/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/moment": { - "version": "2.30.1", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz", - "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==", - "engines": { - "node": "*" - } - }, - "node_modules/moment-timezone": { - "version": "0.5.44", - "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.44.tgz", - "integrity": "sha512-nv3YpzI/8lkQn0U6RkLd+f0W/zy/JnoR5/EyPz/dNkPTBjA2jNLCVxaiQ8QpeLymhSZvX0wCL5s27NQWdOPwAw==", - "dependencies": { - "moment": "^2.29.4" - }, - "engines": { - "node": "*" - } - }, - "node_modules/morgan": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.10.0.tgz", - "integrity": "sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==", - "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/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==", - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/multer": { - "version": "1.4.5-lts.1", - "resolved": "https://registry.npmjs.org/multer/-/multer-1.4.5-lts.1.tgz", - "integrity": "sha512-ywPWvcDMeH+z9gQq5qYHCCy+ethsk4goepZ45GLD63fOu0YcNecQxi64nDs3qluZB+murG3/D4dJ7+dGctcCQQ==", - "dependencies": { - "append-field": "^1.0.0", - "busboy": "^1.0.0", - "concat-stream": "^1.5.2", - "mkdirp": "^0.5.4", - "object-assign": "^4.1.1", - "type-is": "^1.6.4", - "xtend": "^4.0.0" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/multer/node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/nanoid": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", - "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", - "dev": true, - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "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/nconf": { - "version": "0.12.1", - "resolved": "https://registry.npmjs.org/nconf/-/nconf-0.12.1.tgz", - "integrity": "sha512-p2cfF+B3XXacQdswUYWZ0w6Vld0832A/tuqjLBu3H1sfUcby4N2oVbGhyuCkZv+t3iY3aiFEj7gZGqax9Q2c1w==", - "dependencies": { - "async": "^3.0.0", - "ini": "^2.0.0", - "secure-keys": "^1.0.0", - "yargs": "^16.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "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/nerf-dart": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/nerf-dart/-/nerf-dart-1.0.0.tgz", - "integrity": "sha512-EZSPZB70jiVsivaBLYDCyntd5eH8NTSMOn3rB+HxwdmKThGELLdYv8qVIMWvZEFy9w8ZZpW9h9OB32l1rGtj7g==" - }, - "node_modules/newman": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/newman/-/newman-6.1.0.tgz", - "integrity": "sha512-0A/dSVnGvmnNv6RatCNMIYnSfMqkUjBLMac/Lvo+C0Zr8BQbweBuEw+zNR1kgPiBwUQmYVkRvGWJwI/cE3N2qA==", - "dev": true, - "dependencies": { - "@postman/tough-cookie": "4.1.3-postman.1", - "async": "3.2.5", - "chardet": "2.0.0", - "cli-progress": "3.12.0", - "cli-table3": "0.6.3", - "colors": "1.4.0", - "commander": "11.1.0", - "csv-parse": "4.16.3", - "filesize": "10.1.0", - "liquid-json": "0.3.1", - "lodash": "4.17.21", - "mkdirp": "3.0.1", - "postman-collection": "4.3.0", - "postman-collection-transformer": "4.1.8", - "postman-request": "2.88.1-postman.33", - "postman-runtime": "7.36.1", - "pretty-ms": "7.0.1", - "semver": "7.5.4", - "serialised-error": "1.1.3", - "word-wrap": "1.2.5", - "xmlbuilder": "15.1.1" - }, - "bin": { - "newman": "bin/newman.js" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/newman-reporter-junitfull": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/newman-reporter-junitfull/-/newman-reporter-junitfull-1.1.1.tgz", - "integrity": "sha512-ET5rU1qkeJ5yvFxcKQFkqGxWia50kdnufm1uzyeNYlUg6T+k07AvOS0mfp/Ejr0njnsiPfFLb9kC48F8pafq9A==", - "dev": true, - "dependencies": { - "lodash": "^4.17.10", - "moment": "^2.22.2", - "xmlbuilder": "^10.0.0" - }, - "engines": { - "node": ">=6" - }, - "peerDependencies": { - "newman": ">=4" - } - }, - "node_modules/newman-reporter-junitfull/node_modules/xmlbuilder": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-10.1.1.tgz", - "integrity": "sha512-OyzrcFLL/nb6fMGHbiRDuPup9ljBycsdCypwuyg5AAHvyWzGfChJpCXMG88AGTIMFhGZ9RccFN1e6lhg3hkwKg==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/newman/node_modules/mkdirp": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz", - "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==", - "dev": true, - "bin": { - "mkdirp": "dist/cjs/src/bin.js" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/next-tick": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", - "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==", - "dev": true - }, - "node_modules/nise": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/nise/-/nise-5.1.5.tgz", - "integrity": "sha512-VJuPIfUFaXNRzETTQEEItTOP8Y171ijr+JLq42wHes3DiryR8vT+1TXQW/Rx8JNUhyYYWyIvjXTU6dOhJcs9Nw==", - "dev": true, - "dependencies": { - "@sinonjs/commons": "^2.0.0", - "@sinonjs/fake-timers": "^10.0.2", - "@sinonjs/text-encoding": "^0.7.1", - "just-extend": "^4.0.2", - "path-to-regexp": "^1.7.0" - } - }, - "node_modules/nise/node_modules/@sinonjs/commons": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-2.0.0.tgz", - "integrity": "sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg==", - "dev": true, - "dependencies": { - "type-detect": "4.0.8" - } - }, - "node_modules/nise/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/nise/node_modules/@sinonjs/fake-timers/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/nise/node_modules/path-to-regexp": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", - "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", - "dev": true, - "dependencies": { - "isarray": "0.0.1" - } - }, - "node_modules/node-addon-api": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz", - "integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==" - }, - "node_modules/node-emoji": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-2.1.3.tgz", - "integrity": "sha512-E2WEOVsgs7O16zsURJ/eH8BqhF029wGpEOnv7Urwdo2wmQanOACwJQh0devF9D9RhoZru0+9JXIS0dBXIAz+lA==", - "dependencies": { - "@sindresorhus/is": "^4.6.0", - "char-regex": "^1.0.2", - "emojilib": "^2.4.0", - "skin-tone": "^2.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/node-fetch": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.9.tgz", - "integrity": "sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==", - "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-forge": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", - "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", - "dev": true, - "engines": { - "node": ">= 6.13.0" - } - }, - "node_modules/node-gyp": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-8.4.1.tgz", - "integrity": "sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w==", - "optional": true, - "dependencies": { - "env-paths": "^2.2.0", - "glob": "^7.1.4", - "graceful-fs": "^4.2.6", - "make-fetch-happen": "^9.1.0", - "nopt": "^5.0.0", - "npmlog": "^6.0.0", - "rimraf": "^3.0.2", - "semver": "^7.3.5", - "tar": "^6.1.2", - "which": "^2.0.2" - }, - "bin": { - "node-gyp": "bin/node-gyp.js" - }, - "engines": { - "node": ">= 10.12.0" - } - }, - "node_modules/node-gyp/node_modules/are-we-there-yet": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz", - "integrity": "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==", - "optional": true, - "dependencies": { - "delegates": "^1.0.0", - "readable-stream": "^3.6.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/node-gyp/node_modules/gauge": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", - "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", - "optional": true, - "dependencies": { - "aproba": "^1.0.3 || ^2.0.0", - "color-support": "^1.1.3", - "console-control-strings": "^1.1.0", - "has-unicode": "^2.0.1", - "signal-exit": "^3.0.7", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "wide-align": "^1.1.5" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/node-gyp/node_modules/nopt": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", - "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", - "optional": true, - "dependencies": { - "abbrev": "1" - }, - "bin": { - "nopt": "bin/nopt.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/node-gyp/node_modules/npmlog": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", - "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", - "optional": true, - "dependencies": { - "are-we-there-yet": "^3.0.0", - "console-control-strings": "^1.1.0", - "gauge": "^4.0.3", - "set-blocking": "^2.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/node-gyp/node_modules/readable-stream": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.1.tgz", - "integrity": "sha512-+rQmrWMYGA90yenhTYsLWAsLsqVC8osOw6PKE1HDYiO0gdPeKe/xDHNzIAIn4C91YQ6oenEhfYqqc1883qHbjQ==", - "optional": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/node-gyp/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==", - "optional": true, - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/node-oauth1": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/node-oauth1/-/node-oauth1-1.3.0.tgz", - "integrity": "sha512-0yggixNfrA1KcBwvh/Hy2xAS1Wfs9dcg6TdFf2zN7gilcAigMdrtZ4ybrBSXBgLvGDw9V1p2MRnGBMq7XjTWLg==", - "dev": true - }, - "node_modules/node-preload": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/node-preload/-/node-preload-0.2.1.tgz", - "integrity": "sha512-RM5oyBy45cLEoHqCeh+MNuFAxO0vTFBLskvQbOKnEE7YTTSN4tbN8QWDIPQ6L+WvKsB/qLEGpYe2ZZ9d4W9OIQ==", - "dev": true, - "dependencies": { - "process-on-spawn": "^1.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/node-releases": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.10.tgz", - "integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==", - "dev": true - }, - "node_modules/nodemailer": { - "version": "6.9.8", - "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.9.8.tgz", - "integrity": "sha512-cfrYUk16e67Ks051i4CntM9kshRYei1/o/Gi8K1d+R34OIs21xdFnW7Pt7EucmVKA0LKtqUGNcjMZ7ehjl49mQ==", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/nodemailer-fetch": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/nodemailer-fetch/-/nodemailer-fetch-1.6.0.tgz", - "integrity": "sha512-P7S5CEVGAmDrrpn351aXOLYs1R/7fD5NamfMCHyi6WIkbjS2eeZUB/TkuvpOQr0bvRZicVqo59+8wbhR3yrJbQ==" - }, - "node_modules/nodemailer-shared": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/nodemailer-shared/-/nodemailer-shared-1.1.0.tgz", - "integrity": "sha512-68xW5LSyPWv8R0GLm6veAvm7E+XFXkVgvE3FW0FGxNMMZqMkPFeGDVALfR1DPdSfcoO36PnW7q5AAOgFImEZGg==", - "dependencies": { - "nodemailer-fetch": "1.6.0" - } - }, - "node_modules/nodemailer-smtp-transport": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/nodemailer-smtp-transport/-/nodemailer-smtp-transport-2.7.4.tgz", - "integrity": "sha512-1e86YhJ633OZWk3OHWS5TpuoYXG/LtY2/RzNiB5+EkFifDdqHCNHBnExd5cobx0ZSHJLNGM8EKnDuHRFIjFi6Q==", - "dependencies": { - "nodemailer-shared": "1.1.0", - "nodemailer-wellknown": "0.1.10", - "smtp-connection": "2.12.0" - } - }, - "node_modules/nodemailer-wellknown": { - "version": "0.1.10", - "resolved": "https://registry.npmjs.org/nodemailer-wellknown/-/nodemailer-wellknown-0.1.10.tgz", - "integrity": "sha512-/VV4mjAEjfm2fn0loUvrpjvugw5rgurNjPO4WU24CuVSoeumsyLOTgaEWG8WoGdPxh1biOAp5JxDoy1hlA2zsw==" - }, - "node_modules/nopt": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz", - "integrity": "sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==", - "dev": true, - "dependencies": { - "abbrev": "^1.0.0" - }, - "bin": { - "nopt": "bin/nopt.js" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/normalize-package-data": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.0.tgz", - "integrity": "sha512-UL7ELRVxYBHBgYEtZCXjxuD5vPxnmvMGq0jp/dGPKKrN7tfsBh2IY7TlJ15WWwdjRWD3RJbnsygUurTK3xkPkg==", - "dependencies": { - "hosted-git-info": "^7.0.0", - "is-core-module": "^2.8.1", - "semver": "^7.3.5", - "validate-npm-package-license": "^3.0.4" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "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/normalize-url": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.0.tgz", - "integrity": "sha512-uVFpKhj5MheNBJRTiMZ9pE/7hD1QTeEvugSJW/OmLzAp78PB5O6adfMNTvmfKhXBkvCzC+rqifWcVYpGFwTjnw==", - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/npm": { - "version": "10.2.5", - "resolved": "https://registry.npmjs.org/npm/-/npm-10.2.5.tgz", - "integrity": "sha512-lXdZ7titEN8CH5YJk9C/aYRU9JeDxQ4d8rwIIDsvH3SMjLjHTukB2CFstMiB30zXs4vCrPN2WH6cDq1yHBeJAw==", - "bundleDependencies": [ - "@isaacs/string-locale-compare", - "@npmcli/arborist", - "@npmcli/config", - "@npmcli/fs", - "@npmcli/map-workspaces", - "@npmcli/package-json", - "@npmcli/promise-spawn", - "@npmcli/run-script", - "@sigstore/tuf", - "abbrev", - "archy", - "cacache", - "chalk", - "ci-info", - "cli-columns", - "cli-table3", - "columnify", - "fastest-levenshtein", - "fs-minipass", - "glob", - "graceful-fs", - "hosted-git-info", - "ini", - "init-package-json", - "is-cidr", - "json-parse-even-better-errors", - "libnpmaccess", - "libnpmdiff", - "libnpmexec", - "libnpmfund", - "libnpmhook", - "libnpmorg", - "libnpmpack", - "libnpmpublish", - "libnpmsearch", - "libnpmteam", - "libnpmversion", - "make-fetch-happen", - "minimatch", - "minipass", - "minipass-pipeline", - "ms", - "node-gyp", - "nopt", - "normalize-package-data", - "npm-audit-report", - "npm-install-checks", - "npm-package-arg", - "npm-pick-manifest", - "npm-profile", - "npm-registry-fetch", - "npm-user-validate", - "npmlog", - "p-map", - "pacote", - "parse-conflict-json", - "proc-log", - "qrcode-terminal", - "read", - "semver", - "spdx-expression-parse", - "ssri", - "strip-ansi", - "supports-color", - "tar", - "text-table", - "tiny-relative-date", - "treeverse", - "validate-npm-package-name", - "which", - "write-file-atomic" - ], - "dependencies": { - "@isaacs/string-locale-compare": "^1.1.0", - "@npmcli/arborist": "^7.2.1", - "@npmcli/config": "^8.0.2", - "@npmcli/fs": "^3.1.0", - "@npmcli/map-workspaces": "^3.0.4", - "@npmcli/package-json": "^5.0.0", - "@npmcli/promise-spawn": "^7.0.0", - "@npmcli/run-script": "^7.0.2", - "@sigstore/tuf": "^2.2.0", - "abbrev": "^2.0.0", - "archy": "~1.0.0", - "cacache": "^18.0.1", - "chalk": "^5.3.0", - "ci-info": "^4.0.0", - "cli-columns": "^4.0.0", - "cli-table3": "^0.6.3", - "columnify": "^1.6.0", - "fastest-levenshtein": "^1.0.16", - "fs-minipass": "^3.0.3", - "glob": "^10.3.10", - "graceful-fs": "^4.2.11", - "hosted-git-info": "^7.0.1", - "ini": "^4.1.1", - "init-package-json": "^6.0.0", - "is-cidr": "^5.0.3", - "json-parse-even-better-errors": "^3.0.1", - "libnpmaccess": "^8.0.1", - "libnpmdiff": "^6.0.3", - "libnpmexec": "^7.0.4", - "libnpmfund": "^5.0.1", - "libnpmhook": "^10.0.0", - "libnpmorg": "^6.0.1", - "libnpmpack": "^6.0.3", - "libnpmpublish": "^9.0.2", - "libnpmsearch": "^7.0.0", - "libnpmteam": "^6.0.0", - "libnpmversion": "^5.0.1", - "make-fetch-happen": "^13.0.0", - "minimatch": "^9.0.3", - "minipass": "^7.0.4", - "minipass-pipeline": "^1.2.4", - "ms": "^2.1.2", - "node-gyp": "^10.0.1", - "nopt": "^7.2.0", - "normalize-package-data": "^6.0.0", - "npm-audit-report": "^5.0.0", - "npm-install-checks": "^6.3.0", - "npm-package-arg": "^11.0.1", - "npm-pick-manifest": "^9.0.0", - "npm-profile": "^9.0.0", - "npm-registry-fetch": "^16.1.0", - "npm-user-validate": "^2.0.0", - "npmlog": "^7.0.1", - "p-map": "^4.0.0", - "pacote": "^17.0.5", - "parse-conflict-json": "^3.0.1", - "proc-log": "^3.0.0", - "qrcode-terminal": "^0.12.0", - "read": "^2.1.0", - "semver": "^7.5.4", - "spdx-expression-parse": "^3.0.1", - "ssri": "^10.0.5", - "strip-ansi": "^7.1.0", - "supports-color": "^9.4.0", - "tar": "^6.2.0", - "text-table": "~0.2.0", - "tiny-relative-date": "^1.3.0", - "treeverse": "^3.0.0", - "validate-npm-package-name": "^5.0.0", - "which": "^4.0.0", - "write-file-atomic": "^5.0.1" - }, - "bin": { - "npm": "bin/npm-cli.js", - "npx": "bin/npx-cli.js" - }, - "engines": { - "node": "^18.17.0 || >=20.5.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==", - "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/@colors/colors": { - "version": "1.5.0", - "inBundle": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">=0.1.90" - } - }, - "node_modules/npm/node_modules/@isaacs/cliui": { - "version": "8.0.2", - "inBundle": true, - "license": "ISC", - "dependencies": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/npm/node_modules/@isaacs/cliui/node_modules/emoji-regex": { - "version": "9.2.2", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/@isaacs/cliui/node_modules/string-width": { - "version": "5.1.2", - "inBundle": true, - "license": "MIT", - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/npm/node_modules/@isaacs/string-locale-compare": { - "version": "1.1.0", - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/@npmcli/agent": { - "version": "2.2.0", - "inBundle": true, - "license": "ISC", - "dependencies": { - "agent-base": "^7.1.0", - "http-proxy-agent": "^7.0.0", - "https-proxy-agent": "^7.0.1", - "lru-cache": "^10.0.1", - "socks-proxy-agent": "^8.0.1" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/@npmcli/arborist": { - "version": "7.2.2", - "inBundle": true, - "license": "ISC", - "dependencies": { - "@isaacs/string-locale-compare": "^1.1.0", - "@npmcli/fs": "^3.1.0", - "@npmcli/installed-package-contents": "^2.0.2", - "@npmcli/map-workspaces": "^3.0.2", - "@npmcli/metavuln-calculator": "^7.0.0", - "@npmcli/name-from-folder": "^2.0.0", - "@npmcli/node-gyp": "^3.0.0", - "@npmcli/package-json": "^5.0.0", - "@npmcli/query": "^3.0.1", - "@npmcli/run-script": "^7.0.2", - "bin-links": "^4.0.1", - "cacache": "^18.0.0", - "common-ancestor-path": "^1.0.1", - "hosted-git-info": "^7.0.1", - "json-parse-even-better-errors": "^3.0.0", - "json-stringify-nice": "^1.1.4", - "minimatch": "^9.0.0", - "nopt": "^7.0.0", - "npm-install-checks": "^6.2.0", - "npm-package-arg": "^11.0.1", - "npm-pick-manifest": "^9.0.0", - "npm-registry-fetch": "^16.0.0", - "npmlog": "^7.0.1", - "pacote": "^17.0.4", - "parse-conflict-json": "^3.0.0", - "proc-log": "^3.0.0", - "promise-all-reject-late": "^1.0.0", - "promise-call-limit": "^1.0.2", - "read-package-json-fast": "^3.0.2", - "semver": "^7.3.7", - "ssri": "^10.0.5", - "treeverse": "^3.0.0", - "walk-up-path": "^3.0.1" - }, - "bin": { - "arborist": "bin/index.js" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/@npmcli/config": { - "version": "8.0.3", - "inBundle": true, - "license": "ISC", - "dependencies": { - "@npmcli/map-workspaces": "^3.0.2", - "ci-info": "^4.0.0", - "ini": "^4.1.0", - "nopt": "^7.0.0", - "proc-log": "^3.0.0", - "read-package-json-fast": "^3.0.2", - "semver": "^7.3.5", - "walk-up-path": "^3.0.1" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/@npmcli/disparity-colors": { - "version": "3.0.0", - "inBundle": true, - "license": "ISC", - "dependencies": { - "ansi-styles": "^4.3.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/@npmcli/disparity-colors/node_modules/ansi-styles": { - "version": "4.3.0", - "inBundle": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/npm/node_modules/@npmcli/fs": { - "version": "3.1.0", - "inBundle": true, - "license": "ISC", - "dependencies": { - "semver": "^7.3.5" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/@npmcli/git": { - "version": "5.0.3", - "inBundle": true, - "license": "ISC", - "dependencies": { - "@npmcli/promise-spawn": "^7.0.0", - "lru-cache": "^10.0.1", - "npm-pick-manifest": "^9.0.0", - "proc-log": "^3.0.0", - "promise-inflight": "^1.0.1", - "promise-retry": "^2.0.1", - "semver": "^7.3.5", - "which": "^4.0.0" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/@npmcli/installed-package-contents": { - "version": "2.0.2", - "inBundle": true, - "license": "ISC", - "dependencies": { - "npm-bundled": "^3.0.0", - "npm-normalize-package-bin": "^3.0.0" - }, - "bin": { - "installed-package-contents": "lib/index.js" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/@npmcli/map-workspaces": { - "version": "3.0.4", - "inBundle": true, - "license": "ISC", - "dependencies": { - "@npmcli/name-from-folder": "^2.0.0", - "glob": "^10.2.2", - "minimatch": "^9.0.0", - "read-package-json-fast": "^3.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/@npmcli/metavuln-calculator": { - "version": "7.0.0", - "inBundle": true, - "license": "ISC", - "dependencies": { - "cacache": "^18.0.0", - "json-parse-even-better-errors": "^3.0.0", - "pacote": "^17.0.0", - "semver": "^7.3.5" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/@npmcli/name-from-folder": { - "version": "2.0.0", - "inBundle": true, - "license": "ISC", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/@npmcli/node-gyp": { - "version": "3.0.0", - "inBundle": true, - "license": "ISC", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/@npmcli/package-json": { - "version": "5.0.0", - "inBundle": true, - "license": "ISC", - "dependencies": { - "@npmcli/git": "^5.0.0", - "glob": "^10.2.2", - "hosted-git-info": "^7.0.0", - "json-parse-even-better-errors": "^3.0.0", - "normalize-package-data": "^6.0.0", - "proc-log": "^3.0.0", - "semver": "^7.5.3" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/@npmcli/promise-spawn": { - "version": "7.0.0", - "inBundle": true, - "license": "ISC", - "dependencies": { - "which": "^4.0.0" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/@npmcli/query": { - "version": "3.0.1", - "inBundle": true, - "license": "ISC", - "dependencies": { - "postcss-selector-parser": "^6.0.10" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/@npmcli/run-script": { - "version": "7.0.2", - "inBundle": true, - "license": "ISC", - "dependencies": { - "@npmcli/node-gyp": "^3.0.0", - "@npmcli/promise-spawn": "^7.0.0", - "node-gyp": "^10.0.0", - "read-package-json-fast": "^3.0.0", - "which": "^4.0.0" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/@pkgjs/parseargs": { - "version": "0.11.0", - "inBundle": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">=14" - } - }, - "node_modules/npm/node_modules/@sigstore/bundle": { - "version": "2.1.0", - "inBundle": true, - "license": "Apache-2.0", - "dependencies": { - "@sigstore/protobuf-specs": "^0.2.1" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/@sigstore/protobuf-specs": { - "version": "0.2.1", - "inBundle": true, - "license": "Apache-2.0", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/@sigstore/sign": { - "version": "2.2.0", - "inBundle": true, - "license": "Apache-2.0", - "dependencies": { - "@sigstore/bundle": "^2.1.0", - "@sigstore/protobuf-specs": "^0.2.1", - "make-fetch-happen": "^13.0.0" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/@sigstore/tuf": { - "version": "2.2.0", - "inBundle": true, - "license": "Apache-2.0", - "dependencies": { - "@sigstore/protobuf-specs": "^0.2.1", - "tuf-js": "^2.1.0" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/@tufjs/canonical-json": { - "version": "2.0.0", - "inBundle": true, - "license": "MIT", - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/@tufjs/models": { - "version": "2.0.0", - "inBundle": true, - "license": "MIT", - "dependencies": { - "@tufjs/canonical-json": "2.0.0", - "minimatch": "^9.0.3" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/abbrev": { - "version": "2.0.0", - "inBundle": true, - "license": "ISC", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/abort-controller": { - "version": "3.0.0", - "inBundle": true, - "license": "MIT", - "dependencies": { - "event-target-shim": "^5.0.0" - }, - "engines": { - "node": ">=6.5" - } - }, - "node_modules/npm/node_modules/agent-base": { - "version": "7.1.0", - "inBundle": true, - "license": "MIT", - "dependencies": { - "debug": "^4.3.4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/npm/node_modules/aggregate-error": { - "version": "3.1.0", - "inBundle": true, - "license": "MIT", - "dependencies": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/ansi-regex": { - "version": "6.0.1", - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/npm/node_modules/ansi-styles": { - "version": "6.2.1", - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/npm/node_modules/aproba": { - "version": "2.0.0", - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/archy": { - "version": "1.0.0", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/are-we-there-yet": { - "version": "4.0.1", - "inBundle": true, - "license": "ISC", - "dependencies": { - "delegates": "^1.0.0", - "readable-stream": "^4.1.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/balanced-match": { - "version": "1.0.2", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/base64-js": { - "version": "1.5.1", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/bin-links": { - "version": "4.0.3", - "inBundle": true, - "license": "ISC", - "dependencies": { - "cmd-shim": "^6.0.0", - "npm-normalize-package-bin": "^3.0.0", - "read-cmd-shim": "^4.0.0", - "write-file-atomic": "^5.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/binary-extensions": { - "version": "2.2.0", - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/brace-expansion": { - "version": "2.0.1", - "inBundle": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/npm/node_modules/buffer": { - "version": "6.0.3", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "inBundle": true, - "license": "MIT", - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "node_modules/npm/node_modules/builtins": { - "version": "5.0.1", - "inBundle": true, - "license": "MIT", - "dependencies": { - "semver": "^7.0.0" - } - }, - "node_modules/npm/node_modules/cacache": { - "version": "18.0.1", - "inBundle": true, - "license": "ISC", - "dependencies": { - "@npmcli/fs": "^3.1.0", - "fs-minipass": "^3.0.0", - "glob": "^10.2.2", - "lru-cache": "^10.0.1", - "minipass": "^7.0.3", - "minipass-collect": "^2.0.1", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "p-map": "^4.0.0", - "ssri": "^10.0.0", - "tar": "^6.1.11", - "unique-filename": "^3.0.0" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/chalk": { - "version": "5.3.0", - "inBundle": true, - "license": "MIT", - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/npm/node_modules/chownr": { - "version": "2.0.0", - "inBundle": true, - "license": "ISC", - "engines": { - "node": ">=10" - } - }, - "node_modules/npm/node_modules/ci-info": { - "version": "4.0.0", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/cidr-regex": { - "version": "4.0.3", - "inBundle": true, - "license": "BSD-2-Clause", - "dependencies": { - "ip-regex": "^5.0.0" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/npm/node_modules/clean-stack": { - "version": "2.2.0", - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/npm/node_modules/cli-columns": { - "version": "4.0.0", - "inBundle": true, - "license": "MIT", - "dependencies": { - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/npm/node_modules/cli-columns/node_modules/ansi-regex": { - "version": "5.0.1", - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/cli-columns/node_modules/strip-ansi": { - "version": "6.0.1", - "inBundle": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/cli-table3": { - "version": "0.6.3", - "inBundle": true, - "license": "MIT", - "dependencies": { - "string-width": "^4.2.0" - }, - "engines": { - "node": "10.* || >= 12.*" - }, - "optionalDependencies": { - "@colors/colors": "1.5.0" - } - }, - "node_modules/npm/node_modules/clone": { - "version": "1.0.4", - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=0.8" - } - }, - "node_modules/npm/node_modules/cmd-shim": { - "version": "6.0.2", - "inBundle": true, - "license": "ISC", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/color-convert": { - "version": "2.0.1", - "inBundle": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/npm/node_modules/color-name": { - "version": "1.1.4", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/color-support": { - "version": "1.1.3", - "inBundle": true, - "license": "ISC", - "bin": { - "color-support": "bin.js" - } - }, - "node_modules/npm/node_modules/columnify": { - "version": "1.6.0", - "inBundle": true, - "license": "MIT", - "dependencies": { - "strip-ansi": "^6.0.1", - "wcwidth": "^1.0.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/npm/node_modules/columnify/node_modules/ansi-regex": { - "version": "5.0.1", - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/columnify/node_modules/strip-ansi": { - "version": "6.0.1", - "inBundle": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/common-ancestor-path": { - "version": "1.0.1", - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/console-control-strings": { - "version": "1.1.0", - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/cross-spawn": { - "version": "7.0.3", - "inBundle": true, - "license": "MIT", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/npm/node_modules/cross-spawn/node_modules/which": { - "version": "2.0.2", - "inBundle": true, - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/npm/node_modules/cssesc": { - "version": "3.0.0", - "inBundle": true, - "license": "MIT", - "bin": { - "cssesc": "bin/cssesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/npm/node_modules/debug": { - "version": "4.3.4", - "inBundle": true, - "license": "MIT", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/npm/node_modules/debug/node_modules/ms": { - "version": "2.1.2", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/defaults": { - "version": "1.0.4", - "inBundle": true, - "license": "MIT", - "dependencies": { - "clone": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/npm/node_modules/delegates": { - "version": "1.0.0", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/diff": { - "version": "5.1.0", - "inBundle": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/npm/node_modules/eastasianwidth": { - "version": "0.2.0", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/emoji-regex": { - "version": "8.0.0", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/encoding": { - "version": "0.1.13", - "inBundle": true, - "license": "MIT", - "optional": true, - "dependencies": { - "iconv-lite": "^0.6.2" - } - }, - "node_modules/npm/node_modules/env-paths": { - "version": "2.2.1", - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/npm/node_modules/err-code": { - "version": "2.0.3", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/event-target-shim": { - "version": "5.0.1", - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/npm/node_modules/events": { - "version": "3.3.0", - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=0.8.x" - } - }, - "node_modules/npm/node_modules/exponential-backoff": { - "version": "3.1.1", - "inBundle": true, - "license": "Apache-2.0" - }, - "node_modules/npm/node_modules/fastest-levenshtein": { - "version": "1.0.16", - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">= 4.9.1" - } - }, - "node_modules/npm/node_modules/foreground-child": { - "version": "3.1.1", - "inBundle": true, - "license": "ISC", - "dependencies": { - "cross-spawn": "^7.0.0", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/npm/node_modules/fs-minipass": { - "version": "3.0.3", - "inBundle": true, - "license": "ISC", - "dependencies": { - "minipass": "^7.0.3" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/function-bind": { - "version": "1.1.2", - "inBundle": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/npm/node_modules/gauge": { - "version": "5.0.1", - "inBundle": true, - "license": "ISC", - "dependencies": { - "aproba": "^1.0.3 || ^2.0.0", - "color-support": "^1.1.3", - "console-control-strings": "^1.1.0", - "has-unicode": "^2.0.1", - "signal-exit": "^4.0.1", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "wide-align": "^1.1.5" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/gauge/node_modules/ansi-regex": { - "version": "5.0.1", - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/gauge/node_modules/strip-ansi": { - "version": "6.0.1", - "inBundle": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/glob": { - "version": "10.3.10", - "inBundle": true, - "license": "ISC", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.3.5", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/npm/node_modules/graceful-fs": { - "version": "4.2.11", - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/has-unicode": { - "version": "2.0.1", - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/hasown": { - "version": "2.0.0", - "inBundle": true, - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/npm/node_modules/hosted-git-info": { - "version": "7.0.1", - "inBundle": true, - "license": "ISC", - "dependencies": { - "lru-cache": "^10.0.1" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/http-cache-semantics": { - "version": "4.1.1", - "inBundle": true, - "license": "BSD-2-Clause" - }, - "node_modules/npm/node_modules/http-proxy-agent": { - "version": "7.0.0", - "inBundle": true, - "license": "MIT", - "dependencies": { - "agent-base": "^7.1.0", - "debug": "^4.3.4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/npm/node_modules/https-proxy-agent": { - "version": "7.0.2", - "inBundle": true, - "license": "MIT", - "dependencies": { - "agent-base": "^7.0.2", - "debug": "4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/npm/node_modules/iconv-lite": { - "version": "0.6.3", - "inBundle": true, - "license": "MIT", - "optional": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/npm/node_modules/ieee754": { - "version": "1.2.1", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "inBundle": true, - "license": "BSD-3-Clause" - }, - "node_modules/npm/node_modules/ignore-walk": { - "version": "6.0.4", - "inBundle": true, - "license": "ISC", - "dependencies": { - "minimatch": "^9.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/imurmurhash": { - "version": "0.1.4", - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/npm/node_modules/indent-string": { - "version": "4.0.0", - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/ini": { - "version": "4.1.1", - "inBundle": true, - "license": "ISC", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/init-package-json": { - "version": "6.0.0", - "inBundle": true, - "license": "ISC", - "dependencies": { - "npm-package-arg": "^11.0.0", - "promzard": "^1.0.0", - "read": "^2.0.0", - "read-package-json": "^7.0.0", - "semver": "^7.3.5", - "validate-npm-package-license": "^3.0.4", - "validate-npm-package-name": "^5.0.0" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/ip": { - "version": "2.0.0", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/ip-regex": { - "version": "5.0.0", - "inBundle": true, - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/npm/node_modules/is-cidr": { - "version": "5.0.3", - "inBundle": true, - "license": "BSD-2-Clause", - "dependencies": { - "cidr-regex": "4.0.3" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/npm/node_modules/is-core-module": { - "version": "2.13.1", - "inBundle": true, - "license": "MIT", - "dependencies": { - "hasown": "^2.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/npm/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/is-lambda": { - "version": "1.0.1", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/isexe": { - "version": "2.0.0", - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/jackspeak": { - "version": "2.3.6", - "inBundle": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" - } - }, - "node_modules/npm/node_modules/json-parse-even-better-errors": { - "version": "3.0.1", - "inBundle": true, - "license": "MIT", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/json-stringify-nice": { - "version": "1.1.4", - "inBundle": true, - "license": "ISC", - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/npm/node_modules/jsonparse": { - "version": "1.3.1", - "engines": [ - "node >= 0.2.0" - ], - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/just-diff": { - "version": "6.0.2", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/just-diff-apply": { - "version": "5.5.0", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/libnpmaccess": { - "version": "8.0.2", - "inBundle": true, - "license": "ISC", - "dependencies": { - "npm-package-arg": "^11.0.1", - "npm-registry-fetch": "^16.0.0" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/libnpmdiff": { - "version": "6.0.4", - "inBundle": true, - "license": "ISC", - "dependencies": { - "@npmcli/arborist": "^7.2.1", - "@npmcli/disparity-colors": "^3.0.0", - "@npmcli/installed-package-contents": "^2.0.2", - "binary-extensions": "^2.2.0", - "diff": "^5.1.0", - "minimatch": "^9.0.0", - "npm-package-arg": "^11.0.1", - "pacote": "^17.0.4", - "tar": "^6.2.0" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/libnpmexec": { - "version": "7.0.5", - "inBundle": true, - "license": "ISC", - "dependencies": { - "@npmcli/arborist": "^7.2.1", - "@npmcli/run-script": "^7.0.2", - "ci-info": "^4.0.0", - "npm-package-arg": "^11.0.1", - "npmlog": "^7.0.1", - "pacote": "^17.0.4", - "proc-log": "^3.0.0", - "read": "^2.0.0", - "read-package-json-fast": "^3.0.2", - "semver": "^7.3.7", - "walk-up-path": "^3.0.1" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/libnpmfund": { - "version": "5.0.2", - "inBundle": true, - "license": "ISC", - "dependencies": { - "@npmcli/arborist": "^7.2.1" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/libnpmhook": { - "version": "10.0.1", - "inBundle": true, - "license": "ISC", - "dependencies": { - "aproba": "^2.0.0", - "npm-registry-fetch": "^16.0.0" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/libnpmorg": { - "version": "6.0.2", - "inBundle": true, - "license": "ISC", - "dependencies": { - "aproba": "^2.0.0", - "npm-registry-fetch": "^16.0.0" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/libnpmpack": { - "version": "6.0.4", - "inBundle": true, - "license": "ISC", - "dependencies": { - "@npmcli/arborist": "^7.2.1", - "@npmcli/run-script": "^7.0.2", - "npm-package-arg": "^11.0.1", - "pacote": "^17.0.4" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/libnpmpublish": { - "version": "9.0.3", - "inBundle": true, - "license": "ISC", - "dependencies": { - "ci-info": "^4.0.0", - "normalize-package-data": "^6.0.0", - "npm-package-arg": "^11.0.1", - "npm-registry-fetch": "^16.0.0", - "proc-log": "^3.0.0", - "semver": "^7.3.7", - "sigstore": "^2.1.0", - "ssri": "^10.0.5" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/libnpmsearch": { - "version": "7.0.1", - "inBundle": true, - "license": "ISC", - "dependencies": { - "npm-registry-fetch": "^16.0.0" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/libnpmteam": { - "version": "6.0.1", - "inBundle": true, - "license": "ISC", - "dependencies": { - "aproba": "^2.0.0", - "npm-registry-fetch": "^16.0.0" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/libnpmversion": { - "version": "5.0.2", - "inBundle": true, - "license": "ISC", - "dependencies": { - "@npmcli/git": "^5.0.3", - "@npmcli/run-script": "^7.0.2", - "json-parse-even-better-errors": "^3.0.0", - "proc-log": "^3.0.0", - "semver": "^7.3.7" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/lru-cache": { - "version": "10.1.0", - "inBundle": true, - "license": "ISC", - "engines": { - "node": "14 || >=16.14" - } - }, - "node_modules/npm/node_modules/make-fetch-happen": { - "version": "13.0.0", - "inBundle": true, - "license": "ISC", - "dependencies": { - "@npmcli/agent": "^2.0.0", - "cacache": "^18.0.0", - "http-cache-semantics": "^4.1.1", - "is-lambda": "^1.0.1", - "minipass": "^7.0.2", - "minipass-fetch": "^3.0.0", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.3", - "promise-retry": "^2.0.1", - "ssri": "^10.0.0" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/minimatch": { - "version": "9.0.3", - "inBundle": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/npm/node_modules/minipass": { - "version": "7.0.4", - "inBundle": true, - "license": "ISC", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/npm/node_modules/minipass-collect": { - "version": "2.0.1", - "inBundle": true, - "license": "ISC", - "dependencies": { - "minipass": "^7.0.3" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/npm/node_modules/minipass-fetch": { - "version": "3.0.4", - "inBundle": true, - "license": "MIT", - "dependencies": { - "minipass": "^7.0.3", - "minipass-sized": "^1.0.3", - "minizlib": "^2.1.2" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - }, - "optionalDependencies": { - "encoding": "^0.1.13" - } - }, - "node_modules/npm/node_modules/minipass-flush": { - "version": "1.0.5", - "inBundle": true, - "license": "ISC", - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/npm/node_modules/minipass-flush/node_modules/minipass": { - "version": "3.3.6", - "inBundle": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/minipass-json-stream": { - "version": "1.0.1", - "inBundle": true, - "license": "MIT", - "dependencies": { - "jsonparse": "^1.3.1", - "minipass": "^3.0.0" - } - }, - "node_modules/npm/node_modules/minipass-json-stream/node_modules/minipass": { - "version": "3.3.6", - "inBundle": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/minipass-pipeline": { - "version": "1.2.4", - "inBundle": true, - "license": "ISC", - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/minipass-pipeline/node_modules/minipass": { - "version": "3.3.6", - "inBundle": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/minipass-sized": { - "version": "1.0.3", - "inBundle": true, - "license": "ISC", - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/minipass-sized/node_modules/minipass": { - "version": "3.3.6", - "inBundle": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/minizlib": { - "version": "2.1.2", - "inBundle": true, - "license": "MIT", - "dependencies": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/npm/node_modules/minizlib/node_modules/minipass": { - "version": "3.3.6", - "inBundle": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/mkdirp": { - "version": "1.0.4", - "inBundle": true, - "license": "MIT", - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/npm/node_modules/ms": { - "version": "2.1.3", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/mute-stream": { - "version": "1.0.0", - "inBundle": true, - "license": "ISC", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/negotiator": { - "version": "0.6.3", - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/npm/node_modules/node-gyp": { - "version": "10.0.1", - "inBundle": true, - "license": "MIT", - "dependencies": { - "env-paths": "^2.2.0", - "exponential-backoff": "^3.1.1", - "glob": "^10.3.10", - "graceful-fs": "^4.2.6", - "make-fetch-happen": "^13.0.0", - "nopt": "^7.0.0", - "proc-log": "^3.0.0", - "semver": "^7.3.5", - "tar": "^6.1.2", - "which": "^4.0.0" - }, - "bin": { - "node-gyp": "bin/node-gyp.js" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/nopt": { - "version": "7.2.0", - "inBundle": true, - "license": "ISC", - "dependencies": { - "abbrev": "^2.0.0" - }, - "bin": { - "nopt": "bin/nopt.js" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/normalize-package-data": { - "version": "6.0.0", - "inBundle": true, - "license": "BSD-2-Clause", - "dependencies": { - "hosted-git-info": "^7.0.0", - "is-core-module": "^2.8.1", - "semver": "^7.3.5", - "validate-npm-package-license": "^3.0.4" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/npm-audit-report": { - "version": "5.0.0", - "inBundle": true, - "license": "ISC", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/npm-bundled": { - "version": "3.0.0", - "inBundle": true, - "license": "ISC", - "dependencies": { - "npm-normalize-package-bin": "^3.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/npm-install-checks": { - "version": "6.3.0", - "inBundle": true, - "license": "BSD-2-Clause", - "dependencies": { - "semver": "^7.1.1" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/npm-normalize-package-bin": { - "version": "3.0.1", - "inBundle": true, - "license": "ISC", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/npm-package-arg": { - "version": "11.0.1", - "inBundle": true, - "license": "ISC", - "dependencies": { - "hosted-git-info": "^7.0.0", - "proc-log": "^3.0.0", - "semver": "^7.3.5", - "validate-npm-package-name": "^5.0.0" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/npm-packlist": { - "version": "8.0.1", - "inBundle": true, - "license": "ISC", - "dependencies": { - "ignore-walk": "^6.0.4" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/npm-pick-manifest": { - "version": "9.0.0", - "inBundle": true, - "license": "ISC", - "dependencies": { - "npm-install-checks": "^6.0.0", - "npm-normalize-package-bin": "^3.0.0", - "npm-package-arg": "^11.0.0", - "semver": "^7.3.5" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/npm-profile": { - "version": "9.0.0", - "inBundle": true, - "license": "ISC", - "dependencies": { - "npm-registry-fetch": "^16.0.0", - "proc-log": "^3.0.0" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/npm-registry-fetch": { - "version": "16.1.0", - "inBundle": true, - "license": "ISC", - "dependencies": { - "make-fetch-happen": "^13.0.0", - "minipass": "^7.0.2", - "minipass-fetch": "^3.0.0", - "minipass-json-stream": "^1.0.1", - "minizlib": "^2.1.2", - "npm-package-arg": "^11.0.0", - "proc-log": "^3.0.0" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/npm-user-validate": { - "version": "2.0.0", - "inBundle": true, - "license": "BSD-2-Clause", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/npmlog": { - "version": "7.0.1", - "inBundle": true, - "license": "ISC", - "dependencies": { - "are-we-there-yet": "^4.0.0", - "console-control-strings": "^1.1.0", - "gauge": "^5.0.0", - "set-blocking": "^2.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/p-map": { - "version": "4.0.0", - "inBundle": true, - "license": "MIT", - "dependencies": { - "aggregate-error": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/npm/node_modules/pacote": { - "version": "17.0.5", - "inBundle": true, - "license": "ISC", - "dependencies": { - "@npmcli/git": "^5.0.0", - "@npmcli/installed-package-contents": "^2.0.1", - "@npmcli/promise-spawn": "^7.0.0", - "@npmcli/run-script": "^7.0.0", - "cacache": "^18.0.0", - "fs-minipass": "^3.0.0", - "minipass": "^7.0.2", - "npm-package-arg": "^11.0.0", - "npm-packlist": "^8.0.0", - "npm-pick-manifest": "^9.0.0", - "npm-registry-fetch": "^16.0.0", - "proc-log": "^3.0.0", - "promise-retry": "^2.0.1", - "read-package-json": "^7.0.0", - "read-package-json-fast": "^3.0.0", - "sigstore": "^2.0.0", - "ssri": "^10.0.0", - "tar": "^6.1.11" - }, - "bin": { - "pacote": "lib/bin.js" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/parse-conflict-json": { - "version": "3.0.1", - "inBundle": true, - "license": "ISC", - "dependencies": { - "json-parse-even-better-errors": "^3.0.0", - "just-diff": "^6.0.0", - "just-diff-apply": "^5.2.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/path-key": { - "version": "3.1.1", - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/path-scurry": { - "version": "1.10.1", - "inBundle": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "lru-cache": "^9.1.1 || ^10.0.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/npm/node_modules/postcss-selector-parser": { - "version": "6.0.13", - "inBundle": true, - "license": "MIT", - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/npm/node_modules/proc-log": { - "version": "3.0.0", - "inBundle": true, - "license": "ISC", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/process": { - "version": "0.11.10", - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">= 0.6.0" - } - }, - "node_modules/npm/node_modules/promise-all-reject-late": { - "version": "1.0.1", - "inBundle": true, - "license": "ISC", - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/npm/node_modules/promise-call-limit": { - "version": "1.0.2", - "inBundle": true, - "license": "ISC", - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/npm/node_modules/promise-inflight": { - "version": "1.0.1", - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/promise-retry": { - "version": "2.0.1", - "inBundle": true, - "license": "MIT", - "dependencies": { - "err-code": "^2.0.2", - "retry": "^0.12.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/npm/node_modules/promzard": { - "version": "1.0.0", - "inBundle": true, - "license": "ISC", - "dependencies": { - "read": "^2.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/qrcode-terminal": { - "version": "0.12.0", - "inBundle": true, - "bin": { - "qrcode-terminal": "bin/qrcode-terminal.js" - } - }, - "node_modules/npm/node_modules/read": { - "version": "2.1.0", - "inBundle": true, - "license": "ISC", - "dependencies": { - "mute-stream": "~1.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/read-cmd-shim": { - "version": "4.0.0", - "inBundle": true, - "license": "ISC", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/read-package-json": { - "version": "7.0.0", - "inBundle": true, - "license": "ISC", - "dependencies": { - "glob": "^10.2.2", - "json-parse-even-better-errors": "^3.0.0", - "normalize-package-data": "^6.0.0", - "npm-normalize-package-bin": "^3.0.0" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/read-package-json-fast": { - "version": "3.0.2", - "inBundle": true, - "license": "ISC", - "dependencies": { - "json-parse-even-better-errors": "^3.0.0", - "npm-normalize-package-bin": "^3.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/readable-stream": { - "version": "4.4.2", - "inBundle": true, - "license": "MIT", - "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/npm/node_modules/retry": { - "version": "0.12.0", - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/npm/node_modules/safe-buffer": { - "version": "5.2.1", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/safer-buffer": { - "version": "2.1.2", - "inBundle": true, - "license": "MIT", - "optional": true - }, - "node_modules/npm/node_modules/semver": { - "version": "7.5.4", - "inBundle": true, - "license": "ISC", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/npm/node_modules/semver/node_modules/lru-cache": { - "version": "6.0.0", - "inBundle": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/npm/node_modules/set-blocking": { - "version": "2.0.0", - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/shebang-command": { - "version": "2.0.0", - "inBundle": true, - "license": "MIT", - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/shebang-regex": { - "version": "3.0.0", - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/signal-exit": { - "version": "4.1.0", - "inBundle": true, - "license": "ISC", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/npm/node_modules/sigstore": { - "version": "2.1.0", - "inBundle": true, - "license": "Apache-2.0", - "dependencies": { - "@sigstore/bundle": "^2.1.0", - "@sigstore/protobuf-specs": "^0.2.1", - "@sigstore/sign": "^2.1.0", - "@sigstore/tuf": "^2.1.0" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/smart-buffer": { - "version": "4.2.0", - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">= 6.0.0", - "npm": ">= 3.0.0" - } - }, - "node_modules/npm/node_modules/socks": { - "version": "2.7.1", - "inBundle": true, - "license": "MIT", - "dependencies": { - "ip": "^2.0.0", - "smart-buffer": "^4.2.0" - }, - "engines": { - "node": ">= 10.13.0", - "npm": ">= 3.0.0" - } - }, - "node_modules/npm/node_modules/socks-proxy-agent": { - "version": "8.0.2", - "inBundle": true, - "license": "MIT", - "dependencies": { - "agent-base": "^7.0.2", - "debug": "^4.3.4", - "socks": "^2.7.1" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/npm/node_modules/spdx-correct": { - "version": "3.2.0", - "inBundle": true, - "license": "Apache-2.0", - "dependencies": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/npm/node_modules/spdx-exceptions": { - "version": "2.3.0", - "inBundle": true, - "license": "CC-BY-3.0" - }, - "node_modules/npm/node_modules/spdx-expression-parse": { - "version": "3.0.1", - "inBundle": true, - "license": "MIT", - "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/npm/node_modules/spdx-license-ids": { - "version": "3.0.16", - "inBundle": true, - "license": "CC0-1.0" - }, - "node_modules/npm/node_modules/ssri": { - "version": "10.0.5", - "inBundle": true, - "license": "ISC", - "dependencies": { - "minipass": "^7.0.3" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/string_decoder": { - "version": "1.3.0", - "inBundle": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/npm/node_modules/string-width": { - "version": "4.2.3", - "inBundle": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/string-width-cjs": { - "name": "string-width", - "version": "4.2.3", - "inBundle": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/string-width-cjs/node_modules/ansi-regex": { - "version": "5.0.1", - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/string-width-cjs/node_modules/strip-ansi": { - "version": "6.0.1", - "inBundle": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/string-width/node_modules/ansi-regex": { - "version": "5.0.1", - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/string-width/node_modules/strip-ansi": { - "version": "6.0.1", - "inBundle": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/strip-ansi": { - "version": "7.1.0", - "inBundle": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/npm/node_modules/strip-ansi-cjs": { - "name": "strip-ansi", - "version": "6.0.1", - "inBundle": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/strip-ansi-cjs/node_modules/ansi-regex": { - "version": "5.0.1", - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/supports-color": { - "version": "9.4.0", - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/npm/node_modules/tar": { - "version": "6.2.0", - "inBundle": true, - "license": "ISC", - "dependencies": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^5.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/npm/node_modules/tar/node_modules/fs-minipass": { - "version": "2.1.0", - "inBundle": true, - "license": "ISC", - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/npm/node_modules/tar/node_modules/fs-minipass/node_modules/minipass": { - "version": "3.3.6", - "inBundle": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/tar/node_modules/minipass": { - "version": "5.0.0", - "inBundle": true, - "license": "ISC", - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/text-table": { - "version": "0.2.0", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/tiny-relative-date": { - "version": "1.3.0", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/treeverse": { - "version": "3.0.0", - "inBundle": true, - "license": "ISC", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/tuf-js": { - "version": "2.1.0", - "inBundle": true, - "license": "MIT", - "dependencies": { - "@tufjs/models": "2.0.0", - "debug": "^4.3.4", - "make-fetch-happen": "^13.0.0" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/unique-filename": { - "version": "3.0.0", - "inBundle": true, - "license": "ISC", - "dependencies": { - "unique-slug": "^4.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/unique-slug": { - "version": "4.0.0", - "inBundle": true, - "license": "ISC", - "dependencies": { - "imurmurhash": "^0.1.4" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/util-deprecate": { - "version": "1.0.2", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/validate-npm-package-license": { - "version": "3.0.4", - "inBundle": true, - "license": "Apache-2.0", - "dependencies": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "node_modules/npm/node_modules/validate-npm-package-name": { - "version": "5.0.0", - "inBundle": true, - "license": "ISC", - "dependencies": { - "builtins": "^5.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/walk-up-path": { - "version": "3.0.1", - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/wcwidth": { - "version": "1.0.1", - "inBundle": true, - "license": "MIT", - "dependencies": { - "defaults": "^1.0.3" - } - }, - "node_modules/npm/node_modules/which": { - "version": "4.0.0", - "inBundle": true, - "license": "ISC", - "dependencies": { - "isexe": "^3.1.1" - }, - "bin": { - "node-which": "bin/which.js" - }, - "engines": { - "node": "^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/which/node_modules/isexe": { - "version": "3.1.1", - "inBundle": true, - "license": "ISC", - "engines": { - "node": ">=16" - } - }, - "node_modules/npm/node_modules/wide-align": { - "version": "1.1.5", - "inBundle": true, - "license": "ISC", - "dependencies": { - "string-width": "^1.0.2 || 2 || 3 || 4" - } - }, - "node_modules/npm/node_modules/wrap-ansi": { - "version": "8.1.0", - "inBundle": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/npm/node_modules/wrap-ansi-cjs": { - "name": "wrap-ansi", - "version": "7.0.0", - "inBundle": true, - "license": "MIT", - "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/npm/node_modules/wrap-ansi-cjs/node_modules/ansi-regex": { - "version": "5.0.1", - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { - "version": "4.3.0", - "inBundle": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/npm/node_modules/wrap-ansi-cjs/node_modules/strip-ansi": { - "version": "6.0.1", - "inBundle": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/wrap-ansi/node_modules/emoji-regex": { - "version": "9.2.2", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/wrap-ansi/node_modules/string-width": { - "version": "5.1.2", - "inBundle": true, - "license": "MIT", - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/npm/node_modules/write-file-atomic": { - "version": "5.0.1", - "inBundle": true, - "license": "ISC", - "dependencies": { - "imurmurhash": "^0.1.4", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/yallist": { - "version": "4.0.0", - "inBundle": true, - "license": "ISC" - }, - "node_modules/npmlog": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz", - "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==", - "dependencies": { - "are-we-there-yet": "^2.0.0", - "console-control-strings": "^1.1.0", - "gauge": "^3.0.0", - "set-blocking": "^2.0.0" - } - }, - "node_modules/nyc": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/nyc/-/nyc-15.1.0.tgz", - "integrity": "sha512-jMW04n9SxKdKi1ZMGhvUTHBN0EICCRkHemEoE5jm6mTYcqcdas0ATzgUgejlQUHMvpnOZqGB5Xxsv9KxJW1j8A==", - "dev": true, - "dependencies": { - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "caching-transform": "^4.0.0", - "convert-source-map": "^1.7.0", - "decamelize": "^1.2.0", - "find-cache-dir": "^3.2.0", - "find-up": "^4.1.0", - "foreground-child": "^2.0.0", - "get-package-type": "^0.1.0", - "glob": "^7.1.6", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-hook": "^3.0.0", - "istanbul-lib-instrument": "^4.0.0", - "istanbul-lib-processinfo": "^2.0.2", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.0.2", - "make-dir": "^3.0.0", - "node-preload": "^0.2.1", - "p-map": "^3.0.0", - "process-on-spawn": "^1.0.0", - "resolve-from": "^5.0.0", - "rimraf": "^3.0.0", - "signal-exit": "^3.0.2", - "spawn-wrap": "^2.0.0", - "test-exclude": "^6.0.0", - "yargs": "^15.0.2" - }, - "bin": { - "nyc": "bin/nyc.js" - }, - "engines": { - "node": ">=8.9" - } - }, - "node_modules/nyc/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/nyc/node_modules/cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" - } - }, - "node_modules/nyc/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/nyc/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/nyc/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/nyc/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/nyc/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/nyc/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/nyc/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/nyc/node_modules/wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/nyc/node_modules/y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "dev": true - }, - "node_modules/nyc/node_modules/yargs": { - "version": "15.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", - "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", - "dev": true, - "dependencies": { - "cliui": "^6.0.0", - "decamelize": "^1.2.0", - "find-up": "^4.1.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^4.2.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^18.1.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/nyc/node_modules/yargs-parser": { - "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", - "dev": true, - "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", - "engines": { - "node": "*" - } - }, - "node_modules/object-assign": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.0.1.tgz", - "integrity": "sha512-c6legOHWepAbWnp3j5SRUMpxCXBKI4rD7A5Osn9IzZ8w4O/KccXdW0lqdkQKbpk0eHGjNgKihgzY6WuEq99Tfw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-hash": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-1.3.1.tgz", - "integrity": "sha512-OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA==", - "dev": true, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/object-inspect": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", - "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.assign": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", - "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.5", - "define-properties": "^1.2.1", - "has-symbols": "^1.0.3", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.entries": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.7.tgz", - "integrity": "sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.fromentries": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.7.tgz", - "integrity": "sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.groupby": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.1.tgz", - "integrity": "sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1" - } - }, - "node_modules/object.hasown": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.3.tgz", - "integrity": "sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA==", - "dev": true, - "dependencies": { - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.values": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.7.tgz", - "integrity": "sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/on-error": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/on-error/-/on-error-2.1.0.tgz", - "integrity": "sha512-wpKXxCW2wXLI+9DB9DDBVuOCN9C5rjyaP4GWwqhgrSd2ys1Vyc9yGaPmC5HSOdQ30x9zCLozi9mHx3lm01E+LQ==" - }, - "node_modules/on-exit-leak-free": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/on-exit-leak-free/-/on-exit-leak-free-2.1.2.tgz", - "integrity": "sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==", - "engines": { - "node": ">=14.0.0" - } - }, - "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==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/once": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "integrity": "sha512-6vaNInhu+CHxtONf3zw3vq4SP2DOQhjBvIa3rNcG0+P7eKWlYH6Peu7rHizSloRU2EwMz6GraLieis9Ac9+p1w==", - "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==", - "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/os": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/os/-/os-0.1.2.tgz", - "integrity": "sha512-ZoXJkvAnljwvc56MbvhtKVWmSkzV712k42Is2mA0+0KTSRakq5XXuXpjZjgAt9ctzl51ojhQWakQQpmOvXWfjQ==" - }, - "node_modules/p-each-series": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-3.0.0.tgz", - "integrity": "sha512-lastgtAdoH9YaLyDa5i5z64q+kzOcQHsQ5SsZJD3q0VEyI8mq872S3geuNbRUQLVAE9siMfgKrpj7MloKFHruw==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-filter": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-filter/-/p-filter-4.1.0.tgz", - "integrity": "sha512-37/tPdZ3oJwHaS3gNJdenCDB3Tz26i9sjhnguBtvN0vYlRIiDNnvTWkuh+0hETV9rLPdJ3rlL3yVOYPIAnM8rw==", - "dependencies": { - "p-map": "^7.0.1" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-filter/node_modules/p-map": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-7.0.1.tgz", - "integrity": "sha512-2wnaR0XL/FDOj+TgpDuRb2KTjLnu3Fma6b1ZUwGY7LcqenMcvP/YFpjpbPKY6WVGsbuJZRuoUz8iPrt8ORnAFw==", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-is-promise": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-3.0.0.tgz", - "integrity": "sha512-Wo8VsW4IRQSKVXsJCn7TomUaVtyfjVDn3nUP7kE967BQk0CwFpdbZs0X0uk5sW9mkBa9eNM7hCMaG93WUAwxYQ==", - "engines": { - "node": ">=8" - } - }, - "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": "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/p-map": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", - "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", - "dev": true, - "dependencies": { - "aggregate-error": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/p-reduce": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-3.0.0.tgz", - "integrity": "sha512-xsrIUgI0Kn6iyDYm9StOpOeK29XM1aboGji26+QEortiFST1hGZaUQOLhtEbqHErPpGW/aSz6allwK2qcptp0Q==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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" - } - }, - "node_modules/package-hash": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-4.0.0.tgz", - "integrity": "sha512-whdkPIooSu/bASggZ96BWVvZTRMOFxnyUG5PnTSGKoJE2gd5mbVNmR2Nj20QFzxYYgAXpoqC+AiXzl+UMRh7zQ==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.15", - "hasha": "^5.0.0", - "lodash.flattendeep": "^4.4.0", - "release-zalgo": "^1.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "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==", - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "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==", - "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/parse-ms": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-2.1.0.tgz", - "integrity": "sha512-kHt7kzLoS9VBZfUsiKjv43mr91ea+U05EyKkEtqp7vNbHxmaVuEqN7XxeEVnGrMtYOAxGrDElSi96K7EgO1zCA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "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": { - "version": "0.12.7", - "resolved": "https://registry.npmjs.org/path/-/path-0.12.7.tgz", - "integrity": "sha512-aXXC6s+1w7otVF9UletFkFcDsJeO7lSZBPUQhtb5O0xJe8LtYhj/GxldoL09bBj9+ZmE2hNoHqQSFMN5fikh4Q==", - "dependencies": { - "process": "^0.11.1", - "util": "^0.10.3" - } - }, - "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==", - "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==", - "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==", - "dev": true - }, - "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==", - "engines": { - "node": ">=8" - } - }, - "node_modules/pathval": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", - "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==" - }, - "node_modules/pg-connection-string": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.6.2.tgz", - "integrity": "sha512-ch6OwaeaPYcova4kKZ15sbJ2hKb/VP48ZD2gE7i1J+L4MspCtBMAx8nMgz7bksc7IojCIIWuEhHibSMFH8m8oA==" - }, - "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==", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", - "engines": { - "node": ">=4" - } - }, - "node_modules/pino": { - "version": "8.17.2", - "resolved": "https://registry.npmjs.org/pino/-/pino-8.17.2.tgz", - "integrity": "sha512-LA6qKgeDMLr2ux2y/YiUt47EfgQ+S9LznBWOJdN3q1dx2sv0ziDLUBeVpyVv17TEcGCBuWf0zNtg3M5m1NhhWQ==", - "dependencies": { - "atomic-sleep": "^1.0.0", - "fast-redact": "^3.1.1", - "on-exit-leak-free": "^2.1.0", - "pino-abstract-transport": "v1.1.0", - "pino-std-serializers": "^6.0.0", - "process-warning": "^3.0.0", - "quick-format-unescaped": "^4.0.3", - "real-require": "^0.2.0", - "safe-stable-stringify": "^2.3.1", - "sonic-boom": "^3.7.0", - "thread-stream": "^2.0.0" - }, - "bin": { - "pino": "bin.js" - } - }, - "node_modules/pino-abstract-transport": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/pino-abstract-transport/-/pino-abstract-transport-1.1.0.tgz", - "integrity": "sha512-lsleG3/2a/JIWUtf9Q5gUNErBqwIu1tUKTT3dUzaf5DySw9ra1wcqKjJjLX1VTY64Wk1eEOYsVGSaGfCK85ekA==", - "dependencies": { - "readable-stream": "^4.0.0", - "split2": "^4.0.0" - } - }, - "node_modules/pino-abstract-transport/node_modules/readable-stream": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz", - "integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==", - "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-abstract-transport/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/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/pkg-conf": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-2.1.0.tgz", - "integrity": "sha512-C+VUP+8jis7EsQZIhDYmS5qlNtjv2yP4SNtjXK9AP1ZcTRlnSfuumaTnRfYZnYgUUYVIKqL0fRvmUGDV2fmp6g==", - "dependencies": { - "find-up": "^2.0.0", - "load-json-file": "^4.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/pkg-conf/node_modules/find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", - "dependencies": { - "locate-path": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/pkg-conf/node_modules/locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", - "dependencies": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/pkg-conf/node_modules/p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "dependencies": { - "p-try": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/pkg-conf/node_modules/p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", - "dependencies": { - "p-limit": "^1.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/pkg-conf/node_modules/p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", - "engines": { - "node": ">=4" - } - }, - "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/pkg-dir/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/pkg-dir/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/pkg-dir/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/pkg-dir/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/pony-cause": { - "version": "2.1.10", - "resolved": "https://registry.npmjs.org/pony-cause/-/pony-cause-2.1.10.tgz", - "integrity": "sha512-3IKLNXclQgkU++2fSi93sQ6BznFuxSLB11HdvZQ6JW/spahf/P1pAHBQEahr20rs0htZW0UDkM1HmA+nZkXKsw==", - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/portscanner": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/portscanner/-/portscanner-2.2.0.tgz", - "integrity": "sha512-IFroCz/59Lqa2uBvzK3bKDbDDIEaAY8XJ1jFxcLWTqosrsc32//P4VuSB2vZXoHiHqOmx8B5L5hnKOxL/7FlPw==", - "dependencies": { - "async": "^2.6.0", - "is-number-like": "^1.0.3" - }, - "engines": { - "node": ">=0.4", - "npm": ">=1.0.0" - } - }, - "node_modules/portscanner/node_modules/async": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", - "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", - "dependencies": { - "lodash": "^4.17.14" - } - }, - "node_modules/postman-collection": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/postman-collection/-/postman-collection-4.3.0.tgz", - "integrity": "sha512-QpmNOw1JhAVQTFWRz443/qpKs4/3T1MFrKqDZ84RS1akxOzhXXr15kD8+/+jeA877qyy9rfMsrFgLe2W7aCPjw==", - "dev": true, - "dependencies": { - "@faker-js/faker": "5.5.3", - "file-type": "3.9.0", - "http-reasons": "0.1.0", - "iconv-lite": "0.6.3", - "liquid-json": "0.3.1", - "lodash": "4.17.21", - "mime-format": "2.0.1", - "mime-types": "2.1.35", - "postman-url-encoder": "3.0.5", - "semver": "7.5.4", - "uuid": "8.3.2" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/postman-collection-transformer": { - "version": "4.1.8", - "resolved": "https://registry.npmjs.org/postman-collection-transformer/-/postman-collection-transformer-4.1.8.tgz", - "integrity": "sha512-smJ6X7Z7kbg6hp7JZPFixrSN3J3WkQed7DrWCC5tF7IxOMpFLqhtTtGssY8nD1inP8+mJf+N72Pf2ttUAHgBKw==", - "dev": true, - "dependencies": { - "commander": "8.3.0", - "inherits": "2.0.4", - "lodash": "4.17.21", - "semver": "7.5.4", - "strip-json-comments": "3.1.1" - }, - "bin": { - "postman-collection-transformer": "bin/transform-collection.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/postman-collection-transformer/node_modules/commander": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", - "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", - "dev": true, - "engines": { - "node": ">= 12" - } - }, - "node_modules/postman-collection/node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dev": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postman-collection/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==", - "dev": true, - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/postman-request": { - "version": "2.88.1-postman.33", - "resolved": "https://registry.npmjs.org/postman-request/-/postman-request-2.88.1-postman.33.tgz", - "integrity": "sha512-uL9sCML4gPH6Z4hreDWbeinKU0p0Ke261nU7OvII95NU22HN6Dk7T/SaVPaj6T4TsQqGKIFw6/woLZnH7ugFNA==", - "dev": true, - "dependencies": { - "@postman/form-data": "~3.1.1", - "@postman/tough-cookie": "~4.1.3-postman.1", - "@postman/tunnel-agent": "^0.6.3", - "aws-sign2": "~0.7.0", - "aws4": "^1.12.0", - "brotli": "^1.3.3", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "har-validator": "~5.1.3", - "http-signature": "~1.3.1", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "^2.1.35", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.3", - "safe-buffer": "^5.1.2", - "stream-length": "^1.0.2", - "uuid": "^8.3.2" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/postman-request/node_modules/qs": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", - "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", - "dev": true, - "engines": { - "node": ">=0.6" - } - }, - "node_modules/postman-request/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==", - "dev": true, - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/postman-runtime": { - "version": "7.36.1", - "resolved": "https://registry.npmjs.org/postman-runtime/-/postman-runtime-7.36.1.tgz", - "integrity": "sha512-SarhTewd+rp2cAdC6WFDdT4No0BR3e+tzBcQWZm/o+BDBeOf0W8MQsMKs3BozLMKoKOb/ImqW0jTsa0Rewo0cg==", - "dev": true, - "dependencies": { - "@postman/tough-cookie": "4.1.3-postman.1", - "async": "3.2.5", - "aws4": "1.12.0", - "handlebars": "4.7.8", - "httpntlm": "1.8.13", - "jose": "4.14.4", - "js-sha512": "0.8.0", - "lodash": "4.17.21", - "mime-types": "2.1.35", - "node-forge": "1.3.1", - "node-oauth1": "1.3.0", - "performance-now": "2.1.0", - "postman-collection": "4.3.0", - "postman-request": "2.88.1-postman.33", - "postman-sandbox": "4.4.0", - "postman-url-encoder": "3.0.5", - "serialised-error": "1.1.3", - "strip-json-comments": "3.1.1", - "uuid": "8.3.2" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/postman-runtime/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==", - "dev": true, - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/postman-sandbox": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/postman-sandbox/-/postman-sandbox-4.4.0.tgz", - "integrity": "sha512-NvNodj44vqtZrgLvnqoqFxvqRL1Pw0MSLXGlzSu252iurmHCz59wUykNUQ8mQh0AXNM00gbN/lS1nrGfS1zqwA==", - "dev": true, - "dependencies": { - "lodash": "4.17.21", - "postman-collection": "4.3.0", - "teleport-javascript": "1.0.0", - "uvm": "2.1.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/postman-url-encoder": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/postman-url-encoder/-/postman-url-encoder-3.0.5.tgz", - "integrity": "sha512-jOrdVvzUXBC7C+9gkIkpDJ3HIxOHTIqjpQ4C1EMt1ZGeMvSEpbFCKq23DEfgsj46vMnDgyQf+1ZLp2Wm+bKSsA==", - "dev": true, - "dependencies": { - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=10" - } - }, - "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-ms": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-7.0.1.tgz", - "integrity": "sha512-973driJZvxiGOQ5ONsFhOF/DtzPMOMtgC11kCpUrPGMTgqp2q/1gwzCquocrN33is0VZ5GFHXZYMM9l6h67v2Q==", - "dev": true, - "dependencies": { - "parse-ms": "^2.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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-on-spawn": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/process-on-spawn/-/process-on-spawn-1.0.0.tgz", - "integrity": "sha512-1WsPDsUSMmZH5LeMLegqkPDrsGgsWwk1Exipy2hvB0o/F0ASzbpIctSCcZIK1ykJvtTJULEH+20WOFjMvGnCTg==", - "dev": true, - "dependencies": { - "fromentries": "^1.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/process-warning": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-3.0.0.tgz", - "integrity": "sha512-mqn0kFRl0EoqhnL0GQ0veqFHyIN1yig9RHh/InzORTUiZHFRAur+aMtRkELNwGs9aNwKS6tg/An4NYBPGwvtzQ==" - }, - "node_modules/promise-inflight": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", - "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", - "optional": true - }, - "node_modules/promise-polyfill": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/promise-polyfill/-/promise-polyfill-2.1.4.tgz", - "integrity": "sha512-/DVUJXyaiYr7Pu0q2qPV/OtABpiukAHswJb9VV/tUVFsvC5iZUTyVPxfEr8cIVatGa5/Mxeli8QMyzAMBmoiYg==" - }, - "node_modules/promise-retry": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", - "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", - "optional": true, - "dependencies": { - "err-code": "^2.0.2", - "retry": "^0.12.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/promise-retry/node_modules/retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", - "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", - "optional": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/prop-types": { - "version": "15.8.1", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", - "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", - "dev": true, - "dependencies": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.13.1" - } - }, - "node_modules/prop-types/node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/proto-list": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", - "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==" - }, - "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/proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" - }, - "node_modules/pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==", - "dev": true - }, - "node_modules/psl": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", - "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==" - }, - "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/qs": { - "version": "6.11.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz", - "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==", - "dependencies": { - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/querystringify": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", - "dev": true - }, - "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==", - "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/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "dependencies": { - "safe-buffer": "^5.1.0" - } - }, - "node_modules/range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/raw-body": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", - "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", - "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/rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "dependencies": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "bin": { - "rc": "cli.js" - } - }, - "node_modules/rc/node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" - }, - "node_modules/rc/node_modules/strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", - "dev": true - }, - "node_modules/read-pkg": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-9.0.1.tgz", - "integrity": "sha512-9viLL4/n1BJUCT1NXVTdS1jtm80yDEgR5T4yCelII49Mbj0v1rZdKqj7zCiYdbB0CuCgdrvHcNogAKTFPBocFA==", - "dependencies": { - "@types/normalize-package-data": "^2.4.3", - "normalize-package-data": "^6.0.0", - "parse-json": "^8.0.0", - "type-fest": "^4.6.0", - "unicorn-magic": "^0.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/read-pkg-up": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-11.0.0.tgz", - "integrity": "sha512-LOVbvF1Q0SZdjClSefZ0Nz5z8u+tIE7mV5NibzmE9VYmDe9CaBbAVtz1veOSZbofrdsilxuDAYnFenukZVp8/Q==", - "deprecated": "Renamed to read-package-up", - "dependencies": { - "find-up-simple": "^1.0.0", - "read-pkg": "^9.0.0", - "type-fest": "^4.6.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/read-pkg-up/node_modules/type-fest": { - "version": "4.9.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.9.0.tgz", - "integrity": "sha512-KS/6lh/ynPGiHD/LnAobrEFq3Ad4pBzOlJ1wAnJx9N4EYoqFhMfLIBjUT2UEx4wg5ZE+cC1ob6DCSpppVo+rtg==", - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/read-pkg/node_modules/parse-json": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-8.1.0.tgz", - "integrity": "sha512-rum1bPifK5SSar35Z6EKZuYPJx85pkNaFrxBK3mwdfSJ1/WKbYrjoW/zTPSjRRamfmVX1ACBIdFAO0VRErW/EA==", - "dependencies": { - "@babel/code-frame": "^7.22.13", - "index-to-position": "^0.1.2", - "type-fest": "^4.7.1" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/read-pkg/node_modules/type-fest": { - "version": "4.9.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.9.0.tgz", - "integrity": "sha512-KS/6lh/ynPGiHD/LnAobrEFq3Ad4pBzOlJ1wAnJx9N4EYoqFhMfLIBjUT2UEx4wg5ZE+cC1ob6DCSpppVo+rtg==", - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/readable-stream": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "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/real-require": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/real-require/-/real-require-0.2.0.tgz", - "integrity": "sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==", - "engines": { - "node": ">= 12.13.0" - } - }, - "node_modules/redeyed": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/redeyed/-/redeyed-2.1.1.tgz", - "integrity": "sha512-FNpGGo1DycYAdnrKFxCMmKYgo/mILAqtRYbkdQD8Ep/Hk2PQ5+aEAEx+IU713RTDmuBaH0c8P5ZozurNu5ObRQ==", - "dependencies": { - "esprima": "~4.0.0" - } - }, - "node_modules/reflect.getprototypeof": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.4.tgz", - "integrity": "sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1", - "globalthis": "^1.0.3", - "which-builtin-type": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/regexp.prototype.flags": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz", - "integrity": "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "set-function-name": "^2.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/registry-auth-token": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-5.0.2.tgz", - "integrity": "sha512-o/3ikDxtXaA59BmZuZrJZDJv8NMDGSj+6j6XaeBmHw8eY1i1qd9+6H+LjVvQXx3HN6aRCGa1cUdJ9RaJZUugnQ==", - "dependencies": { - "@pnpm/npm-conf": "^2.1.0" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/release-zalgo": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz", - "integrity": "sha512-gUAyHVHPPC5wdqX/LG4LWtRYtgjxyX78oanFNTMMyFEfOqdC54s3eE82imuWKbOeqYht2CrNf64Qb8vgmmtZGA==", - "dev": true, - "dependencies": { - "es6-error": "^4.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/request": { - "version": "2.88.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", - "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", - "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", - "dependencies": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.0", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.4.3", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - }, - "engines": { - "node": ">= 4" - } - }, - "node_modules/request-promise": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/request-promise/-/request-promise-4.2.4.tgz", - "integrity": "sha512-8wgMrvE546PzbR5WbYxUQogUnUDfM0S7QIFZMID+J73vdFARkFy+HElj4T+MWYhpXwlLp0EQ8Zoj8xUA0he4Vg==", - "deprecated": "request-promise has been deprecated because it extends the now deprecated request package, see https://github.com/request/request/issues/3142", - "dependencies": { - "bluebird": "^3.5.0", - "request-promise-core": "1.1.2", - "stealthy-require": "^1.1.1", - "tough-cookie": "^2.3.3" - }, - "engines": { - "node": ">=0.10.0" - }, - "peerDependencies": { - "request": "^2.34" - } - }, - "node_modules/request-promise-core": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.2.tgz", - "integrity": "sha512-UHYyq1MO8GsefGEt7EprS8UrXsm1TxEvFUX1IMTuSLU2Rh7fTIdFtl8xD7JiEYiWU2dl+NYAjCTksTehQUxPag==", - "dependencies": { - "lodash": "^4.17.11" - }, - "engines": { - "node": ">=0.10.0" - }, - "peerDependencies": { - "request": "^2.34" - } - }, - "node_modules/request-promise/node_modules/tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "dependencies": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/request/node_modules/form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 0.12" - } - }, - "node_modules/request/node_modules/http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", - "dependencies": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - }, - "engines": { - "node": ">=0.8", - "npm": ">=1.3.7" - } - }, - "node_modules/request/node_modules/jsprim": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", - "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", - "dependencies": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.4.0", - "verror": "1.10.0" - }, - "engines": { - "node": ">=0.6.0" - } - }, - "node_modules/request/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/request/node_modules/qs": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", - "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/request/node_modules/tough-cookie": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", - "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", - "dependencies": { - "psl": "^1.1.24", - "punycode": "^1.4.1" - }, - "engines": { - "node": ">=0.8" - } - }, - "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==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true - }, - "node_modules/requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", - "dev": true - }, - "node_modules/resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", - "dev": true, - "dependencies": { - "is-core-module": "^2.9.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-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "engines": { - "node": ">=4" - } - }, - "node_modules/retry-as-promised": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/retry-as-promised/-/retry-as-promised-7.0.4.tgz", - "integrity": "sha512-XgmCoxKWkDofwH8WddD0w85ZfqYz+ZHlr5yo+3YUCfycWawU56T5ckWXsScsj5B8tqUcIG67DxXByo3VUgiAdA==" - }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/roarr": { - "version": "2.15.4", - "resolved": "https://registry.npmjs.org/roarr/-/roarr-2.15.4.tgz", - "integrity": "sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==", - "dev": true, - "dependencies": { - "boolean": "^3.0.1", - "detect-node": "^2.0.4", - "globalthis": "^1.0.1", - "json-stringify-safe": "^5.0.1", - "semver-compare": "^1.0.0", - "sprintf-js": "^1.1.2" - }, - "engines": { - "node": ">=8.0" - } - }, - "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==", - "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-array-concat": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.1.tgz", - "integrity": "sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1", - "has-symbols": "^1.0.3", - "isarray": "^2.0.5" - }, - "engines": { - "node": ">=0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safe-array-concat/node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true - }, - "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/safe-regex-test": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", - "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", - "is-regex": "^1.1.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safe-stable-stringify": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz", - "integrity": "sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==", - "engines": { - "node": ">=10" - } - }, - "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/secure-keys": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/secure-keys/-/secure-keys-1.0.0.tgz", - "integrity": "sha512-nZi59hW3Sl5P3+wOO89eHBAAGwmCPd2aE1+dLZV5MO+ItQctIvAqihzaAXIQhvtH4KJPxM080HsnqltR2y8cWg==" - }, - "node_modules/semantic-release": { - "version": "22.0.12", - "resolved": "https://registry.npmjs.org/semantic-release/-/semantic-release-22.0.12.tgz", - "integrity": "sha512-0mhiCR/4sZb00RVFJIUlMuiBkW3NMpVIW2Gse7noqEMoFGkvfPPAImEQbkBV8xga4KOPP4FdTRYuLLy32R1fPw==", - "dependencies": { - "@semantic-release/commit-analyzer": "^11.0.0", - "@semantic-release/error": "^4.0.0", - "@semantic-release/github": "^9.0.0", - "@semantic-release/npm": "^11.0.0", - "@semantic-release/release-notes-generator": "^12.0.0", - "aggregate-error": "^5.0.0", - "cosmiconfig": "^8.0.0", - "debug": "^4.0.0", - "env-ci": "^10.0.0", - "execa": "^8.0.0", - "figures": "^6.0.0", - "find-versions": "^5.1.0", - "get-stream": "^6.0.0", - "git-log-parser": "^1.2.0", - "hook-std": "^3.0.0", - "hosted-git-info": "^7.0.0", - "import-from-esm": "^1.3.1", - "lodash-es": "^4.17.21", - "marked": "^9.0.0", - "marked-terminal": "^6.0.0", - "micromatch": "^4.0.2", - "p-each-series": "^3.0.0", - "p-reduce": "^3.0.0", - "read-pkg-up": "^11.0.0", - "resolve-from": "^5.0.0", - "semver": "^7.3.2", - "semver-diff": "^4.0.0", - "signale": "^1.2.1", - "yargs": "^17.5.1" - }, - "bin": { - "semantic-release": "bin/semantic-release.js" - }, - "engines": { - "node": "^18.17 || >=20.6.1" - } - }, - "node_modules/semantic-release/node_modules/aggregate-error": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-5.0.0.tgz", - "integrity": "sha512-gOsf2YwSlleG6IjRYG2A7k0HmBMEo6qVNk9Bp/EaLgAJT5ngH6PXbqa4ItvnEwCm/velL5jAnQgsHsWnjhGmvw==", - "dependencies": { - "clean-stack": "^5.2.0", - "indent-string": "^5.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/semantic-release/node_modules/clean-stack": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-5.2.0.tgz", - "integrity": "sha512-TyUIUJgdFnCISzG5zu3291TAsE77ddchd0bepon1VVQrKLGKFED4iXFEDQ24mIPdPBbyE16PK3F8MYE1CmcBEQ==", - "dependencies": { - "escape-string-regexp": "5.0.0" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/semantic-release/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==", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/semantic-release/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/semantic-release/node_modules/escape-string-regexp": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", - "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/semantic-release/node_modules/execa": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", - "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^8.0.1", - "human-signals": "^5.0.0", - "is-stream": "^3.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^5.1.0", - "onetime": "^6.0.0", - "signal-exit": "^4.1.0", - "strip-final-newline": "^3.0.0" - }, - "engines": { - "node": ">=16.17" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/semantic-release/node_modules/execa/node_modules/get-stream": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", - "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/semantic-release/node_modules/figures": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/figures/-/figures-6.0.1.tgz", - "integrity": "sha512-0oY/olScYD4IhQ8u//gCPA4F3mlTn2dacYmiDm/mbDQvpmLjV4uH+zhsQ5IyXRyvqkvtUkXkNdGvg5OFJTCsuQ==", - "dependencies": { - "is-unicode-supported": "^2.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/semantic-release/node_modules/human-signals": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", - "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", - "engines": { - "node": ">=16.17.0" - } - }, - "node_modules/semantic-release/node_modules/indent-string": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", - "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/semantic-release/node_modules/is-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", - "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/semantic-release/node_modules/is-unicode-supported": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.0.0.tgz", - "integrity": "sha512-FRdAyx5lusK1iHG0TWpVtk9+1i+GjrzRffhDg4ovQ7mcidMQ6mj+MhKPmvh7Xwyv5gIS06ns49CA7Sqg7lC22Q==", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/semantic-release/node_modules/mimic-fn": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", - "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/semantic-release/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/semantic-release/node_modules/npm-run-path": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.2.0.tgz", - "integrity": "sha512-W4/tgAXFqFA0iL7fk0+uQ3g7wkL8xJmx3XdK0VGb4cHW//eZTtKGvFBBoRKVTpY7n6ze4NL9ly7rgXcHufqXKg==", - "dependencies": { - "path-key": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/semantic-release/node_modules/onetime": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", - "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", - "dependencies": { - "mimic-fn": "^4.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/semantic-release/node_modules/path-key": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", - "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/semantic-release/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==", - "engines": { - "node": ">=8" - } - }, - "node_modules/semantic-release/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/semantic-release/node_modules/strip-final-newline": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", - "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/semantic-release/node_modules/yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", - "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/semantic-release/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==", - "engines": { - "node": ">=12" - } - }, - "node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/semver-compare": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", - "integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==", - "dev": true - }, - "node_modules/semver-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-4.0.0.tgz", - "integrity": "sha512-0Ju4+6A8iOnpL/Thra7dZsSlOHYAHIeMxfhWQRI1/VLcT3WDBZKKtQt/QkBOsiIN9ZpuvHE6cGZ0x4glCMmfiA==", - "dependencies": { - "semver": "^7.3.5" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/semver-regex": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/semver-regex/-/semver-regex-4.0.5.tgz", - "integrity": "sha512-hunMQrEy1T6Jr2uEVjrAIqjwWcQTgOAcIM52C8MY1EZSD3DDNft04XzvYKPqjED65bNVVko0YI38nYeEHCX3yw==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/semver/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/semver/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/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/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/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/sequelize": { - "version": "6.35.2", - "resolved": "https://registry.npmjs.org/sequelize/-/sequelize-6.35.2.tgz", - "integrity": "sha512-EdzLaw2kK4/aOnWQ7ed/qh3B6/g+1DvmeXr66RwbcqSm/+QRS9X0LDI5INBibsy4eNJHWIRPo3+QK0zL+IPBHg==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/sequelize" - } - ], - "dependencies": { - "@types/debug": "^4.1.8", - "@types/validator": "^13.7.17", - "debug": "^4.3.4", - "dottie": "^2.0.6", - "inflection": "^1.13.4", - "lodash": "^4.17.21", - "moment": "^2.29.4", - "moment-timezone": "^0.5.43", - "pg-connection-string": "^2.6.1", - "retry-as-promised": "^7.0.4", - "semver": "^7.5.4", - "sequelize-pool": "^7.1.0", - "toposort-class": "^1.0.1", - "uuid": "^8.3.2", - "validator": "^13.9.0", - "wkx": "^0.5.0" - }, - "engines": { - "node": ">=10.0.0" - }, - "peerDependenciesMeta": { - "ibm_db": { - "optional": true - }, - "mariadb": { - "optional": true - }, - "mysql2": { - "optional": true - }, - "oracledb": { - "optional": true - }, - "pg": { - "optional": true - }, - "pg-hstore": { - "optional": true - }, - "snowflake-sdk": { - "optional": true - }, - "sqlite3": { - "optional": true - }, - "tedious": { - "optional": true - } - } - }, - "node_modules/sequelize-cli": { - "version": "6.6.2", - "resolved": "https://registry.npmjs.org/sequelize-cli/-/sequelize-cli-6.6.2.tgz", - "integrity": "sha512-V8Oh+XMz2+uquLZltZES6MVAD+yEnmMfwfn+gpXcDiwE3jyQygLt4xoI0zG8gKt6cRcs84hsKnXAKDQjG/JAgg==", - "dev": true, - "dependencies": { - "cli-color": "^2.0.3", - "fs-extra": "^9.1.0", - "js-beautify": "^1.14.5", - "lodash": "^4.17.21", - "resolve": "^1.22.1", - "umzug": "^2.3.0", - "yargs": "^16.2.0" - }, - "bin": { - "sequelize": "lib/sequelize", - "sequelize-cli": "lib/sequelize" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/sequelize-cli/node_modules/fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", - "dev": true, - "dependencies": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/sequelize-cli/node_modules/umzug": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/umzug/-/umzug-2.3.0.tgz", - "integrity": "sha512-Z274K+e8goZK8QJxmbRPhl89HPO1K+ORFtm6rySPhFKfKc5GHhqdzD0SGhSWHkzoXasqJuItdhorSvY7/Cgflw==", - "dev": true, - "dependencies": { - "bluebird": "^3.7.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/sequelize-cli/node_modules/universalify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", - "dev": true, - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/sequelize-pool": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/sequelize-pool/-/sequelize-pool-7.1.0.tgz", - "integrity": "sha512-G9c0qlIWQSK29pR/5U2JF5dDQeqqHRragoyahj/Nx4KOOQ3CPPfzxnfqFPCSB7x5UgjOgnZ61nSxz+fjDpRlJg==", - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/sequelize/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/sequelize/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/sequelize/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/serialised-error": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/serialised-error/-/serialised-error-1.1.3.tgz", - "integrity": "sha512-vybp3GItaR1ZtO2nxZZo8eOo7fnVaNtP3XE2vJKgzkKR2bagCkdJ1EpYYhEMd3qu/80DwQk9KjsNSxE3fXWq0g==", - "dev": true, - "dependencies": { - "object-hash": "^1.1.2", - "stack-trace": "0.0.9", - "uuid": "^3.0.0" - } - }, - "node_modules/serialize-error": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-7.0.1.tgz", - "integrity": "sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==", - "dev": true, - "dependencies": { - "type-fest": "^0.13.1" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/serialize-error/node_modules/type-fest": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", - "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", - "dev": true, - "dependencies": { - "randombytes": "^2.1.0" - } - }, - "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/set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" - }, - "node_modules/set-function-length": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz", - "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==", - "dependencies": { - "define-data-property": "^1.1.1", - "get-intrinsic": "^1.2.1", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/set-function-name": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", - "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==", - "dev": true, - "dependencies": { - "define-data-property": "^1.0.1", - "functions-have-names": "^1.2.3", - "has-property-descriptors": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" - }, - "node_modules/shallow-copy": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/shallow-copy/-/shallow-copy-0.0.1.tgz", - "integrity": "sha512-b6i4ZpVuUxB9h5gfCxPiusKYkqTMOjEbBs4wMaFbkfia4yFv92UKZ6Df8WXcKbn08JNL/abvg3FnMAOfakDvUw==" - }, - "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==", - "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==", - "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/sigmund": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", - "integrity": "sha512-fCvEXfh6NWpm+YSuY2bpXb/VIihqWA6hLsgboC+0nl71Q7N7o2eaCW8mJa/NLvQhs6jpd3VZV4UiUQlV6+lc8g==", - "dev": true - }, - "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==" - }, - "node_modules/signale": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/signale/-/signale-1.4.0.tgz", - "integrity": "sha512-iuh+gPf28RkltuJC7W5MRi6XAjTDCAPC/prJUpQoG4vIP3MJZ+GTydVnodXA7pwvTKb2cA0m9OFZW/cdWy/I/w==", - "dependencies": { - "chalk": "^2.3.2", - "figures": "^2.0.0", - "pkg-conf": "^2.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/sinon": { - "version": "17.0.1", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-17.0.1.tgz", - "integrity": "sha512-wmwE19Lie0MLT+ZYNpDymasPHUKTaZHUH/pKEubRXIzySv9Atnlw+BUMGCzWgV7b7wO+Hw6f1TEOr0IUnmU8/g==", - "dev": true, - "dependencies": { - "@sinonjs/commons": "^3.0.0", - "@sinonjs/fake-timers": "^11.2.2", - "@sinonjs/samsam": "^8.0.0", - "diff": "^5.1.0", - "nise": "^5.1.5", - "supports-color": "^7.2.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/sinon" - } - }, - "node_modules/sinon-chai": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/sinon-chai/-/sinon-chai-3.7.0.tgz", - "integrity": "sha512-mf5NURdUaSdnatJx3uhoBOrY9dtL19fiOtAdT1Azxg3+lNJFiuN0uzaU3xX1LeAfL17kHQhTAJgpsfhbMJMY2g==", - "dev": true, - "peerDependencies": { - "chai": "^4.0.0", - "sinon": ">=4.0.0" - } - }, - "node_modules/sinon/node_modules/diff": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.1.0.tgz", - "integrity": "sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==", - "dev": true, - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/sinon/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/sinon/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/skin-tone": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/skin-tone/-/skin-tone-2.0.0.tgz", - "integrity": "sha512-kUMbT1oBJCpgrnKoSr0o6wPtvRWT9W9UKvGLwfJYO2WuahZRHOpEyL1ckyMGgMWh0UdpmaoFqKKD29WTomNEGA==", - "dependencies": { - "unicode-emoji-modifier-base": "^1.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/slash": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz", - "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==", - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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==", - "optional": true, - "engines": { - "node": ">= 6.0.0", - "npm": ">= 3.0.0" - } - }, - "node_modules/smtp-connection": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/smtp-connection/-/smtp-connection-2.12.0.tgz", - "integrity": "sha512-UP5jK4s5SGcUcqPN4U9ingqKt9mXYSKa52YhqxPuMecAnUOsVJpOmtgGaOm1urUBJZlzDt1M9WhZZkgbhxQlvg==", - "dependencies": { - "httpntlm": "1.6.1", - "nodemailer-shared": "1.1.0" - } - }, - "node_modules/smtp-connection/node_modules/httpntlm": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/httpntlm/-/httpntlm-1.6.1.tgz", - "integrity": "sha512-Tcz3Ct9efvNqw3QdTl3h6IgRRlIQxwKkJELN/aAIGnzi2xvb3pDHdnMs8BrxWLV6OoT4DlVyhzSVhFt/tk0lIw==", - "dependencies": { - "httpreq": ">=0.4.22", - "underscore": "~1.7.0" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/smtp-connection/node_modules/underscore": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.7.0.tgz", - "integrity": "sha512-cp0oQQyZhUM1kpJDLdGO1jPZHgS/MpzoWYfe9+CM2h/QGDZlqwT2T3YGukuBdaNJ/CAPoeyAZRRHz8JFo176vA==" - }, - "node_modules/snyk": { - "version": "1.1266.0", - "resolved": "https://registry.npmjs.org/snyk/-/snyk-1.1266.0.tgz", - "integrity": "sha512-upsITfOo/ioJn4F9BmKUIHeVtHNijvk4fx/2u5SfsNCHYabWSbMR2bmGdB1aD1TUonm92VB2hTJTBTYL2FRo5A==", - "dev": true, - "hasInstallScript": true, - "dependencies": { - "@sentry/node": "^7.36.0", - "global-agent": "^3.0.0" - }, - "bin": { - "snyk": "bin/snyk" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/socks": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", - "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", - "optional": true, - "dependencies": { - "ip": "^2.0.0", - "smart-buffer": "^4.2.0" - }, - "engines": { - "node": ">= 10.13.0", - "npm": ">= 3.0.0" - } - }, - "node_modules/socks-proxy-agent": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.2.1.tgz", - "integrity": "sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ==", - "optional": true, - "dependencies": { - "agent-base": "^6.0.2", - "debug": "^4.3.3", - "socks": "^2.6.2" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/socks-proxy-agent/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "optional": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/socks-proxy-agent/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==", - "optional": true - }, - "node_modules/sonic-boom": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-3.7.0.tgz", - "integrity": "sha512-IudtNvSqA/ObjN97tfgNmOKyDOs4dNcg4cUUsHDebqsgb8wGBBwb31LIgShNO8fye0dFI52X1+tFoKKI6Rq1Gg==", - "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/spawn-error-forwarder": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/spawn-error-forwarder/-/spawn-error-forwarder-1.0.0.tgz", - "integrity": "sha512-gRjMgK5uFjbCvdibeGJuy3I5OYz6VLoVdsOJdA6wV0WlfQVLFueoqMxwwYD9RODdgb6oUIvlRlsyFSiQkMKu0g==" - }, - "node_modules/spawn-wrap": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-2.0.0.tgz", - "integrity": "sha512-EeajNjfN9zMnULLwhZZQU3GWBoFNkbngTUPfaawT4RkMiviTxcX0qfhVbGey39mfctfDHkWtuecgQ8NJcyQWHg==", - "dev": true, - "dependencies": { - "foreground-child": "^2.0.0", - "is-windows": "^1.0.2", - "make-dir": "^3.0.0", - "rimraf": "^3.0.0", - "signal-exit": "^3.0.2", - "which": "^2.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/spdx-correct": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", - "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", - "dependencies": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-exceptions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==" - }, - "node_modules/spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-license-ids": { - "version": "3.0.16", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.16.tgz", - "integrity": "sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==" - }, - "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.1.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", - "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", - "dev": true - }, - "node_modules/sqlite3": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/sqlite3/-/sqlite3-5.1.6.tgz", - "integrity": "sha512-olYkWoKFVNSSSQNvxVUfjiVbz3YtBwTJj+mfV5zpHmqW3sELx2Cf4QCdirMelhM5Zh+KDVaKgQHqCxrqiWHybw==", - "hasInstallScript": true, - "dependencies": { - "@mapbox/node-pre-gyp": "^1.0.0", - "node-addon-api": "^4.2.0", - "tar": "^6.1.11" - }, - "optionalDependencies": { - "node-gyp": "8.x" - }, - "peerDependencies": { - "node-gyp": "8.x" - }, - "peerDependenciesMeta": { - "node-gyp": { - "optional": true - } - } - }, - "node_modules/sshpk": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", - "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", - "dependencies": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - }, - "bin": { - "sshpk-conv": "bin/sshpk-conv", - "sshpk-sign": "bin/sshpk-sign", - "sshpk-verify": "bin/sshpk-verify" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ssri": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", - "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", - "optional": true, - "dependencies": { - "minipass": "^3.1.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/stack-trace": { - "version": "0.0.9", - "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.9.tgz", - "integrity": "sha512-vjUc6sfgtgY0dxCdnc40mK6Oftjo9+2K8H/NG81TMhgL392FtiPA9tn9RLyTxXmTLPJPjF3VyzFp6bsWFLisMQ==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/standard": { - "version": "17.1.0", - "resolved": "https://registry.npmjs.org/standard/-/standard-17.1.0.tgz", - "integrity": "sha512-jaDqlNSzLtWYW4lvQmU0EnxWMUGQiwHasZl5ZEIwx3S/ijZDjZOzs1y1QqKwKs5vqnFpGtizo4NOYX2s0Voq/g==", - "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": { - "eslint": "^8.41.0", - "eslint-config-standard": "17.1.0", - "eslint-config-standard-jsx": "^11.0.0", - "eslint-plugin-import": "^2.27.5", - "eslint-plugin-n": "^15.7.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-react": "^7.32.2", - "standard-engine": "^15.0.0", - "version-guard": "^1.1.1" - }, - "bin": { - "standard": "bin/cmd.cjs" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/standard-engine": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/standard-engine/-/standard-engine-15.1.0.tgz", - "integrity": "sha512-VHysfoyxFu/ukT+9v49d4BRXIokFRZuH3z1VRxzFArZdjSCFpro6rEIU3ji7e4AoAtuSfKBkiOmsrDqKW5ZSRw==", - "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": { - "get-stdin": "^8.0.0", - "minimist": "^1.2.6", - "pkg-conf": "^3.1.0", - "xdg-basedir": "^4.0.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/standard-engine/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==", - "dev": true, - "dependencies": { - "locate-path": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/standard-engine/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==", - "dev": true, - "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/standard-engine/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==", - "dev": true, - "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/standard-engine/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/standard-engine/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==", - "dev": true, - "dependencies": { - "p-limit": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/standard-engine/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==", - "dev": true, - "dependencies": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/standard-engine/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==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/standard-engine/node_modules/pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/standard-engine/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==", - "dev": true, - "dependencies": { - "find-up": "^3.0.0", - "load-json-file": "^5.2.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/standard-engine/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==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/standard-engine/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==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "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/stealthy-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", - "integrity": "sha512-ZnWpYnYugiOVEY5GkcuJK1io5V8QmNYChG62gSit9pQVGErXtrKuPC55ITaVSukmMta5qpMU7vqLt2Lnni4f/g==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/stream-combiner2": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz", - "integrity": "sha512-3PnJbYgS56AeWgtKF5jtJRT6uFJe56Z0Hc5Ngg/6sI6rIt8iiMBTa9cvdyFfpMQjaVHr8dusbNeFGIIonxOvKw==", - "dependencies": { - "duplexer2": "~0.1.0", - "readable-stream": "^2.0.2" - } - }, - "node_modules/stream-combiner2/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" - }, - "node_modules/stream-combiner2/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/stream-combiner2/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==" - }, - "node_modules/stream-combiner2/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/stream-length": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/stream-length/-/stream-length-1.0.2.tgz", - "integrity": "sha512-aI+qKFiwoDV4rsXiS7WRoCt+v2RX1nUj17+KJC5r2gfh5xoSJIfP6Y3Do/HtvesFcTSWthIuJ3l1cvKQY/+nZg==", - "dev": true, - "dependencies": { - "bluebird": "^2.6.2" - } - }, - "node_modules/stream-length/node_modules/bluebird": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-2.11.0.tgz", - "integrity": "sha512-UfFSr22dmHPQqPP9XWHRhq+gWnHCYguQGkXQlbyPtW5qTnhFWA8/iXg765tH0cAjy7l/zPJ1aBTO0g5XgA7kvQ==", - "dev": true - }, - "node_modules/stream-read-all": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/stream-read-all/-/stream-read-all-3.0.1.tgz", - "integrity": "sha512-EWZT9XOceBPlVJRrYcykW8jyRSZYbkb/0ZK36uLEmoWVO5gxBOnntNTseNzfREsqxqdfEGQrD8SXQ3QWbBmq8A==", - "engines": { - "node": ">=10" - } - }, - "node_modules/streamsearch": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", - "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==" - }, - "node_modules/string-argv": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.2.tgz", - "integrity": "sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==", - "engines": { - "node": ">=0.6.19" - } - }, - "node_modules/string-format": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/string-format/-/string-format-2.0.0.tgz", - "integrity": "sha512-bbEs3scLeYNXLecRRuk6uJxdXUSj6le/8rNPHChIJTn2V79aXVTR1EH2OH5zLKKoz0V02fOUKZZcw01pLUShZA==" - }, - "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==", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/string.prototype.matchall": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.10.tgz", - "integrity": "sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.5", - "regexp.prototype.flags": "^1.5.0", - "set-function-name": "^2.0.0", - "side-channel": "^1.0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trim": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz", - "integrity": "sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimend": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz", - "integrity": "sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz", - "integrity": "sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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==", - "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==", - "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==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/superagent": { - "version": "8.1.2", - "resolved": "https://registry.npmjs.org/superagent/-/superagent-8.1.2.tgz", - "integrity": "sha512-6WTxW1EB6yCxV5VFOIPQruWGHqc3yI7hEmZK6h+pyk69Lk/Ut7rLUY6W/ONF2MjBuGjvmMiIpsrVJ2vjrHlslA==", - "dev": true, - "dependencies": { - "component-emitter": "^1.3.0", - "cookiejar": "^2.1.4", - "debug": "^4.3.4", - "fast-safe-stringify": "^2.1.1", - "form-data": "^4.0.0", - "formidable": "^2.1.2", - "methods": "^1.1.2", - "mime": "2.6.0", - "qs": "^6.11.0", - "semver": "^7.3.8" - }, - "engines": { - "node": ">=6.4.0 <13 || >=14" - } - }, - "node_modules/superagent/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/superagent/node_modules/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/superagent/node_modules/mime": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", - "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", - "dev": true, - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/superagent/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/superagent/node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "dependencies": { - "wrappy": "1" - } - }, - "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/supports-hyperlinks": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-3.0.0.tgz", - "integrity": "sha512-QBDPHyPQDRTy9ku4URNGY5Lah8PAaXs6tAAwp55sL5WCsSW7GIfdf6W5ixfziW+t7wh3GVvHyHHyQ1ESsoRvaA==", - "dependencies": { - "has-flag": "^4.0.0", - "supports-color": "^7.0.0" - }, - "engines": { - "node": ">=14.18" - } - }, - "node_modules/supports-hyperlinks/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==", - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-hyperlinks/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==", - "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==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/swagger-ui-dist": { - "version": "5.10.5", - "resolved": "https://registry.npmjs.org/swagger-ui-dist/-/swagger-ui-dist-5.10.5.tgz", - "integrity": "sha512-Uv8E7hV/nXALQKgW86X1i58gl1O6DFg+Uq54sDwhYqucBBxj/47dLNw872TNILNlOTuPA6dRvUMGQdmlpaX8qQ==" - }, - "node_modules/swagger-ui-express": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/swagger-ui-express/-/swagger-ui-express-5.0.0.tgz", - "integrity": "sha512-tsU9tODVvhyfkNSvf03E6FAk+z+5cU3lXAzMy6Pv4av2Gt2xA0++fogwC4qo19XuFf6hdxevPuVCSKFuMHJhFA==", - "dependencies": { - "swagger-ui-dist": ">=5.0.0" - }, - "engines": { - "node": ">= v0.10.32" - }, - "peerDependencies": { - "express": ">=4.0.0 || >=5.0.0-beta" - } - }, - "node_modules/table-layout": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/table-layout/-/table-layout-3.0.2.tgz", - "integrity": "sha512-rpyNZYRw+/C+dYkcQ3Pr+rLxW4CfHpXjPDnG7lYhdRoUcZTUt+KEsX+94RGp/aVp/MQU35JCITv2T/beY4m+hw==", - "dependencies": { - "@75lb/deep-merge": "^1.1.1", - "array-back": "^6.2.2", - "command-line-args": "^5.2.1", - "command-line-usage": "^7.0.0", - "stream-read-all": "^3.0.1", - "typical": "^7.1.1", - "wordwrapjs": "^5.1.0" - }, - "bin": { - "table-layout": "bin/cli.js" - }, - "engines": { - "node": ">=12.17" - } - }, - "node_modules/table-layout/node_modules/array-back": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/array-back/-/array-back-6.2.2.tgz", - "integrity": "sha512-gUAZ7HPyb4SJczXAMUXMGAvI976JoK3qEx9v1FTmeYuJj0IBiaKttG1ydtGKdkfqWkIkouke7nG8ufGy77+Cvw==", - "engines": { - "node": ">=12.17" - } - }, - "node_modules/table-layout/node_modules/typical": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/typical/-/typical-7.1.1.tgz", - "integrity": "sha512-T+tKVNs6Wu7IWiAce5BgMd7OZfNYUndHwc5MknN+UHOudi7sGZzuHdCadllRuqJ3fPtgFtIH9+lt9qRv6lmpfA==", - "engines": { - "node": ">=12.17" - } - }, - "node_modules/tar": { - "version": "6.1.13", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.13.tgz", - "integrity": "sha512-jdIBIN6LTIe2jqzay/2vtYLlBHa3JF42ot3h1dW8Q0PaAG4v8rm0cvpVePtau5C6OKXGGcgO9q2AMNSWxiLqKw==", - "dependencies": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^4.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/tar/node_modules/minipass": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.4.tgz", - "integrity": "sha512-lwycX3cBMTvcejsHITUgYj6Gy6A7Nh4Q6h9NP4sTHY1ccJlC7yKzDmiShEHsJ16Jf1nKGDEaiHxiltsJEvk0nQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/tar/node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/tar/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/teleport-javascript": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/teleport-javascript/-/teleport-javascript-1.0.0.tgz", - "integrity": "sha512-j1llvWVFyEn/6XIFDfX5LAU43DXe0GCt3NfXDwJ8XpRRMkS+i50SAkonAONBy+vxwPFBd50MFU8a2uj8R/ccLg==", - "dev": true - }, - "node_modules/temp-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-3.0.0.tgz", - "integrity": "sha512-nHc6S/bwIilKHNRgK/3jlhDoIHcp45YgyiwcAk46Tr0LfEqGBVpmiAyuiuxeVE44m3mXnEeVhaipLOEWmH+Njw==", - "engines": { - "node": ">=14.16" - } - }, - "node_modules/tempy": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/tempy/-/tempy-3.1.0.tgz", - "integrity": "sha512-7jDLIdD2Zp0bDe5r3D2qtkd1QOCacylBuL7oa4udvN6v2pqr4+LcCr67C8DR1zkpaZ8XosF5m1yQSabKAW6f2g==", - "dependencies": { - "is-stream": "^3.0.0", - "temp-dir": "^3.0.0", - "type-fest": "^2.12.2", - "unique-string": "^3.0.0" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/tempy/node_modules/is-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", - "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/tempy/node_modules/type-fest": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", - "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", - "engines": { - "node": ">=12.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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/test-exclude/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/text-extensions": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-2.4.0.tgz", - "integrity": "sha512-te/NtwBwfiNRLf9Ijqx3T0nlqZiQ2XrrtBvu+cLL8ZRrGkO0NHTug8MYFKyoSrv/sHTaSKfilUkizV6XhxMJ3g==", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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/thread-stream": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/thread-stream/-/thread-stream-2.4.1.tgz", - "integrity": "sha512-d/Ex2iWd1whipbT681JmTINKw0ZwOUBZm7+Gjs64DHuX34mmw8vJL2bFAaNacaW72zYiTJxSHi5abUuOi5nsfg==", - "dependencies": { - "real-require": "^0.2.0" - } - }, - "node_modules/through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" - }, - "node_modules/timers-ext": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.7.tgz", - "integrity": "sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ==", - "dev": true, - "dependencies": { - "es5-ext": "~0.10.46", - "next-tick": "1" - } - }, - "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==", - "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/toposort-class": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toposort-class/-/toposort-class-1.0.1.tgz", - "integrity": "sha512-OsLcGGbYF3rMjPUf8oKktyvCiUxSbqMMS39m33MAjLTC1DVIH6x3WSt63/M77ihI09+Sdfk1AXvfhCEeUmC7mg==" - }, - "node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" - }, - "node_modules/traverse": { - "version": "0.6.7", - "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.7.tgz", - "integrity": "sha512-/y956gpUo9ZNCb99YjxG7OaslxZWHfCHAUUfshwqOXmxUIvqLjVO581BT+gM59+QV9tFe6/CGG53tsA1Y7RSdg==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/tsconfig-paths": { - "version": "3.15.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", - "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", - "dev": true, - "dependencies": { - "@types/json5": "^0.0.29", - "json5": "^1.0.2", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - } - }, - "node_modules/tsconfig-paths/node_modules/json5": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", - "dev": true, - "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "json5": "lib/cli.js" - } - }, - "node_modules/tsconfig-paths/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==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", - "dependencies": { - "safe-buffer": "^5.0.1" - }, - "engines": { - "node": "*" - } - }, - "node_modules/tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==" - }, - "node_modules/type": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", - "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==", - "dev": true - }, - "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.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "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/typed-array-buffer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz", - "integrity": "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1", - "is-typed-array": "^1.1.10" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/typed-array-byte-length": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz", - "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "has-proto": "^1.0.1", - "is-typed-array": "^1.1.10" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-array-byte-offset": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz", - "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==", - "dev": true, - "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "has-proto": "^1.0.1", - "is-typed-array": "^1.1.10" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-array-length": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", - "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "is-typed-array": "^1.1.9" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==" - }, - "node_modules/typedarray-to-buffer": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", - "dev": true, - "dependencies": { - "is-typedarray": "^1.0.0" - } - }, - "node_modules/typical": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/typical/-/typical-4.0.0.tgz", - "integrity": "sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==", - "engines": { - "node": ">=8" - } - }, - "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/umzug": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/umzug/-/umzug-3.5.0.tgz", - "integrity": "sha512-bL6JjH716l0kg7V2Acrw5UmUgeLxdAZv3drMhKrJCXxEfK/qyM+B5s3ai1BjG1NyEGeXTOkhFIUgkMFo6zqVBg==", - "dependencies": { - "@rushstack/ts-command-line": "^4.12.2", - "emittery": "^0.13.0", - "glob": "^8.0.3", - "pony-cause": "^2.1.4", - "type-fest": "^3.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/umzug/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/umzug/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/umzug/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/umzug/node_modules/type-fest": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.13.1.tgz", - "integrity": "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==", - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/unbox-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", - "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-bigints": "^1.0.2", - "has-symbols": "^1.0.3", - "which-boxed-primitive": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/underscore": { - "version": "1.13.6", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.6.tgz", - "integrity": "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==" - }, - "node_modules/unicode-emoji-modifier-base": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unicode-emoji-modifier-base/-/unicode-emoji-modifier-base-1.0.0.tgz", - "integrity": "sha512-yLSH4py7oFH3oG/9K+XWrz1pSi3dfUrWEnInbxMfArOfc1+33BlGPQtLsOYwvdMy11AwUBetYuaRxSPqgkq+8g==", - "engines": { - "node": ">=4" - } - }, - "node_modules/unicorn-magic": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.1.0.tgz", - "integrity": "sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/unique-filename": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", - "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", - "optional": true, - "dependencies": { - "unique-slug": "^2.0.0" - } - }, - "node_modules/unique-slug": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", - "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", - "optional": true, - "dependencies": { - "imurmurhash": "^0.1.4" - } - }, - "node_modules/unique-string": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-3.0.0.tgz", - "integrity": "sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==", - "dependencies": { - "crypto-random-string": "^4.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/universal-user-agent": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.1.tgz", - "integrity": "sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ==" - }, - "node_modules/universalify": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", - "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", - "dev": true, - "engines": { - "node": ">= 4.0.0" - } - }, - "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.10", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", - "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - } - ], - "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" - }, - "bin": { - "browserslist-lint": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/url-join": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/url-join/-/url-join-5.0.0.tgz", - "integrity": "sha512-n2huDr9h9yzd6exQVnH/jU5mr+Pfx08LRXXZhkLLetAMESRj+anQsTAh940iMrIetKAmry9coFuZQ2jY8/p3WA==", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - } - }, - "node_modules/url-parse": { - "version": "1.5.10", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", - "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", - "dev": true, - "dependencies": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" - } - }, - "node_modules/util": { - "version": "0.10.4", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", - "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", - "dependencies": { - "inherits": "2.0.3" - } - }, - "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/util/node_modules/inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==" - }, - "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": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", - "bin": { - "uuid": "bin/uuid" - } - }, - "node_modules/uvm": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/uvm/-/uvm-2.1.1.tgz", - "integrity": "sha512-BZ5w8adTpNNr+zczOBRpaX/hH8UPKAf7fmCnidrcsqt3bn8KT9bDIfuS7hgRU9RXgiN01su2pwysBONY6w8W5w==", - "dev": true, - "dependencies": { - "flatted": "3.2.6" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/uvm/node_modules/flatted": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.6.tgz", - "integrity": "sha512-0sQoMh9s0BYsm+12Huy/rkKxVu4R1+r96YX5cG44rHV0pQ6iC3Q+mkoMFaGWObMFYQxCVT+ssG1ksneA2MI9KQ==", - "dev": true - }, - "node_modules/validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dependencies": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "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==", - "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/verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", - "engines": [ - "node >=0.6.0" - ], - "dependencies": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, - "node_modules/verror/node_modules/core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==" - }, - "node_modules/version-guard": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/version-guard/-/version-guard-1.1.1.tgz", - "integrity": "sha512-MGQLX89UxmYHgDvcXyjBI0cbmoW+t/dANDppNPrno64rYr8nH4SHSuElQuSYdXGEs0mUzdQe1BY+FhVPNsAmJQ==", - "dev": true, - "engines": { - "node": ">=0.10.48" - } - }, - "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==", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", - "dev": true, - "dependencies": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-builtin-type": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.3.tgz", - "integrity": "sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==", - "dev": true, - "dependencies": { - "function.prototype.name": "^1.1.5", - "has-tostringtag": "^1.0.0", - "is-async-function": "^2.0.0", - "is-date-object": "^1.0.5", - "is-finalizationregistry": "^1.0.2", - "is-generator-function": "^1.0.10", - "is-regex": "^1.1.4", - "is-weakref": "^1.0.2", - "isarray": "^2.0.5", - "which-boxed-primitive": "^1.0.2", - "which-collection": "^1.0.1", - "which-typed-array": "^1.1.9" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-builtin-type/node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true - }, - "node_modules/which-collection": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", - "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", - "dev": true, - "dependencies": { - "is-map": "^2.0.1", - "is-set": "^2.0.1", - "is-weakmap": "^2.0.1", - "is-weakset": "^2.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==", - "dev": true - }, - "node_modules/which-typed-array": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.13.tgz", - "integrity": "sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==", - "dev": true, - "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.4", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/wide-align": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", - "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", - "dependencies": { - "string-width": "^1.0.2 || 2 || 3 || 4" - } - }, - "node_modules/wkx": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/wkx/-/wkx-0.5.0.tgz", - "integrity": "sha512-Xng/d4Ichh8uN4l0FToV/258EjMGU9MGcA0HV2d9B/ZpZB3lqQm7nkOdZdm5GhKtLLhAE7PiVQwN4eN+2YJJUg==", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/word-wrap": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", - "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", - "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", - "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==" - }, - "node_modules/wordwrapjs": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-5.1.0.tgz", - "integrity": "sha512-JNjcULU2e4KJwUNv6CHgI46UvDGitb6dGryHajXTDiLgg1/RiGoPSDw4kZfYnwGtEXf2ZMeIewDQgFGzkCB2Sg==", - "engines": { - "node": ">=12.17" - } - }, - "node_modules/workerpool": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", - "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==", - "dev": true - }, - "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==", - "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/wrap-ansi/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==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/wrap-ansi/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==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/wrap-ansi/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==" - }, - "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": "3.0.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", - "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", - "dev": true, - "dependencies": { - "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" - } - }, - "node_modules/xdg-basedir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", - "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/xml": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/xml/-/xml-1.0.1.tgz", - "integrity": "sha512-huCv9IH9Tcf95zuYCsQraZtWnJvBtLVE0QHMOs8bWyZAFZNDcYjsPq1nEx8jKA9y+Beo9v+7OBPRisQTjinQMw==", - "dev": true - }, - "node_modules/xmlbuilder": { - "version": "15.1.1", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz", - "integrity": "sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==", - "dev": true, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/xregexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-2.0.0.tgz", - "integrity": "sha512-xl/50/Cf32VsGq/1R8jJE5ajH1yMCQkpmoS10QbFZWl2Oor4H0Me64Pu2yxvsRWK3m6soJbmGfzSR7BYmDcWAA==", - "engines": { - "node": "*" - } - }, - "node_modules/xss-clean": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/xss-clean/-/xss-clean-0.1.1.tgz", - "integrity": "sha512-On99yydxoAEkHpraR7Wjg9cD6UmKfbtH2HXO1it2djid32osHL7Qr8bIu+dGYoOeKzf3ZszLfz1gwR/D7whZ2A==", - "dependencies": { - "xss-filters": "1.2.6" - } - }, - "node_modules/xss-filters": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/xss-filters/-/xss-filters-1.2.6.tgz", - "integrity": "sha512-uqgwZRpVJCDfHsRX9lDrkPyCitQYzPklmLSbajJncATZKAUd1tF1x9y2VyPNFMv8SsSWed80xorSS5qGpw3WiA==" - }, - "node_modules/xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "engines": { - "node": ">=0.4" - } - }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "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": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/yargs-parser": { - "version": "20.2.4", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", - "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", - "engines": { - "node": ">=10" - } - }, - "node_modules/yargs-unparser": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", - "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", - "dev": true, - "dependencies": { - "camelcase": "^6.0.0", - "decamelize": "^4.0.0", - "flat": "^5.0.2", - "is-plain-obj": "^2.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/yargs-unparser/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/yargs-unparser/node_modules/decamelize": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", - "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/yargs-unparser/node_modules/is-plain-obj": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", - "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "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" - } - } - } -} From f835f806873eaa16adea60c0579904f466ebbd34 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Tue, 2 Jan 2024 17:20:14 +0300 Subject: [PATCH 009/146] pack --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 0bfde5f01..dc5f54cf5 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "iofogcontroller", - "version": "3.0.4", + "version": "3.0.5", "description": "ioFog Controller project for Eclipse IoFog @ iofog.org \\nCopyright (c) 2023 Datasance Teknoloji A.S.", "main": "./src/main.js", "author": "Emirhan Durmus", From 5a2b3abfe18822e1792f7a80abf81247fd37da48 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Tue, 2 Jan 2024 17:55:56 +0300 Subject: [PATCH 010/146] pack --- .github/workflows/ci.yaml | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index fda904366..72c9aa4a2 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -165,7 +165,7 @@ jobs: - name: npm pack with version from package version run: | - npm --no-git-tag-version version ${{ steps.version.outputs.pkg_version }} + npm pack npm publish diff --git a/package.json b/package.json index dc5f54cf5..0bfde5f01 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "iofogcontroller", - "version": "3.0.5", + "version": "3.0.4", "description": "ioFog Controller project for Eclipse IoFog @ iofog.org \\nCopyright (c) 2023 Datasance Teknoloji A.S.", "main": "./src/main.js", "author": "Emirhan Durmus", From 5160f05f7cbd4b71f204bc40b989b91b9af2abfd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Tue, 2 Jan 2024 17:57:05 +0300 Subject: [PATCH 011/146] workflow --- .github/workflows/ci.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 72c9aa4a2..fda904366 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -165,7 +165,7 @@ jobs: - name: npm pack with version from package version run: | - + npm --no-git-tag-version version ${{ steps.version.outputs.pkg_version }} npm pack npm publish From cf70e3aac3115cfe7e69932a329877ec589e6a03 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Tue, 2 Jan 2024 18:02:47 +0300 Subject: [PATCH 012/146] workflow --- .github/workflows/ci.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index fda904366..72c9aa4a2 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -165,7 +165,7 @@ jobs: - name: npm pack with version from package version run: | - npm --no-git-tag-version version ${{ steps.version.outputs.pkg_version }} + npm pack npm publish From 7f875e98b9da1a355601722de51eeb177ac37a18 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Tue, 2 Jan 2024 18:20:27 +0300 Subject: [PATCH 013/146] publish config --- .npmrc | 2 +- package.json | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/.npmrc b/.npmrc index 25346e481..07627cd5c 100644 --- a/.npmrc +++ b/.npmrc @@ -1,2 +1,2 @@ //npm.pkg.github.com/:_authToken=PAT -@NAMESPACE:registry=https://npm.pkg.github.com \ No newline at end of file +@NAMESPACE:registry=https://npm.pkg.github.com/Datasance \ No newline at end of file diff --git a/package.json b/package.json index 0bfde5f01..183a51bc3 100644 --- a/package.json +++ b/package.json @@ -24,6 +24,9 @@ "type": "git", "url": "https://github.com/datasance/Controller" }, + "publishConfig": { + "registry": "https://npm.pkg.github.com/Datasance" + }, "scripts": { "prestart": "npm run lint", "start": "node scripts/scripts-api.js start", From 81d7daa0353647896595abd39651cd50e4dc5c12 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Tue, 2 Jan 2024 18:45:57 +0300 Subject: [PATCH 014/146] npmrc --- .npmrc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.npmrc b/.npmrc index 07627cd5c..597b2416a 100644 --- a/.npmrc +++ b/.npmrc @@ -1,2 +1,2 @@ -//npm.pkg.github.com/:_authToken=PAT -@NAMESPACE:registry=https://npm.pkg.github.com/Datasance \ No newline at end of file +registry=https://npm.pkg.github.com/Datasance +//npm.pkg.github.com/:_authToken=PAT \ No newline at end of file From 7a8a3149551453ee6dc99e8f442b8882dba17ac1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Tue, 2 Jan 2024 18:50:28 +0300 Subject: [PATCH 015/146] npmrc --- .npmrc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.npmrc b/.npmrc index 597b2416a..a6e95c091 100644 --- a/.npmrc +++ b/.npmrc @@ -1,2 +1,2 @@ -registry=https://npm.pkg.github.com/Datasance +registry=https://npm.pkg.github.com/ //npm.pkg.github.com/:_authToken=PAT \ No newline at end of file From 2403f1a1ad89072283cc2cbc06e6c8440c1f2bf7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Tue, 2 Jan 2024 18:52:25 +0300 Subject: [PATCH 016/146] npmrc --- .npmrc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.npmrc b/.npmrc index a6e95c091..07627cd5c 100644 --- a/.npmrc +++ b/.npmrc @@ -1,2 +1,2 @@ -registry=https://npm.pkg.github.com/ -//npm.pkg.github.com/:_authToken=PAT \ No newline at end of file +//npm.pkg.github.com/:_authToken=PAT +@NAMESPACE:registry=https://npm.pkg.github.com/Datasance \ No newline at end of file From f8c4b24bb5376c6d68a79c6fedf8126bd1c4cc54 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Tue, 2 Jan 2024 19:02:06 +0300 Subject: [PATCH 017/146] workflow --- .github/workflows/ci.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 72c9aa4a2..eea71ce21 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -165,7 +165,7 @@ jobs: - name: npm pack with version from package version run: | - + npm login --scope=@NAMESPACE --auth-type=legacy --registry=https://npm.pkg.github.com -u ${{ github.actor }} -p ${{ secrets.PAT }} npm pack npm publish From d63ded26cc01282c9820de456930a51f5772b8ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Tue, 2 Jan 2024 23:56:00 +0300 Subject: [PATCH 018/146] workflow --- .github/workflows/ci.yaml | 4 ++-- .npmrc | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index eea71ce21..4eff1fbe0 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -165,9 +165,9 @@ jobs: - name: npm pack with version from package version run: | - npm login --scope=@NAMESPACE --auth-type=legacy --registry=https://npm.pkg.github.com -u ${{ github.actor }} -p ${{ secrets.PAT }} + npm pack - npm publish + npm publish --registry=https://npm.pkg.github.com/ - name: Login to Github Container Registry uses: docker/login-action@v2 diff --git a/.npmrc b/.npmrc index 07627cd5c..ac38f6281 100644 --- a/.npmrc +++ b/.npmrc @@ -1,2 +1,2 @@ //npm.pkg.github.com/:_authToken=PAT -@NAMESPACE:registry=https://npm.pkg.github.com/Datasance \ No newline at end of file +@NAMESPACE:registry=https://npm.pkg.github.com/ \ No newline at end of file From 300b509ffa161be0ad3762423b6e29f198fc5d46 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Wed, 3 Jan 2024 00:04:35 +0300 Subject: [PATCH 019/146] registry --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 183a51bc3..d533b8231 100644 --- a/package.json +++ b/package.json @@ -22,10 +22,10 @@ "homepage": "https://www.datasance.com", "repository": { "type": "git", - "url": "https://github.com/datasance/Controller" + "url": "https://github.com/Datasance/Controller" }, "publishConfig": { - "registry": "https://npm.pkg.github.com/Datasance" + "registry": "https://npm.pkg.github.com/" }, "scripts": { "prestart": "npm run lint", From 8c17f29ef7321b37ecee1b389bb075d6d9d12902 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Wed, 3 Jan 2024 00:18:41 +0300 Subject: [PATCH 020/146] pkg repo edit --- .npmrc | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.npmrc b/.npmrc index ac38f6281..11cf9fea1 100644 --- a/.npmrc +++ b/.npmrc @@ -1,2 +1,2 @@ //npm.pkg.github.com/:_authToken=PAT -@NAMESPACE:registry=https://npm.pkg.github.com/ \ No newline at end of file +@Datasance:registry=https://npm.pkg.github.com/ \ No newline at end of file diff --git a/package.json b/package.json index d533b8231..0def6cf1d 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "name": "iofogcontroller", + "name": "@datasance/iofogcontroller", "version": "3.0.4", "description": "ioFog Controller project for Eclipse IoFog @ iofog.org \\nCopyright (c) 2023 Datasance Teknoloji A.S.", "main": "./src/main.js", From 6eb4f13aba54a4fd7d4a130b14f1ff6a3e09be32 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Wed, 3 Jan 2024 00:36:01 +0300 Subject: [PATCH 021/146] npm publish --- .github/workflows/ci.yaml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 4eff1fbe0..d9ac0b3f2 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -165,8 +165,6 @@ jobs: - name: npm pack with version from package version run: | - - npm pack npm publish --registry=https://npm.pkg.github.com/ - name: Login to Github Container Registry From 95eba20fd67bb5df76833736c544c7699b0d86e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Wed, 3 Jan 2024 01:03:56 +0300 Subject: [PATCH 022/146] workflow and dockerfile --- .github/workflows/ci.yaml | 31 ++++++++++++++++++++----------- Dockerfile.dev | 4 +++- Dockerfile.rel | 5 ++++- 3 files changed, 27 insertions(+), 13 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index d9ac0b3f2..a5da53947 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -125,15 +125,7 @@ jobs: pull-requests: write repository-projects: write security-events: write - statuses: write - strategy: - matrix: - platform: - - linux/amd64 - - linux/386 - - linux/arm/v6 - - linux/arm/v7 - - linux/arm64 + statuses: write name: Publish Controller steps: - uses: actions/checkout@v3 @@ -165,8 +157,26 @@ jobs: - name: npm pack with version from package version run: | + npm pack npm publish --registry=https://npm.pkg.github.com/ + - name: 'Get Previous tag' + id: previoustag + uses: "WyriHaximus/github-action-get-previous-tag@v1" + with: + fallback: 0.0.0 + - name: Set image tag + shell: bash + id: tags + run: | + if [[ ${{ github.ref_name }} =~ ^v.* ]] ; then + VERSION=${{ github.ref_name }} + echo "VERSION=${VERSION:1}" >> "${GITHUB_OUTPUT}" + else + VERSION=${{ steps.previoustag.outputs.tag }} + echo "VERSION=${VERSION:1}-${{ github.run_number }}" >> "${GITHUB_OUTPUT}" + fi + - name: Login to Github Container Registry uses: docker/login-action@v2 with: @@ -179,9 +189,8 @@ jobs: id: build_push_ghcr with: file: Dockerfile.dev - platforms: ${{ matrix.platforms }} push: true - outputs: type=image,name=target,annotation-index.org.opencontainers.image.description=Proxy + outputs: type=image,name=target,annotation-index.org.opencontainers.image.description=Controller tags: | ghcr.io/datasance/${{ env.IMAGE_NAME }}:${{ steps.tags.outputs.VERSION }} ghcr.io/datasance/${{ env.IMAGE_NAME }}:latest diff --git a/Dockerfile.dev b/Dockerfile.dev index 4b22594b8..6668bda69 100644 --- a/Dockerfile.dev +++ b/Dockerfile.dev @@ -36,5 +36,7 @@ RUN npm i -g /tmp/iofog-controller.tgz && \ rm -rf /tmp/iofog-controller.tgz && \ iofog-controller config dev-mode --on # RUN sudo rm -rf /usr/local/lib/node_modules/iofogcontroller/src/data/sqlite_files - +LABEL org.opencontainers.image.description controller +LABEL org.opencontainers.image.source=https://github.com/datasance/controller +LABEL org.opencontainers.image.licenses=EPL2.0 CMD [ "node", "/usr/local/lib/node_modules/@iofog/iofogcontroller/src/server.js" ] diff --git a/Dockerfile.rel b/Dockerfile.rel index be0bc0a7b..554fb3f86 100644 --- a/Dockerfile.rel +++ b/Dockerfile.rel @@ -30,11 +30,14 @@ ENV PYTHONUNBUFFERED=1 RUN apk add --update --no-cache python3 && ln -sf python3 /usr/bin/python RUN python3 -m ensurepip RUN pip3 install --no-cache --upgrade pip setuptools - +LABEL org.opencontainers.image.description controller +LABEL org.opencontainers.image.source=https://github.com/datasance/controller +LABEL org.opencontainers.image.licenses=EPL2.0 COPY --from=builder /tmp/iofog-iofogcontroller-*.tgz /tmp/iofog-controller.tgz RUN npm i -g /tmp/iofog-controller.tgz && \ rm -rf /tmp/iofog-controller.tgz && \ iofog-controller config dev-mode --on + CMD [ "node", "/usr/local/lib/node_modules/@iofog/iofogcontroller/src/server.js" ] From d3a9e5c9ad097fa0e14710fc59253f24d634c716 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Wed, 3 Jan 2024 01:48:41 +0300 Subject: [PATCH 023/146] dockerfile update --- Dockerfile.dev | 6 +++--- Dockerfile.rel | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Dockerfile.dev b/Dockerfile.dev index 6668bda69..460e6c51f 100644 --- a/Dockerfile.dev +++ b/Dockerfile.dev @@ -16,7 +16,7 @@ RUN npm version $PKG_VERSION --allow-same-version --no-git-tag-version RUN npm pack -FROM node:hydrogen-alpine3.19 +FROM node:hydrogen-alpine3.17 RUN apk add sudo logrotate g++ make @@ -30,7 +30,7 @@ RUN apk add --update --no-cache python3 && ln -sf python3 /usr/bin/python RUN python3 -m ensurepip RUN pip3 install --no-cache --upgrade pip setuptools -COPY --from=builder /tmp/iofog-iofogcontroller-*.tgz /tmp/iofog-controller.tgz +COPY --from=builder /tmp/datasance-iofogcontroller-*.tgz /tmp/iofog-controller.tgz RUN npm i -g /tmp/iofog-controller.tgz && \ rm -rf /tmp/iofog-controller.tgz && \ @@ -39,4 +39,4 @@ RUN npm i -g /tmp/iofog-controller.tgz && \ LABEL org.opencontainers.image.description controller LABEL org.opencontainers.image.source=https://github.com/datasance/controller LABEL org.opencontainers.image.licenses=EPL2.0 -CMD [ "node", "/usr/local/lib/node_modules/@iofog/iofogcontroller/src/server.js" ] +CMD [ "node", "/usr/local/lib/node_modules/@datasance/iofogcontroller/src/server.js" ] diff --git a/Dockerfile.rel b/Dockerfile.rel index 554fb3f86..62df6f6b5 100644 --- a/Dockerfile.rel +++ b/Dockerfile.rel @@ -19,7 +19,7 @@ RUN npm version $PKG_VERSION --allow-same-version RUN npm pack -FROM node:hydrogen-alpine3.19 +FROM node:hydrogen-alpine3.17 RUN apk add sudo logrotate g++ make @@ -33,11 +33,11 @@ RUN pip3 install --no-cache --upgrade pip setuptools LABEL org.opencontainers.image.description controller LABEL org.opencontainers.image.source=https://github.com/datasance/controller LABEL org.opencontainers.image.licenses=EPL2.0 -COPY --from=builder /tmp/iofog-iofogcontroller-*.tgz /tmp/iofog-controller.tgz +COPY --from=builder /tmp/datasance-iofogcontroller-*.tgz /tmp/iofog-controller.tgz RUN npm i -g /tmp/iofog-controller.tgz && \ rm -rf /tmp/iofog-controller.tgz && \ iofog-controller config dev-mode --on -CMD [ "node", "/usr/local/lib/node_modules/@iofog/iofogcontroller/src/server.js" ] +CMD [ "node", "/usr/local/lib/node_modules/@datasance/iofogcontroller/src/server.js" ] From 1e4c05515a1e8e60d80494515c86f64bec6e663c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Fri, 26 Jan 2024 20:50:17 +0300 Subject: [PATCH 024/146] add subscription_key to userprofile --- docs/swagger.yaml | 11 +++++++++++ src/cli/user.js | 7 +++++++ src/controllers/user-controller.js | 6 ++++-- src/data/managers/user-manager.js | 8 ++++++++ src/data/migrations/20180930155645-create-user.js | 7 ++++++- src/data/models/user.js | 7 ++++++- src/schemas/user.js | 11 +++++++---- src/services/user-service.js | 9 ++++++--- 8 files changed, 55 insertions(+), 11 deletions(-) diff --git a/docs/swagger.yaml b/docs/swagger.yaml index 4c055721d..3db6fb94d 100755 --- a/docs/swagger.yaml +++ b/docs/swagger.yaml @@ -5322,6 +5322,7 @@ components: - firstName - lastName - email + - subscription_key - emailActivated properties: userId: @@ -5332,6 +5333,8 @@ components: type: string email: type: string + subscription_key: + type: string emailActivated: type: boolean UserProfileDetailsResponse: @@ -5340,6 +5343,7 @@ components: - firstName - lastName - email + - subscription_key properties: firstName: type: string @@ -5347,6 +5351,8 @@ components: type: string email: type: string + subscription_key: + type: string UserProfileUpdatesRequest: type: object properties: @@ -5354,6 +5360,8 @@ components: type: string lastName: type: string + subscription_key: + type: string UserActivateRequest: type: object required: @@ -5392,6 +5400,7 @@ components: - lastName - email - password + - subscription_key properties: firstName: type: string @@ -5401,6 +5410,8 @@ components: type: string password: type: string + subscription_key: + type: string VersionCommandResponse: type: object required: diff --git a/src/cli/user.js b/src/cli/user.js index 252fa44c7..273b8b1ee 100644 --- a/src/cli/user.js +++ b/src/cli/user.js @@ -60,6 +60,13 @@ class User extends BaseCLIHandler { description: 'User\'s password', group: [constants.CMD_ADD, constants.CMD_UPDATE] }, + { + name: 'subscription_key', + alias: 's', + type: String, + description: 'User\'s susbcription_key', + group: [constants.CMD_ADD, constants.CMD_UPDATE] + }, { name: 'force', alias: 'F', diff --git a/src/controllers/user-controller.js b/src/controllers/user-controller.js index 939c2b896..e007ac59b 100644 --- a/src/controllers/user-controller.js +++ b/src/controllers/user-controller.js @@ -27,7 +27,8 @@ const userSignupEndPoint = async function (req) { firstName: user.firstName, lastName: user.lastName, email: user.email, - password: encryptedPassword + password: encryptedPassword, + subscription_key: user.subscription_key } return UserService.signUp(newUser, false) } @@ -64,7 +65,8 @@ const getUserProfileEndPoint = async function (req, user) { return { firstName: user.firstName, lastName: user.lastName, - email: user.email + email: user.email, + subscription_key: user.subscription_key } } diff --git a/src/data/managers/user-manager.js b/src/data/managers/user-manager.js index 78d2b5f6e..d6095ad2f 100644 --- a/src/data/managers/user-manager.js +++ b/src/data/managers/user-manager.js @@ -78,6 +78,14 @@ class UserManager extends BaseManager { }, transaction) } + updateSubscriptionKey (userId, newSubscriptionKey, transaction) { + return this.update({ + id: userId + }, { + subscription_key: newSubscriptionKey + }, transaction) + } + updateTempPassword (userId, tempPassword, transaction) { return this.update({ id: userId diff --git a/src/data/migrations/20180930155645-create-user.js b/src/data/migrations/20180930155645-create-user.js index 6a1a686d9..33501cb05 100644 --- a/src/data/migrations/20180930155645-create-user.js +++ b/src/data/migrations/20180930155645-create-user.js @@ -41,7 +41,12 @@ module.exports = { type: Sequelize.BOOLEAN, field: 'email_activated', defaultValue: false - } + }, + subscriptionKey: { + type: DataTypes.STRING(100), + field: 'subscription_key', + defaultValue: '' + } }) }, down: (queryInterface, Sequelize) => { diff --git a/src/data/models/user.js b/src/data/models/user.js index 48a38a4f1..22abff638 100644 --- a/src/data/models/user.js +++ b/src/data/models/user.js @@ -40,7 +40,12 @@ module.exports = (sequelize, DataTypes) => { type: DataTypes.BOOLEAN, field: 'email_activated', defaultValue: false - } + }, + subscriptionKey: { + type: DataTypes.STRING(100), + field: 'subscription_key', + defaultValue: '' + } }, { tableName: 'Users', timestamps: false, diff --git a/src/schemas/user.js b/src/schemas/user.js index 06e60e036..f4afb5eab 100644 --- a/src/schemas/user.js +++ b/src/schemas/user.js @@ -22,9 +22,10 @@ const signUp = { 'pattern': '^(([^<>()\\[\\]\\\\.,;:\\s@"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@"]+)*)|(".+"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}' + '\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$' }, - 'password': { 'type': 'string', 'minLength': 8 } + 'password': { 'type': 'string', 'minLength': 8 }, + 'subscription_key': { 'type': 'string', 'minLength': 15 } }, - 'required': ['email', 'password', 'firstName', 'lastName'], + 'required': ['email', 'password', 'firstName', 'lastName', 'subscription_key'], 'additionalProperties': true } @@ -82,7 +83,8 @@ const updateUserProfile = { 'type': 'object', 'properties': { 'firstName': { 'type': 'string', 'minLength': 3 }, - 'lastName': { 'type': 'string', 'minLength': 3 } + 'lastName': { 'type': 'string', 'minLength': 3 }, + 'subscription_key': { 'type': 'string', 'minLength': 15 } }, 'required': [], 'additionalProperties': true @@ -94,7 +96,8 @@ const updateUserProfileCLI = { 'properties': { 'firstName': { 'type': 'string', 'minLength': 3 }, 'lastName': { 'type': 'string', 'minLength': 3 }, - 'password': { 'type': 'string', 'minLength': 8 } + 'password': { 'type': 'string', 'minLength': 8 }, + 'subscription_key': { 'type': 'string', 'minLength': 15 } }, 'required': [], 'additionalProperties': true diff --git a/src/services/user-service.js b/src/services/user-service.js index 777fe3324..2431c10f6 100644 --- a/src/services/user-service.js +++ b/src/services/user-service.js @@ -141,11 +141,13 @@ const updateUserDetails = async function (user, profileData, isCLI, transaction) ? { firstName: profileData.firstName, lastName: profileData.lastName, - password: password + password: password, + subscrtiption_key: profileData.subscrtiption_key } : { firstName: profileData.firstName, - lastName: profileData.lastName + lastName: profileData.lastName, + subscrtiption_key: profileData.subscrtiption_key } updateObject = AppHelper.deleteUndefinedFields(updateObject) @@ -155,7 +157,8 @@ const updateUserDetails = async function (user, profileData, isCLI, transaction) return { firstName: updateObject.firstName, lastName: updateObject.lastName, - email: user.email + email: user.email, + subscrtiption_key: profileData.subscrtiption_key } } From 5b4e629096b5e48b16ed40f88e822c6a4cfc1a7c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Fri, 26 Jan 2024 21:27:43 +0300 Subject: [PATCH 025/146] makefile and create-user data type fix --- Makefile | 14 ++++++++++++++ src/data/migrations/20180930155645-create-user.js | 5 +++-- 2 files changed, 17 insertions(+), 2 deletions(-) create mode 100644 Makefile diff --git a/Makefile b/Makefile new file mode 100644 index 000000000..a8960fddf --- /dev/null +++ b/Makefile @@ -0,0 +1,14 @@ +DOCKER_IMAGE_VERSION=1.0 +DOCKER_IMAGE_NAME=emirhandurmus/controller +DOCKER_IMAGE_TAGNAME=$(DOCKER_IMAGE_NAME):$(DOCKER_IMAGE_VERSION) + +default: build + +build: + docker build -t $(DOCKER_IMAGE_TAGNAME) -f Dockerfile.dev . + docker tag $(DOCKER_IMAGE_TAGNAME) $(DOCKER_IMAGE_NAME):latest + +push:build + docker push $(DOCKER_IMAGE_TAGNAME) + docker push $(DOCKER_IMAGE_NAME) + diff --git a/src/data/migrations/20180930155645-create-user.js b/src/data/migrations/20180930155645-create-user.js index 33501cb05..397ab3df7 100644 --- a/src/data/migrations/20180930155645-create-user.js +++ b/src/data/migrations/20180930155645-create-user.js @@ -42,8 +42,9 @@ module.exports = { field: 'email_activated', defaultValue: false }, - subscriptionKey: { - type: DataTypes.STRING(100), + SubscriptionKey: { + /* eslint-disable new-cap */ + type: Sequelize.STRING(100), field: 'subscription_key', defaultValue: '' } From de613807a54a245d33e7c44bb8c0b885a816d811 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Fri, 26 Jan 2024 23:52:36 +0300 Subject: [PATCH 026/146] commit --- src/data/migrations/20180930155645-create-user.js | 2 +- src/data/models/user.js | 2 +- test/postman_collection.json | 8 ++++---- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/data/migrations/20180930155645-create-user.js b/src/data/migrations/20180930155645-create-user.js index 397ab3df7..283cf6df8 100644 --- a/src/data/migrations/20180930155645-create-user.js +++ b/src/data/migrations/20180930155645-create-user.js @@ -47,7 +47,7 @@ module.exports = { type: Sequelize.STRING(100), field: 'subscription_key', defaultValue: '' - } + } }) }, down: (queryInterface, Sequelize) => { diff --git a/src/data/models/user.js b/src/data/models/user.js index 22abff638..8081a5f4a 100644 --- a/src/data/models/user.js +++ b/src/data/models/user.js @@ -45,7 +45,7 @@ module.exports = (sequelize, DataTypes) => { type: DataTypes.STRING(100), field: 'subscription_key', defaultValue: '' - } + } }, { tableName: 'Users', timestamps: false, diff --git a/test/postman_collection.json b/test/postman_collection.json index fae782fa3..f5627f641 100644 --- a/test/postman_collection.json +++ b/test/postman_collection.json @@ -20,7 +20,7 @@ "", "var data = JSON.parse(responseBody);", "", - "tests[\"Response validation passed\"] = data.hasOwnProperty('userId') && data.firstName && data.lastName && data.email && data.hasOwnProperty('emailActivated');" + "tests[\"Response validation passed\"] = data.hasOwnProperty('userId') && data.firstName && data.lastName && data.email && data.subscription_key && data.hasOwnProperty('emailActivated');" ], "type": "text/javascript" } @@ -36,7 +36,7 @@ ], "body": { "mode": "raw", - "raw": "{\n \"firstName\": \"John\",\n \"lastName\": \"Doe\",\n \"email\": \"user@domain.com\",\n \"password\": \"#Bugs4Fun\"\n}" + "raw": "{\n \"firstName\": \"John\",\n \"lastName\": \"Doe\",\n \"email\": \"user@domain.com\",\n \"password\": \"#Bugs4Fun\",\n \"subscription-key\": \"xxxx-xxxx-xxxx-xxxx\"\n}" }, "url": { "raw": "{{host}}/api/v3/user/signup", @@ -282,7 +282,7 @@ "", "var data = JSON.parse(responseBody);", "", - "tests[\"Response validation passed\"] = data.firstName && data.lastName && data.email;" + "tests[\"Response validation passed\"] = data.firstName && data.lastName && data.email && data.subscription_key;" ], "type": "text/javascript" } @@ -362,7 +362,7 @@ "", "var data = JSON.parse(responseBody);", "", - "tests[\"Response validation passed\"] = data.firstName && data.lastName && data.email;" + "tests[\"Response validation passed\"] = data.firstName && data.lastName && data.email && data.subscription_key;" ], "type": "text/javascript" } From 7912ced84bc7b0380f69ba8e027c83e0306472af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Sat, 27 Jan 2024 14:26:10 +0300 Subject: [PATCH 027/146] subscriptionKey modification --- docs/swagger.json | 2 +- docs/swagger.yaml | 16 ++--- src/cli/user.js | 4 +- src/controllers/user-controller.js | 4 +- src/data/managers/user-manager.js | 8 --- .../migrations/20180930155645-create-user.js | 4 +- src/data/models/user.js | 2 +- src/schemas/user.js | 8 +-- src/services/user-service.js | 7 ++- test/postman_collection.json | 62 +++++++++---------- 10 files changed, 55 insertions(+), 62 deletions(-) diff --git a/docs/swagger.json b/docs/swagger.json index 3e57c5ac5..283fa21f1 100644 --- a/docs/swagger.json +++ b/docs/swagger.json @@ -1,5 +1,5 @@ { - "swagger" : "3.0.0", + "openapi" : "3.0.0", "info" : { "version" : "3.0.0", "title" : "ioFog Controller" diff --git a/docs/swagger.yaml b/docs/swagger.yaml index 3db6fb94d..6069a1511 100755 --- a/docs/swagger.yaml +++ b/docs/swagger.yaml @@ -1,4 +1,4 @@ -swagger: "3.0.0" +openapi: "3.0.0" info: version: 3.0.0 title: ioFog Controller @@ -5322,7 +5322,7 @@ components: - firstName - lastName - email - - subscription_key + - subscriptionKey - emailActivated properties: userId: @@ -5333,7 +5333,7 @@ components: type: string email: type: string - subscription_key: + subscriptionKey: type: string emailActivated: type: boolean @@ -5343,7 +5343,7 @@ components: - firstName - lastName - email - - subscription_key + - subscriptionKey properties: firstName: type: string @@ -5351,7 +5351,7 @@ components: type: string email: type: string - subscription_key: + subscriptionKey: type: string UserProfileUpdatesRequest: type: object @@ -5360,7 +5360,7 @@ components: type: string lastName: type: string - subscription_key: + subscriptionKey: type: string UserActivateRequest: type: object @@ -5400,7 +5400,7 @@ components: - lastName - email - password - - subscription_key + - subscriptionKey properties: firstName: type: string @@ -5410,7 +5410,7 @@ components: type: string password: type: string - subscription_key: + subscriptionKey: type: string VersionCommandResponse: type: object diff --git a/src/cli/user.js b/src/cli/user.js index 273b8b1ee..fdd0ad6e3 100644 --- a/src/cli/user.js +++ b/src/cli/user.js @@ -61,10 +61,10 @@ class User extends BaseCLIHandler { group: [constants.CMD_ADD, constants.CMD_UPDATE] }, { - name: 'subscription_key', + name: 'subscriptionKey', alias: 's', type: String, - description: 'User\'s susbcription_key', + description: 'User\'s subscriptionKey', group: [constants.CMD_ADD, constants.CMD_UPDATE] }, { diff --git a/src/controllers/user-controller.js b/src/controllers/user-controller.js index e007ac59b..de0db5059 100644 --- a/src/controllers/user-controller.js +++ b/src/controllers/user-controller.js @@ -28,7 +28,7 @@ const userSignupEndPoint = async function (req) { lastName: user.lastName, email: user.email, password: encryptedPassword, - subscription_key: user.subscription_key + subscriptionKey: user.subscriptionKey } return UserService.signUp(newUser, false) } @@ -66,7 +66,7 @@ const getUserProfileEndPoint = async function (req, user) { firstName: user.firstName, lastName: user.lastName, email: user.email, - subscription_key: user.subscription_key + subscriptionKey: user.subscriptionKey } } diff --git a/src/data/managers/user-manager.js b/src/data/managers/user-manager.js index d6095ad2f..78d2b5f6e 100644 --- a/src/data/managers/user-manager.js +++ b/src/data/managers/user-manager.js @@ -78,14 +78,6 @@ class UserManager extends BaseManager { }, transaction) } - updateSubscriptionKey (userId, newSubscriptionKey, transaction) { - return this.update({ - id: userId - }, { - subscription_key: newSubscriptionKey - }, transaction) - } - updateTempPassword (userId, tempPassword, transaction) { return this.update({ id: userId diff --git a/src/data/migrations/20180930155645-create-user.js b/src/data/migrations/20180930155645-create-user.js index 283cf6df8..d1d119d5c 100644 --- a/src/data/migrations/20180930155645-create-user.js +++ b/src/data/migrations/20180930155645-create-user.js @@ -42,10 +42,10 @@ module.exports = { field: 'email_activated', defaultValue: false }, - SubscriptionKey: { + subscriptionKey: { /* eslint-disable new-cap */ type: Sequelize.STRING(100), - field: 'subscription_key', + field: 'subscriptionKey', defaultValue: '' } }) diff --git a/src/data/models/user.js b/src/data/models/user.js index 8081a5f4a..acd0a827f 100644 --- a/src/data/models/user.js +++ b/src/data/models/user.js @@ -43,7 +43,7 @@ module.exports = (sequelize, DataTypes) => { }, subscriptionKey: { type: DataTypes.STRING(100), - field: 'subscription_key', + field: 'subscriptionKey', defaultValue: '' } }, { diff --git a/src/schemas/user.js b/src/schemas/user.js index f4afb5eab..d65fe9d58 100644 --- a/src/schemas/user.js +++ b/src/schemas/user.js @@ -23,9 +23,9 @@ const signUp = { '\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$' }, 'password': { 'type': 'string', 'minLength': 8 }, - 'subscription_key': { 'type': 'string', 'minLength': 15 } + 'subscriptionKey': { 'type': 'string', 'minLength': 15 } }, - 'required': ['email', 'password', 'firstName', 'lastName', 'subscription_key'], + 'required': ['email', 'password', 'firstName', 'lastName'], 'additionalProperties': true } @@ -84,7 +84,7 @@ const updateUserProfile = { 'properties': { 'firstName': { 'type': 'string', 'minLength': 3 }, 'lastName': { 'type': 'string', 'minLength': 3 }, - 'subscription_key': { 'type': 'string', 'minLength': 15 } + 'subscriptionKey': { 'type': 'string', 'minLength': 15 } }, 'required': [], 'additionalProperties': true @@ -97,7 +97,7 @@ const updateUserProfileCLI = { 'firstName': { 'type': 'string', 'minLength': 3 }, 'lastName': { 'type': 'string', 'minLength': 3 }, 'password': { 'type': 'string', 'minLength': 8 }, - 'subscription_key': { 'type': 'string', 'minLength': 15 } + 'subscriptionKey': { 'type': 'string', 'minLength': 15 } }, 'required': [], 'additionalProperties': true diff --git a/src/services/user-service.js b/src/services/user-service.js index 2431c10f6..f500ea9a0 100644 --- a/src/services/user-service.js +++ b/src/services/user-service.js @@ -142,12 +142,12 @@ const updateUserDetails = async function (user, profileData, isCLI, transaction) firstName: profileData.firstName, lastName: profileData.lastName, password: password, - subscrtiption_key: profileData.subscrtiption_key + subscriptionKey: profileData.subscriptionKey } : { firstName: profileData.firstName, lastName: profileData.lastName, - subscrtiption_key: profileData.subscrtiption_key + subscriptionKey: profileData.subscriptionKey } updateObject = AppHelper.deleteUndefinedFields(updateObject) @@ -158,7 +158,7 @@ const updateUserDetails = async function (user, profileData, isCLI, transaction) firstName: updateObject.firstName, lastName: updateObject.lastName, email: user.email, - subscrtiption_key: profileData.subscrtiption_key + subscriptionKey: profileData.subscriptionKey } } @@ -312,6 +312,7 @@ async function _handleCreateUser (user, isEmailActivationEnabled, transaction) { firstName: newUser.firstName, lastName: newUser.lastName, email: newUser.email, + subscriptionKey: newUser.subscriptionKey, emailActivated: user.emailActivated } } diff --git a/test/postman_collection.json b/test/postman_collection.json index f5627f641..2cd28d63e 100644 --- a/test/postman_collection.json +++ b/test/postman_collection.json @@ -20,7 +20,7 @@ "", "var data = JSON.parse(responseBody);", "", - "tests[\"Response validation passed\"] = data.hasOwnProperty('userId') && data.firstName && data.lastName && data.email && data.subscription_key && data.hasOwnProperty('emailActivated');" + "tests[\"Response validation passed\"] = data.hasOwnProperty('userId') && data.firstName && data.lastName && data.email && data.subscriptionKey && data.hasOwnProperty('emailActivated');" ], "type": "text/javascript" } @@ -36,7 +36,7 @@ ], "body": { "mode": "raw", - "raw": "{\n \"firstName\": \"John\",\n \"lastName\": \"Doe\",\n \"email\": \"user@domain.com\",\n \"password\": \"#Bugs4Fun\",\n \"subscription-key\": \"xxxx-xxxx-xxxx-xxxx\"\n}" + "raw": "{\n \"firstName\": \"John\",\n \"lastName\": \"Doe\",\n \"email\": \"user@domain.com\",\n \"password\": \"#Bugs4Fun\",\n \"subscriptionKey\": \"xxxx-xxxx-xxxx-xxxx\"\n}" }, "url": { "raw": "{{host}}/api/v3/user/signup", @@ -282,7 +282,7 @@ "", "var data = JSON.parse(responseBody);", "", - "tests[\"Response validation passed\"] = data.firstName && data.lastName && data.email && data.subscription_key;" + "tests[\"Response validation passed\"] = data.firstName && data.lastName && data.email && data.subscriptionKey;" ], "type": "text/javascript" } @@ -362,7 +362,7 @@ "", "var data = JSON.parse(responseBody);", "", - "tests[\"Response validation passed\"] = data.firstName && data.lastName && data.email && data.subscription_key;" + "tests[\"Response validation passed\"] = data.firstName && data.lastName && data.email && data.subscriptionKey;" ], "type": "text/javascript" } @@ -382,7 +382,7 @@ ], "body": { "mode": "raw", - "raw": "{\n \"firstName\": \"Saeid\",\n \"lastName\": \"Rezaei\"\n}" + "raw": "{\n \"firstName\": \"Saeid\",\n \"lastName\": \"Rezaei\",\n \"subscriptionKey\": \"XXXX-XXXX-XXXX-XXXX\"\n}" }, "url": { "raw": "{{host}}/api/v3/user/profile", @@ -700,7 +700,7 @@ "", "var data = JSON.parse(responseBody);", "", - "tests[\"Response validation passed\"] = data.hasOwnProperty('userId') && data.firstName && data.lastName && data.email && data.hasOwnProperty('emailActivated');" + "tests[\"Response validation passed\"] = data.hasOwnProperty('userId') && data.firstName && data.lastName && data.email && data.subscriptionKey && data.hasOwnProperty('emailActivated');" ], "type": "text/javascript" } @@ -716,7 +716,7 @@ ], "body": { "mode": "raw", - "raw": "{\n \"firstName\": \"John\",\n \"lastName\": \"Doe\",\n \"email\": \"user@domain.com\",\n \"password\": \"#Bugs4Fun\"\n}" + "raw": "{\n \"firstName\": \"John\",\n \"lastName\": \"Doe\",\n \"email\": \"user@domain.com\",\n \"password\": \"#Bugs4Fun\",\n \"subscriptionKey\": \"XXXX-XXXX-XXXX-XXXX\"\n}" }, "url": { "raw": "{{host}}/api/v3/user/signup", @@ -1907,7 +1907,7 @@ "", "var data = JSON.parse(responseBody);", "", - "tests[\"Response validation passed\"] = data.hasOwnProperty('userId') && data.firstName && data.lastName && data.email && data.hasOwnProperty('emailActivated');" + "tests[\"Response validation passed\"] = data.hasOwnProperty('userId') && data.firstName && data.lastName && data.email && data.subscriptionKey && data.hasOwnProperty('emailActivated');" ], "type": "text/javascript" } @@ -1923,7 +1923,7 @@ ], "body": { "mode": "raw", - "raw": "{\n \"firstName\": \"John\",\n \"lastName\": \"Doe\",\n \"email\": \"user@domain.com\",\n \"password\": \"#Bugs4Fun\"\n}" + "raw": "{\n \"firstName\": \"John\",\n \"lastName\": \"Doe\",\n \"email\": \"user@domain.com\",\n \"password\": \"#Bugs4Fun\",\n \"subscriptionKey\": \"XXXX-XXXX-XXXX-XXXX\"\n}" }, "url": { "raw": "{{host}}/api/v3/user/signup", @@ -3343,7 +3343,7 @@ "", "var data = JSON.parse(responseBody);", "", - "tests[\"Response validation passed\"] = data.hasOwnProperty('userId') && data.firstName && data.lastName && data.email && data.hasOwnProperty('emailActivated');" + "tests[\"Response validation passed\"] = data.hasOwnProperty('userId') && data.firstName && data.lastName && data.email && data.subscriptionKey && data.hasOwnProperty('emailActivated');" ], "type": "text/javascript" } @@ -3359,7 +3359,7 @@ ], "body": { "mode": "raw", - "raw": "{\n \"firstName\": \"John\",\n \"lastName\": \"Doe\",\n \"email\": \"user@domain.com\",\n \"password\": \"#Bugs4Fun\"\n}" + "raw": "{\n \"firstName\": \"John\",\n \"lastName\": \"Doe\",\n \"email\": \"user@domain.com\",\n \"password\": \"#Bugs4Fun\",\n \"subscriptionKey\": \"XXXX-XXXX-XXXX-XXXX\"\n }" }, "url": { "raw": "{{host}}/api/v3/user/signup", @@ -4398,7 +4398,7 @@ "", "var data = JSON.parse(responseBody);", "", - "tests[\"Response validation passed\"] = data.hasOwnProperty('userId') && data.firstName && data.lastName && data.email && data.hasOwnProperty('emailActivated');" + "tests[\"Response validation passed\"] = data.hasOwnProperty('userId') && data.firstName && data.lastName && data.email && data.subscriptionKey && data.hasOwnProperty('emailActivated');" ], "type": "text/javascript" } @@ -4414,7 +4414,7 @@ ], "body": { "mode": "raw", - "raw": "{\n \"firstName\": \"John\",\n \"lastName\": \"Doe\",\n \"email\": \"user@domain.com\",\n \"password\": \"#Bugs4Fun\"\n}" + "raw": "{\n \"firstName\": \"John\",\n \"lastName\": \"Doe\",\n \"email\": \"user@domain.com\",\n \"password\": \"#Bugs4Fun\",\n \"subscriptionKey\": \"XXXX-XXXX-XXXX-XXXX\"\n}" }, "url": { "raw": "{{host}}/api/v3/user/signup", @@ -5530,7 +5530,7 @@ "", "var data = JSON.parse(responseBody);", "", - "tests[\"Response validation passed\"] = data.hasOwnProperty('userId') && data.firstName && data.lastName && data.email && data.hasOwnProperty('emailActivated');" + "tests[\"Response validation passed\"] = data.hasOwnProperty('userId') && data.firstName && data.lastName && data.email && data.subscriptionKey && data.hasOwnProperty('emailActivated');" ], "type": "text/javascript" } @@ -5546,7 +5546,7 @@ ], "body": { "mode": "raw", - "raw": "{\n \"firstName\": \"John\",\n \"lastName\": \"Doe\",\n \"email\": \"user@domain.com\",\n \"password\": \"#Bugs4Fun\"\n}" + "raw": "{\n \"firstName\": \"John\",\n \"lastName\": \"Doe\",\n \"email\": \"user@domain.com\",\n \"password\": \"#Bugs4Fun\",\n \"subscriptionKey\": \"XXXX-XXXX-XXXX-XXXX\"\n}" }, "url": { "raw": "{{host}}/api/v3/user/signup", @@ -5965,7 +5965,7 @@ "", "var data = JSON.parse(responseBody);", "", - "tests[\"Response validation passed\"] = data.hasOwnProperty('userId') && data.firstName && data.lastName && data.email && data.hasOwnProperty('emailActivated');" + "tests[\"Response validation passed\"] = data.hasOwnProperty('userId') && data.firstName && data.lastName && data.email && data.subscriptionKey && data.hasOwnProperty('emailActivated');" ], "type": "text/javascript" } @@ -5981,7 +5981,7 @@ ], "body": { "mode": "raw", - "raw": "{\n \"firstName\": \"John\",\n \"lastName\": \"Doe\",\n \"email\": \"user@domain.com\",\n \"password\": \"#Bugs4Fun\"\n}" + "raw": "{\n \"firstName\": \"John\",\n \"lastName\": \"Doe\",\n \"email\": \"user@domain.com\",\n \"password\": \"#Bugs4Fun\",\n \"subscriptionKey\": \"XXXX-XXXX-XXXX-XXXX\"\n}" }, "url": { "raw": "{{host}}/api/v3/user/signup", @@ -7792,7 +7792,7 @@ "", "var data = JSON.parse(responseBody);", "", - "tests[\"Response validation passed\"] = data.hasOwnProperty('userId') && data.firstName && data.lastName && data.email && data.hasOwnProperty('emailActivated');" + "tests[\"Response validation passed\"] = data.hasOwnProperty('userId') && data.firstName && data.lastName && data.email && data.subscriptionKey && data.hasOwnProperty('emailActivated');" ], "type": "text/javascript" } @@ -7808,7 +7808,7 @@ ], "body": { "mode": "raw", - "raw": "{\n \"firstName\": \"John\",\n \"lastName\": \"Doe\",\n \"email\": \"user@domain.com\",\n \"password\": \"#Bugs4Fun\"\n}" + "raw": "{\n \"firstName\": \"John\",\n \"lastName\": \"Doe\",\n \"email\": \"user@domain.com\",\n \"password\": \"#Bugs4Fun\",\n \"subscriptionKey\": \"XXXX-XXXX-XXXX-XXXX\"\n}" }, "url": { "raw": "{{host}}/api/v3/user/signup", @@ -8192,7 +8192,7 @@ "", "var data = JSON.parse(responseBody);", "", - "tests[\"Response validation passed\"] = data.hasOwnProperty('userId') && data.firstName && data.lastName && data.email && data.hasOwnProperty('emailActivated');" + "tests[\"Response validation passed\"] = data.hasOwnProperty('userId') && data.firstName && data.lastName && data.email && data.subscriptionKey && data.hasOwnProperty('emailActivated');" ], "type": "text/javascript" } @@ -8208,7 +8208,7 @@ ], "body": { "mode": "raw", - "raw": "{\n \"firstName\": \"John\",\n \"lastName\": \"Doe\",\n \"email\": \"user@domain.com\",\n \"password\": \"#Bugs4Fun\"\n}" + "raw": "{\n \"firstName\": \"John\",\n \"lastName\": \"Doe\",\n \"email\": \"user@domain.com\",\n \"password\": \"#Bugs4Fun\",\n \"subscriptionKey\": \"XXXX-XXXX-XXXX-XXXX\"\n}" }, "url": { "raw": "{{host}}/api/v3/user/signup", @@ -8682,7 +8682,7 @@ "", "var data = JSON.parse(responseBody);", "", - "tests[\"Response validation passed\"] = data.hasOwnProperty('userId') && data.firstName && data.lastName && data.email && data.hasOwnProperty('emailActivated');" + "tests[\"Response validation passed\"] = data.hasOwnProperty('userId') && data.firstName && data.lastName && data.email && data.subscriptionKey && data.hasOwnProperty('emailActivated');" ], "type": "text/javascript" } @@ -8698,7 +8698,7 @@ ], "body": { "mode": "raw", - "raw": "{\n \"firstName\": \"John\",\n \"lastName\": \"Doe\",\n \"email\": \"user@domain.com\",\n \"password\": \"#Bugs4Fun\"\n}" + "raw": "{\n \"firstName\": \"John\",\n \"lastName\": \"Doe\",\n \"email\": \"user@domain.com\",\n \"password\": \"#Bugs4Fun\",\n \"subscriptionKey\": \"XXXX-XXXX-XXXX-XXXX\"\n}" }, "url": { "raw": "{{host}}/api/v3/user/signup", @@ -10513,7 +10513,7 @@ "", "var data = JSON.parse(responseBody);", "", - "tests[\"Response validation passed\"] = data.hasOwnProperty('userId') && data.firstName && data.lastName && data.email && data.hasOwnProperty('emailActivated');" + "tests[\"Response validation passed\"] = data.hasOwnProperty('userId') && data.firstName && data.lastName && data.email && data.subscriptionKey && data.hasOwnProperty('emailActivated');" ], "type": "text/javascript" } @@ -10529,7 +10529,7 @@ ], "body": { "mode": "raw", - "raw": "{\n \"firstName\": \"John\",\n \"lastName\": \"Doe\",\n \"email\": \"user@domain.com\",\n \"password\": \"#Bugs4Fun\"\n}" + "raw": "{\n \"firstName\": \"John\",\n \"lastName\": \"Doe\",\n \"email\": \"user@domain.com\",\n \"password\": \"#Bugs4Fun\",\n \"subscriptionKey\": \"XXXX-XXXX-XXXX-XXXX\"\n}" }, "url": { "raw": "{{host}}/api/v3/user/signup", @@ -11401,7 +11401,7 @@ "", "var data = JSON.parse(responseBody);", "", - "tests[\"Response validation passed\"] = data.hasOwnProperty('userId') && data.firstName && data.lastName && data.email && data.hasOwnProperty('emailActivated');" + "tests[\"Response validation passed\"] = data.hasOwnProperty('userId') && data.firstName && data.lastName && data.email && data.subscriptionKey && data.hasOwnProperty('emailActivated');" ], "type": "text/javascript" } @@ -11417,7 +11417,7 @@ ], "body": { "mode": "raw", - "raw": "{\n \"firstName\": \"John\",\n \"lastName\": \"Doe\",\n \"email\": \"user@domain.com\",\n \"password\": \"#Bugs4Fun\"\n}" + "raw": "{\n \"firstName\": \"John\",\n \"lastName\": \"Doe\",\n \"email\": \"user@domain.com\",\n \"password\": \"#Bugs4Fun\",\n \"subscriptionKey\": \"XXXX-XXXX-XXXX-XXXX\"\n}" }, "url": { "raw": "{{host}}/api/v3/user/signup", @@ -12351,7 +12351,7 @@ "", "var data = JSON.parse(responseBody);", "", - "tests[\"Response validation passed\"] = data.hasOwnProperty('userId') && data.firstName && data.lastName && data.email && data.hasOwnProperty('emailActivated');" + "tests[\"Response validation passed\"] = data.hasOwnProperty('userId') && data.firstName && data.lastName && data.email && data.subscriptionKey && data.hasOwnProperty('emailActivated');" ], "type": "text/javascript" } @@ -12367,7 +12367,7 @@ ], "body": { "mode": "raw", - "raw": "{\n \"firstName\": \"John\",\n \"lastName\": \"Doe\",\n \"email\": \"user@domain.com\",\n \"password\": \"#Bugs4Fun\"\n}" + "raw": "{\n \"firstName\": \"John\",\n \"lastName\": \"Doe\",\n \"email\": \"user@domain.com\",\n \"password\": \"#Bugs4Fun\",\n \"subscriptionKey\": \"XXXX-XXXX-XXXX-XXXX\"\n}" }, "url": { "raw": "{{host}}/api/v3/user/signup", @@ -12698,7 +12698,7 @@ "", "var data = JSON.parse(responseBody);", "", - "tests[\"Response validation passed\"] = data.hasOwnProperty('userId') && data.firstName && data.lastName && data.email && data.hasOwnProperty('emailActivated');" + "tests[\"Response validation passed\"] = data.hasOwnProperty('userId') && data.firstName && data.lastName && data.email && data.subscriptionKey && data.hasOwnProperty('emailActivated');" ], "type": "text/javascript" } @@ -12714,7 +12714,7 @@ ], "body": { "mode": "raw", - "raw": "{\n \"firstName\": \"John\",\n \"lastName\": \"Doe\",\n \"email\": \"user@domain.com\",\n \"password\": \"#Bugs4Fun\"\n}" + "raw": "{\n \"firstName\": \"John\",\n \"lastName\": \"Doe\",\n \"email\": \"user@domain.com\",\n \"password\": \"#Bugs4Fun\",\n \"subscriptionKey\": \"XXXX-XXXX-XXXX-XXXX\"\n}" }, "url": { "raw": "{{host}}/api/v3/user/signup", From e21f0313af078747fca8263667d4b61e388473cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Sat, 27 Jan 2024 15:37:34 +0300 Subject: [PATCH 028/146] swagger aut edit --- docs/swagger.yaml | 687 ++++++++++++---------------------------------- 1 file changed, 169 insertions(+), 518 deletions(-) diff --git a/docs/swagger.yaml b/docs/swagger.yaml index 6069a1511..e56f60c48 100755 --- a/docs/swagger.yaml +++ b/docs/swagger.yaml @@ -59,13 +59,8 @@ paths: - ioFog summary: Returns list of ioFog nodes operationId: getIOFogNodes - parameters: - - in: header - name: Authorization - description: User token - required: true - schema: - type: string + security: + - tokenHeader: [] requestBody: content: application/json: @@ -95,13 +90,8 @@ paths: - ioFog summary: Creates a new ioFog node operationId: createIOFogNode - parameters: - - in: header - name: Authorization - description: User token - required: true - schema: - type: string + security: + - tokenHeader: [] requestBody: $ref: "#/components/requestBodies/UpdateIOFogNodeRequestBody" responses: @@ -135,12 +125,8 @@ paths: required: true schema: type: string - - in: header - name: Authorization - description: User token - required: true - schema: - type: string + security: + - tokenHeader: [] requestBody: $ref: "#/components/requestBodies/UpdateIOFogNodeRequestBody" responses: @@ -171,12 +157,8 @@ paths: required: true schema: type: string - - in: header - name: Authorization - description: User token - required: true - schema: - type: string + security: + - tokenHeader: [] responses: "202": description: Accepted @@ -203,12 +185,8 @@ paths: required: true schema: type: string - - in: header - name: Authorization - description: User token - required: true - schema: - type: string + security: + - tokenHeader: [] responses: "200": description: Success @@ -240,12 +218,8 @@ paths: required: true schema: type: string - - in: header - name: Authorization - description: User token - required: true - schema: - type: string + security: + - tokenHeader: [] responses: "201": description: Success @@ -271,12 +245,6 @@ paths: summary: Set change version command operationId: setVersionCommand parameters: - - in: header - name: Authorization - description: User token - required: true - schema: - type: string - in: path name: uuid description: ioFog node id @@ -292,6 +260,8 @@ paths: enum: - upgrade - rollback + security: + - tokenHeader: [] responses: "204": description: Success @@ -315,18 +285,14 @@ paths: summary: remote reboot fog agent operationId: setRebootCommand parameters: - - in: header - name: Authorization - description: User Token - required: true - schema: - type: string - in: path name: uuid description: ioFog node id required: true schema: type: string + security: + - tokenHeader: [] responses: "204": description: Success @@ -346,18 +312,14 @@ paths: summary: prune reboot fog agent operationId: setPruneCommand parameters: - - in: header - name: Authorization - description: User Token - required: true - schema: - type: string - in: path name: uuid description: ioFog node id required: true schema: type: string + security: + - tokenHeader: [] responses: "204": description: Success @@ -383,12 +345,8 @@ paths: required: true schema: type: string - - in: header - name: Authorization - description: User token - required: true - schema: - type: string + security: + - tokenHeader: [] responses: "200": description: Success @@ -420,12 +378,8 @@ paths: required: true schema: type: string - - in: header - name: Authorization - description: User token - required: true - schema: - type: string + security: + - tokenHeader: [] responses: "200": description: Success @@ -450,13 +404,8 @@ paths: - Application summary: Lists all applications operationId: listApplication - parameters: - - in: header - name: Authorization - description: User Token - required: true - schema: - type: string + security: + - tokenHeader: [] responses: "200": description: Success @@ -481,13 +430,8 @@ paths: summary: Creates an application operationId: createApplication deprecated: true - parameters: - - in: header - name: Authorization - description: User Token - required: true - schema: - type: string + security: + - tokenHeader: [] requestBody: content: application/json: @@ -518,13 +462,8 @@ paths: - Application summary: Creates an application using a YAML file operationId: createApplicationYAML - parameters: - - in: header - name: Authorization - description: User Token - required: true - schema: - type: string + security: + - tokenHeader: [] requestBody: required: true content: @@ -560,18 +499,14 @@ paths: deprecated: true operationId: updateApplication parameters: - - in: header - name: Authorization - description: User Token - required: true - schema: - type: string - in: path name: name description: Application name required: true schema: type: string + security: + - tokenHeader: [] requestBody: content: application/json: @@ -598,18 +533,14 @@ paths: summary: Updates an application metadata operationId: patchApplication parameters: - - in: header - name: Authorization - description: User Token - required: true - schema: - type: string - in: path name: name description: Application name required: true schema: type: string + security: + - tokenHeader: [] requestBody: content: application/json: @@ -643,18 +574,14 @@ paths: summary: Deletes an application operationId: deleteApplication parameters: - - in: header - name: Authorization - description: User Token - required: true - schema: - type: string - in: path name: name description: Application name required: true schema: type: string + security: + - tokenHeader: [] responses: "204": description: Success @@ -675,18 +602,14 @@ paths: summary: Gets an application details operationId: getApplication parameters: - - in: header - name: Authorization - description: User Token - required: true - schema: - type: string - in: path name: name description: Application name required: true schema: type: string + security: + - tokenHeader: [] responses: "200": description: Success @@ -712,18 +635,14 @@ paths: summary: Updates an application using a YAML file operationId: updateApplicationYAML parameters: - - in: header - name: Authorization - description: User Token - required: true - schema: - type: string - in: path name: name description: Application name required: true schema: type: string + security: + - tokenHeader: [] requestBody: required: true content: @@ -754,13 +673,8 @@ paths: - Application Template summary: Lists all application templates operationId: listApplicationTemplates - parameters: - - in: header - name: Authorization - description: User Token - required: true - schema: - type: string + security: + - tokenHeader: [] responses: "200": description: Success @@ -786,13 +700,8 @@ paths: summary: Creates an application template operationId: createApplicationTemplate deprecated: true - parameters: - - in: header - name: Authorization - description: User Token - required: true - schema: - type: string + security: + - tokenHeader: [] requestBody: $ref: "#/components/requestBodies/ApplicationTemplateCreateRequest" responses: @@ -817,13 +726,8 @@ paths: - Application Template summary: Creates an application template using a YAML file operationId: createApplicationTemplateYAML - parameters: - - in: header - name: Authorization - description: User Token - required: true - schema: - type: string + security: + - tokenHeader: [] requestBody: required: true content: @@ -858,18 +762,14 @@ paths: operationId: updateOrCreateApplicationTemplate deprecated: true parameters: - - in: header - name: Authorization - description: User Token - required: true - schema: - type: string - in: path name: name description: Application template name required: true schema: type: string + security: + - tokenHeader: [] requestBody: $ref: "#/components/requestBodies/ApplicationTemplateCreateRequest" responses: @@ -894,18 +794,14 @@ paths: summary: Patches an application template operationId: patchApplicationTemplate parameters: - - in: header - name: Authorization - description: User Token - required: true - schema: - type: string - in: path name: name description: Application template name required: true schema: type: string + security: + - tokenHeader: [] requestBody: content: application/json: @@ -932,18 +828,14 @@ paths: summary: Deletes an application template operationId: deleteApplicationTemplate parameters: - - in: header - name: Authorization - description: User Token - required: true - schema: - type: string - in: path name: name description: Application template name required: true schema: type: string + security: + - tokenHeader: [] responses: "200": description: Success @@ -964,18 +856,14 @@ paths: summary: Gets an application template operationId: getApplicationTemplate parameters: - - in: header - name: Authorization - description: User Token - required: true - schema: - type: string - in: path name: name description: Application template name required: true schema: type: string + security: + - tokenHeader: [] responses: "200": description: Success @@ -1001,18 +889,14 @@ paths: summary: Updates or creates an application template operationId: updateOrCreateApplicationTemplateFromYaml parameters: - - in: header - name: Authorization - description: User Token - required: true - schema: - type: string - in: path name: name description: Application template name required: true schema: type: string + security: + - tokenHeader: [] requestBody: required: true content: @@ -1506,13 +1390,8 @@ paths: - ioFog summary: Retrieves HAL USB info operationId: getAgentHalUsbInfo - parameters: - - in: header - name: Authorization - description: User token - required: true - schema: - type: string + security: + - tokenHeader: [] responses: "200": description: Success @@ -1679,13 +1558,8 @@ paths: - Catalog summary: Gets microservices catalog operationId: getMicroservicesCatalog - parameters: - - in: header - name: Authorization - description: User Token - required: true - schema: - type: string + security: + - tokenHeader: [] responses: "200": description: Success @@ -1707,13 +1581,8 @@ paths: - Catalog summary: Creates a new microservice catalog item operationId: createMicroserviceCatalogItem - parameters: - - in: header - name: Authorization - description: User Token - required: true - schema: - type: string + security: + - tokenHeader: [] requestBody: $ref: "#/components/requestBodies/CreateUpdateCatalogItemRequestBody" responses: @@ -1746,18 +1615,14 @@ paths: summary: Gets microservice catalog item info operationId: getMicroserviceCatalogItem parameters: - - in: header - name: Authorization - description: User Token - required: true - schema: - type: string - in: path name: id description: Catalog Item Id required: true schema: type: string + security: + - tokenHeader: [] responses: "200": description: Catalog Item Info @@ -1782,18 +1647,14 @@ paths: summary: Updates a microservice catalog item operationId: updateMicroserviceCatalogItem parameters: - - in: header - name: Authorization - description: User Token - required: true - schema: - type: string - in: path name: id description: Catalog Item Id required: true schema: type: string + security: + - tokenHeader: [] requestBody: $ref: "#/components/requestBodies/CreateUpdateCatalogItemRequestBody" responses: @@ -1820,18 +1681,14 @@ paths: summary: Deletes a microservice catalog item operationId: deleteMicroserviceCatalogItem parameters: - - in: header - name: Authorization - description: User Token - required: true - schema: - type: string - in: path name: id description: Catalog Item Id required: true schema: type: string + security: + - tokenHeader: [] responses: "204": description: Success @@ -1853,13 +1710,8 @@ paths: summary: Gets list of flows deprecated: true operationId: getFlowsList - parameters: - - in: header - name: Authorization - description: User Token - required: true - schema: - type: string + security: + - tokenHeader: [] responses: "200": description: Success @@ -1882,13 +1734,8 @@ paths: summary: Creates a new flow deprecated: true operationId: createFlow - parameters: - - in: header - name: Authorization - description: User Token - required: true - schema: - type: string + security: + - tokenHeader: [] requestBody: $ref: "#/components/requestBodies/NewFlowRequest" responses: @@ -1920,18 +1767,14 @@ paths: operationId: getFlowInfo deprecated: true parameters: - - in: header - name: Authorization - description: User Token - required: true - schema: - type: string - in: path name: id description: Flow Id required: true schema: type: string + security: + - tokenHeader: [] responses: "200": description: Success @@ -1957,18 +1800,14 @@ paths: operationId: updateFlow deprecated: true parameters: - - in: header - name: Authorization - description: User Token - required: true - schema: - type: string - in: path name: id description: Flow Id required: true schema: type: string + security: + - tokenHeader: [] requestBody: $ref: "#/components/requestBodies/NewFlowRequest" responses: @@ -1994,18 +1833,14 @@ paths: operationId: deleteFlow deprecated: true parameters: - - in: header - name: Authorization - description: User Token - required: true - schema: - type: string - in: path name: id description: Flow Id required: true schema: type: string + security: + - tokenHeader: [] responses: "204": description: Success @@ -2027,12 +1862,6 @@ paths: summary: Gets list of microservices operationId: getMicroservicesList parameters: - - in: header - name: Authorization - description: User Token - required: true - schema: - type: string - in: query name: flowId deprecated: true @@ -2046,6 +1875,8 @@ paths: required: false schema: type: string + security: + - tokenHeader: [] responses: "200": description: Success @@ -2068,13 +1899,8 @@ paths: summary: Creates a new microservice on an ioFog node operationId: createMicroservice deprecated: true - parameters: - - in: header - name: Authorization - description: User Token - required: true - schema: - type: string + security: + - tokenHeader: [] requestBody: content: application/json: @@ -2111,13 +1937,8 @@ paths: - Microservices summary: Creates a new microservice in an Application operationId: createMicroserviceYAML - parameters: - - in: header - name: Authorization - description: User Token - required: true - schema: - type: string + security: + - tokenHeader: [] requestBody: required: true content: @@ -2158,18 +1979,14 @@ paths: summary: Gets a microservice info operationId: getMicroserviceInfo parameters: - - in: header - name: Authorization - description: User Token - required: true - schema: - type: string - in: path name: uuid description: Microservice Uuid required: true schema: type: string + security: + - tokenHeader: [] responses: "200": description: Success @@ -2195,18 +2012,14 @@ paths: deprecated: true operationId: updateMicroservice parameters: - - in: header - name: Authorization - description: User Token - required: true - schema: - type: string - in: path name: uuid description: Microservice Uuid required: true schema: type: string + security: + - tokenHeader: [] requestBody: content: application/json: @@ -2238,18 +2051,14 @@ paths: summary: Deletes a microservice operationId: deleteMicroservice parameters: - - in: header - name: Authorization - description: User Token - required: true - schema: - type: string - in: path name: uuid description: Microservice Uuid required: true schema: type: string + security: + - tokenHeader: [] responses: "204": description: Success @@ -2273,18 +2082,14 @@ paths: summary: Updates a microservice operationId: updateMicroserviceYAML parameters: - - in: header - name: Authorization - description: User Token - required: true - schema: - type: string - in: path name: uuid description: Microservice Uuid required: true schema: type: string + security: + - tokenHeader: [] requestBody: required: true content: @@ -2322,12 +2127,6 @@ paths: operationId: createMicroserviceRoute deprecated: true parameters: - - in: header - name: Authorization - description: User Token - required: true - schema: - type: string - in: path name: uuid description: Microservice Uuid @@ -2340,6 +2139,8 @@ paths: required: true schema: type: string + security: + - tokenHeader: [] responses: "204": description: Created @@ -2363,12 +2164,6 @@ paths: operationId: deleteMicroserviceRoute deprecated: true parameters: - - in: header - name: Authorization - description: User Token - required: true - schema: - type: string - in: path name: uuid description: Microservice Uuid @@ -2381,6 +2176,8 @@ paths: required: true schema: type: string + security: + - tokenHeader: [] responses: "204": description: Success @@ -2404,18 +2201,14 @@ paths: summary: Creates a port mapping for microservice operationId: createMicroservicePortMapping parameters: - - in: header - name: Authorization - description: User Token - required: true - schema: - type: string - in: path name: uuid description: Microservice Uuid required: true schema: type: string + security: + - tokenHeader: [] requestBody: content: application/json: @@ -2449,18 +2242,14 @@ paths: summary: Get a port mapping list for microservice operationId: getMicroservicePortMapping parameters: - - in: header - name: Authorization - description: User Token - required: true - schema: - type: string - in: path name: uuid description: Microservice Uuid required: true schema: type: string + security: + - tokenHeader: [] responses: "200": description: Created @@ -2486,12 +2275,6 @@ paths: summary: Deletes a port mapping for microservice operationId: deleteMicroservicePortMapping parameters: - - in: header - name: Authorization - description: User Token - required: true - schema: - type: string - in: path name: uuid description: Microservice Uuid @@ -2504,6 +2287,8 @@ paths: required: true schema: type: string + security: + - tokenHeader: [] responses: "204": description: Success @@ -2525,18 +2310,14 @@ paths: summary: Creates a volume mapping for microservice operationId: createMicroserviceVolumeMapping parameters: - - in: header - name: Authorization - description: User Token - required: true - schema: - type: string - in: path name: uuid description: Microservice Uuid required: true schema: type: string + security: + - tokenHeader: [] requestBody: content: application/json: @@ -2573,18 +2354,14 @@ paths: summary: Get a volume mapping list for microservice operationId: getMicroserviceVolumeMapping parameters: - - in: header - name: Authorization - description: User Token - required: true - schema: - type: string - in: path name: uuid description: Microservice Uuid required: true schema: type: string + security: + - tokenHeader: [] responses: "200": description: Success @@ -2610,12 +2387,6 @@ paths: summary: Deletes a volume mapping for microservice operationId: deleteMicroserviceVolumeMapping parameters: - - in: header - name: Authorization - description: User Token - required: true - schema: - type: string - in: path name: uuid description: Microservice Uuid @@ -2628,6 +2399,8 @@ paths: required: true schema: type: string + security: + - tokenHeader: [] responses: "204": description: Success @@ -2651,18 +2424,14 @@ paths: summary: Send request to create image snapshot operationId: createImageSnapshot parameters: - - in: header - name: Authorization - description: User Token - required: true - schema: - type: string - in: path name: uuid description: Microservice UUID required: true schema: type: string + security: + - tokenHeader: [] responses: "201": description: Created @@ -2690,18 +2459,14 @@ paths: summary: Download image snapshot operationId: downloadImageSnapshot parameters: - - in: header - name: Authorization - description: User Token - required: true - schema: - type: string - in: path name: uuid description: Microservice UUID required: true schema: type: string + security: + - tokenHeader: [] responses: "200": description: Success @@ -2728,18 +2493,14 @@ paths: summary: Enables Microservice Strace Option operationId: enableMicroserviceStrace parameters: - - in: header - name: Authorization - description: User Token - required: true - schema: - type: string - in: path name: uuid description: Microservice UUID required: true schema: type: string + security: + - tokenHeader: [] requestBody: content: application/json: @@ -2772,12 +2533,6 @@ paths: summary: Gets Strace Data for Microservice operationId: getMicroserviceStrace parameters: - - in: header - name: Authorization - description: User Token - required: true - schema: - type: string - in: path name: uuid description: Microservice UUID @@ -2792,6 +2547,8 @@ paths: enum: - file - string + security: + - tokenHeader: [] responses: "200": description: Success @@ -2825,12 +2582,8 @@ paths: description: Microservice UUID schema: type: string - - in: header - name: Authorization - description: User Token - required: true - schema: - type: string + security: + - tokenHeader: [] requestBody: content: application/json: @@ -2866,12 +2619,8 @@ paths: required: true schema: type: string - - in: header - name: Authorization - description: User Token - required: true - schema: - type: string + security: + - tokenHeader: [] requestBody: content: application/json: @@ -2906,12 +2655,8 @@ paths: required: true schema: type: string - - in: header - name: Authorization - description: User token - required: true - schema: - type: string + security: + - tokenHeader: [] responses: "200": description: Success @@ -2936,13 +2681,8 @@ paths: - Registries summary: Creates new registry operationId: createRegistry - parameters: - - in: header - name: Authorization - description: User Token - required: true - schema: - type: string + security: + - tokenHeader: [] requestBody: content: application/json: @@ -2967,13 +2707,8 @@ paths: - Registries summary: Gets list of registries operationId: getRegistryList - parameters: - - in: header - name: Authorization - description: User token - required: true - schema: - type: string + security: + - tokenHeader: [] responses: "200": description: Success @@ -3003,12 +2738,8 @@ paths: required: true schema: type: string - - in: header - name: Authorization - description: User token - required: true - schema: - type: string + security: + - tokenHeader: [] responses: "204": description: Deleted @@ -3035,12 +2766,8 @@ paths: required: true schema: type: string - - in: header - name: Authorization - description: User token - required: true - schema: - type: string + security: + - tokenHeader: [] requestBody: content: application/json: @@ -3097,13 +2824,8 @@ paths: - User summary: Logout operationId: logout - parameters: - - in: header - name: Authorization - description: User token - required: true - schema: - type: string + security: + - tokenHeader: [] responses: "204": description: Success @@ -3199,13 +2921,8 @@ paths: - User summary: Get current user profile data operationId: getUserProfile - parameters: - - in: header - name: Authorization - description: User token - required: true - schema: - type: string + security: + - tokenHeader: [] responses: "200": description: Success @@ -3227,13 +2944,8 @@ paths: - User summary: Update user profile operationId: updateUserProfile - parameters: - - in: header - name: Authorization - description: User Token - required: true - schema: - type: string + security: + - tokenHeader: [] requestBody: content: application/json: @@ -3264,13 +2976,8 @@ paths: - User summary: Delete account operationId: deleteAccount - parameters: - - in: header - name: Authorization - description: User Token - required: true - schema: - type: string + security: + - tokenHeader: [] requestBody: content: application/json: @@ -3295,13 +3002,8 @@ paths: - User summary: change password operationId: changePassword - parameters: - - in: header - name: Authorization - description: User Token - required: true - schema: - type: string + security: + - tokenHeader: [] requestBody: content: application/json: @@ -3353,13 +3055,8 @@ paths: - Routing summary: Get routes operationId: getRoutes - parameters: - - in: header - name: Authorization - description: User Token - required: true - schema: - type: string + security: + - tokenHeader: [] responses: "200": description: Success @@ -3381,13 +3078,8 @@ paths: - Routing summary: Creates a new route operationId: createRoute - parameters: - - in: header - name: Authorization - description: User Token - required: true - schema: - type: string + security: + - tokenHeader: [] requestBody: content: application/json: @@ -3425,18 +3117,14 @@ paths: summary: Gets a route info operationId: getRoute parameters: - - in: header - name: Authorization - description: User Token - required: true - schema: - type: string - in: path name: name description: Route name required: true schema: type: string + security: + - tokenHeader: [] responses: "200": description: Route Info @@ -3461,18 +3149,14 @@ paths: summary: Updates a route operationId: updateRoute parameters: - - in: header - name: Authorization - description: User Token - required: true - schema: - type: string - in: path name: name description: Route name required: true schema: type: string + security: + - tokenHeader: [] requestBody: content: application/json: @@ -3504,18 +3188,14 @@ paths: summary: Deletes a route operationId: deleteRoute parameters: - - in: header - name: Authorization - description: User Token - required: true - schema: - type: string - in: path name: name description: Route name required: true schema: type: string + security: + - tokenHeader: [] responses: "204": description: Success @@ -3536,13 +3216,8 @@ paths: - Edge Resource summary: Get Edge Resources operationId: getEdgeResources - parameters: - - in: header - name: Authorization - description: User Token - required: true - schema: - type: string + security: + - tokenHeader: [] responses: "200": description: Success @@ -3566,12 +3241,6 @@ paths: summary: Get Specific Edge Resource operationId: getEdgeResourceDetail parameters: - - in: header - name: Authorization - description: User Token - required: true - schema: - type: string - in: path name: name description: Edge Resource name @@ -3584,6 +3253,8 @@ paths: required: true schema: type: string + security: + - tokenHeader: [] responses: "200": description: Success @@ -3606,12 +3277,6 @@ paths: summary: Update/Create Specific Edge Resource operationId: putEdgeResource parameters: - - in: header - name: Authorization - description: User Token - required: true - schema: - type: string - in: path name: name description: Edge Resource name @@ -3624,6 +3289,8 @@ paths: required: true schema: type: string + security: + - tokenHeader: [] requestBody: content: application/json: @@ -3653,12 +3320,6 @@ paths: summary: Deletes an Edge Resource operationId: deleteEdgeResource parameters: - - in: header - name: Authorization - description: User Token - required: true - schema: - type: string - in: path name: name description: Edge Resource name @@ -3671,6 +3332,8 @@ paths: required: true schema: type: string + security: + - tokenHeader: [] responses: "204": description: Success @@ -3692,18 +3355,14 @@ paths: summary: Get Specific Edge Resource versions operationId: getEdgeResourceVersions parameters: - - in: header - name: Authorization - description: User Token - required: true - schema: - type: string - in: path name: name description: Edge Resource name required: true schema: type: string + security: + - tokenHeader: [] responses: "200": description: Success @@ -3726,13 +3385,8 @@ paths: - Edge Resource summary: Create Specific Edge Resource operationId: postEdgeResource - parameters: - - in: header - name: Authorization - description: User Token - required: true - schema: - type: string + security: + - tokenHeader: [] requestBody: content: application/json: @@ -3763,12 +3417,6 @@ paths: summary: Attach Edge Resource to Agent operationId: postEdgeResourceLink parameters: - - in: header - name: Authorization - description: User Token - required: true - schema: - type: string - in: path name: name description: Edge Resource Name @@ -3781,6 +3429,8 @@ paths: required: true schema: type: string + security: + - tokenHeader: [] requestBody: content: application/json: @@ -3808,12 +3458,6 @@ paths: summary: Detach Edge Resource from Agent operationId: deleteEdgeResourceLink parameters: - - in: header - name: Authorization - description: User Token - required: true - schema: - type: string - in: path name: name description: Edge Resource Name @@ -3826,6 +3470,8 @@ paths: required: true schema: type: string + security: + - tokenHeader: [] requestBody: content: application/json: @@ -3878,6 +3524,11 @@ servers: - url: http://localhost:51121/api/v3 - url: https://localhost:51121/api/v3 components: + securitySchemes: + tokenHeader: + type: apiKey + in: header + name: Authorization requestBodies: UpdateIOFogNodeRequestBody: content: From 14cc78a1cb3a8f1d16271babe6a891fa0ba1de9c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Sun, 28 Jan 2024 14:51:13 +0300 Subject: [PATCH 029/146] commit --- src/services/microservice-ports/proxy.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/services/microservice-ports/proxy.js b/src/services/microservice-ports/proxy.js index f6767c71b..76e3342be 100644 --- a/src/services/microservice-ports/proxy.js +++ b/src/services/microservice-ports/proxy.js @@ -1,6 +1,6 @@ /* only "[a-zA-Z0-9][a-zA-Z0-9_.-]" are allowed * ******************************************************************************* - * * Copyright (c) 2022 Edgeworx, Inc. + * * Copyright (c) 2023 Datasance Teknoloji A.S. * * * * This program and the accompanying materials are made available under the * * terms of the Eclipse Public License v. 2.0 which is available at From 9a2a999014f8127e55dd919d90d712b9c2fbfda4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Sun, 28 Jan 2024 16:07:42 +0300 Subject: [PATCH 030/146] swagger yaml agentToken auth edit --- docs/swagger.yaml | 331 +++++++++++++++++----------------------------- 1 file changed, 123 insertions(+), 208 deletions(-) diff --git a/docs/swagger.yaml b/docs/swagger.yaml index e56f60c48..8fb8b138e 100755 --- a/docs/swagger.yaml +++ b/docs/swagger.yaml @@ -60,7 +60,7 @@ paths: summary: Returns list of ioFog nodes operationId: getIOFogNodes security: - - tokenHeader: [] + - userToken: [] requestBody: content: application/json: @@ -91,7 +91,7 @@ paths: summary: Creates a new ioFog node operationId: createIOFogNode security: - - tokenHeader: [] + - userToken: [] requestBody: $ref: "#/components/requestBodies/UpdateIOFogNodeRequestBody" responses: @@ -126,7 +126,7 @@ paths: schema: type: string security: - - tokenHeader: [] + - userToken: [] requestBody: $ref: "#/components/requestBodies/UpdateIOFogNodeRequestBody" responses: @@ -158,7 +158,7 @@ paths: schema: type: string security: - - tokenHeader: [] + - userToken: [] responses: "202": description: Accepted @@ -186,7 +186,7 @@ paths: schema: type: string security: - - tokenHeader: [] + - userToken: [] responses: "200": description: Success @@ -219,7 +219,7 @@ paths: schema: type: string security: - - tokenHeader: [] + - userToken: [] responses: "201": description: Success @@ -261,7 +261,7 @@ paths: - upgrade - rollback security: - - tokenHeader: [] + - userToken: [] responses: "204": description: Success @@ -292,7 +292,7 @@ paths: schema: type: string security: - - tokenHeader: [] + - userToken: [] responses: "204": description: Success @@ -319,7 +319,7 @@ paths: schema: type: string security: - - tokenHeader: [] + - userToken: [] responses: "204": description: Success @@ -346,7 +346,7 @@ paths: schema: type: string security: - - tokenHeader: [] + - userToken: [] responses: "200": description: Success @@ -379,7 +379,7 @@ paths: schema: type: string security: - - tokenHeader: [] + - userToken: [] responses: "200": description: Success @@ -405,7 +405,7 @@ paths: summary: Lists all applications operationId: listApplication security: - - tokenHeader: [] + - userToken: [] responses: "200": description: Success @@ -431,7 +431,7 @@ paths: operationId: createApplication deprecated: true security: - - tokenHeader: [] + - userToken: [] requestBody: content: application/json: @@ -463,7 +463,7 @@ paths: summary: Creates an application using a YAML file operationId: createApplicationYAML security: - - tokenHeader: [] + - userToken: [] requestBody: required: true content: @@ -506,7 +506,7 @@ paths: schema: type: string security: - - tokenHeader: [] + - userToken: [] requestBody: content: application/json: @@ -540,7 +540,7 @@ paths: schema: type: string security: - - tokenHeader: [] + - userToken: [] requestBody: content: application/json: @@ -581,7 +581,7 @@ paths: schema: type: string security: - - tokenHeader: [] + - userToken: [] responses: "204": description: Success @@ -609,7 +609,7 @@ paths: schema: type: string security: - - tokenHeader: [] + - userToken: [] responses: "200": description: Success @@ -642,7 +642,7 @@ paths: schema: type: string security: - - tokenHeader: [] + - userToken: [] requestBody: required: true content: @@ -674,7 +674,7 @@ paths: summary: Lists all application templates operationId: listApplicationTemplates security: - - tokenHeader: [] + - userToken: [] responses: "200": description: Success @@ -701,7 +701,7 @@ paths: operationId: createApplicationTemplate deprecated: true security: - - tokenHeader: [] + - userToken: [] requestBody: $ref: "#/components/requestBodies/ApplicationTemplateCreateRequest" responses: @@ -727,7 +727,7 @@ paths: summary: Creates an application template using a YAML file operationId: createApplicationTemplateYAML security: - - tokenHeader: [] + - userToken: [] requestBody: required: true content: @@ -769,7 +769,7 @@ paths: schema: type: string security: - - tokenHeader: [] + - userToken: [] requestBody: $ref: "#/components/requestBodies/ApplicationTemplateCreateRequest" responses: @@ -801,7 +801,7 @@ paths: schema: type: string security: - - tokenHeader: [] + - userToken: [] requestBody: content: application/json: @@ -835,7 +835,7 @@ paths: schema: type: string security: - - tokenHeader: [] + - userToken: [] responses: "200": description: Success @@ -863,7 +863,7 @@ paths: schema: type: string security: - - tokenHeader: [] + - userToken: [] responses: "200": description: Success @@ -896,7 +896,7 @@ paths: schema: type: string security: - - tokenHeader: [] + - userToken: [] requestBody: required: true content: @@ -988,13 +988,8 @@ paths: - Agent summary: Get an ioFog node configuration operationId: getIOFogNodeConfig - parameters: - - in: header - name: Authorization - description: Agent Token - required: true - schema: - type: string + security: + - agentToken: [] responses: "200": description: Success @@ -1016,13 +1011,8 @@ paths: - Agent summary: Updates an ioFog node configuration operationId: updateIOFogNodeConfig - parameters: - - in: header - name: Authorization - description: Agent Token - required: true - schema: - type: string + security: + - agentToken: [] requestBody: content: application/json: @@ -1049,13 +1039,8 @@ paths: - Agent summary: Gets ioFog node changes operationId: getIOFogNodeChanges - parameters: - - in: header - name: Authorization - description: Agent Token - required: true - schema: - type: string + security: + - agentToken: [] responses: "200": description: Success @@ -1079,13 +1064,8 @@ paths: - Agent summary: Resets ioFog node changes list operationId: resetIOFogNodeChanges - parameters: - - in: header - name: Authorization - description: Agent Token - required: true - schema: - type: string + security: + - agentToken: [] responses: "200": description: Success @@ -1106,13 +1086,8 @@ paths: - Agent summary: Posts agent status to ioFog node operationId: postAgentStatus - parameters: - - in: header - name: Authorization - description: Agent Token - required: true - schema: - type: string + security: + - agentToken: [] requestBody: content: application/json: @@ -1139,13 +1114,8 @@ paths: - Agent summary: Gets microservices running on an ioFog node operationId: getAgentMicroservicesList - parameters: - - in: header - name: Authorization - description: Agent Token - required: true - schema: - type: string + security: + - agentToken: [] responses: "200": description: Success @@ -1175,12 +1145,8 @@ paths: description: Microservice UUID schema: type: string - - in: header - name: Authorization - description: Agent Token - required: true - schema: - type: string + security: + - agentToken: [] responses: "200": description: Success @@ -1205,13 +1171,8 @@ paths: - Agent summary: Gets list of Docker registries operationId: getRegistriesList - parameters: - - in: header - name: Authorization - description: Agent Token - required: true - schema: - type: string + security: + - agentToken: [] responses: "200": description: Success @@ -1234,13 +1195,8 @@ paths: - Agent summary: Get an ioFog node tunnel configuration operationId: getIOFogNodeTunnelConfig - parameters: - - in: header - name: Authorization - description: Agent Token - required: true - schema: - type: string + security: + - agentToken: [] responses: "200": description: Success @@ -1265,13 +1221,8 @@ paths: - Agent summary: Get an ioFog node strace info operationId: getIOFogNodeStraceInfo - parameters: - - in: header - name: Authorization - description: Agent Token - required: true - schema: - type: string + security: + - agentToken: [] responses: "200": description: Success @@ -1295,13 +1246,8 @@ paths: - Agent summary: Posts agent strace to ioFog node operationId: postIOFogNodeStraceBuffer - parameters: - - in: header - name: Authorization - description: Agent Token - required: true - schema: - type: string + security: + - agentToken: [] requestBody: content: application/json: @@ -1330,13 +1276,8 @@ paths: - Agent summary: Get change version command operationId: getChangeVersion - parameters: - - in: header - name: Authorization - description: Agent Token - required: true - schema: - type: string + security: + - agentToken: [] responses: "200": description: Success @@ -1361,13 +1302,8 @@ paths: - Agent summary: Updates HAL hardware info operationId: putHalHardwareInfo - parameters: - - in: header - name: Authorization - description: Agent Token - required: true - schema: - type: string + security: + - agentToken: [] requestBody: $ref: "#/components/requestBodies/HalInfo" responses: @@ -1391,7 +1327,7 @@ paths: summary: Retrieves HAL USB info operationId: getAgentHalUsbInfo security: - - tokenHeader: [] + - userToken: [] responses: "200": description: Success @@ -1415,13 +1351,8 @@ paths: - Agent summary: Updates HAL USB info operationId: putHalUsbInfo - parameters: - - in: header - name: Authorization - description: Agent Token - required: true - schema: - type: string + security: + - agentToken: [] requestBody: $ref: "#/components/requestBodies/HalInfo" responses: @@ -1444,13 +1375,8 @@ paths: - Agent summary: Deletes an ioFog node operationId: deleteAgentNode - parameters: - - in: header - name: Authorization - description: Agent token - required: true - schema: - type: string + security: + - agentToken: [] responses: "204": description: No Content @@ -1469,13 +1395,8 @@ paths: - Agent summary: Get image snapshot info operationId: getImageSnapshot - parameters: - - in: header - name: Authorization - description: Agent Token - required: true - schema: - type: string + security: + - agentToken: [] responses: "200": description: Success @@ -1499,13 +1420,8 @@ paths: - Agent summary: Put image snapshot info on controller operationId: putImageSnapshot - parameters: - - in: header - name: Authorization - description: Agent Token - required: true - schema: - type: string + security: + - agentToken: [] requestBody: content: application/json: @@ -1532,13 +1448,8 @@ paths: - Agent summary: Post tracking info operationId: postTracking - parameters: - - in: header - name: Authorization - description: Agent Token - required: true - schema: - type: string + security: + - agentToken: [] requestBody: content: application/json: @@ -1559,7 +1470,7 @@ paths: summary: Gets microservices catalog operationId: getMicroservicesCatalog security: - - tokenHeader: [] + - userToken: [] responses: "200": description: Success @@ -1582,7 +1493,7 @@ paths: summary: Creates a new microservice catalog item operationId: createMicroserviceCatalogItem security: - - tokenHeader: [] + - userToken: [] requestBody: $ref: "#/components/requestBodies/CreateUpdateCatalogItemRequestBody" responses: @@ -1622,7 +1533,7 @@ paths: schema: type: string security: - - tokenHeader: [] + - userToken: [] responses: "200": description: Catalog Item Info @@ -1654,7 +1565,7 @@ paths: schema: type: string security: - - tokenHeader: [] + - userToken: [] requestBody: $ref: "#/components/requestBodies/CreateUpdateCatalogItemRequestBody" responses: @@ -1688,7 +1599,7 @@ paths: schema: type: string security: - - tokenHeader: [] + - userToken: [] responses: "204": description: Success @@ -1711,7 +1622,7 @@ paths: deprecated: true operationId: getFlowsList security: - - tokenHeader: [] + - userToken: [] responses: "200": description: Success @@ -1735,7 +1646,7 @@ paths: deprecated: true operationId: createFlow security: - - tokenHeader: [] + - userToken: [] requestBody: $ref: "#/components/requestBodies/NewFlowRequest" responses: @@ -1774,7 +1685,7 @@ paths: schema: type: string security: - - tokenHeader: [] + - userToken: [] responses: "200": description: Success @@ -1807,7 +1718,7 @@ paths: schema: type: string security: - - tokenHeader: [] + - userToken: [] requestBody: $ref: "#/components/requestBodies/NewFlowRequest" responses: @@ -1840,7 +1751,7 @@ paths: schema: type: string security: - - tokenHeader: [] + - userToken: [] responses: "204": description: Success @@ -1876,7 +1787,7 @@ paths: schema: type: string security: - - tokenHeader: [] + - userToken: [] responses: "200": description: Success @@ -1900,7 +1811,7 @@ paths: operationId: createMicroservice deprecated: true security: - - tokenHeader: [] + - userToken: [] requestBody: content: application/json: @@ -1938,7 +1849,7 @@ paths: summary: Creates a new microservice in an Application operationId: createMicroserviceYAML security: - - tokenHeader: [] + - userToken: [] requestBody: required: true content: @@ -1986,7 +1897,7 @@ paths: schema: type: string security: - - tokenHeader: [] + - userToken: [] responses: "200": description: Success @@ -2019,7 +1930,7 @@ paths: schema: type: string security: - - tokenHeader: [] + - userToken: [] requestBody: content: application/json: @@ -2058,7 +1969,7 @@ paths: schema: type: string security: - - tokenHeader: [] + - userToken: [] responses: "204": description: Success @@ -2089,7 +2000,7 @@ paths: schema: type: string security: - - tokenHeader: [] + - userToken: [] requestBody: required: true content: @@ -2140,7 +2051,7 @@ paths: schema: type: string security: - - tokenHeader: [] + - userToken: [] responses: "204": description: Created @@ -2177,7 +2088,7 @@ paths: schema: type: string security: - - tokenHeader: [] + - userToken: [] responses: "204": description: Success @@ -2208,7 +2119,7 @@ paths: schema: type: string security: - - tokenHeader: [] + - userToken: [] requestBody: content: application/json: @@ -2249,7 +2160,7 @@ paths: schema: type: string security: - - tokenHeader: [] + - userToken: [] responses: "200": description: Created @@ -2288,7 +2199,7 @@ paths: schema: type: string security: - - tokenHeader: [] + - userToken: [] responses: "204": description: Success @@ -2317,7 +2228,7 @@ paths: schema: type: string security: - - tokenHeader: [] + - userToken: [] requestBody: content: application/json: @@ -2361,7 +2272,7 @@ paths: schema: type: string security: - - tokenHeader: [] + - userToken: [] responses: "200": description: Success @@ -2400,7 +2311,7 @@ paths: schema: type: string security: - - tokenHeader: [] + - userToken: [] responses: "204": description: Success @@ -2431,7 +2342,7 @@ paths: schema: type: string security: - - tokenHeader: [] + - userToken: [] responses: "201": description: Created @@ -2466,7 +2377,7 @@ paths: schema: type: string security: - - tokenHeader: [] + - userToken: [] responses: "200": description: Success @@ -2500,7 +2411,7 @@ paths: schema: type: string security: - - tokenHeader: [] + - userToken: [] requestBody: content: application/json: @@ -2548,7 +2459,7 @@ paths: - file - string security: - - tokenHeader: [] + - userToken: [] responses: "200": description: Success @@ -2583,7 +2494,7 @@ paths: schema: type: string security: - - tokenHeader: [] + - userToken: [] requestBody: content: application/json: @@ -2620,7 +2531,7 @@ paths: schema: type: string security: - - tokenHeader: [] + - userToken: [] requestBody: content: application/json: @@ -2656,7 +2567,7 @@ paths: schema: type: string security: - - tokenHeader: [] + - userToken: [] responses: "200": description: Success @@ -2682,7 +2593,7 @@ paths: summary: Creates new registry operationId: createRegistry security: - - tokenHeader: [] + - userToken: [] requestBody: content: application/json: @@ -2708,7 +2619,7 @@ paths: summary: Gets list of registries operationId: getRegistryList security: - - tokenHeader: [] + - userToken: [] responses: "200": description: Success @@ -2739,7 +2650,7 @@ paths: schema: type: string security: - - tokenHeader: [] + - userToken: [] responses: "204": description: Deleted @@ -2767,7 +2678,7 @@ paths: schema: type: string security: - - tokenHeader: [] + - userToken: [] requestBody: content: application/json: @@ -2825,7 +2736,7 @@ paths: summary: Logout operationId: logout security: - - tokenHeader: [] + - userToken: [] responses: "204": description: Success @@ -2922,7 +2833,7 @@ paths: summary: Get current user profile data operationId: getUserProfile security: - - tokenHeader: [] + - userToken: [] responses: "200": description: Success @@ -2945,7 +2856,7 @@ paths: summary: Update user profile operationId: updateUserProfile security: - - tokenHeader: [] + - userToken: [] requestBody: content: application/json: @@ -2977,7 +2888,7 @@ paths: summary: Delete account operationId: deleteAccount security: - - tokenHeader: [] + - userToken: [] requestBody: content: application/json: @@ -3003,7 +2914,7 @@ paths: summary: change password operationId: changePassword security: - - tokenHeader: [] + - userToken: [] requestBody: content: application/json: @@ -3056,7 +2967,7 @@ paths: summary: Get routes operationId: getRoutes security: - - tokenHeader: [] + - userToken: [] responses: "200": description: Success @@ -3079,7 +2990,7 @@ paths: summary: Creates a new route operationId: createRoute security: - - tokenHeader: [] + - userToken: [] requestBody: content: application/json: @@ -3124,7 +3035,7 @@ paths: schema: type: string security: - - tokenHeader: [] + - userToken: [] responses: "200": description: Route Info @@ -3156,7 +3067,7 @@ paths: schema: type: string security: - - tokenHeader: [] + - userToken: [] requestBody: content: application/json: @@ -3195,7 +3106,7 @@ paths: schema: type: string security: - - tokenHeader: [] + - userToken: [] responses: "204": description: Success @@ -3217,7 +3128,7 @@ paths: summary: Get Edge Resources operationId: getEdgeResources security: - - tokenHeader: [] + - userToken: [] responses: "200": description: Success @@ -3254,7 +3165,7 @@ paths: schema: type: string security: - - tokenHeader: [] + - userToken: [] responses: "200": description: Success @@ -3290,7 +3201,7 @@ paths: schema: type: string security: - - tokenHeader: [] + - userToken: [] requestBody: content: application/json: @@ -3333,7 +3244,7 @@ paths: schema: type: string security: - - tokenHeader: [] + - userToken: [] responses: "204": description: Success @@ -3362,7 +3273,7 @@ paths: schema: type: string security: - - tokenHeader: [] + - userToken: [] responses: "200": description: Success @@ -3386,7 +3297,7 @@ paths: summary: Create Specific Edge Resource operationId: postEdgeResource security: - - tokenHeader: [] + - userToken: [] requestBody: content: application/json: @@ -3430,7 +3341,7 @@ paths: schema: type: string security: - - tokenHeader: [] + - userToken: [] requestBody: content: application/json: @@ -3471,7 +3382,7 @@ paths: schema: type: string security: - - tokenHeader: [] + - userToken: [] requestBody: content: application/json: @@ -3525,7 +3436,11 @@ servers: - url: https://localhost:51121/api/v3 components: securitySchemes: - tokenHeader: + userToken: + type: apiKey + in: header + name: Authorization + agentToken: type: apiKey in: header name: Authorization From ecbb29863348269f1caf91d7a03487bf6da893c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Sat, 3 Feb 2024 23:07:26 +0300 Subject: [PATCH 031/146] api version editing --- docs/swagger.json | 4 +- docs/swagger.yaml | 8 +- src/config/constants.js | 2 +- src/config/default.json | 8 +- ...0180928121334-insert-catalog-item-image.js | 4 +- src/main.js | 2 +- src/routes/agent.js | 40 +- src/routes/application.js | 16 +- src/routes/applicationTemplate.js | 16 +- src/routes/capabilities.js | 4 +- src/routes/catalog.js | 10 +- src/routes/config.js | 6 +- src/routes/controller.js | 6 +- src/routes/diagnostics.js | 10 +- src/routes/edgeResource.js | 16 +- src/routes/flow.js | 10 +- src/routes/iofog.js | 22 +- src/routes/kubelet.js | 26 +- src/routes/microservices.js | 32 +- src/routes/registries.js | 12 +- src/routes/router.js | 4 +- src/routes/routing.js | 10 +- src/routes/tunnel.js | 6 +- src/routes/user.js | 28 +- test/application-template-update.yaml | 2 +- test/application-template.yaml | 2 +- test/application-test.yaml | 2 +- test/application-update-test.yaml | 2 +- test/postman_collection.json | 1148 ++++++++--------- test/src/template/app.yml | 2 +- test/src/template/simple.yml | 2 +- 31 files changed, 731 insertions(+), 731 deletions(-) diff --git a/docs/swagger.json b/docs/swagger.json index 283fa21f1..11df5eaa8 100644 --- a/docs/swagger.json +++ b/docs/swagger.json @@ -1,8 +1,8 @@ { "openapi" : "3.0.0", "info" : { - "version" : "3.0.0", - "title" : "ioFog Controller" + "version" : "1.0.0", + "title" : "Datasance PoT-ioFog Controller" }, "tags" : [ { "name" : "Controller", diff --git a/docs/swagger.yaml b/docs/swagger.yaml index 8fb8b138e..c840cdcaa 100755 --- a/docs/swagger.yaml +++ b/docs/swagger.yaml @@ -1,7 +1,7 @@ openapi: "3.0.0" info: - version: 3.0.0 - title: ioFog Controller + version: 1.0.0 + title: Datasance PoT-ioFog Controller paths: /status: get: @@ -3432,8 +3432,8 @@ tags: - name: User description: Manage your users servers: - - url: http://localhost:51121/api/v3 - - url: https://localhost:51121/api/v3 + - url: http://localhost:51121/api/v1 + - url: https://localhost:51121/api/v1 components: securitySchemes: userToken: diff --git a/src/config/constants.js b/src/config/constants.js index 863a834d2..ce524edf5 100644 --- a/src/config/constants.js +++ b/src/config/constants.js @@ -19,7 +19,7 @@ module.exports = { 'Server:DevMode': false, 'Email:ActivationEnabled': false, - 'Email:HomeUrl': 'https://iofog.org', + 'Email:HomeUrl': 'https://datasance.com', 'Service:LogsDirectory': '/var/log/iofog-controller', 'Service:LogsFileSize': 10485760, diff --git a/src/config/default.json b/src/config/default.json index df913aa36..51747dcc9 100644 --- a/src/config/default.json +++ b/src/config/default.json @@ -38,12 +38,12 @@ }, "SystemImages": { "Router": { - "1": "iofog/router:latest", - "2": "iofog/router:latest" + "1": "ghcr.io/datasance/router:latest", + "2": "ghcr.io/datasance/router:latest" }, "Proxy": { - "1": "iofog/proxy:latest", - "2": "iofog/proxy-arm:latest" + "1": "ghcr.io/datasance/proxy:latest", + "2": "ghcr.io/datasance/proxy:latest" }, "PortRouter": { "1": "iofog/port-router:latest", diff --git a/src/data/seeders/20180928121334-insert-catalog-item-image.js b/src/data/seeders/20180928121334-insert-catalog-item-image.js index e75a67cb9..682876fa3 100644 --- a/src/data/seeders/20180928121334-insert-catalog-item-image.js +++ b/src/data/seeders/20180928121334-insert-catalog-item-image.js @@ -26,12 +26,12 @@ module.exports = { { catalog_item_id: 3, fog_type_id: 1, - container_image: 'iofog/hal' + container_image: 'ghcr.io/datasance/hal' }, { catalog_item_id: 3, fog_type_id: 2, - container_image: 'iofog/hal-arm' + container_image: 'ghcr.io/datasance/hal-arm' }, { catalog_item_id: 4, diff --git a/src/main.js b/src/main.js index 96d700c1a..c79b59e2d 100644 --- a/src/main.js +++ b/src/main.js @@ -41,7 +41,7 @@ const isDaemonElevated = async () => { return false } const protocol = isHTTPS() ? 'https' : 'http' - return getJSONFromURL(`${protocol}://localhost:${apiPort}/api/v3/status`) + return getJSONFromURL(`${protocol}://localhost:${apiPort}/api/v1/status`) .then(result => { // The server is running but you couldn't see it, requires administrative privileges if (result.status === 'online') { diff --git a/src/routes/agent.js b/src/routes/agent.js index e2e86e273..97161bf4e 100644 --- a/src/routes/agent.js +++ b/src/routes/agent.js @@ -21,7 +21,7 @@ const logger = require('../logger') module.exports = [ { method: 'post', - path: '/api/v3/agent/provision', + path: '/api/v1/agent/provision', middleware: async (req, res) => { logger.apiReq(req) @@ -53,7 +53,7 @@ module.exports = [ }, { method: 'post', - path: '/api/v3/agent/deprovision', + path: '/api/v1/agent/deprovision', middleware: async (req, res) => { logger.apiReq(req) @@ -82,7 +82,7 @@ module.exports = [ }, { method: 'get', - path: '/api/v3/agent/config', + path: '/api/v1/agent/config', middleware: async (req, res) => { logger.apiReq(req) @@ -106,7 +106,7 @@ module.exports = [ }, { method: 'patch', - path: '/api/v3/agent/config', + path: '/api/v1/agent/config', middleware: async (req, res) => { logger.apiReq(req) @@ -135,7 +135,7 @@ module.exports = [ }, { method: 'get', - path: '/api/v3/agent/config/changes', + path: '/api/v1/agent/config/changes', middleware: async (req, res) => { logger.apiReq(req) @@ -164,7 +164,7 @@ module.exports = [ }, { method: 'patch', - path: '/api/v3/agent/config/changes', + path: '/api/v1/agent/config/changes', middleware: async (req, res) => { logger.apiReq(req) @@ -193,7 +193,7 @@ module.exports = [ }, { method: 'put', - path: '/api/v3/agent/status', + path: '/api/v1/agent/status', middleware: async (req, res) => { logger.apiReq(req) @@ -222,7 +222,7 @@ module.exports = [ }, { method: 'get', - path: '/api/v3/agent/edgeResources', + path: '/api/v1/agent/edgeResources', middleware: async (req, res) => { logger.apiReq(req) @@ -247,7 +247,7 @@ module.exports = [ }, { method: 'get', - path: '/api/v3/agent/microservices', + path: '/api/v1/agent/microservices', middleware: async (req, res) => { logger.apiReq(req) @@ -272,7 +272,7 @@ module.exports = [ }, { method: 'get', - path: '/api/v3/agent/microservices/:microserviceUuid', + path: '/api/v1/agent/microservices/:microserviceUuid', middleware: async (req, res) => { logger.apiReq(req) @@ -301,7 +301,7 @@ module.exports = [ }, { method: 'get', - path: '/api/v3/agent/registries', + path: '/api/v1/agent/registries', middleware: async (req, res) => { logger.apiReq(req) @@ -326,7 +326,7 @@ module.exports = [ }, { method: 'get', - path: '/api/v3/agent/tunnel', + path: '/api/v1/agent/tunnel', middleware: async (req, res) => { logger.apiReq(req) @@ -355,7 +355,7 @@ module.exports = [ }, { method: 'get', - path: '/api/v3/agent/strace', + path: '/api/v1/agent/strace', middleware: async (req, res) => { logger.apiReq(req) @@ -384,7 +384,7 @@ module.exports = [ }, { method: 'put', - path: '/api/v3/agent/strace', + path: '/api/v1/agent/strace', middleware: async (req, res) => { logger.apiReq(req) @@ -417,7 +417,7 @@ module.exports = [ }, { method: 'get', - path: '/api/v3/agent/version', + path: '/api/v1/agent/version', middleware: async (req, res) => { logger.apiReq(req) @@ -446,7 +446,7 @@ module.exports = [ }, { method: 'put', - path: '/api/v3/agent/hal/hw', + path: '/api/v1/agent/hal/hw', middleware: async (req, res) => { logger.apiReq(req) @@ -475,7 +475,7 @@ module.exports = [ }, { method: 'put', - path: '/api/v3/agent/hal/usb', + path: '/api/v1/agent/hal/usb', middleware: async (req, res) => { logger.apiReq(req) @@ -504,7 +504,7 @@ module.exports = [ }, { method: 'delete', - path: '/api/v3/agent/delete-node', + path: '/api/v1/agent/delete-node', middleware: async (req, res) => { logger.apiReq(req) @@ -529,7 +529,7 @@ module.exports = [ }, { method: 'get', - path: '/api/v3/agent/image-snapshot', + path: '/api/v1/agent/image-snapshot', middleware: async (req, res) => { logger.apiReq(req) @@ -558,7 +558,7 @@ module.exports = [ }, { method: 'put', - path: '/api/v3/agent/image-snapshot', + path: '/api/v1/agent/image-snapshot', middleware: async (req, res) => { logger.apiReq(req) diff --git a/src/routes/application.js b/src/routes/application.js index 860912f89..18cfe4608 100644 --- a/src/routes/application.js +++ b/src/routes/application.js @@ -19,7 +19,7 @@ const logger = require('../logger') module.exports = [ { method: 'get', - path: '/api/v3/application', + path: '/api/v1/application', middleware: async (req, res) => { logger.apiReq(req) @@ -43,7 +43,7 @@ module.exports = [ }, { method: 'post', - path: '/api/v3/application', + path: '/api/v1/application', supportSubstitution: true, middleware: async (req, res) => { logger.apiReq(req) @@ -72,7 +72,7 @@ module.exports = [ }, { method: 'post', - path: '/api/v3/application/yaml', + path: '/api/v1/application/yaml', fileInput: 'application', middleware: async (req, res) => { logger.apiReq(req) @@ -101,7 +101,7 @@ module.exports = [ }, { method: 'get', - path: '/api/v3/application/:name', + path: '/api/v1/application/:name', middleware: async (req, res) => { logger.apiReq(req) @@ -130,7 +130,7 @@ module.exports = [ }, { method: 'patch', - path: '/api/v3/application/:name', + path: '/api/v1/application/:name', supportSubstitution: true, middleware: async (req, res) => { logger.apiReq(req) @@ -163,7 +163,7 @@ module.exports = [ }, { method: 'put', - path: '/api/v3/application/yaml/:name', + path: '/api/v1/application/yaml/:name', fileInput: 'application', middleware: async (req, res) => { logger.apiReq(req) @@ -196,7 +196,7 @@ module.exports = [ }, { method: 'put', - path: '/api/v3/application/:name', + path: '/api/v1/application/:name', supportSubstitution: true, middleware: async (req, res) => { logger.apiReq(req) @@ -229,7 +229,7 @@ module.exports = [ }, { method: 'delete', - path: '/api/v3/application/:name', + path: '/api/v1/application/:name', middleware: async (req, res) => { logger.apiReq(req) diff --git a/src/routes/applicationTemplate.js b/src/routes/applicationTemplate.js index ad0d5af7a..c25958b58 100644 --- a/src/routes/applicationTemplate.js +++ b/src/routes/applicationTemplate.js @@ -19,7 +19,7 @@ const logger = require('../logger') module.exports = [ { method: 'get', - path: '/api/v3/applicationTemplates', + path: '/api/v1/applicationTemplates', middleware: async (req, res) => { logger.apiReq(req) @@ -43,7 +43,7 @@ module.exports = [ }, { method: 'post', - path: '/api/v3/applicationTemplate', + path: '/api/v1/applicationTemplate', middleware: async (req, res) => { logger.apiReq(req) @@ -71,7 +71,7 @@ module.exports = [ }, { method: 'post', - path: '/api/v3/applicationTemplate/yaml', + path: '/api/v1/applicationTemplate/yaml', fileInput: 'template', middleware: async (req, res) => { logger.apiReq(req) @@ -100,7 +100,7 @@ module.exports = [ }, { method: 'get', - path: '/api/v3/applicationTemplate/:name', + path: '/api/v1/applicationTemplate/:name', middleware: async (req, res) => { logger.apiReq(req) @@ -128,7 +128,7 @@ module.exports = [ }, { method: 'patch', - path: '/api/v3/applicationTemplate/:name', + path: '/api/v1/applicationTemplate/:name', middleware: async (req, res) => { logger.apiReq(req) @@ -160,7 +160,7 @@ module.exports = [ }, { method: 'put', - path: '/api/v3/applicationTemplate/yaml/:name', + path: '/api/v1/applicationTemplate/yaml/:name', fileInput: 'template', middleware: async (req, res) => { logger.apiReq(req) @@ -193,7 +193,7 @@ module.exports = [ }, { method: 'put', - path: '/api/v3/applicationTemplate/:name', + path: '/api/v1/applicationTemplate/:name', middleware: async (req, res) => { logger.apiReq(req) @@ -225,7 +225,7 @@ module.exports = [ }, { method: 'delete', - path: '/api/v3/applicationTemplate/:name', + path: '/api/v1/applicationTemplate/:name', middleware: async (req, res) => { logger.apiReq(req) diff --git a/src/routes/capabilities.js b/src/routes/capabilities.js index 400e5750e..a4f684f6d 100644 --- a/src/routes/capabilities.js +++ b/src/routes/capabilities.js @@ -15,7 +15,7 @@ const logger = require('../logger') module.exports = [ { method: 'head', - path: '/api/v3/capabilities/edgeResources', + path: '/api/v1/capabilities/edgeResources', middleware: async (req, res) => { logger.apiReq(req) res.sendStatus(204) @@ -23,7 +23,7 @@ module.exports = [ }, { method: 'head', - path: '/api/v3/capabilities/applicationTemplates', + path: '/api/v1/capabilities/applicationTemplates', middleware: async (req, res) => { logger.apiReq(req) res.sendStatus(204) diff --git a/src/routes/catalog.js b/src/routes/catalog.js index 631da303c..e7275a860 100644 --- a/src/routes/catalog.js +++ b/src/routes/catalog.js @@ -19,7 +19,7 @@ const logger = require('../logger') module.exports = [ { method: 'get', - path: '/api/v3/catalog/microservices', + path: '/api/v1/catalog/microservices', middleware: async (req, res) => { logger.apiReq(req) @@ -47,7 +47,7 @@ module.exports = [ }, { method: 'post', - path: '/api/v3/catalog/microservices', + path: '/api/v1/catalog/microservices', supportSubstitution: true, middleware: async (req, res) => { logger.apiReq(req) @@ -84,7 +84,7 @@ module.exports = [ }, { method: 'get', - path: '/api/v3/catalog/microservices/:id', + path: '/api/v1/catalog/microservices/:id', middleware: async (req, res) => { logger.apiReq(req) @@ -116,7 +116,7 @@ module.exports = [ }, { method: 'patch', - path: '/api/v3/catalog/microservices/:id', + path: '/api/v1/catalog/microservices/:id', supportSubstitution: true, middleware: async (req, res) => { logger.apiReq(req) @@ -157,7 +157,7 @@ module.exports = [ }, { method: 'delete', - path: '/api/v3/catalog/microservices/:id', + path: '/api/v1/catalog/microservices/:id', middleware: async (req, res) => { logger.apiReq(req) diff --git a/src/routes/config.js b/src/routes/config.js index 118f13a1f..1cf961afe 100644 --- a/src/routes/config.js +++ b/src/routes/config.js @@ -19,7 +19,7 @@ const Errors = require('../helpers/errors') module.exports = [ { method: 'get', - path: '/api/v3/config', + path: '/api/v1/config', middleware: async (req, res) => { logger.apiReq(req) @@ -42,7 +42,7 @@ module.exports = [ }, { method: 'get', - path: '/api/v3/config/:key', + path: '/api/v1/config/:key', middleware: async (req, res) => { logger.apiReq(req) @@ -70,7 +70,7 @@ module.exports = [ }, { method: 'put', - path: '/api/v3/config', + path: '/api/v1/config', supportSubstitution: true, middleware: async (req, res) => { logger.apiReq(req) diff --git a/src/routes/controller.js b/src/routes/controller.js index 3cd8fc98f..6dd20d300 100644 --- a/src/routes/controller.js +++ b/src/routes/controller.js @@ -18,7 +18,7 @@ const logger = require('../logger') module.exports = [ { method: 'get', - path: '/api/v3/status', + path: '/api/v1/status', middleware: async (req, res) => { logger.apiReq(req) @@ -36,7 +36,7 @@ module.exports = [ }, { method: 'get', - path: '/api/v3/email-activation', + path: '/api/v1/email-activation', middleware: async (req, res) => { logger.apiReq(req) @@ -54,7 +54,7 @@ module.exports = [ }, { method: 'get', - path: '/api/v3/fog-types/', + path: '/api/v1/fog-types/', middleware: async (req, res) => { logger.apiReq(req) diff --git a/src/routes/diagnostics.js b/src/routes/diagnostics.js index 67acfce2d..5df090b4c 100644 --- a/src/routes/diagnostics.js +++ b/src/routes/diagnostics.js @@ -20,7 +20,7 @@ const logger = require('../logger') module.exports = [ { method: 'post', - path: '/api/v3/microservices/:uuid/image-snapshot', + path: '/api/v1/microservices/:uuid/image-snapshot', middleware: async (req, res) => { logger.apiReq(req) @@ -52,7 +52,7 @@ module.exports = [ }, { method: 'get', - path: '/api/v3/microservices/:uuid/image-snapshot', + path: '/api/v1/microservices/:uuid/image-snapshot', middleware: async (req, res) => { logger.apiReq(req) @@ -92,7 +92,7 @@ module.exports = [ }, { method: 'patch', - path: '/api/v3/microservices/:uuid/strace', + path: '/api/v1/microservices/:uuid/strace', middleware: async (req, res) => { logger.apiReq(req) @@ -128,7 +128,7 @@ module.exports = [ }, { method: 'get', - path: '/api/v3/microservices/:uuid/strace', + path: '/api/v1/microservices/:uuid/strace', middleware: async (req, res) => { logger.apiReq(req) @@ -160,7 +160,7 @@ module.exports = [ }, { method: 'put', - path: '/api/v3/microservices/:uuid/strace', + path: '/api/v1/microservices/:uuid/strace', middleware: async (req, res) => { logger.apiReq(req) diff --git a/src/routes/edgeResource.js b/src/routes/edgeResource.js index f67a68be3..3a972adcb 100644 --- a/src/routes/edgeResource.js +++ b/src/routes/edgeResource.js @@ -19,7 +19,7 @@ const Errors = require('../helpers/errors') module.exports = [ { method: 'get', - path: '/api/v3/edgeResources', + path: '/api/v1/edgeResources', middleware: async (req, res) => { logger.apiReq(req) @@ -42,7 +42,7 @@ module.exports = [ }, { method: 'get', - path: '/api/v3/edgeResource/:name/:version', + path: '/api/v1/edgeResource/:name/:version', middleware: async (req, res) => { logger.apiReq(req) @@ -70,7 +70,7 @@ module.exports = [ }, { method: 'get', - path: '/api/v3/edgeResource/:name', + path: '/api/v1/edgeResource/:name', middleware: async (req, res) => { logger.apiReq(req) @@ -98,7 +98,7 @@ module.exports = [ }, { method: 'put', - path: '/api/v3/edgeResource/:name/:version', + path: '/api/v1/edgeResource/:name/:version', supportSubstitution: true, middleware: async (req, res) => { logger.apiReq(req) @@ -130,7 +130,7 @@ module.exports = [ }, { method: 'delete', - path: '/api/v3/edgeResource/:name/:version', + path: '/api/v1/edgeResource/:name/:version', middleware: async (req, res) => { logger.apiReq(req) @@ -161,7 +161,7 @@ module.exports = [ }, { method: 'post', - path: '/api/v3/edgeResource', + path: '/api/v1/edgeResource', supportSubstitution: true, middleware: async (req, res) => { logger.apiReq(req) @@ -189,7 +189,7 @@ module.exports = [ }, { method: 'post', - path: '/api/v3/edgeResource/:name/:version/link', + path: '/api/v1/edgeResource/:name/:version/link', middleware: async (req, res) => { logger.apiReq(req) @@ -216,7 +216,7 @@ module.exports = [ }, { method: 'delete', - path: '/api/v3/edgeResource/:name/:version/link', + path: '/api/v1/edgeResource/:name/:version/link', middleware: async (req, res) => { logger.apiReq(req) diff --git a/src/routes/flow.js b/src/routes/flow.js index 951e69206..16b8616cf 100644 --- a/src/routes/flow.js +++ b/src/routes/flow.js @@ -19,7 +19,7 @@ const logger = require('../logger') module.exports = [ { method: 'get', - path: '/api/v3/flow', + path: '/api/v1/flow', middleware: async (req, res) => { logger.apiReq(req) @@ -43,7 +43,7 @@ module.exports = [ }, { method: 'post', - path: '/api/v3/flow', + path: '/api/v1/flow', middleware: async (req, res) => { logger.apiReq(req) @@ -71,7 +71,7 @@ module.exports = [ }, { method: 'get', - path: '/api/v3/flow/:id', + path: '/api/v1/flow/:id', middleware: async (req, res) => { logger.apiReq(req) @@ -99,7 +99,7 @@ module.exports = [ }, { method: 'patch', - path: '/api/v3/flow/:id', + path: '/api/v1/flow/:id', middleware: async (req, res) => { logger.apiReq(req) @@ -131,7 +131,7 @@ module.exports = [ }, { method: 'delete', - path: '/api/v3/flow/:id', + path: '/api/v1/flow/:id', middleware: async (req, res) => { logger.apiReq(req) diff --git a/src/routes/iofog.js b/src/routes/iofog.js index 1a6a734d3..a38e14124 100644 --- a/src/routes/iofog.js +++ b/src/routes/iofog.js @@ -19,7 +19,7 @@ const logger = require('../logger') module.exports = [ { method: 'get', - path: '/api/v3/iofog-list', + path: '/api/v1/iofog-list', middleware: async (req, res) => { logger.apiReq(req) @@ -47,7 +47,7 @@ module.exports = [ }, { method: 'post', - path: '/api/v3/iofog', + path: '/api/v1/iofog', supportSubstitution: true, middleware: async (req, res) => { logger.apiReq(req) @@ -76,7 +76,7 @@ module.exports = [ }, { method: 'patch', - path: '/api/v3/iofog/:uuid', + path: '/api/v1/iofog/:uuid', supportSubstitution: true, middleware: async (req, res) => { logger.apiReq(req) @@ -109,7 +109,7 @@ module.exports = [ }, { method: 'delete', - path: '/api/v3/iofog/:uuid', + path: '/api/v1/iofog/:uuid', middleware: async (req, res) => { logger.apiReq(req) @@ -137,7 +137,7 @@ module.exports = [ }, { method: 'get', - path: '/api/v3/iofog/:uuid', + path: '/api/v1/iofog/:uuid', middleware: async (req, res) => { logger.apiReq(req) @@ -165,7 +165,7 @@ module.exports = [ }, { method: 'get', - path: '/api/v3/iofog/:uuid/provisioning-key', + path: '/api/v1/iofog/:uuid/provisioning-key', middleware: async (req, res) => { logger.apiReq(req) @@ -194,7 +194,7 @@ module.exports = [ }, { method: 'post', - path: '/api/v3/iofog/:uuid/version/:versionCommand', + path: '/api/v1/iofog/:uuid/version/:versionCommand', middleware: async (req, res) => { logger.apiReq(req) @@ -227,7 +227,7 @@ module.exports = [ }, { method: 'post', - path: '/api/v3/iofog/:uuid/reboot', + path: '/api/v1/iofog/:uuid/reboot', middleware: async (req, res) => { logger.apiReq(req) @@ -260,7 +260,7 @@ module.exports = [ }, { method: 'get', - path: '/api/v3/iofog/:uuid/hal/hw', + path: '/api/v1/iofog/:uuid/hal/hw', middleware: async (req, res) => { logger.apiReq(req) @@ -289,7 +289,7 @@ module.exports = [ }, { method: 'get', - path: '/api/v3/iofog/:uuid/hal/usb', + path: '/api/v1/iofog/:uuid/hal/usb', middleware: async (req, res) => { logger.apiReq(req) @@ -317,7 +317,7 @@ module.exports = [ }, { method: 'post', - path: '/api/v3/iofog/:uuid/prune', + path: '/api/v1/iofog/:uuid/prune', middleware: async (req, res) => { logger.apiReq(req) diff --git a/src/routes/kubelet.js b/src/routes/kubelet.js index 174272453..54e7a5bcf 100644 --- a/src/routes/kubelet.js +++ b/src/routes/kubelet.js @@ -20,7 +20,7 @@ const ResponseDecorator = require('../decorators/response-decorator') module.exports = [ { method: 'post', - path: '/api/v3/k8s/createPod', + path: '/api/v1/k8s/createPod', middleware: async (req, res) => { logger.apiReq(req) @@ -53,7 +53,7 @@ module.exports = [ }, { method: 'put', - path: '/api/v3/k8s/updatePod', + path: '/api/v1/k8s/updatePod', middleware: async (req, res) => { logger.apiReq(req) @@ -86,7 +86,7 @@ module.exports = [ }, { method: 'delete', - path: '/api/v3/k8s/deletePod', + path: '/api/v1/k8s/deletePod', middleware: async (req, res) => { logger.apiReq(req) @@ -119,7 +119,7 @@ module.exports = [ }, { method: 'get', - path: '/api/v3/k8s/getPod', + path: '/api/v1/k8s/getPod', middleware: async (req, res) => { logger.apiReq(req) @@ -152,7 +152,7 @@ module.exports = [ }, { method: 'get', - path: '/api/v3/k8s/getContainerLogs', + path: '/api/v1/k8s/getContainerLogs', middleware: async (req, res) => { logger.apiReq(req) @@ -185,7 +185,7 @@ module.exports = [ }, { method: 'get', - path: '/api/v3/k8s/getPodStatus', + path: '/api/v1/k8s/getPodStatus', middleware: async (req, res) => { logger.apiReq(req) @@ -218,7 +218,7 @@ module.exports = [ }, { method: 'get', - path: '/api/v3/k8s/getPods', + path: '/api/v1/k8s/getPods', middleware: async (req, res) => { logger.apiReq(req) @@ -251,7 +251,7 @@ module.exports = [ }, { method: 'get', - path: '/api/v3/k8s/capacity', + path: '/api/v1/k8s/capacity', middleware: async (req, res) => { logger.apiReq(req) @@ -284,7 +284,7 @@ module.exports = [ }, { method: 'get', - path: '/api/v3/k8s/allocatable', + path: '/api/v1/k8s/allocatable', middleware: async (req, res) => { logger.apiReq(req) @@ -317,7 +317,7 @@ module.exports = [ }, { method: 'get', - path: '/api/v3/k8s/nodeConditions', + path: '/api/v1/k8s/nodeConditions', middleware: async (req, res) => { logger.apiReq(req) @@ -350,7 +350,7 @@ module.exports = [ }, { method: 'get', - path: '/api/v3/k8s/nodeAddresses', + path: '/api/v1/k8s/nodeAddresses', middleware: async (req, res) => { logger.apiReq(req) @@ -383,7 +383,7 @@ module.exports = [ }, { method: 'get', - path: '/api/v3/k8s/vk-token', + path: '/api/v1/k8s/vk-token', middleware: async (req, res) => { logger.apiReq(req) @@ -408,7 +408,7 @@ module.exports = [ }, { method: 'get', - path: '/api/v3/k8s/scheduler-token', + path: '/api/v1/k8s/scheduler-token', middleware: async (req, res) => { logger.apiReq(req) diff --git a/src/routes/microservices.js b/src/routes/microservices.js index b0c6cdd97..a005c5048 100644 --- a/src/routes/microservices.js +++ b/src/routes/microservices.js @@ -19,7 +19,7 @@ const logger = require('../logger') module.exports = [ { method: 'get', - path: '/api/v3/microservices/public-ports', + path: '/api/v1/microservices/public-ports', middleware: async (req, res) => { logger.apiReq(req) @@ -47,7 +47,7 @@ module.exports = [ }, { method: 'get', - path: '/api/v3/microservices/', + path: '/api/v1/microservices/', middleware: async (req, res) => { logger.apiReq(req) @@ -72,7 +72,7 @@ module.exports = [ }, { method: 'post', - path: '/api/v3/microservices', + path: '/api/v1/microservices', supportSubstitution: true, middleware: async (req, res) => { logger.apiReq(req) @@ -102,7 +102,7 @@ module.exports = [ }, { method: 'post', - path: '/api/v3/microservices/yaml', + path: '/api/v1/microservices/yaml', supportSubstitution: true, fileInput: 'microservice', middleware: async (req, res) => { @@ -133,7 +133,7 @@ module.exports = [ }, { method: 'get', - path: '/api/v3/microservices/:uuid', + path: '/api/v1/microservices/:uuid', middleware: async (req, res) => { logger.apiReq(req) @@ -163,7 +163,7 @@ module.exports = [ { method: 'patch', - path: '/api/v3/microservices/:uuid', + path: '/api/v1/microservices/:uuid', supportSubstitution: true, middleware: async (req, res) => { logger.apiReq(req) @@ -198,7 +198,7 @@ module.exports = [ { method: 'patch', - path: '/api/v3/microservices/yaml/:uuid', + path: '/api/v1/microservices/yaml/:uuid', supportSubstitution: true, fileInput: 'microservice', middleware: async (req, res) => { @@ -233,7 +233,7 @@ module.exports = [ }, { method: 'delete', - path: '/api/v3/microservices/:uuid', + path: '/api/v1/microservices/:uuid', middleware: async (req, res) => { logger.apiReq(req) @@ -262,7 +262,7 @@ module.exports = [ }, { method: 'post', - path: '/api/v3/microservices/:uuid/routes/:receiverUuid', + path: '/api/v1/microservices/:uuid/routes/:receiverUuid', middleware: async (req, res) => { logger.apiReq(req) @@ -295,7 +295,7 @@ module.exports = [ }, { method: 'delete', - path: '/api/v3/microservices/:uuid/routes/:receiverUuid', + path: '/api/v1/microservices/:uuid/routes/:receiverUuid', middleware: async (req, res) => { logger.apiReq(req) @@ -328,7 +328,7 @@ module.exports = [ }, { method: 'post', - path: '/api/v3/microservices/:uuid/port-mapping', + path: '/api/v1/microservices/:uuid/port-mapping', middleware: async (req, res) => { logger.apiReq(req) @@ -361,7 +361,7 @@ module.exports = [ }, { method: 'delete', - path: '/api/v3/microservices/:uuid/port-mapping/:internalPort', + path: '/api/v1/microservices/:uuid/port-mapping/:internalPort', middleware: async (req, res) => { logger.apiReq(req) @@ -390,7 +390,7 @@ module.exports = [ }, { method: 'get', - path: '/api/v3/microservices/:uuid/port-mapping', + path: '/api/v1/microservices/:uuid/port-mapping', middleware: async (req, res) => { logger.apiReq(req) @@ -419,7 +419,7 @@ module.exports = [ }, { method: 'get', - path: '/api/v3/microservices/:uuid/volume-mapping', + path: '/api/v1/microservices/:uuid/volume-mapping', middleware: async (req, res) => { logger.apiReq(req) @@ -451,7 +451,7 @@ module.exports = [ }, { method: 'post', - path: '/api/v3/microservices/:uuid/volume-mapping', + path: '/api/v1/microservices/:uuid/volume-mapping', middleware: async (req, res) => { logger.apiReq(req) @@ -487,7 +487,7 @@ module.exports = [ }, { method: 'delete', - path: '/api/v3/microservices/:uuid/volume-mapping/:id', + path: '/api/v1/microservices/:uuid/volume-mapping/:id', middleware: async (req, res) => { logger.apiReq(req) diff --git a/src/routes/registries.js b/src/routes/registries.js index 6080487ef..8d327d588 100644 --- a/src/routes/registries.js +++ b/src/routes/registries.js @@ -19,10 +19,10 @@ const logger = require('../logger') module.exports = [ { method: 'post', - path: '/api/v3/registries', + path: '/api/v1/registries', supportSubstitution: true, middleware: async (req, res) => { - logger.apiReq('POST /api/v3/registries') // don't use req as arg, because password not encrypted + logger.apiReq('POST /api/v1/registries') // don't use req as arg, because password not encrypted const successCode = constants.HTTP_CODE_CREATED const errorCodes = [ @@ -46,7 +46,7 @@ module.exports = [ }, { method: 'get', - path: '/api/v3/registries', + path: '/api/v1/registries', middleware: async (req, res) => { logger.apiReq(req) @@ -72,7 +72,7 @@ module.exports = [ }, { method: 'delete', - path: '/api/v3/registries/:id', + path: '/api/v1/registries/:id', middleware: async (req, res) => { logger.apiReq(req) @@ -102,10 +102,10 @@ module.exports = [ }, { method: 'patch', - path: '/api/v3/registries/:id', + path: '/api/v1/registries/:id', supportSubstitution: true, middleware: async (req, res) => { - logger.apiReq('PATCH /api/v3/registries') // don't use req as arg, because password not encrypted + logger.apiReq('PATCH /api/v1/registries') // don't use req as arg, because password not encrypted const successCode = constants.HTTP_CODE_NO_CONTENT const errorCodes = [ diff --git a/src/routes/router.js b/src/routes/router.js index ba3aa1d8a..0dbc5e8df 100644 --- a/src/routes/router.js +++ b/src/routes/router.js @@ -19,7 +19,7 @@ const Errors = require('../helpers/errors') module.exports = [ { method: 'get', - path: '/api/v3/router', + path: '/api/v1/router', middleware: async (req, res) => { logger.apiReq(req) @@ -46,7 +46,7 @@ module.exports = [ }, { method: 'put', - path: '/api/v3/router', + path: '/api/v1/router', supportSubstitution: true, middleware: async (req, res) => { logger.apiReq(req) diff --git a/src/routes/routing.js b/src/routes/routing.js index a7e78d752..ac54028d2 100644 --- a/src/routes/routing.js +++ b/src/routes/routing.js @@ -19,7 +19,7 @@ const Errors = require('../helpers/errors') module.exports = [ { method: 'get', - path: '/api/v3/routes', + path: '/api/v1/routes', middleware: async (req, res) => { logger.apiReq(req) @@ -46,7 +46,7 @@ module.exports = [ }, { method: 'get', - path: '/api/v3/routes/:appName/:name', + path: '/api/v1/routes/:appName/:name', middleware: async (req, res) => { logger.apiReq(req) @@ -73,7 +73,7 @@ module.exports = [ }, { method: 'post', - path: '/api/v3/routes', + path: '/api/v1/routes', supportSubstitution: true, middleware: async (req, res) => { logger.apiReq(req) @@ -109,7 +109,7 @@ module.exports = [ }, { method: 'patch', - path: '/api/v3/routes/:appName/:name', + path: '/api/v1/routes/:appName/:name', supportSubstitution: true, middleware: async (req, res) => { logger.apiReq(req) @@ -143,7 +143,7 @@ module.exports = [ }, { method: 'delete', - path: '/api/v3/routes/:appName/:name', + path: '/api/v1/routes/:appName/:name', middleware: async (req, res) => { logger.apiReq(req) diff --git a/src/routes/tunnel.js b/src/routes/tunnel.js index 840f4551f..ed0d369fc 100644 --- a/src/routes/tunnel.js +++ b/src/routes/tunnel.js @@ -19,9 +19,9 @@ const logger = require('../logger') module.exports = [ { method: 'patch', - path: '/api/v3/iofog/:id/tunnel', + path: '/api/v1/iofog/:id/tunnel', middleware: async (req, res) => { - logger.apiReq('POST /api/v3/iofog/:id/tunnel') // don't use req as arg, because password not encrypted + logger.apiReq('POST /api/v1/iofog/:id/tunnel') // don't use req as arg, because password not encrypted const successCode = constants.HTTP_CODE_NO_CONTENT const errorCodes = [ @@ -49,7 +49,7 @@ module.exports = [ }, { method: 'get', - path: '/api/v3/iofog/:id/tunnel', + path: '/api/v1/iofog/:id/tunnel', middleware: async (req, res) => { logger.apiReq(req) diff --git a/src/routes/user.js b/src/routes/user.js index 0f7f7703b..9ad3945df 100644 --- a/src/routes/user.js +++ b/src/routes/user.js @@ -22,9 +22,9 @@ const logger = require('../logger') module.exports = [ { method: 'post', - path: '/api/v3/user/login', + path: '/api/v1/user/login', middleware: async (req, res) => { - logger.apiReq('POST /api/v3/user/login') // don't use req as arg, because password not encrypted + logger.apiReq('POST /api/v1/user/login') // don't use req as arg, because password not encrypted const successCode = constants.HTTP_CODE_SUCCESS const errorCodes = [ @@ -45,13 +45,13 @@ module.exports = [ .status(responseObject.code) .send(responseObject.body) - logger.apiRes('POST /api/v3/user/login', { args: { statusCode: responseObject.code } }) + logger.apiRes('POST /api/v1/user/login', { args: { statusCode: responseObject.code } }) // don't use req and responseObject as args, because they have password and token } }, { method: 'post', - path: '/api/v3/user/logout', + path: '/api/v1/user/logout', middleware: async (req, res) => { logger.apiReq(req) @@ -73,9 +73,9 @@ module.exports = [ }, { method: 'post', - path: '/api/v3/user/signup', + path: '/api/v1/user/signup', middleware: async (req, res) => { - logger.apiReq('POST /api/v3/user/signup') // don't use req as arg, because password not encrypted + logger.apiReq('POST /api/v1/user/signup') // don't use req as arg, because password not encrypted const successCode = constants.HTTP_CODE_CREATED const errorCodes = [ @@ -97,7 +97,7 @@ module.exports = [ }, { method: 'get', - path: '/api/v3/user/signup/resend-activation', + path: '/api/v1/user/signup/resend-activation', middleware: async (req, res) => { logger.apiReq(req) @@ -122,7 +122,7 @@ module.exports = [ }, { method: 'post', - path: '/api/v3/user/activate', + path: '/api/v1/user/activate', middleware: async (req, res) => { logger.apiReq(req) @@ -152,7 +152,7 @@ module.exports = [ }, { method: 'get', - path: '/api/v3/user/profile', + path: '/api/v1/user/profile', middleware: async (req, res) => { logger.apiReq(req) @@ -176,7 +176,7 @@ module.exports = [ }, { method: 'patch', - path: '/api/v3/user/profile', + path: '/api/v1/user/profile', middleware: async (req, res) => { logger.apiReq(req) @@ -205,7 +205,7 @@ module.exports = [ }, { method: 'delete', - path: '/api/v3/user/profile', + path: '/api/v1/user/profile', middleware: async (req, res) => { logger.apiReq(req) @@ -230,9 +230,9 @@ module.exports = [ }, { method: 'patch', - path: '/api/v3/user/password', + path: '/api/v1/user/password', middleware: async (req, res) => { - logger.apiReq('PATCH /api/v3/user/password') // don't use req as arg, because password not encrypted + logger.apiReq('PATCH /api/v1/user/password') // don't use req as arg, because password not encrypted const successCode = constants.HTTP_CODE_NO_CONTENT const errorCodes = [ @@ -259,7 +259,7 @@ module.exports = [ }, { method: 'delete', - path: '/api/v3/user/password', + path: '/api/v1/user/password', middleware: async (req, res) => { logger.apiReq(req) diff --git a/test/application-template-update.yaml b/test/application-template-update.yaml index d4a55b54c..fa96dcea0 100644 --- a/test/application-template-update.yaml +++ b/test/application-template-update.yaml @@ -1,5 +1,5 @@ kind: ApplicationTemplate -apiVersion: iofog.org/v3 +apiVersion: datasance.com/v1 metadata: name: 'app-template-from-yaml' spec: diff --git a/test/application-template.yaml b/test/application-template.yaml index 2c2b6ce03..6d4dd682a 100644 --- a/test/application-template.yaml +++ b/test/application-template.yaml @@ -1,5 +1,5 @@ kind: ApplicationTemplate -apiVersion: iofog.org/v3 +apiVersion: datasance.com/v1 metadata: name: 'app-template-from-yaml' spec: diff --git a/test/application-test.yaml b/test/application-test.yaml index 7d8bf35ce..4c2484e26 100644 --- a/test/application-test.yaml +++ b/test/application-test.yaml @@ -1,5 +1,5 @@ kind: Application -apiVersion: iofog.org/v3 +apiVersion: datasance.com/v1 metadata: name: "healthcare-wearable-flow" spec: diff --git a/test/application-update-test.yaml b/test/application-update-test.yaml index 2f1b3d3c6..6a560efce 100644 --- a/test/application-update-test.yaml +++ b/test/application-update-test.yaml @@ -1,5 +1,5 @@ kind: Application -apiVersion: iofog.org/v3 +apiVersion: datasance.com/v1 metadata: name: "healthcare-wearable-flow" spec: diff --git a/test/postman_collection.json b/test/postman_collection.json index 2cd28d63e..92fabe783 100644 --- a/test/postman_collection.json +++ b/test/postman_collection.json @@ -39,13 +39,13 @@ "raw": "{\n \"firstName\": \"John\",\n \"lastName\": \"Doe\",\n \"email\": \"user@domain.com\",\n \"password\": \"#Bugs4Fun\",\n \"subscriptionKey\": \"xxxx-xxxx-xxxx-xxxx\"\n}" }, "url": { - "raw": "{{host}}/api/v3/user/signup", + "raw": "{{host}}/api/v1/user/signup", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "user", "signup" ] @@ -83,13 +83,13 @@ "raw": "{\n \"activationCode\": \"string\"\n}" }, "url": { - "raw": "{{host}}/api/v3/user/activate", + "raw": "{{host}}/api/v1/user/activate", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "user", "activate" ] @@ -131,13 +131,13 @@ "raw": "{\n \"email\": \"user@domain.com\",\n \"password\": \"#Bugs4Fun\"\n}" }, "url": { - "raw": "{{host}}/api/v3/user/login", + "raw": "{{host}}/api/v1/user/login", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "user", "login" ] @@ -171,13 +171,13 @@ "raw": "" }, "url": { - "raw": "{{host}}/api/v3/user/logout", + "raw": "{{host}}/api/v1/user/logout", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "user", "logout" ] @@ -219,13 +219,13 @@ "raw": "{\n \"email\": \"user@domain.com\",\n \"password\": \"#Bugs4Fun\"\n}" }, "url": { - "raw": "{{host}}/api/v3/user/login", + "raw": "{{host}}/api/v1/user/login", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "user", "login" ] @@ -250,13 +250,13 @@ "method": "GET", "header": [], "url": { - "raw": "{{host}}/api/v3/user/signup/resend-activation?email=user@domain.com", + "raw": "{{host}}/api/v1/user/signup/resend-activation?email=user@domain.com", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "user", "signup", "resend-activation" @@ -297,13 +297,13 @@ } ], "url": { - "raw": "{{host}}/api/v3/user/profile", + "raw": "{{host}}/api/v1/user/profile", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "user", "profile" ] @@ -337,13 +337,13 @@ "raw": "{\n \"email\": \"user@domain.com\"\n}" }, "url": { - "raw": "{{host}}/api/v3/user/password", + "raw": "{{host}}/api/v1/user/password", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "user", "password" ] @@ -385,13 +385,13 @@ "raw": "{\n \"firstName\": \"Saeid\",\n \"lastName\": \"Rezaei\",\n \"subscriptionKey\": \"XXXX-XXXX-XXXX-XXXX\"\n}" }, "url": { - "raw": "{{host}}/api/v3/user/profile", + "raw": "{{host}}/api/v1/user/profile", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "user", "profile" ] @@ -429,13 +429,13 @@ "raw": "{\n \"oldPassword\": \"#Bugs4Fun\",\n \"newPassword\": \"#Bugs4Fun2\"\n}" }, "url": { - "raw": "{{host}}/api/v3/user/password", + "raw": "{{host}}/api/v1/user/password", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "user", "password" ] @@ -477,13 +477,13 @@ "raw": "{\n \"email\": \"user@domain.com\",\n \"password\": \"#Bugs4Fun2\"\n}" }, "url": { - "raw": "{{host}}/api/v3/user/login", + "raw": "{{host}}/api/v1/user/login", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "user", "login" ] @@ -521,13 +521,13 @@ "raw": "" }, "url": { - "raw": "{{host}}/api/v3/user/profile", + "raw": "{{host}}/api/v1/user/profile", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "user", "profile" ] @@ -582,13 +582,13 @@ "method": "GET", "header": [], "url": { - "raw": "{{host}}/api/v3/status", + "raw": "{{host}}/api/v1/status", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "status" ] } @@ -616,13 +616,13 @@ "method": "GET", "header": [], "url": { - "raw": "{{host}}/api/v3/email-activation", + "raw": "{{host}}/api/v1/email-activation", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "email-activation" ] } @@ -650,13 +650,13 @@ "method": "GET", "header": [], "url": { - "raw": "{{host}}/api/v3/fog-types", + "raw": "{{host}}/api/v1/fog-types", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "fog-types" ] } @@ -719,13 +719,13 @@ "raw": "{\n \"firstName\": \"John\",\n \"lastName\": \"Doe\",\n \"email\": \"user@domain.com\",\n \"password\": \"#Bugs4Fun\",\n \"subscriptionKey\": \"XXXX-XXXX-XXXX-XXXX\"\n}" }, "url": { - "raw": "{{host}}/api/v3/user/signup", + "raw": "{{host}}/api/v1/user/signup", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "user", "signup" ] @@ -767,13 +767,13 @@ "raw": "{\n \"email\": \"user@domain.com\",\n \"password\": \"#Bugs4Fun\"\n}" }, "url": { - "raw": "{{host}}/api/v3/user/login", + "raw": "{{host}}/api/v1/user/login", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "user", "login" ] @@ -819,13 +819,13 @@ "raw": "{\n \"name\": \"system node\",\n \"routerMode\": \"interior\",\n \"messagingPort\": 5672,\n \"edgeRouterPort\": 56722,\n \"interRouterPort\": 56721,\n \"host\": \"localhost\",\n \"isSystem\": true,\n \"location\": \"string\",\n \"latitude\": 0,\n \"longitude\": 0,\n \"description\": \"string\",\n \"dockerUrl\": \"string\",\n \"diskLimit\": 0,\n \"diskDirectory\": \"string\",\n \"memoryLimit\": 0,\n \"cpuLimit\": 0,\n \"logLimit\": 0,\n \"logDirectory\": \"string\",\n \"logFileCount\": 0,\n \"statusFrequency\": 0,\n \"changeFrequency\": 0,\n \"deviceScanFrequency\": 0,\n \"bluetoothEnabled\": false,\n \"watchdogEnabled\": true,\n \"abstractedHardwareEnabled\": false,\n \"fogType\": 1\n,\n \"host\": \"1.2.3.4\"\n}" }, "url": { - "raw": "{{host}}/api/v3/iofog", + "raw": "{{host}}/api/v1/iofog", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "iofog" ] } @@ -870,13 +870,13 @@ "raw": "{\n \"name\": \"string\",\n \"host\": \"1.2.3.4\",\n \"location\": \"string\",\n \"latitude\": 0,\n \"longitude\": 0,\n \"description\": \"string\",\n \"dockerUrl\": \"string\",\n \"diskLimit\": 0,\n \"diskDirectory\": \"string\",\n \"memoryLimit\": 0,\n \"cpuLimit\": 0,\n \"logLimit\": 0,\n \"logDirectory\": \"string\",\n \"logFileCount\": 0,\n \"statusFrequency\": 0,\n \"changeFrequency\": 0,\n \"deviceScanFrequency\": 0,\n \"bluetoothEnabled\": false,\n \"watchdogEnabled\": true,\n \"abstractedHardwareEnabled\": false,\n \"fogType\": 1\n,\n \"host\": \"1.2.3.4\"\n}" }, "url": { - "raw": "{{host}}/api/v3/iofog", + "raw": "{{host}}/api/v1/iofog", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "iofog" ] } @@ -917,13 +917,13 @@ } ], "url": { - "raw": "{{host}}/api/v3/iofog/{{node-id}}/provisioning-key", + "raw": "{{host}}/api/v1/iofog/{{node-id}}/provisioning-key", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "iofog", "{{node-id}}", "provisioning-key" @@ -964,13 +964,13 @@ "raw": "{\n\t\"type\": 1,\n\t\"key\":\"{{provisioning-key}}\"\n}" }, "url": { - "raw": "{{host}}/api/v3/agent/provision", + "raw": "{{host}}/api/v1/agent/provision", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "agent", "provision" ] @@ -1014,13 +1014,13 @@ } ], "url": { - "raw": "{{host}}/api/v3/agent/config", + "raw": "{{host}}/api/v1/agent/config", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "agent", "config" ] @@ -1059,13 +1059,13 @@ } ], "url": { - "raw": "{{host}}/api/v3/agent/image-snapshot", + "raw": "{{host}}/api/v1/agent/image-snapshot", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "agent", "image-snapshot" ] @@ -1104,13 +1104,13 @@ } ], "url": { - "raw": "{{host}}/api/v3/agent/microservices/abcedf", + "raw": "{{host}}/api/v1/agent/microservices/abcedf", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "agent", "microservices", "abcedf" @@ -1147,13 +1147,13 @@ } ], "url": { - "raw": "{{host}}/api/v3/agent/strace", + "raw": "{{host}}/api/v1/agent/strace", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "agent", "strace" ] @@ -1193,13 +1193,13 @@ "raw": "{\r\n \"info\": \"testData\"\r\n}" }, "url": { - "raw": "{{host}}/api/v3/agent/hal/hw", + "raw": "{{host}}/api/v1/agent/hal/hw", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "agent", "hal", "hw" @@ -1240,13 +1240,13 @@ "raw": "{\r\n \"info\": \"testData2\"\r\n}" }, "url": { - "raw": "{{host}}/api/v3/agent/hal/usb", + "raw": "{{host}}/api/v1/agent/hal/usb", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "agent", "hal", "usb" @@ -1290,13 +1290,13 @@ "raw": "{\r\n \"straceData\": [\r\n {\r\n \"microserviceUuid\": \"abcdef\",\r\n \"buffer\": \"test\"\r\n }\r\n ]\r\n}" }, "url": { - "raw": "{{host}}/api/v3/agent/strace", + "raw": "{{host}}/api/v1/agent/strace", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "agent", "strace" ] @@ -1336,13 +1336,13 @@ "raw": "{\r\n \"daemonStatus\": \"RUNNING\",\r\n \"daemonOperatingDuration\": 15,\r\n \"daemonLastStart\": 25,\r\n \"memoryUsage\": 16,\r\n \"diskUsage\": 14,\r\n \"cpuUsage\": 17,\r\n \"memoryViolation\": true,\r\n \"diskViolation\": true,\r\n \"cpuViolation\": true,\r\n \"microserviceStatus\": \"[]\",\r\n \"repositoryCount\": 5,\r\n \"repositoryStatus\": \"RUNNING\",\r\n \"systemTime\": 155,\r\n \"lastStatusTime\": 166,\r\n \"ipAddress\": \"192.168.0.1\",\r\n \"processedMessages\": 255,\r\n \"microserviceMessageCounts\": \"counts\",\r\n \"messageSpeed\": 52,\r\n \"lastCommandTime\": 57,\r\n \"tunnelStatus\": \"on\",\r\n \"version\": \"1\",\r\n \"isReadyToUpgrade\": true,\r\n \"isReadyToRollback\": true\r\n}" }, "url": { - "raw": "{{host}}/api/v3/agent/status", + "raw": "{{host}}/api/v1/agent/status", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "agent", "status" ] @@ -1385,13 +1385,13 @@ "raw": "{\r\n \"info\": \"testData2\"\r\n}" }, "url": { - "raw": "{{host}}/api/v3/agent/image-snapshot", + "raw": "{{host}}/api/v1/agent/image-snapshot", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "agent", "image-snapshot" ] @@ -1438,13 +1438,13 @@ "raw": "{\n \"name\": \"application-msvc-name\",\n \"isSystem\": false,\n \"description\": \"Description\",\n \"isActivated\": true,\n \"microservices\": [\n {\n \"name\": \"msvc-1\",\n \"config\": \"string\",\n \"images\": [\n {\n \"containerImage\": \"hello-world\",\n \"fogTypeId\": 1\n },\n {\n \"containerImage\": \"hello-world\",\n \"fogTypeId\": 2\n }\n ],\n \"registryId\": 1,\n \"application\": \"{{application-name-2}}\",\n \"iofogUuid\": \"{{node-id}}\",\n \"rootHostAccess\": true,\n \"logSize\": 0,\n \"volumeMappings\": [\n {\n \"hostDestination\": \"/var/dest\",\n \"containerDestination\": \"/var/dest\",\n \"accessMode\": \"rw\"\n }\n ],\n \"ports\": [{\n \"internal\": 81,\n \"external\": 5001\n }, {\n \"internal\": 80,\n \"external\": 5002,\n \"protocol\": \"udp\"\n }],\n \"routes\": [],\n \"env\": [\n {\n \"key\": \"KEY1\",\n \"value\": \"value1\"\n },\n {\n \"key\": \"KEY2\",\n \"value\": \"value2\"\n }\n ],\n \"cmd\": [\n \"test\",\n \"--arg1\",\n \"--arg2\"\n ]\n },\n {\n \"name\": \"msvc-2\",\n \"config\": \"string\",\n \"images\": [\n {\n \"containerImage\": \"hello-world\",\n \"fogTypeId\": 1\n },\n {\n \"containerImage\": \"hello-world\",\n \"fogTypeId\": 2\n }\n ],\n \"registryId\": 1,\n \"application\": \"{{application-name-2}}\",\n \"iofogUuid\": \"{{node-id}}\",\n \"rootHostAccess\": true,\n \"logSize\": 0,\n \"volumeMappings\": [\n {\n \"hostDestination\": \"/var/dest\",\n \"containerDestination\": \"/var/dest\",\n \"accessMode\": \"rw\"\n }\n ],\n \"ports\": [],\n \"routes\": [],\n \"env\": [\n {\n \"key\": \"KEY1\",\n \"value\": \"value1\"\n },\n {\n \"key\": \"KEY2\",\n \"value\": \"value2\"\n }\n ],\n \"cmd\": [\n \"test\",\n \"--arg1\",\n \"--arg2\"\n ]\n },\n {\n \"name\": \"msvc-3\",\n \"config\": \"string\",\n \"images\": [\n {\n \"containerImage\": \"hello-world\",\n \"fogTypeId\": 1\n },\n {\n \"containerImage\": \"hello-world\",\n \"fogTypeId\": 2\n }\n ],\n \"registryId\": 1,\n \"application\": \"{{application-name-2}}\",\n \"iofogUuid\": \"{{node-id}}\",\n \"rootHostAccess\": true,\n \"logSize\": 0,\n \"volumeMappings\": [\n {\n \"hostDestination\": \"/var/dest\",\n \"containerDestination\": \"/var/dest\",\n \"accessMode\": \"rw\"\n }\n ],\n \"ports\": [],\n \"routes\": [],\n \"env\": [\n {\n \"key\": \"KEY1\",\n \"value\": \"value1\"\n },\n {\n \"key\": \"KEY2\",\n \"value\": \"value2\"\n }\n ],\n \"cmd\": [\n \"test\",\n \"--arg1\",\n \"--arg2\"\n ]\n }\n ],\n \"routes\": [\n {\n \"from\": \"msvc-1\",\n \"to\": \"msvc-2\",\n \"name\": \"m1-2\"\n }\n ]\n}" }, "url": { - "raw": "{{host}}/api/v3/application", + "raw": "{{host}}/api/v1/application", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "application" ] } @@ -1483,13 +1483,13 @@ "raw": "{\r\n \"networkInterface\": \"wlan0\",\r\n \"dockerUrl\": \"http://google.com\",\r\n \"diskLimit\": 15,\r\n \"diskDirectory\": \"testDirectoryPath\",\r\n \"memoryLimit\": 150,\r\n \"cpuLimit\": 17,\r\n \"logLimit\": 16,\r\n \"logDirectory\": \"testLogPath\",\r\n \"logFileCount\": 7,\r\n \"statusFrequency\": 35,\r\n \"changeFrequency\": 36,\r\n \"deviceScanFrequency\": 37,\r\n \"watchdogEnabled\": true,\r\n \"latitude\": 22,\r\n \"longitude\": 66,\r\n \"gpsMode\": \"manual\",\r\n \"dockerPruningFrequency\": 35,\r\n \"availableDiskThreshold\": 95,\r\n \"logLevel\": \"INFO\"\r\n}" }, "url": { - "raw": "{{host}}/api/v3/agent/config", + "raw": "{{host}}/api/v1/agent/config", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "agent", "config" ] @@ -1531,13 +1531,13 @@ } ], "url": { - "raw": "{{host}}/api/v3/agent/config/changes", + "raw": "{{host}}/api/v1/agent/config/changes", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "agent", "config", "changes" @@ -1577,13 +1577,13 @@ } ], "url": { - "raw": "{{host}}/api/v3/agent/tunnel", + "raw": "{{host}}/api/v1/agent/tunnel", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "agent", "tunnel" ] @@ -1622,13 +1622,13 @@ } ], "url": { - "raw": "{{host}}/api/v3/agent/registries", + "raw": "{{host}}/api/v1/agent/registries", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "agent", "registries" ] @@ -1667,13 +1667,13 @@ } ], "url": { - "raw": "{{host}}/api/v3/agent/version", + "raw": "{{host}}/api/v1/agent/version", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "agent", "version" ] @@ -1720,13 +1720,13 @@ } ], "url": { - "raw": "{{host}}/api/v3/agent/microservices", + "raw": "{{host}}/api/v1/agent/microservices", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "agent", "microservices" ] @@ -1766,13 +1766,13 @@ "raw": "{\n\t\"type\": 1,\n\t\"key\":\"testtesttest\"\n}" }, "url": { - "raw": "{{host}}/api/v3/iofog/{{system-node-id}}", + "raw": "{{host}}/api/v1/iofog/{{system-node-id}}", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "iofog", "{{system-node-id}}" ] @@ -1812,13 +1812,13 @@ "raw": "" }, "url": { - "raw": "{{host}}/api/v3/iofog/{{node-id}}", + "raw": "{{host}}/api/v1/iofog/{{node-id}}", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "iofog", "{{node-id}}" ] @@ -1856,13 +1856,13 @@ "raw": "" }, "url": { - "raw": "{{host}}/api/v3/user/profile", + "raw": "{{host}}/api/v1/user/profile", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "user", "profile" ] @@ -1926,13 +1926,13 @@ "raw": "{\n \"firstName\": \"John\",\n \"lastName\": \"Doe\",\n \"email\": \"user@domain.com\",\n \"password\": \"#Bugs4Fun\",\n \"subscriptionKey\": \"XXXX-XXXX-XXXX-XXXX\"\n}" }, "url": { - "raw": "{{host}}/api/v3/user/signup", + "raw": "{{host}}/api/v1/user/signup", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "user", "signup" ] @@ -1974,13 +1974,13 @@ "raw": "{\n \"email\": \"user@domain.com\",\n \"password\": \"#Bugs4Fun\"\n}" }, "url": { - "raw": "{{host}}/api/v3/user/login", + "raw": "{{host}}/api/v1/user/login", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "user", "login" ] @@ -2026,13 +2026,13 @@ "raw": "{\n \"name\": \"system node\",\n \"routerMode\": \"interior\",\n \"messagingPort\": 5672,\n \"edgeRouterPort\": 56722,\n \"interRouterPort\": 56721,\n \"host\": \"localhost\",\n \"isSystem\": true,\n \"location\": \"string\",\n \"latitude\": 0,\n \"longitude\": 0,\n \"description\": \"string\",\n \"dockerUrl\": \"string\",\n \"diskLimit\": 0,\n \"diskDirectory\": \"string\",\n \"memoryLimit\": 0,\n \"cpuLimit\": 0,\n \"logLimit\": 0,\n \"logDirectory\": \"string\",\n \"logFileCount\": 0,\n \"statusFrequency\": 0,\n \"changeFrequency\": 0,\n \"deviceScanFrequency\": 0,\n \"bluetoothEnabled\": false,\n \"watchdogEnabled\": true,\n \"abstractedHardwareEnabled\": false,\n \"fogType\": 1\n,\n \"host\": \"1.2.3.4\"\n}" }, "url": { - "raw": "{{host}}/api/v3/iofog", + "raw": "{{host}}/api/v1/iofog", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "iofog" ] } @@ -2077,13 +2077,13 @@ "raw": "{\n \"name\": \"string\",\n \"host\": \"1.2.3.4\",\n \"location\": \"string\",\n \"latitude\": 0,\n \"longitude\": 0,\n \"description\": \"string\",\n \"dockerUrl\": \"string\",\n \"diskLimit\": 0,\n \"diskDirectory\": \"string\",\n \"memoryLimit\": 0,\n \"cpuLimit\": 0,\n \"logLimit\": 0,\n \"logDirectory\": \"string\",\n \"logFileCount\": 0,\n \"statusFrequency\": 0,\n \"changeFrequency\": 0,\n \"deviceScanFrequency\": 0,\n \"bluetoothEnabled\": false,\n \"watchdogEnabled\": true,\n \"abstractedHardwareEnabled\": false,\n \"fogType\": 1\n,\n \"host\": \"1.2.3.4\"\n}" }, "url": { - "raw": "{{host}}/api/v3/iofog", + "raw": "{{host}}/api/v1/iofog", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "iofog" ] } @@ -2127,13 +2127,13 @@ "raw": "{\n \"name\": \"application-name\",\n \"isSystem\": false,\n \"description\": \"Description\",\n \"isActivated\": true\n}" }, "url": { - "raw": "{{host}}/api/v3/application", + "raw": "{{host}}/api/v1/application", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "application" ] } @@ -2179,13 +2179,13 @@ "raw": "{\n \"name\": \"application-msvc-name\",\n \"isSystem\": false,\n \"description\": \"Description\",\n \"isActivated\": true,\n \"microservices\": [\n {\n \"name\": \"msvc-1\",\n \"config\": \"string\",\n \"images\": [\n {\n \"containerImage\": \"hello-world\",\n \"fogTypeId\": 1\n },\n {\n \"containerImage\": \"hello-world\",\n \"fogTypeId\": 2\n }\n ],\n \"registryId\": 1,\n \"application\": \"{{application-name-2}}\",\n \"iofogUuid\": \"{{node-id}}\",\n \"rootHostAccess\": true,\n \"logSize\": 0,\n \"volumeMappings\": [\n {\n \"hostDestination\": \"/var/dest\",\n \"containerDestination\": \"/var/dest\",\n \"accessMode\": \"rw\"\n }\n ],\n \"ports\": [],\n \"routes\": [],\n \"env\": [\n {\n \"key\": \"KEY1\",\n \"value\": \"value1\"\n },\n {\n \"key\": \"KEY2\",\n \"value\": \"value2\"\n }\n ],\n \"cmd\": [\n \"test\",\n \"--arg1\",\n \"--arg2\"\n ]\n },\n {\n \"name\": \"msvc-2\",\n \"config\": \"string\",\n \"images\": [\n {\n \"containerImage\": \"hello-world\",\n \"fogTypeId\": 1\n },\n {\n \"containerImage\": \"hello-world\",\n \"fogTypeId\": 2\n }\n ],\n \"registryId\": 1,\n \"application\": \"{{application-name-2}}\",\n \"iofogUuid\": \"{{node-id}}\",\n \"rootHostAccess\": true,\n \"logSize\": 0,\n \"volumeMappings\": [\n {\n \"hostDestination\": \"/var/dest\",\n \"containerDestination\": \"/var/dest\",\n \"accessMode\": \"rw\"\n }\n ],\n \"ports\": [],\n \"routes\": [],\n \"env\": [\n {\n \"key\": \"KEY1\",\n \"value\": \"value1\"\n },\n {\n \"key\": \"KEY2\",\n \"value\": \"value2\"\n }\n ],\n \"cmd\": [\n \"test\",\n \"--arg1\",\n \"--arg2\"\n ]\n },\n {\n \"name\": \"msvc-3\",\n \"config\": \"string\",\n \"images\": [\n {\n \"containerImage\": \"hello-world\",\n \"fogTypeId\": 1\n },\n {\n \"containerImage\": \"hello-world\",\n \"fogTypeId\": 2\n }\n ],\n \"registryId\": 1,\n \"application\": \"{{application-name-2}}\",\n \"iofogUuid\": \"{{node-id}}\",\n \"rootHostAccess\": true,\n \"logSize\": 0,\n \"volumeMappings\": [\n {\n \"hostDestination\": \"/var/dest\",\n \"containerDestination\": \"/var/dest\",\n \"accessMode\": \"rw\"\n }\n ],\n \"ports\": [],\n \"routes\": [],\n \"env\": [\n {\n \"key\": \"KEY1\",\n \"value\": \"value1\"\n },\n {\n \"key\": \"KEY2\",\n \"value\": \"value2\"\n }\n ],\n \"cmd\": [\n \"test\",\n \"--arg1\",\n \"--arg2\"\n ]\n }\n ],\n \"routes\": [\n {\n \"from\": \"msvc-1\",\n \"to\": \"msvc-2\",\n \"name\": \"m1-2\"\n }\n ]\n}" }, "url": { - "raw": "{{host}}/api/v3/application", + "raw": "{{host}}/api/v1/application", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "application" ] } @@ -2236,13 +2236,13 @@ ] }, "url": { - "raw": "{{host}}/api/v3/application/yaml", + "raw": "{{host}}/api/v1/application/yaml", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "application", "yaml" ] @@ -2282,13 +2282,13 @@ } ], "url": { - "raw": "{{host}}/api/v3/routes/{{application-msvc-name}}/{{application-route-name}}", + "raw": "{{host}}/api/v1/routes/{{application-msvc-name}}/{{application-route-name}}", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "routes", "{{application-msvc-name}}", "{{application-route-name}}" @@ -2330,13 +2330,13 @@ "raw": "{\n \"routes\": [\n {\n \"from\": \"msvc-1\",\n \"to\": \"msvc-3\",\n \"name\": \"m1-2\"\n },\n {\n \"from\": \"msvc-1\",\n \"to\": \"msvc-1\",\n \"name\": \"m1-1\"\n }\n ]\n}" }, "url": { - "raw": "{{host}}/api/v3/application/{{application-msvc-name}}", + "raw": "{{host}}/api/v1/application/{{application-msvc-name}}", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "application", "{{application-msvc-name}}" ] @@ -2377,13 +2377,13 @@ } ], "url": { - "raw": "{{host}}/api/v3/application/{{application-msvc-name}}", + "raw": "{{host}}/api/v1/application/{{application-msvc-name}}", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "application", "{{application-msvc-name}}" ] @@ -2423,13 +2423,13 @@ } ], "url": { - "raw": "{{host}}/api/v3/routes/{{application-msvc-name}}/{{application-route-name}}", + "raw": "{{host}}/api/v1/routes/{{application-msvc-name}}/{{application-route-name}}", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "routes", "{{application-msvc-name}}", "{{application-route-name}}" @@ -2479,13 +2479,13 @@ } ], "url": { - "raw": "{{host}}/api/v3/microservices?application={{application-msvc-name}}", + "raw": "{{host}}/api/v1/microservices?application={{application-msvc-name}}", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "microservices" ], "query": [ @@ -2529,13 +2529,13 @@ "raw": "{\n \"description\": \"Description\",\n \"microservices\": [\n {\n \"name\": \"msvc-1\",\n \"config\": \"string\",\n \"images\": [\n {\n \"containerImage\": \"hello-world\",\n \"fogTypeId\": 1\n },\n {\n \"containerImage\": \"hello-world\",\n \"fogTypeId\": 2\n }\n ],\n \"registryId\": 1,\n \"application\": \"{{application-name-2}}\",\n \"iofogUuid\": \"{{node-id}}\",\n \"rootHostAccess\": true,\n \"logSize\": 0,\n \"volumeMappings\": [\n {\n \"hostDestination\": \"/var/dest\",\n \"containerDestination\": \"/var/dest\",\n \"accessMode\": \"rw\"\n }\n ],\n \"ports\": [],\n \"routes\": [],\n \"env\": [\n {\n \"key\": \"KEY1\",\n \"value\": \"value1\"\n },\n {\n \"key\": \"KEY2\",\n \"value\": \"value2\"\n }\n ],\n \"cmd\": [\n \"test\",\n \"--arg1\",\n \"--arg2\"\n ]\n },\n {\n \"name\": \"msvc-2\",\n \"config\": \"string\",\n \"images\": [\n {\n \"containerImage\": \"hello-world\",\n \"fogTypeId\": 1\n },\n {\n \"containerImage\": \"hello-world\",\n \"fogTypeId\": 2\n }\n ],\n \"registryId\": 1,\n \"application\": \"{{application-name-2}}\",\n \"iofogUuid\": \"{{node-id}}\",\n \"rootHostAccess\": true,\n \"logSize\": 0,\n \"volumeMappings\": [\n {\n \"hostDestination\": \"/var/dest\",\n \"containerDestination\": \"/var/dest\",\n \"accessMode\": \"rw\"\n }\n ],\n \"ports\": [],\n \"routes\": [],\n \"env\": [\n {\n \"key\": \"KEY1\",\n \"value\": \"value1\"\n },\n {\n \"key\": \"KEY2\",\n \"value\": \"value2\"\n }\n ],\n \"cmd\": [\n \"test\",\n \"--arg1\",\n \"--arg2\"\n ]\n }\n ]\n}" }, "url": { - "raw": "{{host}}/api/v3/application/{{application-msvc-name}}", + "raw": "{{host}}/api/v1/application/{{application-msvc-name}}", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "application", "{{application-msvc-name}}" ] @@ -2580,13 +2580,13 @@ ] }, "url": { - "raw": "{{host}}/api/v3/application/yaml/{{application-yaml-name}}", + "raw": "{{host}}/api/v1/application/yaml/{{application-yaml-name}}", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "application", "yaml", "{{application-yaml-name}}" @@ -2645,13 +2645,13 @@ } ], "url": { - "raw": "{{host}}/api/v3/microservices?application={{application-yaml-name}}", + "raw": "{{host}}/api/v1/microservices?application={{application-yaml-name}}", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "microservices" ], "query": [ @@ -2705,13 +2705,13 @@ } ], "url": { - "raw": "{{host}}/api/v3/microservices?application={{application-msvc-name}}", + "raw": "{{host}}/api/v1/microservices?application={{application-msvc-name}}", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "microservices" ], "query": [ @@ -2755,13 +2755,13 @@ } ], "url": { - "raw": "{{host}}/api/v3/application", + "raw": "{{host}}/api/v1/application", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "application" ] } @@ -2799,13 +2799,13 @@ } ], "url": { - "raw": "{{host}}/api/v3/application/{{application-name}}", + "raw": "{{host}}/api/v1/application/{{application-name}}", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "application", "{{application-name}}" ] @@ -2845,13 +2845,13 @@ "raw": "{\n \"name\": \"application-name-22\",\n \"isSystem\": true,\n \"description\": \"Description\",\n \"isActivated\": true\n}" }, "url": { - "raw": "{{host}}/api/v3/application/{{application-name}}", + "raw": "{{host}}/api/v1/application/{{application-name}}", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "application", "{{application-name}}" ] @@ -2890,13 +2890,13 @@ } ], "url": { - "raw": "{{host}}/api/v3/application", + "raw": "{{host}}/api/v1/application", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "application" ] } @@ -2934,13 +2934,13 @@ "raw": "" }, "url": { - "raw": "{{host}}/api/v3/application/{{application-name}}", + "raw": "{{host}}/api/v1/application/{{application-name}}", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "application", "{{application-name}}" ] @@ -2979,13 +2979,13 @@ "raw": "" }, "url": { - "raw": "{{host}}/api/v3/application/{{application-msvc-name}}", + "raw": "{{host}}/api/v1/application/{{application-msvc-name}}", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "application", "{{application-msvc-name}}" ] @@ -3024,13 +3024,13 @@ "raw": "" }, "url": { - "raw": "{{host}}/api/v3/application/{{application-yaml-name}}", + "raw": "{{host}}/api/v1/application/{{application-yaml-name}}", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "application", "{{application-yaml-name}}" ] @@ -3069,13 +3069,13 @@ } ], "url": { - "raw": "{{host}}/api/v3/application", + "raw": "{{host}}/api/v1/application", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "application" ] } @@ -3116,13 +3116,13 @@ } ], "url": { - "raw": "{{host}}/api/v3/microservices", + "raw": "{{host}}/api/v1/microservices", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "microservices" ] } @@ -3156,13 +3156,13 @@ } ], "url": { - "raw": "{{host}}/api/v3/route/{{application-route-name}}", + "raw": "{{host}}/api/v1/route/{{application-route-name}}", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "route", "{{application-route-name}}" ] @@ -3202,13 +3202,13 @@ "raw": "{\n\t\"type\": 1,\n\t\"key\":\"testtesttest\"\n}" }, "url": { - "raw": "{{host}}/api/v3/iofog/{{system-node-id}}", + "raw": "{{host}}/api/v1/iofog/{{system-node-id}}", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "iofog", "{{system-node-id}}" ] @@ -3248,13 +3248,13 @@ "raw": "" }, "url": { - "raw": "{{host}}/api/v3/iofog/{{node-id}}", + "raw": "{{host}}/api/v1/iofog/{{node-id}}", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "iofog", "{{node-id}}" ] @@ -3292,13 +3292,13 @@ "raw": "" }, "url": { - "raw": "{{host}}/api/v3/user/profile", + "raw": "{{host}}/api/v1/user/profile", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "user", "profile" ] @@ -3362,13 +3362,13 @@ "raw": "{\n \"firstName\": \"John\",\n \"lastName\": \"Doe\",\n \"email\": \"user@domain.com\",\n \"password\": \"#Bugs4Fun\",\n \"subscriptionKey\": \"XXXX-XXXX-XXXX-XXXX\"\n }" }, "url": { - "raw": "{{host}}/api/v3/user/signup", + "raw": "{{host}}/api/v1/user/signup", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "user", "signup" ] @@ -3410,13 +3410,13 @@ "raw": "{\n \"email\": \"user@domain.com\",\n \"password\": \"#Bugs4Fun\"\n}" }, "url": { - "raw": "{{host}}/api/v3/user/login", + "raw": "{{host}}/api/v1/user/login", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "user", "login" ] @@ -3462,13 +3462,13 @@ "raw": "{\n \"name\": \"system node\",\n \"routerMode\": \"interior\",\n \"messagingPort\": 5672,\n \"edgeRouterPort\": 56722,\n \"interRouterPort\": 56721,\n \"host\": \"localhost\",\n \"isSystem\": true,\n \"location\": \"string\",\n \"latitude\": 0,\n \"longitude\": 0,\n \"description\": \"string\",\n \"dockerUrl\": \"string\",\n \"diskLimit\": 0,\n \"diskDirectory\": \"string\",\n \"memoryLimit\": 0,\n \"cpuLimit\": 0,\n \"logLimit\": 0,\n \"logDirectory\": \"string\",\n \"logFileCount\": 0,\n \"statusFrequency\": 0,\n \"changeFrequency\": 0,\n \"deviceScanFrequency\": 0,\n \"bluetoothEnabled\": false,\n \"watchdogEnabled\": true,\n \"abstractedHardwareEnabled\": false,\n \"fogType\": 1\n,\n \"host\": \"1.2.3.4\"\n}" }, "url": { - "raw": "{{host}}/api/v3/iofog", + "raw": "{{host}}/api/v1/iofog", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "iofog" ] } @@ -3513,13 +3513,13 @@ "raw": "{\n \"name\": \"string\",\n \"host\": \"1.2.3.4\",\n \"location\": \"string\",\n \"latitude\": 0,\n \"longitude\": 0,\n \"description\": \"string\",\n \"dockerUrl\": \"string\",\n \"diskLimit\": 0,\n \"diskDirectory\": \"string\",\n \"memoryLimit\": 0,\n \"cpuLimit\": 0,\n \"logLimit\": 0,\n \"logDirectory\": \"string\",\n \"logFileCount\": 0,\n \"statusFrequency\": 0,\n \"changeFrequency\": 0,\n \"deviceScanFrequency\": 0,\n \"bluetoothEnabled\": false,\n \"watchdogEnabled\": true,\n \"abstractedHardwareEnabled\": false,\n \"fogType\": 1\n,\n \"host\": \"1.2.3.4\"\n}" }, "url": { - "raw": "{{host}}/api/v3/iofog", + "raw": "{{host}}/api/v1/iofog", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "iofog" ] } @@ -3567,13 +3567,13 @@ "raw": "{\n \"name\": \"application-template-name\",\n \"variables\": [\n {\n \"key\": \"agent-1-name\",\n \"description\": \"Agent name for msvc-1\"\n },\n {\n \"key\": \"env-value-1\",\n \"description\": \"ENV variable value for KEY1\"\n },\n {\n \"key\": \"env-value-2\",\n \"description\": \"ENV variable value for KEY2\",\n \"defaultValue\": \"test42\"\n }\n ],\n \"application\": {\n \"microservices\": [\n {\n \"name\": \"msvc-1\",\n \"config\": \"string\",\n \"images\": [\n {\n \"containerImage\": \"hello-world\",\n \"fogTypeId\": 1\n },\n {\n \"containerImage\": \"hello-world\",\n \"fogTypeId\": 2\n }\n ],\n \"registryId\": 1,\n \"agentName\": \"{{ agent-1-name }}\",\n \"rootHostAccess\": true,\n \"logSize\": 0,\n \"volumeMappings\": [\n {\n \"hostDestination\": \"/var/dest\",\n \"containerDestination\": \"/var/dest\",\n \"accessMode\": \"rw\"\n }\n ],\n \"ports\": [],\n \"routes\": [],\n \"env\": [\n {\n \"key\": \"KEY1\",\n \"value\": \"{{ env-value-1 }}\"\n },\n {\n \"key\": \"KEY2\",\n \"value\": \"{{ env-value-2 }}\"\n }\n ],\n \"cmd\": [\n \"test\",\n \"--arg1\",\n \"--arg2\"\n ]\n },\n {\n \"name\": \"msvc-2\",\n \"config\": \"string\",\n \"images\": [\n {\n \"containerImage\": \"hello-world\",\n \"fogTypeId\": 1\n },\n {\n \"containerImage\": \"hello-world\",\n \"fogTypeId\": 2\n }\n ],\n \"registryId\": 1,\n \"application\": \"{{application-name-2}}\",\n \"iofogUuid\": \"{{node-id}}\",\n \"rootHostAccess\": true,\n \"logSize\": 0,\n \"volumeMappings\": [\n {\n \"hostDestination\": \"/var/dest\",\n \"containerDestination\": \"/var/dest\",\n \"accessMode\": \"rw\"\n }\n ],\n \"ports\": [],\n \"routes\": [],\n \"env\": [\n {\n \"key\": \"KEY1\",\n \"value\": \"value1\"\n },\n {\n \"key\": \"KEY2\",\n \"value\": \"value2\"\n }\n ],\n \"cmd\": [\n \"test\",\n \"--arg1\",\n \"--arg2\"\n ]\n },\n {\n \"name\": \"msvc-3\",\n \"config\": \"string\",\n \"images\": [\n {\n \"containerImage\": \"hello-world\",\n \"fogTypeId\": 1\n },\n {\n \"containerImage\": \"hello-world\",\n \"fogTypeId\": 2\n }\n ],\n \"registryId\": 1,\n \"application\": \"{{application-name-2}}\",\n \"iofogUuid\": \"{{node-id}}\",\n \"rootHostAccess\": true,\n \"logSize\": 0,\n \"volumeMappings\": [\n {\n \"hostDestination\": \"/var/dest\",\n \"containerDestination\": \"/var/dest\",\n \"accessMode\": \"rw\"\n }\n ],\n \"ports\": [],\n \"routes\": [],\n \"env\": [\n {\n \"key\": \"KEY1\",\n \"value\": \"value1\"\n },\n {\n \"key\": \"KEY2\",\n \"value\": \"value2\"\n }\n ],\n \"cmd\": [\n \"test\",\n \"--arg1\",\n \"--arg2\"\n ]\n }\n ],\n \"routes\": [\n {\n \"from\": \"msvc-1\",\n \"to\": \"msvc-2\",\n \"name\": \"m1-2\"\n }\n ]\n }\n}" }, "url": { - "raw": "{{host}}/api/v3/applicationTemplate", + "raw": "{{host}}/api/v1/applicationTemplate", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "applicationTemplate" ] } @@ -3627,13 +3627,13 @@ ] }, "url": { - "raw": "{{host}}/api/v3/applicationTemplate/yaml", + "raw": "{{host}}/api/v1/applicationTemplate/yaml", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "applicationTemplate", "yaml" ] @@ -3673,13 +3673,13 @@ "raw": "{\n \"variables\": [\n {\n \"key\": \"agent-1-name\",\n \"description\": \"Agent name for msvc-1\"\n },\n {\n \"key\": \"env-value-1\",\n \"description\": \"ENV variable value for KEY1\"\n },\n {\n \"key\": \"env-value-2\",\n \"description\": \"ENV variable value for KEY2\",\n \"defaultValue\": \"test42\"\n }\n ],\n \"application\": {\n \"microservices\": [\n {\n \"name\": \"msvc-1\",\n \"config\": \"string\",\n \"images\": [\n {\n \"containerImage\": \"hello-world\",\n \"fogTypeId\": 1\n },\n {\n \"containerImage\": \"hello-world\",\n \"fogTypeId\": 2\n }\n ],\n \"registryId\": 1,\n \"agentName\": \"{{ agent-1-name }}\",\n \"rootHostAccess\": true,\n \"logSize\": 0,\n \"volumeMappings\": [\n {\n \"hostDestination\": \"/var/dest\",\n \"containerDestination\": \"/var/dest\",\n \"accessMode\": \"rw\"\n }\n ],\n \"ports\": [],\n \"routes\": [],\n \"env\": [\n {\n \"key\": \"KEY1\",\n \"value\": \"{{ env-value-1 }}\"\n },\n {\n \"key\": \"KEY2\",\n \"value\": \"{{ env-value-2 }}\"\n }\n ],\n \"cmd\": [\n \"test\",\n \"--arg1\",\n \"--arg2\"\n ]\n },\n {\n \"name\": \"msvc-2\",\n \"config\": \"string\",\n \"images\": [\n {\n \"containerImage\": \"hello-world\",\n \"fogTypeId\": 1\n },\n {\n \"containerImage\": \"hello-world\",\n \"fogTypeId\": 2\n }\n ],\n \"registryId\": 1,\n \"application\": \"{{application-name-2}}\",\n \"iofogUuid\": \"{{node-id}}\",\n \"rootHostAccess\": true,\n \"logSize\": 0,\n \"volumeMappings\": [\n {\n \"hostDestination\": \"/var/dest\",\n \"containerDestination\": \"/var/dest\",\n \"accessMode\": \"rw\"\n }\n ],\n \"ports\": [],\n \"routes\": [],\n \"env\": [\n {\n \"key\": \"KEY1\",\n \"value\": \"value1\"\n },\n {\n \"key\": \"KEY2\",\n \"value\": \"value2\"\n }\n ],\n \"cmd\": [\n \"test\",\n \"--arg1\",\n \"--arg2\"\n ]\n }\n ],\n \"routes\": [\n {\n \"from\": \"msvc-1\",\n \"to\": \"msvc-2\",\n \"name\": \"m1-2\"\n }\n ]\n }\n}" }, "url": { - "raw": "{{host}}/api/v3/applicationTemplate/{{application-template-name}}", + "raw": "{{host}}/api/v1/applicationTemplate/{{application-template-name}}", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "applicationTemplate", "{{application-template-name}}" ] @@ -3725,13 +3725,13 @@ ] }, "url": { - "raw": "{{host}}/api/v3/applicationTemplate/yaml/{{application-template-from-yaml-name}}", + "raw": "{{host}}/api/v1/applicationTemplate/yaml/{{application-template-from-yaml-name}}", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "applicationTemplate", "yaml", "{{application-template-from-yaml-name}}" @@ -3774,13 +3774,13 @@ "raw": "{\n \"name\": \"application-template-22\",\n \"description\": \"Description\"\n}" }, "url": { - "raw": "{{host}}/api/v3/applicationTemplate/{{application-template-name}}", + "raw": "{{host}}/api/v1/applicationTemplate/{{application-template-name}}", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "applicationTemplate", "{{application-template-name}}" ] @@ -3822,13 +3822,13 @@ "raw": "{\n \"name\": \"application-template-from-yaml-22\",\n \"description\": \"Description\"\n}" }, "url": { - "raw": "{{host}}/api/v3/applicationTemplate/{{application-template-from-yaml-name}}", + "raw": "{{host}}/api/v1/applicationTemplate/{{application-template-from-yaml-name}}", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "applicationTemplate", "{{application-template-from-yaml-name}}" ] @@ -3867,13 +3867,13 @@ } ], "url": { - "raw": "{{host}}/api/v3/applicationTemplates", + "raw": "{{host}}/api/v1/applicationTemplates", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "applicationTemplates" ] } @@ -3920,13 +3920,13 @@ } ], "url": { - "raw": "{{host}}/api/v3/applicationTemplate/{{application-template-from-yaml-name}}", + "raw": "{{host}}/api/v1/applicationTemplate/{{application-template-from-yaml-name}}", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "applicationTemplate", "{{application-template-from-yaml-name}}" ] @@ -3975,13 +3975,13 @@ "raw": "{\n \"name\": \"application-name-2\",\n \"template\": {\n \"name\": \"{{application-template-from-yaml-name}}\",\n \"variables\": [\n {\n \"key\": \"agent-1-name\",\n \"value\": \"string\"\n },\n {\n \"key\": \"env-value-1\",\n \"value\": \"12345\"\n },\n {\n \"key\": \"agent-2-name\",\n \"value\": \"string\"\n }\n ]\n },\n \"isSystem\": false,\n \"isActivated\": true,\n \"description\": \"new application from template\"\n}" }, "url": { - "raw": "{{host}}/api/v3/application", + "raw": "{{host}}/api/v1/application", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "application" ] } @@ -4025,13 +4025,13 @@ } ], "url": { - "raw": "{{host}}/api/v3/application/{{application-name}}", + "raw": "{{host}}/api/v1/application/{{application-name}}", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "application", "{{application-name}}" ] @@ -4076,13 +4076,13 @@ } ], "url": { - "raw": "{{host}}/api/v3/microservices/{{application-msvc-uuid}}", + "raw": "{{host}}/api/v1/microservices/{{application-msvc-uuid}}", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "microservices", "{{application-msvc-uuid}}" ] @@ -4121,13 +4121,13 @@ "raw": "" }, "url": { - "raw": "{{host}}/api/v3/application/{{application-name}}", + "raw": "{{host}}/api/v1/application/{{application-name}}", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "application", "{{application-name}}" ] @@ -4166,13 +4166,13 @@ "raw": "" }, "url": { - "raw": "{{host}}/api/v3/applicationTemplate/{{application-template-name}}", + "raw": "{{host}}/api/v1/applicationTemplate/{{application-template-name}}", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "applicationTemplate", "{{application-template-name}}" ] @@ -4211,13 +4211,13 @@ "raw": "" }, "url": { - "raw": "{{host}}/api/v3/applicationTemplate/{{application-template-from-yaml-name}}", + "raw": "{{host}}/api/v1/applicationTemplate/{{application-template-from-yaml-name}}", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "applicationTemplate", "{{application-template-from-yaml-name}}" ] @@ -4257,13 +4257,13 @@ "raw": "{\n\t\"type\": 1,\n\t\"key\":\"testtesttest\"\n}" }, "url": { - "raw": "{{host}}/api/v3/iofog/{{system-node-id}}", + "raw": "{{host}}/api/v1/iofog/{{system-node-id}}", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "iofog", "{{system-node-id}}" ] @@ -4303,13 +4303,13 @@ "raw": "" }, "url": { - "raw": "{{host}}/api/v3/iofog/{{node-id}}", + "raw": "{{host}}/api/v1/iofog/{{node-id}}", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "iofog", "{{node-id}}" ] @@ -4347,13 +4347,13 @@ "raw": "" }, "url": { - "raw": "{{host}}/api/v3/user/profile", + "raw": "{{host}}/api/v1/user/profile", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "user", "profile" ] @@ -4417,13 +4417,13 @@ "raw": "{\n \"firstName\": \"John\",\n \"lastName\": \"Doe\",\n \"email\": \"user@domain.com\",\n \"password\": \"#Bugs4Fun\",\n \"subscriptionKey\": \"XXXX-XXXX-XXXX-XXXX\"\n}" }, "url": { - "raw": "{{host}}/api/v3/user/signup", + "raw": "{{host}}/api/v1/user/signup", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "user", "signup" ] @@ -4465,13 +4465,13 @@ "raw": "{\n \"email\": \"user@domain.com\",\n \"password\": \"#Bugs4Fun\"\n}" }, "url": { - "raw": "{{host}}/api/v3/user/login", + "raw": "{{host}}/api/v1/user/login", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "user", "login" ] @@ -4517,13 +4517,13 @@ "raw": "{\n \"name\": \"system node\",\n \"routerMode\": \"interior\",\n \"messagingPort\": 5672,\n \"edgeRouterPort\": 56722,\n \"interRouterPort\": 56721,\n \"host\": \"localhost\",\n \"isSystem\": true,\n \"location\": \"string\",\n \"latitude\": 0,\n \"longitude\": 0,\n \"description\": \"string\",\n \"dockerUrl\": \"string\",\n \"diskLimit\": 0,\n \"diskDirectory\": \"string\",\n \"memoryLimit\": 0,\n \"cpuLimit\": 0,\n \"logLimit\": 0,\n \"logDirectory\": \"string\",\n \"logFileCount\": 0,\n \"statusFrequency\": 0,\n \"changeFrequency\": 0,\n \"deviceScanFrequency\": 0,\n \"bluetoothEnabled\": false,\n \"watchdogEnabled\": true,\n \"abstractedHardwareEnabled\": false,\n \"fogType\": 1\n,\n \"host\": \"1.2.3.4\"\n}" }, "url": { - "raw": "{{host}}/api/v3/iofog", + "raw": "{{host}}/api/v1/iofog", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "iofog" ] } @@ -4568,13 +4568,13 @@ "raw": "{\n \"name\": \"node1\",\n \"location\": \"string\",\n \"latitude\": 0,\n \"longitude\": 0,\n \"description\": \"string\",\n \"dockerUrl\": \"string\",\n \"diskLimit\": 0,\n \"diskDirectory\": \"string\",\n \"memoryLimit\": 0,\n \"cpuLimit\": 0,\n \"logLimit\": 0,\n \"logDirectory\": \"string\",\n \"logFileCount\": 0,\n \"statusFrequency\": 0,\n \"changeFrequency\": 0,\n \"deviceScanFrequency\": 0,\n \"bluetoothEnabled\": false,\n \"watchdogEnabled\": true,\n \"abstractedHardwareEnabled\": false,\n \"fogType\": 1,\n \"host\": \"1.2.3.4\"\n}" }, "url": { - "raw": "{{host}}/api/v3/iofog", + "raw": "{{host}}/api/v1/iofog", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "iofog" ] } @@ -4619,13 +4619,13 @@ "raw": "{\n \"name\": \"node2\",\n \"location\": \"string\",\n \"latitude\": 0,\n \"longitude\": 0,\n \"description\": \"string\",\n \"dockerUrl\": \"string\",\n \"diskLimit\": 0,\n \"diskDirectory\": \"string\",\n \"memoryLimit\": 0,\n \"cpuLimit\": 0,\n \"logLimit\": 0,\n \"logDirectory\": \"string\",\n \"logFileCount\": 0,\n \"statusFrequency\": 0,\n \"changeFrequency\": 0,\n \"deviceScanFrequency\": 0,\n \"bluetoothEnabled\": false,\n \"watchdogEnabled\": true,\n \"abstractedHardwareEnabled\": false,\n \"fogType\": 1,\n \"host\": \"1.2.3.5\"\n}" }, "url": { - "raw": "{{host}}/api/v3/iofog", + "raw": "{{host}}/api/v1/iofog", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "iofog" ] } @@ -4673,13 +4673,13 @@ "raw": "{\n \"name\": \"com.orange.smart-door\",\n \"version\": \"0.0.1\",\n \"description\": \"Orange Smart Door\",\n \"display\": {\n \"name\": \"Smart Door\",\n \"icon\": \"help\",\n \"color\": \"#ff0000\"\n },\n \"interfaceProtocol\": \"https\",\n \"interface\": {\n \"endpoints\": [\n {\n \"name\": \"liveness\",\n \"url\": \"https://localhost:91121\",\n \"method\": \"GET\"\n },\n {\n \"name\": \"version\",\n \"url\": \"https://localhost:91121/version\",\n \"method\": \"GET\"\n }\n ]\n },\n \"orchestrationTags\": [\n \"orange\",\n \"smart-door\"\n ]\n}" }, "url": { - "raw": "{{host}}/api/v3/edgeResource", + "raw": "{{host}}/api/v1/edgeResource", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "edgeResource" ] } @@ -4723,13 +4723,13 @@ "raw": "{\n \"name\": \"application-name-1\",\n \"isSystem\": false,\n \"description\": \"Description\",\n \"isActivated\": true,\n \"microservices\": [\n {\n \"name\": \"redistest\",\n \"config\": \"string\",\n \"images\": [\n {\n \"containerImage\": \"redis\",\n \"fogTypeId\": 1\n },\n {\n \"containerImage\": \"redis\",\n \"fogTypeId\": 2\n }\n ],\n \"registryId\": 1,\n \"application\": \"application-name-1\",\n \"iofogUuid\": \"{{node-id-1}}\",\n \"rootHostAccess\": false,\n \"logSize\": 0,\n \"volumeMappings\": [],\n \"ports\": [\n {\n \"internal\": 6379,\n \"external\": 6379,\n \"publicMode\": false\n }\n ]\n }\n ]\n}" }, "url": { - "raw": "{{host}}/api/v3/application", + "raw": "{{host}}/api/v1/application", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "application" ] } @@ -4776,13 +4776,13 @@ "raw": "{\n \"name\": \"application-msvc-name\",\n \"isSystem\": false,\n \"description\": \"Description\",\n \"isActivated\": true,\n \"microservices\": [\n {\n \"name\": \"msvc-1\",\n \"config\": \"string\",\n \"images\": [\n {\n \"containerImage\": \"hello-world\",\n \"fogTypeId\": 1\n },\n {\n \"containerImage\": \"hello-world\",\n \"fogTypeId\": 2\n }\n ],\n \"registryId\": 1,\n \"application\": \"application-msvc-name\",\n \"iofogUuid\": \"{{node-id-2}}\",\n \"rootHostAccess\": true,\n \"logSize\": 0,\n \"volumeMappings\": [\n {\n \"hostDestination\": \"/var/dest\",\n \"containerDestination\": \"/var/dest\",\n \"accessMode\": \"rw\"\n }\n ],\n \"ports\": [\n {\n \"internal\": 1881,\n \"external\": 1882\n }\n ],\n \"routes\": [],\n \"env\": [\n { \n \"key\": \"selfname\",\n \"value\": \"{{ self.name | upcase }}\"\n },\n {\n \"key\": \"sharedToken\",\n \"value\": \"sekrittoken\"\n },\n {\n \"key\": \"http_proxy\",\n \"value\": \"http://myproxy:8080/\"\n },\n {\n \"key\": \"https_proxy\",\n \"value\": \"{{ self.microservices | where: \\\"name\\\", \\\"msvc-1\\\" | first | map: \\\"env\\\" | first | where: \\\"key\\\" , \\\"http_proxy\\\" | first | map: \\\"value\\\" | first }}\"\n }\n ],\n \"cmd\": [\n \"test\",\n \"--arg1\",\n \"--arg2\"\n ]\n },\n {\n \"name\": \"msvc-2\",\n \"config\": \"string\",\n \"images\": [\n {\n \"containerImage\": \"hello-world\",\n \"fogTypeId\": 1\n },\n {\n \"containerImage\": \"hello-world\",\n \"fogTypeId\": 2\n }\n ],\n \"registryId\": 1,\n \"application\": \"application-msvc-name\",\n \"iofogUuid\": \"{{node-id-2}}\",\n \"rootHostAccess\": true,\n \"logSize\": 0,\n \"volumeMappings\": [\n {\n \"hostDestination\": \"/var/dest\",\n \"containerDestination\": \"/var/dest\",\n \"accessMode\": \"rw\"\n }\n ],\n \"ports\": [],\n \"routes\": [],\n \"env\": [\n { \n \"key\": \"selfname\",\n \"value\": \"{{ self.name | upcase }}\"\n },\n {\n \"key\": \"sharedToken\",\n \"value\": \"{{ self.microservices | where: \\\"name\\\", \\\"msvc-1\\\" | first | map: \\\"env\\\" | first | where: \\\"key\\\", \\\"sharedToken\\\" | first | map: \\\"value\\\" | first }}\"\n },\n {\n \"key\": \"http_proxy\",\n \"value\": \"{{ self.microservices | where: \\\"name\\\", \\\"msvc-1\\\" | first | map: \\\"env\\\" | first | where: \\\"key\\\" , \\\"http_proxy\\\" | first | map: \\\"value\\\" | first }}\"\n },\n {\n \"key\": \"https_proxy\",\n \"value\": \"{{ self.microservices | where: \\\"name\\\", \\\"msvc-1\\\" | first | map: \\\"env\\\" | first | where: \\\"key\\\" , \\\"http_proxy\\\" | first | map: \\\"value\\\" | first }}\"\n },\n {\n \"key\": \"rulesengineHOST\",\n \"value\": \"{% assign curmsvc= self.microservices | where: \\\"name\\\", \\\"msvc-1\\\" | first %}{{ curmsvc | findMicroserviceAgent | map: \\\"host\\\" | first }}\"\n },\n {\n \"key\": \"rulesenginePORT\",\n \"value\": \"{{ self.microservices | where: \\\"name\\\", \\\"msvc-1\\\" | first | map: \\\"ports\\\" | first | map: \\\"external\\\" | first | toString }}\"\n },\n {\n \"key\": \"redisHost\",\n \"value\": \"{% assign redisApp = \\\"application-name-1\\\" | findApplication %}{% assign redismsvc = redisApp.microservices | where: \\\"name\\\", \\\"redistest\\\" | first %}{{ redismsvc | findMicroserviceAgent | map: \\\"host\\\"}}:{{ redismsvc | map: \\\"ports\\\" | first | first | map: \\\"external\\\" | first | toString }}\"\n },\n {\n \"key\": \"edgeResLiveness\",\n \"value\": \"{{ \\\"com.orange.smart-door\\\" | findEdgeResource: \\\"0.0.1\\\" | map: \\\"interface\\\" | map: \\\"endpoints\\\" | first | where: \\\"name\\\", \\\"liveness\\\" | first | map: \\\"url\\\" | first }}\"\n },\n {\n \"key\": \"edgeResVersion\",\n \"value\": \"{{ \\\"com.orange.smart-door\\\" | findEdgeResource | map: \\\"interface\\\" | map: \\\"endpoints\\\" | first | where: \\\"name\\\", \\\"version\\\" | first | map: \\\"url\\\" | first }}\"\n }\n ],\n \"cmd\": [\n \"test\",\n \"--arg1\",\n \"--arg2\"\n ]\n },\n {\n \"name\": \"msvc-3\",\n \"config\": \"string\",\n \"images\": [\n {\n \"containerImage\": \"hello-world\",\n \"fogTypeId\": 1\n },\n {\n \"containerImage\": \"hello-world\",\n \"fogTypeId\": 2\n }\n ],\n \"registryId\": 1,\n \"application\": \"application-msvc-name\",\n \"iofogUuid\": \"{{node-id-2}}\",\n \"rootHostAccess\": true,\n \"logSize\": 0,\n \"volumeMappings\": [\n {\n \"hostDestination\": \"/var/dest\",\n \"containerDestination\": \"/var/dest\",\n \"accessMode\": \"rw\"\n }\n ],\n \"ports\": [],\n \"routes\": [],\n \"env\": [\n {\n \"key\": \"KEY1\",\n \"value\": \"value1\"\n },\n {\n \"key\": \"KEY2\",\n \"value\": \"value2\"\n }\n ],\n \"cmd\": [\n \"test\",\n \"--arg1\",\n \"--arg2\"\n ]\n }\n ],\n \"routes\": [\n {\n \"from\": \"msvc-1\",\n \"to\": \"msvc-2\",\n \"name\": \"m1-2\"\n }\n ]\n}" }, "url": { - "raw": "{{host}}/api/v3/application", + "raw": "{{host}}/api/v1/application", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "application" ] } @@ -4844,13 +4844,13 @@ } ], "url": { - "raw": "{{host}}/api/v3/microservices?application={{application-msvc-name}}", + "raw": "{{host}}/api/v1/microservices?application={{application-msvc-name}}", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "microservices" ], "query": [ @@ -4894,13 +4894,13 @@ } ], "url": { - "raw": "{{host}}/api/v3/application", + "raw": "{{host}}/api/v1/application", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "application" ] } @@ -4938,13 +4938,13 @@ } ], "url": { - "raw": "{{host}}/api/v3/application/{{application-name-2}}", + "raw": "{{host}}/api/v1/application/{{application-name-2}}", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "application", "{{application-name-2}}" ] @@ -4984,13 +4984,13 @@ "raw": "{\n \"name\": \"application-name-22\",\n \"isSystem\": true,\n \"description\": \"Description\",\n \"isActivated\": true\n}" }, "url": { - "raw": "{{host}}/api/v3/application/{{application-name-1}}", + "raw": "{{host}}/api/v1/application/{{application-name-1}}", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "application", "{{application-name-1}}" ] @@ -5029,13 +5029,13 @@ } ], "url": { - "raw": "{{host}}/api/v3/application", + "raw": "{{host}}/api/v1/application", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "application" ] } @@ -5073,13 +5073,13 @@ "raw": "" }, "url": { - "raw": "{{host}}/api/v3/application/{{application-name-1}}", + "raw": "{{host}}/api/v1/application/{{application-name-1}}", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "application", "{{application-name-1}}" ] @@ -5118,13 +5118,13 @@ "raw": "" }, "url": { - "raw": "{{host}}/api/v3/application/{{application-msvc-name}}", + "raw": "{{host}}/api/v1/application/{{application-msvc-name}}", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "application", "{{application-msvc-name}}" ] @@ -5163,13 +5163,13 @@ } ], "url": { - "raw": "{{host}}/api/v3/application", + "raw": "{{host}}/api/v1/application", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "application" ] } @@ -5210,13 +5210,13 @@ } ], "url": { - "raw": "{{host}}/api/v3/microservices", + "raw": "{{host}}/api/v1/microservices", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "microservices" ] } @@ -5250,13 +5250,13 @@ } ], "url": { - "raw": "{{host}}/api/v3/route/{{application-route-name}}", + "raw": "{{host}}/api/v1/route/{{application-route-name}}", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "route", "{{application-route-name}}" ] @@ -5296,13 +5296,13 @@ "raw": "" }, "url": { - "raw": "{{host}}/api/v3/edgeResource/{{edge-resource-name}}/{{edge-resource-version}}", + "raw": "{{host}}/api/v1/edgeResource/{{edge-resource-name}}/{{edge-resource-version}}", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "edgeResource", "{{edge-resource-name}}", "{{edge-resource-version}}" @@ -5343,13 +5343,13 @@ "raw": "{\n\t\"type\": 1,\n\t\"key\":\"testtesttest\"\n}" }, "url": { - "raw": "{{host}}/api/v3/iofog/{{system-node-id}}", + "raw": "{{host}}/api/v1/iofog/{{system-node-id}}", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "iofog", "{{system-node-id}}" ] @@ -5389,13 +5389,13 @@ "raw": "" }, "url": { - "raw": "{{host}}/api/v3/iofog/{{node-id-2}}", + "raw": "{{host}}/api/v1/iofog/{{node-id-2}}", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "iofog", "{{node-id-2}}" ] @@ -5435,13 +5435,13 @@ "raw": "" }, "url": { - "raw": "{{host}}/api/v3/iofog/{{node-id-1}}", + "raw": "{{host}}/api/v1/iofog/{{node-id-1}}", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "iofog", "{{node-id-1}}" ] @@ -5479,13 +5479,13 @@ "raw": "" }, "url": { - "raw": "{{host}}/api/v3/user/profile", + "raw": "{{host}}/api/v1/user/profile", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "user", "profile" ] @@ -5549,13 +5549,13 @@ "raw": "{\n \"firstName\": \"John\",\n \"lastName\": \"Doe\",\n \"email\": \"user@domain.com\",\n \"password\": \"#Bugs4Fun\",\n \"subscriptionKey\": \"XXXX-XXXX-XXXX-XXXX\"\n}" }, "url": { - "raw": "{{host}}/api/v3/user/signup", + "raw": "{{host}}/api/v1/user/signup", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "user", "signup" ] @@ -5597,13 +5597,13 @@ "raw": "{\n \"email\": \"user@domain.com\",\n \"password\": \"#Bugs4Fun\"\n}" }, "url": { - "raw": "{{host}}/api/v3/user/login", + "raw": "{{host}}/api/v1/user/login", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "user", "login" ] @@ -5648,13 +5648,13 @@ "raw": "{\n \"name\": \"flow-name\",\n \"isSystem\": false,\n \"description\": \"Description\",\n \"isActivated\": true\n}" }, "url": { - "raw": "{{host}}/api/v3/flow", + "raw": "{{host}}/api/v1/flow", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "flow" ] } @@ -5692,13 +5692,13 @@ } ], "url": { - "raw": "{{host}}/api/v3/flow", + "raw": "{{host}}/api/v1/flow", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "flow" ] } @@ -5736,13 +5736,13 @@ } ], "url": { - "raw": "{{host}}/api/v3/flow/{{flow-id}}", + "raw": "{{host}}/api/v1/flow/{{flow-id}}", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "flow", "{{flow-id}}" ] @@ -5781,13 +5781,13 @@ "raw": "{\n \"name\": \"flow-name-22\",\n \"isSystem\": true,\n \"description\": \"Description\",\n \"isActivated\": true\n}" }, "url": { - "raw": "{{host}}/api/v3/flow/{{flow-id}}", + "raw": "{{host}}/api/v1/flow/{{flow-id}}", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "flow", "{{flow-id}}" ] @@ -5826,13 +5826,13 @@ } ], "url": { - "raw": "{{host}}/api/v3/flow", + "raw": "{{host}}/api/v1/flow", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "flow" ] } @@ -5870,13 +5870,13 @@ "raw": "" }, "url": { - "raw": "{{host}}/api/v3/flow/{{flow-id}}", + "raw": "{{host}}/api/v1/flow/{{flow-id}}", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "flow", "{{flow-id}}" ] @@ -5914,13 +5914,13 @@ "raw": "" }, "url": { - "raw": "{{host}}/api/v3/user/profile", + "raw": "{{host}}/api/v1/user/profile", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "user", "profile" ] @@ -5984,13 +5984,13 @@ "raw": "{\n \"firstName\": \"John\",\n \"lastName\": \"Doe\",\n \"email\": \"user@domain.com\",\n \"password\": \"#Bugs4Fun\",\n \"subscriptionKey\": \"XXXX-XXXX-XXXX-XXXX\"\n}" }, "url": { - "raw": "{{host}}/api/v3/user/signup", + "raw": "{{host}}/api/v1/user/signup", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "user", "signup" ] @@ -6032,13 +6032,13 @@ "raw": "{\n \"email\": \"user@domain.com\",\n \"password\": \"#Bugs4Fun\"\n}" }, "url": { - "raw": "{{host}}/api/v3/user/login", + "raw": "{{host}}/api/v1/user/login", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "user", "login" ] @@ -6084,13 +6084,13 @@ "raw": "{\n \"name\": \"system node\",\n \"routerMode\": \"interior\",\n \"messagingPort\": 5672,\n \"edgeRouterPort\": 56722,\n \"interRouterPort\": 56721,\n \"host\": \"localhost\",\n \"isSystem\": true,\n \"location\": \"string\",\n \"latitude\": 0,\n \"longitude\": 0,\n \"description\": \"string\",\n \"dockerUrl\": \"string\",\n \"diskLimit\": 0,\n \"diskDirectory\": \"string\",\n \"memoryLimit\": 0,\n \"cpuLimit\": 0,\n \"logLimit\": 0,\n \"logDirectory\": \"string\",\n \"logFileCount\": 0,\n \"statusFrequency\": 0,\n \"changeFrequency\": 0,\n \"deviceScanFrequency\": 0,\n \"bluetoothEnabled\": false,\n \"watchdogEnabled\": true,\n \"abstractedHardwareEnabled\": false,\n \"fogType\": 1\n,\n \"host\": \"1.2.3.4\"\n}" }, "url": { - "raw": "{{host}}/api/v3/iofog", + "raw": "{{host}}/api/v1/iofog", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "iofog" ] } @@ -6135,13 +6135,13 @@ "raw": "{\n \"name\": \"string\",\n \"host\": \"1.2.3.4\",\n \"location\": \"string\",\n \"latitude\": 0,\n \"longitude\": 0,\n \"description\": \"string\",\n \"dockerUrl\": \"string\",\n \"diskLimit\": 0,\n \"diskDirectory\": \"string\",\n \"memoryLimit\": 0,\n \"cpuLimit\": 0,\n \"logLimit\": 0,\n \"logDirectory\": \"string\",\n \"logFileCount\": 0,\n \"statusFrequency\": 0,\n \"changeFrequency\": 0,\n \"deviceScanFrequency\": 0,\n \"bluetoothEnabled\": false,\n \"watchdogEnabled\": true,\n \"abstractedHardwareEnabled\": false,\n \"fogType\": 1\n,\n \"host\": \"1.2.3.4\"\n}" }, "url": { - "raw": "{{host}}/api/v3/iofog", + "raw": "{{host}}/api/v1/iofog", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "iofog" ] } @@ -6186,13 +6186,13 @@ "raw": "{\n \"name\": \"flow-name\",\n \"description\": \"Description\",\n \"isActivated\": true\n}" }, "url": { - "raw": "{{host}}/api/v3/flow", + "raw": "{{host}}/api/v1/flow", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "flow" ] } @@ -6236,13 +6236,13 @@ "raw": "{\n \"name\": \"flow-name-second\",\n \"description\": \"Description\",\n \"isActivated\": true\n}" }, "url": { - "raw": "{{host}}/api/v3/flow", + "raw": "{{host}}/api/v1/flow", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "flow" ] } @@ -6286,13 +6286,13 @@ "raw": "{\n \"name\": \"string\",\n \"description\": \"string\",\n \"category\": \"string\",\n \"images\": [\n {\n \"containerImage\": \"x86 docker image name\",\n \"fogTypeId\": 1\n },\n {\n \"containerImage\": \"ARM docker image name\",\n \"fogTypeId\": 2\n }\n ],\n \"publisher\": \"string\",\n \"diskRequired\": 0,\n \"ramRequired\": 0,\n \"picture\": \"string\",\n \"isPublic\": true,\n \"registryId\": 1,\n \"inputType\": {\n \"infoType\": \"string\",\n \"infoFormat\": \"string\"\n },\n \"outputType\": {\n \"infoType\": \"string\",\n \"infoFormat\": \"string\"\n },\n \"configExample\": \"string\"\n}" }, "url": { - "raw": "{{host}}/api/v3/catalog/microservices", + "raw": "{{host}}/api/v1/catalog/microservices", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "catalog", "microservices" ] @@ -6337,13 +6337,13 @@ "raw": "{\n \"name\": \"name2\",\n \"config\": \"string\",\n \"catalogItemId\": {{item-id}},\n \"flowId\": {{flow-id}},\n \"iofogUuid\": \"{{node-id}}\",\n \"rootHostAccess\": true,\n \"logSize\": 0,\n \"volumeMappings\": [\n {\n \"hostDestination\": \"/var/dest\",\n \"containerDestination\": \"/var/dest\",\n \"accessMode\": \"rw\"\n }\n ],\n \"ports\": [\n {\n \"internal\": 1,\n \"external\": 1,\n \"publicMode\": false\n }\n ],\n \"routes\": [\n ],\n \"env\": [\n {\n \"key\": \"KEY1\",\n \"value\": \"value1\"\n },\n {\n \"key\": \"KEY2\",\n \"value\": \"value2\"\n }\n ],\n \"cmd\": [\n \t\"test\",\n \t\"--arg1\",\n \t\"--arg2\"\n ]\n}\n" }, "url": { - "raw": "{{host}}/api/v3/microservices", + "raw": "{{host}}/api/v1/microservices", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "microservices" ] } @@ -6385,13 +6385,13 @@ "raw": "{\n \"name\": \"namesec\",\n \"config\": \"string\",\n \"images\": [{\"containerImage\": \"hello-world\"\n,\"fogTypeId\": 1}, {\"containerImage\": \"hello-world\"\n,\"fogTypeId\": 2}]\n, \"registryId\": 1,\n \"flowId\": {{flow-id-2}},\n \"iofogUuid\": \"{{node-id}}\",\n \"rootHostAccess\": true,\n \"logSize\": 0,\n \"volumeMappings\": [\n {\n \"hostDestination\": \"/var/dest\",\n \"containerDestination\": \"/var/dest\",\n \"accessMode\": \"rw\"\n }\n ],\n \"ports\": [],\n \"routes\": [\n ],\n \"env\": [\n {\n \"key\": \"KEY1\",\n \"value\": \"value1\"\n },\n {\n \"key\": \"KEY2\",\n \"value\": \"value2\"\n }\n ],\n \"cmd\": [\n \t\"test\",\n \t\"--arg1\",\n \t\"--arg2\"\n ]\n}\n" }, "url": { - "raw": "{{host}}/api/v3/microservices", + "raw": "{{host}}/api/v1/microservices", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "microservices" ] } @@ -6435,13 +6435,13 @@ "raw": "{\n \"name\": \"name-without-catalog\",\n \"config\": \"string\",\n \"images\": [{\"containerImage\": \"hello-world\"\n,\"fogTypeId\": 1}, {\"containerImage\": \"hello-world\"\n,\"fogTypeId\": 2}]\n, \"registryId\": 1,\n \"flowId\": {{flow-id}},\n \"iofogUuid\": \"{{node-id}}\",\n \"rootHostAccess\": true,\n \"logSize\": 0,\n \"volumeMappings\": [\n {\n \"hostDestination\": \"/var/dest\",\n \"containerDestination\": \"/var/dest\",\n \"accessMode\": \"rw\"\n }\n ],\n \"ports\": [\n {\n \"internal\": 2,\n \"external\": 2,\n \"publicMode\": false\n }\n ],\n \"routes\": [\n ],\n \"env\": [\n {\n \"key\": \"KEY1\",\n \"value\": \"value1\"\n },\n {\n \"key\": \"KEY2\",\n \"value\": \"value2\"\n }\n ],\n \"cmd\": [\n \t\"test\",\n \t\"--arg1\",\n \t\"--arg2\"\n ]\n}\n" }, "url": { - "raw": "{{host}}/api/v3/microservices", + "raw": "{{host}}/api/v1/microservices", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "microservices" ] } @@ -6485,13 +6485,13 @@ "raw": "{\n \"name\": \"route-name\",\n \"sourceMicroserviceUuid\": \"{{ms-no-catalog-id}}\",\n \"destMicroserviceUuid\": \"{{ms-id}}\"\n}\n" }, "url": { - "raw": "{{host}}/api/v3/routes", + "raw": "{{host}}/api/v1/routes", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "routes" ] } @@ -6531,13 +6531,13 @@ "raw": "{\n \"name\": \"route-name-updated\",\n \"sourceMicroserviceUuid\": \"{{ms-no-catalog-id}}\",\n \"destMicroserviceUuid\": \"{{ms-id}}\"\n}\n" }, "url": { - "raw": "{{host}}/api/v3/routes/{{flow-name}}/{{route-name}}", + "raw": "{{host}}/api/v1/routes/{{flow-name}}/{{route-name}}", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "routes", "{{flow-name}}", "{{route-name}}" @@ -6577,13 +6577,13 @@ "raw": "" }, "url": { - "raw": "{{host}}/api/v3/routes/{{flow-name}}/{{route-name}}", + "raw": "{{host}}/api/v1/routes/{{flow-name}}/{{route-name}}", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "routes", "{{flow-name}}", "{{route-name}}" @@ -6629,13 +6629,13 @@ } ], "url": { - "raw": "{{host}}/api/v3/microservices", + "raw": "{{host}}/api/v1/microservices", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "microservices" ] } @@ -6683,13 +6683,13 @@ } ], "url": { - "raw": "{{host}}/api/v3/microservices?flowId={{flow-id}}", + "raw": "{{host}}/api/v1/microservices?flowId={{flow-id}}", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "microservices" ], "query": [ @@ -6733,13 +6733,13 @@ } ], "url": { - "raw": "{{host}}/api/v3/microservices/{{ms-id}}", + "raw": "{{host}}/api/v1/microservices/{{ms-id}}", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "microservices", "{{ms-id}}" ] @@ -6778,13 +6778,13 @@ } ], "url": { - "raw": "{{host}}/api/v3/microservices/{{ms-no-catalog-id}}", + "raw": "{{host}}/api/v1/microservices/{{ms-no-catalog-id}}", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "microservices", "{{ms-no-catalog-id}}" ] @@ -6823,13 +6823,13 @@ "raw": "{\n \"name\": \"name3\",\n \"config\": \"string\",\n \"rebuild\": true,\n \"iofogUuid\": \"{{node-id}}\",\n \"rootHostAccess\": true,\n \"logSize\": 0,\n \"volumeMappings\": [\n {\n \"hostDestination\": \"/var/dest\",\n \"containerDestination\": \"/var/dest\",\n \"accessMode\": \"rw\"\n }\n ]\n}" }, "url": { - "raw": "{{host}}/api/v3/microservices/{{ms-id}}", + "raw": "{{host}}/api/v1/microservices/{{ms-id}}", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "microservices", "{{ms-id}}" ] @@ -6868,13 +6868,13 @@ "raw": "{\n \"images\": [\n {\n \"containerImage\": \"hello-world-updated\",\n \"fogTypeId\": 1\n },\n {\n \"containerImage\": \"hello-world-updated\",\n \"fogTypeId\": 2\n }\n ],\n \"registryId\": 2,\n \"config\": \"string\",\n \"rebuild\": true,\n \"iofogUuid\": \"{{node-id}}\",\n \"rootHostAccess\": true,\n \"logSize\": 0,\n \"volumeMappings\": [\n {\n \"hostDestination\": \"/var/dest\",\n \"containerDestination\": \"/var/dest\",\n \"accessMode\": \"rw\"\n }\n ]\n}" }, "url": { - "raw": "{{host}}/api/v3/microservices/{{ms-no-catalog-id}}", + "raw": "{{host}}/api/v1/microservices/{{ms-no-catalog-id}}", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "microservices", "{{ms-no-catalog-id}}" ] @@ -6913,13 +6913,13 @@ } ], "url": { - "raw": "{{host}}/api/v3/microservices/{{ms-no-catalog-id}}", + "raw": "{{host}}/api/v1/microservices/{{ms-no-catalog-id}}", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "microservices", "{{ms-no-catalog-id}}" ] @@ -6958,13 +6958,13 @@ "raw": "{\n \"catalogItemId\": 14,\n \"config\": \"string\",\n \"rebuild\": true,\n \"iofogUuid\": \"{{node-id}}\",\n \"rootHostAccess\": true,\n \"logSize\": 0,\n \"volumeMappings\": [\n {\n \"hostDestination\": \"/var/dest\",\n \"containerDestination\": \"/var/dest\",\n \"accessMode\": \"rw\"\n }\n ]\n}" }, "url": { - "raw": "{{host}}/api/v3/microservices/{{ms-no-catalog-id}}", + "raw": "{{host}}/api/v1/microservices/{{ms-no-catalog-id}}", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "microservices", "{{ms-no-catalog-id}}" ] @@ -7003,13 +7003,13 @@ } ], "url": { - "raw": "{{host}}/api/v3/microservices/{{ms-no-catalog-id}}", + "raw": "{{host}}/api/v1/microservices/{{ms-no-catalog-id}}", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "microservices", "{{ms-no-catalog-id}}" ] @@ -7048,13 +7048,13 @@ "raw": "{\n \"images\": [\n {\n \"containerImage\": \"hello-world-updated\",\n \"fogTypeId\": 1\n },\n {\n \"containerImage\": \"hello-world-updated\",\n \"fogTypeId\": 2\n }\n ],\n \"registryId\": 2,\n \"catalogItemId\": null,\n \"config\": \"string\",\n \"rebuild\": true,\n \"iofogUuid\": \"{{node-id}}\",\n \"rootHostAccess\": true,\n \"logSize\": 0,\n \"volumeMappings\": [\n {\n \"hostDestination\": \"/var/dest\",\n \"containerDestination\": \"/var/dest\",\n \"accessMode\": \"rw\"\n }\n ]\n}" }, "url": { - "raw": "{{host}}/api/v3/microservices/{{ms-no-catalog-id}}", + "raw": "{{host}}/api/v1/microservices/{{ms-no-catalog-id}}", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "microservices", "{{ms-no-catalog-id}}" ] @@ -7093,13 +7093,13 @@ } ], "url": { - "raw": "{{host}}/api/v3/microservices/{{ms-no-catalog-id}}", + "raw": "{{host}}/api/v1/microservices/{{ms-no-catalog-id}}", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "microservices", "{{ms-no-catalog-id}}" ] @@ -7144,13 +7144,13 @@ "raw": "\n{\n\"sourceMicroserviceUuid\": \"{{ms-id}}\",\n \"destMicroserviceUuid\": \"{{ms-id}}\",\n \"name\": \"my-route\"\n}" }, "url": { - "raw": "{{host}}/api/v3/routes", + "raw": "{{host}}/api/v1/routes", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "routes" ] } @@ -7188,13 +7188,13 @@ "raw": "" }, "url": { - "raw": "{{host}}/api/v3/routes/{{flow-name}}/{{route-id}}", + "raw": "{{host}}/api/v1/routes/{{flow-name}}/{{route-id}}", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "routes", "{{flow-name}}", "{{route-id}}" @@ -7234,13 +7234,13 @@ "raw": "{\n \"internal\": 15,\n \"external\": 155,\n \"publicMode\": false\n}" }, "url": { - "raw": "{{host}}/api/v3/microservices/{{ms-id}}/port-mapping", + "raw": "{{host}}/api/v1/microservices/{{ms-id}}/port-mapping", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "microservices", "{{ms-id}}", "port-mapping" @@ -7280,13 +7280,13 @@ } ], "url": { - "raw": "{{host}}/api/v3/microservices/{{ms-id}}/port-mapping", + "raw": "{{host}}/api/v1/microservices/{{ms-id}}/port-mapping", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "microservices", "{{ms-id}}", "port-mapping" @@ -7326,13 +7326,13 @@ "raw": "" }, "url": { - "raw": "{{host}}/api/v3/microservices/{{ms-id}}/port-mapping/15", + "raw": "{{host}}/api/v1/microservices/{{ms-id}}/port-mapping/15", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "microservices", "{{ms-id}}", "port-mapping", @@ -7380,13 +7380,13 @@ "raw": " {\n \"hostDestination\": \"/var/dest7\",\n \"containerDestination\": \"/var/dest\",\n \"accessMode\": \"rw\"\n }" }, "url": { - "raw": "{{host}}/api/v3/microservices/{{ms-id}}/volume-mapping", + "raw": "{{host}}/api/v1/microservices/{{ms-id}}/volume-mapping", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "microservices", "{{ms-id}}", "volume-mapping" @@ -7421,13 +7421,13 @@ } ], "url": { - "raw": "{{host}}/api/v3/microservices/{{ms-id}}/volume-mapping", + "raw": "{{host}}/api/v1/microservices/{{ms-id}}/volume-mapping", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "microservices", "{{ms-id}}", "volume-mapping" @@ -7466,13 +7466,13 @@ "raw": "" }, "url": { - "raw": "{{host}}/api/v3/microservices/{{ms-id}}/volume-mapping/{{volume-id}}", + "raw": "{{host}}/api/v1/microservices/{{ms-id}}/volume-mapping/{{volume-id}}", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "microservices", "{{ms-id}}", "volume-mapping", @@ -7513,13 +7513,13 @@ "raw": "{\n\t\"withCleanup\": false\n}" }, "url": { - "raw": "{{host}}/api/v3/microservices/{{ms-id}}", + "raw": "{{host}}/api/v1/microservices/{{ms-id}}", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "microservices", "{{ms-id}}" ] @@ -7558,13 +7558,13 @@ "raw": "" }, "url": { - "raw": "{{host}}/api/v3/flow/{{flow-id}}", + "raw": "{{host}}/api/v1/flow/{{flow-id}}", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "flow", "{{flow-id}}" ] @@ -7604,13 +7604,13 @@ "raw": "" }, "url": { - "raw": "{{host}}/api/v3/catalog/microservices/{{item-id}}", + "raw": "{{host}}/api/v1/catalog/microservices/{{item-id}}", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "catalog", "microservices", "{{item-id}}" @@ -7651,13 +7651,13 @@ "raw": "{\n\t\"type\": 1,\n\t\"key\":\"testtesttest\"\n}" }, "url": { - "raw": "{{host}}/api/v3/iofog/{{system-node-id}}", + "raw": "{{host}}/api/v1/iofog/{{system-node-id}}", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "iofog", "{{system-node-id}}" ] @@ -7697,13 +7697,13 @@ "raw": "" }, "url": { - "raw": "{{host}}/api/v3/iofog/{{node-id}}", + "raw": "{{host}}/api/v1/iofog/{{node-id}}", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "iofog", "{{node-id}}" ] @@ -7741,13 +7741,13 @@ "raw": "" }, "url": { - "raw": "{{host}}/api/v3/user/profile", + "raw": "{{host}}/api/v1/user/profile", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "user", "profile" ] @@ -7811,13 +7811,13 @@ "raw": "{\n \"firstName\": \"John\",\n \"lastName\": \"Doe\",\n \"email\": \"user@domain.com\",\n \"password\": \"#Bugs4Fun\",\n \"subscriptionKey\": \"XXXX-XXXX-XXXX-XXXX\"\n}" }, "url": { - "raw": "{{host}}/api/v3/user/signup", + "raw": "{{host}}/api/v1/user/signup", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "user", "signup" ] @@ -7859,13 +7859,13 @@ "raw": "{\n \"email\": \"user@domain.com\",\n \"password\": \"#Bugs4Fun\"\n}" }, "url": { - "raw": "{{host}}/api/v3/user/login", + "raw": "{{host}}/api/v1/user/login", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "user", "login" ] @@ -7910,13 +7910,13 @@ "raw": "{\n \"name\": \"string\",\n \"description\": \"string\",\n \"category\": \"string\",\n \"images\": [\n {\n \"containerImage\": \"x86 docker image name\",\n \"fogTypeId\": 1\n },\n {\n \"containerImage\": \"ARM docker image name\",\n \"fogTypeId\": 2\n }\n ],\n \"publisher\": \"string\",\n \"diskRequired\": 0,\n \"ramRequired\": 0,\n \"picture\": \"string\",\n \"isPublic\": true,\n \"registryId\": 1,\n \"inputType\": {\n \"infoType\": \"string\",\n \"infoFormat\": \"string\"\n },\n \"outputType\": {\n \"infoType\": \"string\",\n \"infoFormat\": \"string\"\n },\n \"configExample\": \"string\"\n}" }, "url": { - "raw": "{{host}}/api/v3/catalog/microservices", + "raw": "{{host}}/api/v1/catalog/microservices", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "catalog", "microservices" ] @@ -7955,13 +7955,13 @@ } ], "url": { - "raw": "{{host}}/api/v3/catalog/microservices", + "raw": "{{host}}/api/v1/catalog/microservices", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "catalog", "microservices" ] @@ -8002,13 +8002,13 @@ } ], "url": { - "raw": "{{host}}/api/v3/catalog/microservices/{{item-id}}", + "raw": "{{host}}/api/v1/catalog/microservices/{{item-id}}", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "catalog", "microservices", "{{item-id}}" @@ -8049,13 +8049,13 @@ "raw": "{\n \"name\": \"string\",\n \"description\": \"string\",\n \"category\": \"string\",\n \"images\": [\n {\n \"containerImage\": \"x86 docker image name\",\n \"fogTypeId\": 1\n },\n {\n \"containerImage\": \"ARM docker image name\",\n \"fogTypeId\": 2\n }\n ],\n \"publisher\": \"string\",\n \"diskRequired\": 0,\n \"ramRequired\": 0,\n \"picture\": \"string\",\n \"isPublic\": true,\n \"registryId\": 1,\n \"inputType\": {\n \"infoType\": \"string\",\n \"infoFormat\": \"string\"\n },\n \"outputType\": {\n \"infoType\": \"string\",\n \"infoFormat\": \"string\"\n },\n \"configExample\": \"string\"\n}\n" }, "url": { - "raw": "{{host}}/api/v3/catalog/microservices/{{item-id}}", + "raw": "{{host}}/api/v1/catalog/microservices/{{item-id}}", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "catalog", "microservices", "{{item-id}}" @@ -8096,13 +8096,13 @@ "raw": "" }, "url": { - "raw": "{{host}}/api/v3/catalog/microservices/{{item-id}}", + "raw": "{{host}}/api/v1/catalog/microservices/{{item-id}}", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "catalog", "microservices", "{{item-id}}" @@ -8141,13 +8141,13 @@ "raw": "" }, "url": { - "raw": "{{host}}/api/v3/user/profile", + "raw": "{{host}}/api/v1/user/profile", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "user", "profile" ] @@ -8211,13 +8211,13 @@ "raw": "{\n \"firstName\": \"John\",\n \"lastName\": \"Doe\",\n \"email\": \"user@domain.com\",\n \"password\": \"#Bugs4Fun\",\n \"subscriptionKey\": \"XXXX-XXXX-XXXX-XXXX\"\n}" }, "url": { - "raw": "{{host}}/api/v3/user/signup", + "raw": "{{host}}/api/v1/user/signup", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "user", "signup" ] @@ -8259,13 +8259,13 @@ "raw": "{\n \"email\": \"user@domain.com\",\n \"password\": \"#Bugs4Fun\"\n}" }, "url": { - "raw": "{{host}}/api/v3/user/login", + "raw": "{{host}}/api/v1/user/login", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "user", "login" ] @@ -8311,13 +8311,13 @@ "raw": "{\n \"name\": \"system node\",\n \"routerMode\": \"interior\",\n \"messagingPort\": 5672,\n \"edgeRouterPort\": 56722,\n \"interRouterPort\": 56721,\n \"host\": \"localhost\",\n \"isSystem\": true,\n \"location\": \"string\",\n \"latitude\": 0,\n \"longitude\": 0,\n \"description\": \"string\",\n \"dockerUrl\": \"string\",\n \"diskLimit\": 0,\n \"diskDirectory\": \"string\",\n \"memoryLimit\": 0,\n \"cpuLimit\": 0,\n \"logLimit\": 0,\n \"logDirectory\": \"string\",\n \"logFileCount\": 0,\n \"statusFrequency\": 0,\n \"changeFrequency\": 0,\n \"deviceScanFrequency\": 0,\n \"bluetoothEnabled\": false,\n \"watchdogEnabled\": true,\n \"abstractedHardwareEnabled\": false,\n \"fogType\": 1\n,\n \"host\": \"1.2.3.4\"\n}" }, "url": { - "raw": "{{host}}/api/v3/iofog", + "raw": "{{host}}/api/v1/iofog", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "iofog" ] } @@ -8362,13 +8362,13 @@ "raw": "{\n \"name\": \"string\",\n \"host\": \"1.2.3.4\",\n \"location\": \"string\",\n \"latitude\": 0,\n \"longitude\": 0,\n \"description\": \"string\",\n \"dockerUrl\": \"string\",\n \"diskLimit\": 0,\n \"diskDirectory\": \"string\",\n \"memoryLimit\": 0,\n \"cpuLimit\": 0,\n \"logLimit\": 0,\n \"logDirectory\": \"string\",\n \"logFileCount\": 0,\n \"statusFrequency\": 0,\n \"changeFrequency\": 0,\n \"deviceScanFrequency\": 0,\n \"bluetoothEnabled\": false,\n \"watchdogEnabled\": true,\n \"abstractedHardwareEnabled\": false,\n \"fogType\": 1,\n \"dockerPruningFrequency\": 35,\n \"availableDiskThreshold\": 95,\n \"logLevel\": \"INFO\"\n,\n \"host\": \"1.2.3.4\"\n}" }, "url": { - "raw": "{{host}}/api/v3/iofog", + "raw": "{{host}}/api/v1/iofog", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "iofog" ] } @@ -8406,13 +8406,13 @@ "raw": "{\n \"action\": \"open\"\n}" }, "url": { - "raw": "{{host}}/api/v3/iofog/{{node-id}}/tunnel", + "raw": "{{host}}/api/v1/iofog/{{node-id}}/tunnel", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "iofog", "{{node-id}}", "tunnel" @@ -8448,13 +8448,13 @@ } ], "url": { - "raw": "{{host}}/api/v3/iofog/{{node-id}}/tunnel", + "raw": "{{host}}/api/v1/iofog/{{node-id}}/tunnel", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "iofog", "{{node-id}}", "tunnel" @@ -8494,13 +8494,13 @@ "raw": "{\n \"action\": \"close\"\n}" }, "url": { - "raw": "{{host}}/api/v3/iofog/{{node-id}}/tunnel", + "raw": "{{host}}/api/v1/iofog/{{node-id}}/tunnel", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "iofog", "{{node-id}}", "tunnel" @@ -8541,13 +8541,13 @@ "raw": "{\n\t\"type\": 1,\n\t\"key\":\"testtesttest\"\n}" }, "url": { - "raw": "{{host}}/api/v3/iofog/{{system-node-id}}", + "raw": "{{host}}/api/v1/iofog/{{system-node-id}}", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "iofog", "{{system-node-id}}" ] @@ -8587,13 +8587,13 @@ "raw": "" }, "url": { - "raw": "{{host}}/api/v3/iofog/{{node-id}}", + "raw": "{{host}}/api/v1/iofog/{{node-id}}", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "iofog", "{{node-id}}" ] @@ -8631,13 +8631,13 @@ "raw": "" }, "url": { - "raw": "{{host}}/api/v3/user/profile", + "raw": "{{host}}/api/v1/user/profile", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "user", "profile" ] @@ -8701,13 +8701,13 @@ "raw": "{\n \"firstName\": \"John\",\n \"lastName\": \"Doe\",\n \"email\": \"user@domain.com\",\n \"password\": \"#Bugs4Fun\",\n \"subscriptionKey\": \"XXXX-XXXX-XXXX-XXXX\"\n}" }, "url": { - "raw": "{{host}}/api/v3/user/signup", + "raw": "{{host}}/api/v1/user/signup", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "user", "signup" ] @@ -8749,13 +8749,13 @@ "raw": "{\n \"email\": \"user@domain.com\",\n \"password\": \"#Bugs4Fun\"\n}" }, "url": { - "raw": "{{host}}/api/v3/user/login", + "raw": "{{host}}/api/v1/user/login", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "user", "login" ] @@ -8801,13 +8801,13 @@ "raw": "{\n \"name\": \"system node\",\n \"routerMode\": \"interior\",\n \"messagingPort\": 5672,\n \"edgeRouterPort\": 56722,\n \"interRouterPort\": 56721,\n \"host\": \"localhost\",\n \"isSystem\": true,\n \"location\": \"string\",\n \"latitude\": 0,\n \"longitude\": 0,\n \"description\": \"string\",\n \"dockerUrl\": \"string\",\n \"diskLimit\": 0,\n \"diskDirectory\": \"string\",\n \"memoryLimit\": 0,\n \"cpuLimit\": 0,\n \"logLimit\": 0,\n \"logDirectory\": \"string\",\n \"logFileCount\": 0,\n \"statusFrequency\": 0,\n \"changeFrequency\": 0,\n \"deviceScanFrequency\": 0,\n \"bluetoothEnabled\": false,\n \"watchdogEnabled\": true,\n \"abstractedHardwareEnabled\": false,\n \"fogType\": 1\n,\n \"host\": \"1.2.3.4\"\n}" }, "url": { - "raw": "{{host}}/api/v3/iofog", + "raw": "{{host}}/api/v1/iofog", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "iofog" ] } @@ -8852,13 +8852,13 @@ "raw": "{\n \"name\": \"string\",\n \"host\": \"1.2.3.4\",\n \"location\": \"string\",\n \"latitude\": 0,\n \"longitude\": 0,\n \"description\": \"string\",\n \"dockerUrl\": \"string\",\n \"diskLimit\": 0,\n \"diskDirectory\": \"string\",\n \"memoryLimit\": 0,\n \"cpuLimit\": 0,\n \"logLimit\": 0,\n \"logDirectory\": \"string\",\n \"logFileCount\": 0,\n \"statusFrequency\": 0,\n \"changeFrequency\": 0,\n \"deviceScanFrequency\": 0,\n \"bluetoothEnabled\": false,\n \"watchdogEnabled\": true,\n \"abstractedHardwareEnabled\": false,\n \"fogType\": 1\n,\n \"host\": \"1.2.3.4\"\n}" }, "url": { - "raw": "{{host}}/api/v3/iofog", + "raw": "{{host}}/api/v1/iofog", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "iofog" ] } @@ -8902,13 +8902,13 @@ "raw": "{\n \"name\": \"application-name\",\n \"description\": \"Description\",\n \"isActivated\": true\n}" }, "url": { - "raw": "{{host}}/api/v3/application", + "raw": "{{host}}/api/v1/application", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "application" ] } @@ -8952,13 +8952,13 @@ "raw": "{\n \"name\": \"application-name-second\",\n \"description\": \"Description\",\n \"isActivated\": true\n}" }, "url": { - "raw": "{{host}}/api/v3/application", + "raw": "{{host}}/api/v1/application", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "application" ] } @@ -9002,13 +9002,13 @@ "raw": "{\n \"name\": \"string\",\n \"description\": \"string\",\n \"category\": \"string\",\n \"images\": [\n {\n \"containerImage\": \"x86 docker image name\",\n \"fogTypeId\": 1\n },\n {\n \"containerImage\": \"ARM docker image name\",\n \"fogTypeId\": 2\n }\n ],\n \"publisher\": \"string\",\n \"diskRequired\": 0,\n \"ramRequired\": 0,\n \"picture\": \"string\",\n \"isPublic\": true,\n \"registryId\": 1,\n \"inputType\": {\n \"infoType\": \"string\",\n \"infoFormat\": \"string\"\n },\n \"outputType\": {\n \"infoType\": \"string\",\n \"infoFormat\": \"string\"\n },\n \"configExample\": \"string\"\n}" }, "url": { - "raw": "{{host}}/api/v3/catalog/microservices", + "raw": "{{host}}/api/v1/catalog/microservices", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "catalog", "microservices" ] @@ -9054,13 +9054,13 @@ "raw": "{\n \"name\": \"name2\",\n \"config\": \"string\",\n \"catalogItemId\": {{item-id}},\n \"application\": \"{{application-name}}\",\n \"iofogUuid\": \"{{node-id}}\",\n \"rootHostAccess\": true,\n \"logSize\": 0,\n \"volumeMappings\": [\n {\n \"hostDestination\": \"/var/dest\",\n \"containerDestination\": \"/var/dest\",\n \"accessMode\": \"rw\"\n }\n ],\n \"ports\": [\n {\n \"internal\": 1,\n \"external\": 1,\n \"publicMode\": false\n }\n ],\n \"routes\": [\n ],\n \"env\": [\n {\n \"key\": \"KEY1\",\n \"value\": \"value1\"\n },\n {\n \"key\": \"KEY2\",\n \"value\": \"value2\"\n }\n ],\n \"cmd\": [\n \t\"test\",\n \t\"--arg1\",\n \t\"--arg2\"\n ]\n}\n" }, "url": { - "raw": "{{host}}/api/v3/microservices", + "raw": "{{host}}/api/v1/microservices", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "microservices" ] } @@ -9102,13 +9102,13 @@ "raw": "{\n \"name\": \"namesec\",\n \"config\": \"string\",\n \"images\": [{\"containerImage\": \"hello-world\"\n,\"fogTypeId\": 1}, {\"containerImage\": \"hello-world\"\n,\"fogTypeId\": 2}]\n, \"registryId\": 1,\n \"application\": \"{{application-name-2}}\",\n \"iofogUuid\": \"{{node-id}}\",\n \"rootHostAccess\": true,\n \"logSize\": 0,\n \"volumeMappings\": [\n {\n \"hostDestination\": \"/var/dest\",\n \"containerDestination\": \"/var/dest\",\n \"accessMode\": \"rw\"\n }\n ],\n \"ports\": [],\n \"routes\": [\n ],\n \"env\": [\n {\n \"key\": \"KEY1\",\n \"value\": \"value1\"\n },\n {\n \"key\": \"KEY2\",\n \"value\": \"value2\"\n }\n ],\n \"cmd\": [\n \t\"test\",\n \t\"--arg1\",\n \t\"--arg2\"\n ]\n}\n" }, "url": { - "raw": "{{host}}/api/v3/microservices", + "raw": "{{host}}/api/v1/microservices", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "microservices" ] } @@ -9153,13 +9153,13 @@ "raw": "{\n \"name\": \"name-without-catalog\",\n \"config\": \"string\",\n \"images\": [{\"containerImage\": \"hello-world\"\n,\"fogTypeId\": 1}, {\"containerImage\": \"hello-world\"\n,\"fogTypeId\": 2}]\n, \"registryId\": 1,\n \"application\": \"{{application-name}}\",\n \"iofogUuid\": \"{{node-id}}\",\n \"rootHostAccess\": true,\n \"logSize\": 0,\n \"volumeMappings\": [\n {\n \"hostDestination\": \"/var/dest\",\n \"containerDestination\": \"/var/dest\",\n \"accessMode\": \"rw\"\n }\n ],\n \"ports\": [\n {\n \"internal\": 2,\n \"external\": 2,\n \"publicMode\": false\n }\n ],\n \"routes\": [\n ],\n \"env\": [\n {\n \"key\": \"KEY1\",\n \"value\": \"value1\"\n },\n {\n \"key\": \"KEY2\",\n \"value\": \"value2\"\n }\n ],\n \"cmd\": [\n \t\"test\",\n \t\"--arg1\",\n \t\"--arg2\"\n ]\n}\n" }, "url": { - "raw": "{{host}}/api/v3/microservices", + "raw": "{{host}}/api/v1/microservices", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "microservices" ] } @@ -9203,13 +9203,13 @@ "raw": "{\n \"name\": \"route-name\",\n \"from\": \"{{ms-no-catalog-name}}\",\n \"to\": \"{{ms-name}}\",\n \"application\": \"{{application-name}}\"\n}\n" }, "url": { - "raw": "{{host}}/api/v3/routes", + "raw": "{{host}}/api/v1/routes", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "routes" ] } @@ -9249,13 +9249,13 @@ "raw": "{\n \"name\": \"route-name-updated\",\n \"from\": \"{{ms-no-catalog-name}}\",\n \"to\": \"{{ms-name}}\",\n \"application\": \"{{application-name}}\"\n}\n" }, "url": { - "raw": "{{host}}/api/v3/routes/{{application-name}}/{{route-name}}", + "raw": "{{host}}/api/v1/routes/{{application-name}}/{{route-name}}", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "routes", "{{application-name}}", "{{route-name}}" @@ -9295,13 +9295,13 @@ "raw": "" }, "url": { - "raw": "{{host}}/api/v3/routes/{{application-name}}/{{route-name}}", + "raw": "{{host}}/api/v1/routes/{{application-name}}/{{route-name}}", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "routes", "{{application-name}}", "{{route-name}}" @@ -9347,13 +9347,13 @@ } ], "url": { - "raw": "{{host}}/api/v3/microservices", + "raw": "{{host}}/api/v1/microservices", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "microservices" ] } @@ -9401,13 +9401,13 @@ } ], "url": { - "raw": "{{host}}/api/v3/microservices?application={{application-name}}", + "raw": "{{host}}/api/v1/microservices?application={{application-name}}", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "microservices" ], "query": [ @@ -9451,13 +9451,13 @@ } ], "url": { - "raw": "{{host}}/api/v3/microservices/{{ms-id}}", + "raw": "{{host}}/api/v1/microservices/{{ms-id}}", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "microservices", "{{ms-id}}" ] @@ -9496,13 +9496,13 @@ } ], "url": { - "raw": "{{host}}/api/v3/microservices/{{ms-no-catalog-id}}", + "raw": "{{host}}/api/v1/microservices/{{ms-no-catalog-id}}", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "microservices", "{{ms-no-catalog-id}}" ] @@ -9541,13 +9541,13 @@ "raw": "{\n \"images\": [{\"containerImage\": \"hello-world-updated\"\n,\"fogTypeId\": 1}, {\"containerImage\": \"hello-world-updated\"\n,\"fogTypeId\": 2}]\n, \"registryId\": 2,\n \"config\": \"string\",\n \"rebuild\": true,\n \"iofogUuid\": \"{{node-id}}\",\n \"rootHostAccess\": true,\n \"logSize\": 0,\n \"volumeMappings\": [\n {\n \"hostDestination\": \"/var/dest\",\n \"containerDestination\": \"/var/dest\",\n \"accessMode\": \"rw\"\n }\n ]\n}" }, "url": { - "raw": "{{host}}/api/v3/microservices/{{ms-no-catalog-id}}", + "raw": "{{host}}/api/v1/microservices/{{ms-no-catalog-id}}", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "microservices", "{{ms-no-catalog-id}}" ] @@ -9589,13 +9589,13 @@ "raw": "{\n \"name\": \"name3\",\n \"config\": \"string\",\n \"rebuild\": true,\n \"iofogUuid\": \"{{node-id}}\",\n \"rootHostAccess\": true,\n \"logSize\": 0,\n \"volumeMappings\": [\n {\n \"hostDestination\": \"/var/dest\",\n \"containerDestination\": \"/var/dest\",\n \"accessMode\": \"rw\"\n }\n ]\n}" }, "url": { - "raw": "{{host}}/api/v3/microservices/{{ms-no-catalog-id}}", + "raw": "{{host}}/api/v1/microservices/{{ms-no-catalog-id}}", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "microservices", "{{ms-no-catalog-id}}" ] @@ -9634,13 +9634,13 @@ } ], "url": { - "raw": "{{host}}/api/v3/microservices/{{ms-no-catalog-id}}", + "raw": "{{host}}/api/v1/microservices/{{ms-no-catalog-id}}", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "microservices", "{{ms-no-catalog-id}}" ] @@ -9679,13 +9679,13 @@ "raw": "{\n \"catalogItemId\": 14,\n \"config\": \"string\",\n \"rebuild\": true,\n \"iofogUuid\": \"{{node-id}}\",\n \"rootHostAccess\": true,\n \"logSize\": 0,\n \"volumeMappings\": [\n {\n \"hostDestination\": \"/var/dest\",\n \"containerDestination\": \"/var/dest\",\n \"accessMode\": \"rw\"\n }\n ]\n}" }, "url": { - "raw": "{{host}}/api/v3/microservices/{{ms-no-catalog-id}}", + "raw": "{{host}}/api/v1/microservices/{{ms-no-catalog-id}}", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "microservices", "{{ms-no-catalog-id}}" ] @@ -9724,13 +9724,13 @@ } ], "url": { - "raw": "{{host}}/api/v3/microservices/{{ms-no-catalog-id}}", + "raw": "{{host}}/api/v1/microservices/{{ms-no-catalog-id}}", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "microservices", "{{ms-no-catalog-id}}" ] @@ -9769,13 +9769,13 @@ "raw": "{\n \"images\": [{\"containerImage\": \"hello-world-updated\"\n,\"fogTypeId\": 1}, {\"containerImage\": \"hello-world-updated\"\n,\"fogTypeId\": 2}]\n, \"registryId\": 2,\n \"catalogItemId\": null,\n \"config\": \"string\",\n \"rebuild\": true,\n \"iofogUuid\": \"{{node-id}}\",\n \"rootHostAccess\": true,\n \"logSize\": 0,\n \"volumeMappings\": [\n {\n \"hostDestination\": \"/var/dest\",\n \"containerDestination\": \"/var/dest\",\n \"accessMode\": \"rw\"\n }\n ]\n}" }, "url": { - "raw": "{{host}}/api/v3/microservices/{{ms-no-catalog-id}}", + "raw": "{{host}}/api/v1/microservices/{{ms-no-catalog-id}}", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "microservices", "{{ms-no-catalog-id}}" ] @@ -9814,13 +9814,13 @@ } ], "url": { - "raw": "{{host}}/api/v3/microservices/{{ms-no-catalog-id}}", + "raw": "{{host}}/api/v1/microservices/{{ms-no-catalog-id}}", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "microservices", "{{ms-no-catalog-id}}" ] @@ -9865,13 +9865,13 @@ "raw": "{\n\"from\": \"{{ms-name}}\",\n \"to\": \"{{ms-name}}\",\n \"name\": \"my-route\",\n \"application\": \"{{application-name}}\"\n}" }, "url": { - "raw": "{{host}}/api/v3/routes", + "raw": "{{host}}/api/v1/routes", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "routes" ] } @@ -9909,13 +9909,13 @@ "raw": "" }, "url": { - "raw": "{{host}}/api/v3/routes/{{application-name}}/{{route-id}}", + "raw": "{{host}}/api/v1/routes/{{application-name}}/{{route-id}}", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "routes", "{{application-name}}", "{{route-id}}" @@ -9955,13 +9955,13 @@ "raw": "{\n \"internal\": 15,\n \"external\": 155,\n \"publicMode\": false\n}" }, "url": { - "raw": "{{host}}/api/v3/microservices/{{ms-id}}/port-mapping", + "raw": "{{host}}/api/v1/microservices/{{ms-id}}/port-mapping", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "microservices", "{{ms-id}}", "port-mapping" @@ -10001,13 +10001,13 @@ } ], "url": { - "raw": "{{host}}/api/v3/microservices/{{ms-id}}/port-mapping", + "raw": "{{host}}/api/v1/microservices/{{ms-id}}/port-mapping", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "microservices", "{{ms-id}}", "port-mapping" @@ -10047,13 +10047,13 @@ "raw": "" }, "url": { - "raw": "{{host}}/api/v3/microservices/{{ms-id}}/port-mapping/15", + "raw": "{{host}}/api/v1/microservices/{{ms-id}}/port-mapping/15", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "microservices", "{{ms-id}}", "port-mapping", @@ -10101,13 +10101,13 @@ "raw": " {\n \"hostDestination\": \"/var/dest7\",\n \"containerDestination\": \"/var/dest\",\n \"accessMode\": \"rw\"\n }" }, "url": { - "raw": "{{host}}/api/v3/microservices/{{ms-id}}/volume-mapping", + "raw": "{{host}}/api/v1/microservices/{{ms-id}}/volume-mapping", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "microservices", "{{ms-id}}", "volume-mapping" @@ -10142,13 +10142,13 @@ } ], "url": { - "raw": "{{host}}/api/v3/microservices/{{ms-id}}/volume-mapping", + "raw": "{{host}}/api/v1/microservices/{{ms-id}}/volume-mapping", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "microservices", "{{ms-id}}", "volume-mapping" @@ -10187,13 +10187,13 @@ "raw": "" }, "url": { - "raw": "{{host}}/api/v3/microservices/{{ms-id}}/volume-mapping/{{volume-id}}", + "raw": "{{host}}/api/v1/microservices/{{ms-id}}/volume-mapping/{{volume-id}}", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "microservices", "{{ms-id}}", "volume-mapping", @@ -10234,13 +10234,13 @@ "raw": "{\n\t\"withCleanup\": false\n}" }, "url": { - "raw": "{{host}}/api/v3/microservices/{{ms-id}}", + "raw": "{{host}}/api/v1/microservices/{{ms-id}}", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "microservices", "{{ms-id}}" ] @@ -10279,13 +10279,13 @@ "raw": "" }, "url": { - "raw": "{{host}}/api/v3/application/{{application-name}}", + "raw": "{{host}}/api/v1/application/{{application-name}}", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "application", "{{application-name}}" ] @@ -10325,13 +10325,13 @@ "raw": "" }, "url": { - "raw": "{{host}}/api/v3/catalog/microservices/{{item-id}}", + "raw": "{{host}}/api/v1/catalog/microservices/{{item-id}}", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "catalog", "microservices", "{{item-id}}" @@ -10372,13 +10372,13 @@ "raw": "" }, "url": { - "raw": "{{host}}/api/v3/iofog/{{system-node-id}}", + "raw": "{{host}}/api/v1/iofog/{{system-node-id}}", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "iofog", "{{system-node-id}}" ] @@ -10418,13 +10418,13 @@ "raw": "{\n\t\"type\": 1,\n\t\"key\":\"testtesttest\"\n}" }, "url": { - "raw": "{{host}}/api/v3/iofog/{{node-id}}", + "raw": "{{host}}/api/v1/iofog/{{node-id}}", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "iofog", "{{node-id}}" ] @@ -10462,13 +10462,13 @@ "raw": "" }, "url": { - "raw": "{{host}}/api/v3/user/profile", + "raw": "{{host}}/api/v1/user/profile", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "user", "profile" ] @@ -10532,13 +10532,13 @@ "raw": "{\n \"firstName\": \"John\",\n \"lastName\": \"Doe\",\n \"email\": \"user@domain.com\",\n \"password\": \"#Bugs4Fun\",\n \"subscriptionKey\": \"XXXX-XXXX-XXXX-XXXX\"\n}" }, "url": { - "raw": "{{host}}/api/v3/user/signup", + "raw": "{{host}}/api/v1/user/signup", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "user", "signup" ] @@ -10580,13 +10580,13 @@ "raw": "{\n \"email\": \"user@domain.com\",\n \"password\": \"#Bugs4Fun\"\n}" }, "url": { - "raw": "{{host}}/api/v3/user/login", + "raw": "{{host}}/api/v1/user/login", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "user", "login" ] @@ -10632,13 +10632,13 @@ "raw": "{\n \"name\": \"system node\",\n \"routerMode\": \"interior\",\n \"messagingPort\": 5672,\n \"edgeRouterPort\": 56722,\n \"interRouterPort\": 56721,\n \"host\": \"localhost\",\n \"isSystem\": true,\n \"location\": \"string\",\n \"latitude\": 0,\n \"longitude\": 0,\n \"description\": \"string\",\n \"dockerUrl\": \"string\",\n \"diskLimit\": 0,\n \"diskDirectory\": \"string\",\n \"memoryLimit\": 0,\n \"cpuLimit\": 0,\n \"logLimit\": 0,\n \"logDirectory\": \"string\",\n \"logFileCount\": 0,\n \"statusFrequency\": 0,\n \"changeFrequency\": 0,\n \"deviceScanFrequency\": 0,\n \"bluetoothEnabled\": false,\n \"watchdogEnabled\": true,\n \"abstractedHardwareEnabled\": false,\n \"fogType\": 1\n,\n \"host\": \"1.2.3.4\"\n}" }, "url": { - "raw": "{{host}}/api/v3/iofog", + "raw": "{{host}}/api/v1/iofog", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "iofog" ] } @@ -10683,13 +10683,13 @@ "raw": "{\n \"name\": \"string\",\n \"host\": \"1.2.3.4\",\n \"location\": \"string\",\n \"latitude\": 0,\n \"longitude\": 0,\n \"description\": \"string\",\n \"dockerUrl\": \"string\",\n \"diskLimit\": 0,\n \"diskDirectory\": \"string\",\n \"memoryLimit\": 0,\n \"cpuLimit\": 0,\n \"logLimit\": 0,\n \"logDirectory\": \"string\",\n \"logFileCount\": 0,\n \"statusFrequency\": 0,\n \"changeFrequency\": 0,\n \"deviceScanFrequency\": 0,\n \"bluetoothEnabled\": false,\n \"watchdogEnabled\": true,\n \"abstractedHardwareEnabled\": false,\n \"fogType\": 1\n,\n \"host\": \"1.2.3.4\"\n}" }, "url": { - "raw": "{{host}}/api/v3/iofog", + "raw": "{{host}}/api/v1/iofog", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "iofog" ] } @@ -10733,13 +10733,13 @@ "raw": "{\n \"name\": \"application-name\",\n \"description\": \"Description\",\n \"isActivated\": true\n}" }, "url": { - "raw": "{{host}}/api/v3/application", + "raw": "{{host}}/api/v1/application", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "application" ] } @@ -10783,13 +10783,13 @@ "raw": "{\n \"name\": \"string\",\n \"description\": \"string\",\n \"category\": \"string\",\n \"images\": [\n {\n \"containerImage\": \"x86 docker image name\",\n \"fogTypeId\": 1\n },\n {\n \"containerImage\": \"ARM docker image name\",\n \"fogTypeId\": 2\n }\n ],\n \"publisher\": \"string\",\n \"diskRequired\": 0,\n \"ramRequired\": 0,\n \"picture\": \"string\",\n \"isPublic\": true,\n \"registryId\": 1,\n \"inputType\": {\n \"infoType\": \"string\",\n \"infoFormat\": \"string\"\n },\n \"outputType\": {\n \"infoType\": \"string\",\n \"infoFormat\": \"string\"\n },\n \"configExample\": \"string\"\n}" }, "url": { - "raw": "{{host}}/api/v3/catalog/microservices", + "raw": "{{host}}/api/v1/catalog/microservices", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "catalog", "microservices" ] @@ -10834,13 +10834,13 @@ "raw": "{\n \"name\": \"name2\",\n \"config\": \"string\",\n \"catalogItemId\": {{item-id}},\n \"application\": \"{{application-name}}\",\n \"iofogUuid\": \"{{node-id}}\",\n \"rootHostAccess\": true,\n \"logSize\": 0,\n \"volumeMappings\": [\n {\n \"hostDestination\": \"/var/dest\",\n \"containerDestination\": \"/var/dest\",\n \"accessMode\": \"rw\"\n }\n ],\n \"ports\": [\n {\n \"internal\": 1,\n \"external\": 1,\n \"publicMode\": false\n }\n ],\n \"routes\": [\n ]\n}\n" }, "url": { - "raw": "{{host}}/api/v3/microservices", + "raw": "{{host}}/api/v1/microservices", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "microservices" ] } @@ -10878,13 +10878,13 @@ "raw": "" }, "url": { - "raw": "{{host}}/api/v3/microservices/{{ms-id}}/image-snapshot", + "raw": "{{host}}/api/v1/microservices/{{ms-id}}/image-snapshot", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "microservices", "{{ms-id}}", "image-snapshot" @@ -10924,13 +10924,13 @@ } ], "url": { - "raw": "{{host}}/api/v3/microservices/{{ms-id}}/image-snapshot", + "raw": "{{host}}/api/v1/microservices/{{ms-id}}/image-snapshot", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "microservices", "{{ms-id}}", "image-snapshot" @@ -10970,13 +10970,13 @@ "raw": "{\n \"enable\": true\n}" }, "url": { - "raw": "{{host}}/api/v3/microservices/{{ms-id}}/strace", + "raw": "{{host}}/api/v1/microservices/{{ms-id}}/strace", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "microservices", "{{ms-id}}", "strace" @@ -11016,13 +11016,13 @@ "raw": "{\n \"ftpHost\": \"string\",\n \"ftpPort\": 0,\n \"ftpUser\": \"string\",\n \"ftpPass\": \"string\",\n \"ftpDestDir\": \"string\"\n}" }, "url": { - "raw": "{{host}}/api/v3/microservices/{{ms-id}}/strace", + "raw": "{{host}}/api/v1/microservices/{{ms-id}}/strace", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "microservices", "{{ms-id}}", "strace" @@ -11063,13 +11063,13 @@ } ], "url": { - "raw": "{{host}}/api/v3/microservices/{{ms-id}}/strace?format=string", + "raw": "{{host}}/api/v1/microservices/{{ms-id}}/strace?format=string", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "microservices", "{{ms-id}}", "strace" @@ -11116,13 +11116,13 @@ "raw": "" }, "url": { - "raw": "{{host}}/api/v3/microservices/{{ms-id}}?withCleanUp=true", + "raw": "{{host}}/api/v1/microservices/{{ms-id}}?withCleanUp=true", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "microservices", "{{ms-id}}" ], @@ -11167,13 +11167,13 @@ "raw": "" }, "url": { - "raw": "{{host}}/api/v3/application/{{application-name}}", + "raw": "{{host}}/api/v1/application/{{application-name}}", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "application", "{{application-name}}" ] @@ -11213,13 +11213,13 @@ "raw": "" }, "url": { - "raw": "{{host}}/api/v3/catalog/microservices/{{item-id}}", + "raw": "{{host}}/api/v1/catalog/microservices/{{item-id}}", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "catalog", "microservices", "{{item-id}}" @@ -11260,13 +11260,13 @@ "raw": "{\n\t\"type\": 1,\n\t\"key\":\"testtesttest\"\n}" }, "url": { - "raw": "{{host}}/api/v3/iofog/{{node-id}}", + "raw": "{{host}}/api/v1/iofog/{{node-id}}", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "iofog", "{{node-id}}" ] @@ -11306,13 +11306,13 @@ "raw": "" }, "url": { - "raw": "{{host}}/api/v3/iofog/{{system-node-id}}", + "raw": "{{host}}/api/v1/iofog/{{system-node-id}}", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "iofog", "{{system-node-id}}" ] @@ -11350,13 +11350,13 @@ "raw": "" }, "url": { - "raw": "{{host}}/api/v3/user/profile", + "raw": "{{host}}/api/v1/user/profile", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "user", "profile" ] @@ -11420,13 +11420,13 @@ "raw": "{\n \"firstName\": \"John\",\n \"lastName\": \"Doe\",\n \"email\": \"user@domain.com\",\n \"password\": \"#Bugs4Fun\",\n \"subscriptionKey\": \"XXXX-XXXX-XXXX-XXXX\"\n}" }, "url": { - "raw": "{{host}}/api/v3/user/signup", + "raw": "{{host}}/api/v1/user/signup", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "user", "signup" ] @@ -11468,13 +11468,13 @@ "raw": "{\n \"email\": \"user@domain.com\",\n \"password\": \"#Bugs4Fun\"\n}" }, "url": { - "raw": "{{host}}/api/v3/user/login", + "raw": "{{host}}/api/v1/user/login", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "user", "login" ] @@ -11520,13 +11520,13 @@ "raw": "{\n \"name\": \"system node\",\n \"routerMode\": \"interior\",\n \"messagingPort\": 5672,\n \"edgeRouterPort\": 56722,\n \"interRouterPort\": 56721,\n \"host\": \"localhost\",\n \"isSystem\": true,\n \"location\": \"string\",\n \"latitude\": 0,\n \"longitude\": 0,\n \"description\": \"string\",\n \"dockerUrl\": \"string\",\n \"diskLimit\": 0,\n \"diskDirectory\": \"string\",\n \"memoryLimit\": 0,\n \"cpuLimit\": 0,\n \"logLimit\": 0,\n \"logDirectory\": \"string\",\n \"logFileCount\": 0,\n \"statusFrequency\": 0,\n \"changeFrequency\": 0,\n \"deviceScanFrequency\": 0,\n \"bluetoothEnabled\": false,\n \"watchdogEnabled\": true,\n \"abstractedHardwareEnabled\": false,\n \"fogType\": 1\n,\n \"host\": \"1.2.3.4\"\n}" }, "url": { - "raw": "{{host}}/api/v3/iofog", + "raw": "{{host}}/api/v1/iofog", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "iofog" ] } @@ -11571,13 +11571,13 @@ "raw": "{\n \"name\": \"string\",\n \"host\": \"1.2.3.4\",\n \"location\": \"string\",\n \"latitude\": 0,\n \"longitude\": 0,\n \"description\": \"string\",\n \"dockerUrl\": \"string\",\n \"diskLimit\": 0,\n \"diskDirectory\": \"string\",\n \"memoryLimit\": 0,\n \"cpuLimit\": 0,\n \"logLimit\": 0,\n \"logDirectory\": \"string\",\n \"logFileCount\": 0,\n \"statusFrequency\": 0,\n \"changeFrequency\": 0,\n \"deviceScanFrequency\": 0,\n \"bluetoothEnabled\": false,\n \"watchdogEnabled\": true,\n \"abstractedHardwareEnabled\": false,\n \"fogType\": 1\n,\n \"host\": \"1.2.3.4\"\n}" }, "url": { - "raw": "{{host}}/api/v3/iofog", + "raw": "{{host}}/api/v1/iofog", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "iofog" ] } @@ -11618,13 +11618,13 @@ } ], "url": { - "raw": "{{host}}/api/v3/iofog/{{node-id}}/provisioning-key", + "raw": "{{host}}/api/v1/iofog/{{node-id}}/provisioning-key", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "iofog", "{{node-id}}", "provisioning-key" @@ -11663,13 +11663,13 @@ } ], "url": { - "raw": "{{host}}/api/v3/iofog-list?filters[0][key]=uuid&filters[0][value]={{node-id}}&filters[0][condition]=equals", + "raw": "{{host}}/api/v1/iofog-list?filters[0][key]=uuid&filters[0][value]={{node-id}}&filters[0][condition]=equals", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "iofog-list" ], "query": [ @@ -11721,13 +11721,13 @@ "raw": "{\n \"name\": \"string\",\n \"isSystem\": false,\n \"location\": \"string\",\n \"latitude\": 0,\n \"longitude\": 0,\n \"description\": \"string\",\n \"dockerUrl\": \"string\",\n \"diskLimit\": 0,\n \"diskDirectory\": \"string\",\n \"memoryLimit\": 0,\n \"cpuLimit\": 0,\n \"logLimit\": 0,\n \"logDirectory\": \"string\",\n \"logFileCount\": 0,\n \"statusFrequency\": 0,\n \"changeFrequency\": 0,\n \"deviceScanFrequency\": 0,\n \"bluetoothEnabled\": false,\n \"watchdogEnabled\": true,\n \"abstractedHardwareEnabled\": false,\n \"fogType\": 1\n}" }, "url": { - "raw": "{{host}}/api/v3/iofog/{{node-id}}", + "raw": "{{host}}/api/v1/iofog/{{node-id}}", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "iofog", "{{node-id}}" ] @@ -11765,13 +11765,13 @@ } ], "url": { - "raw": "{{host}}/api/v3/iofog-list?system=true", + "raw": "{{host}}/api/v1/iofog-list?system=true", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "iofog-list" ], "query": [ @@ -11830,13 +11830,13 @@ } ], "url": { - "raw": "{{host}}/api/v3/iofog/{{node-id}}", + "raw": "{{host}}/api/v1/iofog/{{node-id}}", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "iofog", "{{node-id}}" ] @@ -11879,13 +11879,13 @@ "raw": "" }, "url": { - "raw": "{{host}}/api/v3/iofog/{{node-id}}/version/rollback", + "raw": "{{host}}/api/v1/iofog/{{node-id}}/version/rollback", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "iofog", "{{node-id}}", "version", @@ -11927,13 +11927,13 @@ "raw": "" }, "url": { - "raw": "{{host}}/api/v3/iofog/{{node-id}}/version/upgrade", + "raw": "{{host}}/api/v1/iofog/{{node-id}}/version/upgrade", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "iofog", "{{node-id}}", "version", @@ -11975,13 +11975,13 @@ "raw": "" }, "url": { - "raw": "{{host}}/api/v3/iofog/{{node-id}}/reboot", + "raw": "{{host}}/api/v1/iofog/{{node-id}}/reboot", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "iofog", "{{node-id}}", "reboot" @@ -12021,13 +12021,13 @@ "raw": "" }, "url": { - "raw": "{{host}}/api/v3/iofog/{{node-id}}/prune", + "raw": "{{host}}/api/v1/iofog/{{node-id}}/prune", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "iofog", "{{node-id}}", "prune" @@ -12063,13 +12063,13 @@ } ], "url": { - "raw": "{{host}}/api/v3/iofog/{{node-id}}/hal/hw", + "raw": "{{host}}/api/v1/iofog/{{node-id}}/hal/hw", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "iofog", "{{node-id}}", "hal", @@ -12106,13 +12106,13 @@ } ], "url": { - "raw": "{{host}}/api/v3/iofog/{{node-id}}/hal/usb", + "raw": "{{host}}/api/v1/iofog/{{node-id}}/hal/usb", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "iofog", "{{node-id}}", "hal", @@ -12154,13 +12154,13 @@ "raw": "{\n\t\"type\": 1,\n\t\"key\":\"testtesttest\"\n}" }, "url": { - "raw": "{{host}}/api/v3/iofog/{{system-node-id}}", + "raw": "{{host}}/api/v1/iofog/{{system-node-id}}", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "iofog", "{{system-node-id}}" ] @@ -12199,13 +12199,13 @@ "raw": "" }, "url": { - "raw": "{{host}}/api/v3/iofog/{{node-id}}", + "raw": "{{host}}/api/v1/iofog/{{node-id}}", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "iofog", "{{node-id}}" ] @@ -12243,13 +12243,13 @@ } ], "url": { - "raw": "{{host}}/api/v3/iofog-list?filters[0][key]=uuid&filters[0][value]={{node-id}}&filters[0][condition]=equals", + "raw": "{{host}}/api/v1/iofog-list?filters[0][key]=uuid&filters[0][value]={{node-id}}&filters[0][condition]=equals", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "iofog-list" ], "query": [ @@ -12300,13 +12300,13 @@ "raw": "" }, "url": { - "raw": "{{host}}/api/v3/user/profile", + "raw": "{{host}}/api/v1/user/profile", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "user", "profile" ] @@ -12370,13 +12370,13 @@ "raw": "{\n \"firstName\": \"John\",\n \"lastName\": \"Doe\",\n \"email\": \"user@domain.com\",\n \"password\": \"#Bugs4Fun\",\n \"subscriptionKey\": \"XXXX-XXXX-XXXX-XXXX\"\n}" }, "url": { - "raw": "{{host}}/api/v3/user/signup", + "raw": "{{host}}/api/v1/user/signup", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "user", "signup" ] @@ -12418,13 +12418,13 @@ "raw": "{\n \"email\": \"user@domain.com\",\n \"password\": \"#Bugs4Fun\"\n}" }, "url": { - "raw": "{{host}}/api/v3/user/login", + "raw": "{{host}}/api/v1/user/login", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "user", "login" ] @@ -12470,13 +12470,13 @@ "raw": "{\n \"url\": \"string\",\n \"isPublic\": true,\n \"username\": \"string\",\n \"password\": \"string\",\n \"email\": \"test@gmail.com\",\n \"requiresCert\": false,\n \"certificate\": \"string\"\n}" }, "url": { - "raw": "{{host}}/api/v3/registries", + "raw": "{{host}}/api/v1/registries", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "registries" ] } @@ -12514,13 +12514,13 @@ "raw": "{\n \"url\": \"string2\",\n \"isPublic\": true,\n \"username\": \"string3\",\n \"password\": \"string4\",\n \"email\": \"test2@gmail.com\",\n \"requiresCert\": true,\n \"certificate\": \"string6\"\n}" }, "url": { - "raw": "{{host}}/api/v3/registries/{{reg-id}}", + "raw": "{{host}}/api/v1/registries/{{reg-id}}", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "registries", "{{reg-id}}" ] @@ -12559,13 +12559,13 @@ } ], "url": { - "raw": "{{host}}/api/v3/registries", + "raw": "{{host}}/api/v1/registries", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "registries" ] } @@ -12603,13 +12603,13 @@ "raw": "" }, "url": { - "raw": "{{host}}/api/v3/registries/{{reg-id}}", + "raw": "{{host}}/api/v1/registries/{{reg-id}}", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "registries", "{{reg-id}}" ] @@ -12647,13 +12647,13 @@ "raw": "" }, "url": { - "raw": "{{host}}/api/v3/user/profile", + "raw": "{{host}}/api/v1/user/profile", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "user", "profile" ] @@ -12717,13 +12717,13 @@ "raw": "{\n \"firstName\": \"John\",\n \"lastName\": \"Doe\",\n \"email\": \"user@domain.com\",\n \"password\": \"#Bugs4Fun\",\n \"subscriptionKey\": \"XXXX-XXXX-XXXX-XXXX\"\n}" }, "url": { - "raw": "{{host}}/api/v3/user/signup", + "raw": "{{host}}/api/v1/user/signup", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "user", "signup" ] @@ -12765,13 +12765,13 @@ "raw": "{\n \"email\": \"user@domain.com\",\n \"password\": \"#Bugs4Fun\"\n}" }, "url": { - "raw": "{{host}}/api/v3/user/login", + "raw": "{{host}}/api/v1/user/login", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "user", "login" ] @@ -12817,13 +12817,13 @@ "raw": "{\n \"name\": \"system node\",\n \"routerMode\": \"interior\",\n \"messagingPort\": 5672,\n \"edgeRouterPort\": 56722,\n \"interRouterPort\": 56721,\n \"host\": \"localhost\",\n \"isSystem\": true,\n \"location\": \"string\",\n \"latitude\": 0,\n \"longitude\": 0,\n \"description\": \"string\",\n \"dockerUrl\": \"string\",\n \"diskLimit\": 0,\n \"diskDirectory\": \"string\",\n \"memoryLimit\": 0,\n \"cpuLimit\": 0,\n \"logLimit\": 0,\n \"logDirectory\": \"string\",\n \"logFileCount\": 0,\n \"statusFrequency\": 0,\n \"changeFrequency\": 0,\n \"deviceScanFrequency\": 0,\n \"bluetoothEnabled\": false,\n \"watchdogEnabled\": true,\n \"abstractedHardwareEnabled\": false,\n \"fogType\": 1\n,\n \"host\": \"1.2.3.4\"\n}" }, "url": { - "raw": "{{host}}/api/v3/iofog", + "raw": "{{host}}/api/v1/iofog", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "iofog" ] } @@ -12869,13 +12869,13 @@ "raw": "{\n \"name\": \"string\",\n \"host\": \"1.2.3.4\",\n \"location\": \"string\",\n \"latitude\": 0,\n \"longitude\": 0,\n \"description\": \"string\",\n \"dockerUrl\": \"string\",\n \"diskLimit\": 0,\n \"diskDirectory\": \"string\",\n \"memoryLimit\": 0,\n \"cpuLimit\": 0,\n \"logLimit\": 0,\n \"logDirectory\": \"string\",\n \"logFileCount\": 0,\n \"statusFrequency\": 0,\n \"changeFrequency\": 0,\n \"deviceScanFrequency\": 0,\n \"bluetoothEnabled\": false,\n \"watchdogEnabled\": true,\n \"abstractedHardwareEnabled\": false,\n \"fogType\": 1\n,\n \"host\": \"1.2.3.4\"\n}" }, "url": { - "raw": "{{host}}/api/v3/iofog", + "raw": "{{host}}/api/v1/iofog", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "iofog" ] } @@ -12916,13 +12916,13 @@ } ], "url": { - "raw": "{{host}}/api/v3/iofog/{{node-id}}/provisioning-key", + "raw": "{{host}}/api/v1/iofog/{{node-id}}/provisioning-key", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "iofog", "{{node-id}}", "provisioning-key" @@ -12963,13 +12963,13 @@ "raw": "{\n\t\"type\": 1,\n\t\"key\":\"{{provisioning-key}}\"\n}" }, "url": { - "raw": "{{host}}/api/v3/agent/provision", + "raw": "{{host}}/api/v1/agent/provision", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "agent", "provision" ] @@ -13018,13 +13018,13 @@ "raw": "{\n \"name\": \"com.orange.smart-door\",\n \"version\": \"0.0.1\",\n \"description\": \"Orange Smart Door\",\n \"display\": {\n \"name\": \"Smart Door\",\n \"icon\": \"help\",\n \"color\": \"#ff0000\"\n },\n \"interfaceProtocol\": \"https\",\n \"interface\": {\n \"endpoints\": [\n {\n \"name\": \"liveness\",\n \"url\": \"https://localhost:91121\",\n \"method\": \"GET\"\n }\n ]\n },\n \"orchestrationTags\": [\n \"orange\",\n \"smart-door\"\n ]\n}" }, "url": { - "raw": "{{host}}/api/v3/edgeResource", + "raw": "{{host}}/api/v1/edgeResource", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "edgeResource" ] } @@ -13063,13 +13063,13 @@ "raw": "{\n \"name\": \"com.orange.smart-door\",\n \"version\": \"0.0.2\",\n \"description\": \"Orange Smart Door\",\n \"display\": {\n \"name\": \"Smart Door\",\n \"icon\": \"help\",\n \"color\": \"#ff0000\"\n },\n \"interfaceProtocol\": \"https\",\n \"interface\": {\n \"endpoints\": [\n {\n \"name\": \"liveness\",\n \"url\": \"https://localhost:91121\",\n \"method\": \"GET\"\n }\n ]\n }\n}" }, "url": { - "raw": "{{host}}/api/v3/edgeResource/{{edge-resource-name}}/{{edge-resource-version}}", + "raw": "{{host}}/api/v1/edgeResource/{{edge-resource-name}}/{{edge-resource-version}}", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "edgeResource", "{{edge-resource-name}}", "{{edge-resource-version}}" @@ -13113,13 +13113,13 @@ "raw": "{\n \"name\": \"com.orange.smart-door2\",\n \"version\": \"0.0.1\",\n \"description\": \"Orange Smart Door\",\n \"display\": {\n \"name\": \"Smart Door\",\n \"icon\": \"help\",\n \"color\": \"#ff0000\"\n },\n \"interfaceProtocol\": \"https\",\n \"interface\": {\n \"endpoints\": [\n {\n \"name\": \"liveness\",\n \"url\": \"https://localhost:91121\",\n \"method\": \"GET\"\n },\n {\n \"name\": \"version\",\n \"url\": \"https://localhost:91121/version\",\n \"method\": \"GET\"\n }\n ]\n },\n \"orchestrationTags\": [\n \"orange\",\n \"smart-door\",\n \"smart-door-v0.0.1\"\n ]\n}" }, "url": { - "raw": "{{host}}/api/v3/edgeResource/{{edge-resource-name}}/{{edge-resource-version}}", + "raw": "{{host}}/api/v1/edgeResource/{{edge-resource-name}}/{{edge-resource-version}}", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "edgeResource", "{{edge-resource-name}}", "{{edge-resource-version}}" @@ -13164,13 +13164,13 @@ "raw": "{\n \"name\": \"com.orange.smart-door\"\n}" }, "url": { - "raw": "{{host}}/api/v3/edgeResource/{{edge-resource-name}}/{{edge-resource-version}}", + "raw": "{{host}}/api/v1/edgeResource/{{edge-resource-name}}/{{edge-resource-version}}", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "edgeResource", "{{edge-resource-name}}", "{{edge-resource-version}}" @@ -13209,13 +13209,13 @@ } ], "url": { - "raw": "{{host}}/api/v3/edgeResource/{{edge-resource-name}}/{{edge-resource-version}}", + "raw": "{{host}}/api/v1/edgeResource/{{edge-resource-name}}/{{edge-resource-version}}", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "edgeResource", "{{edge-resource-name}}", "{{edge-resource-version}}" @@ -13256,13 +13256,13 @@ "raw": "{\n \"uuid\": \"{{node-id}}\"\n}" }, "url": { - "raw": "{{host}}/api/v3/edgeResource/{{edge-resource-name}}/{{edge-resource-version}}/link", + "raw": "{{host}}/api/v1/edgeResource/{{edge-resource-name}}/{{edge-resource-version}}/link", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "edgeResource", "{{edge-resource-name}}", "{{edge-resource-version}}", @@ -13303,13 +13303,13 @@ } ], "url": { - "raw": "{{host}}/api/v3/agent/config/changes", + "raw": "{{host}}/api/v1/agent/config/changes", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "agent", "config", "changes" @@ -13356,13 +13356,13 @@ } ], "url": { - "raw": "{{host}}/api/v3/agent/edgeResources", + "raw": "{{host}}/api/v1/agent/edgeResources", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "agent", "edgeResources" ] @@ -13405,13 +13405,13 @@ } ], "url": { - "raw": "{{host}}/api/v3/iofog/{{node-id}}", + "raw": "{{host}}/api/v1/iofog/{{node-id}}", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "iofog", "{{node-id}}" ] @@ -13451,13 +13451,13 @@ "raw": "{\n \"uuid\": \"{{node-id}}\"\n}" }, "url": { - "raw": "{{host}}/api/v3/edgeResource/{{edge-resource-name}}/{{edge-resource-version}}/link", + "raw": "{{host}}/api/v1/edgeResource/{{edge-resource-name}}/{{edge-resource-version}}/link", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "edgeResource", "{{edge-resource-name}}", "{{edge-resource-version}}", @@ -13496,13 +13496,13 @@ } ], "url": { - "raw": "{{host}}/api/v3/iofog/{{node-id}}", + "raw": "{{host}}/api/v1/iofog/{{node-id}}", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "iofog", "{{node-id}}" ] @@ -13551,13 +13551,13 @@ "raw": "{\n \"name\": \"com.orange.smart-door\",\n \"version\": \"0.0.2\",\n \"description\": \"Orange Smart Door\",\n \"display\": {\n \"name\": \"Smart Door\",\n \"icon\": \"help\",\n \"color\": \"#ff0000\"\n },\n \"interfaceProtocol\": \"https\",\n \"interface\": {\n \"endpoints\": [\n {\n \"name\": \"liveness\",\n \"url\": \"https://localhost:91121\",\n \"method\": \"GET\"\n }\n ]\n }\n}" }, "url": { - "raw": "{{host}}/api/v3/edgeResource", + "raw": "{{host}}/api/v1/edgeResource", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "edgeResource" ] } @@ -13591,13 +13591,13 @@ } ], "url": { - "raw": "{{host}}/api/v3/edgeResources", + "raw": "{{host}}/api/v1/edgeResources", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "edgeResources" ] } @@ -13638,13 +13638,13 @@ } ], "url": { - "raw": "{{host}}/api/v3/edgeResource/{{edge-resource-name}}?=", + "raw": "{{host}}/api/v1/edgeResource/{{edge-resource-name}}?=", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "edgeResource", "{{edge-resource-name}}" ], @@ -13690,13 +13690,13 @@ "raw": "" }, "url": { - "raw": "{{host}}/api/v3/edgeResource/{{edge-resource-name}}/{{edge-resource-version-2}}", + "raw": "{{host}}/api/v1/edgeResource/{{edge-resource-name}}/{{edge-resource-version-2}}", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "edgeResource", "{{edge-resource-name}}", "{{edge-resource-version-2}}" @@ -13737,13 +13737,13 @@ "raw": "" }, "url": { - "raw": "{{host}}/api/v3/edgeResource/{{edge-resource-name}}/{{edge-resource-version}}", + "raw": "{{host}}/api/v1/edgeResource/{{edge-resource-name}}/{{edge-resource-version}}", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "edgeResource", "{{edge-resource-name}}", "{{edge-resource-version}}" @@ -13784,13 +13784,13 @@ "raw": "{\n\t\"type\": 1,\n\t\"key\":\"testtesttest\"\n}" }, "url": { - "raw": "{{host}}/api/v3/iofog/{{system-node-id}}", + "raw": "{{host}}/api/v1/iofog/{{system-node-id}}", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "iofog", "{{system-node-id}}" ] @@ -13829,13 +13829,13 @@ "raw": "" }, "url": { - "raw": "{{host}}/api/v3/iofog/{{node-id}}", + "raw": "{{host}}/api/v1/iofog/{{node-id}}", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "iofog", "{{node-id}}" ] @@ -13873,13 +13873,13 @@ "raw": "" }, "url": { - "raw": "{{host}}/api/v3/user/profile", + "raw": "{{host}}/api/v1/user/profile", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "user", "profile" ] @@ -13909,13 +13909,13 @@ "method": "HEAD", "header": [], "url": { - "raw": "{{host}}/api/v3/capabilities/edgeResources", + "raw": "{{host}}/api/v1/capabilities/edgeResources", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "capabilities", "edgeResources" ] @@ -13940,13 +13940,13 @@ "method": "HEAD", "header": [], "url": { - "raw": "{{host}}/api/v3/capabilities/applicationTemplates", + "raw": "{{host}}/api/v1/capabilities/applicationTemplates", "host": [ "{{host}}" ], "path": [ "api", - "v3", + "v1", "capabilities", "applicationTemplates" ] diff --git a/test/src/template/app.yml b/test/src/template/app.yml index 778dd9699..14d3fd98f 100755 --- a/test/src/template/app.yml +++ b/test/src/template/app.yml @@ -1,6 +1,6 @@ --- -apiVersion: iofog.org/v2 +apiVersion: datasance.com/v1 kind: Application metadata: name: edai-smartbuilding-rules-engine diff --git a/test/src/template/simple.yml b/test/src/template/simple.yml index 8b5dbe9d5..c009aab6f 100755 --- a/test/src/template/simple.yml +++ b/test/src/template/simple.yml @@ -1,6 +1,6 @@ --- -apiVersion: iofog.org/v2 +apiVersion: datasance.com/v1 kind: Application metadata: name: edai-smartbuilding-rules-engine From efd917a9b6e7871e170ec02a9bf579a83ab0f449 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Sat, 3 Feb 2024 23:17:15 +0300 Subject: [PATCH 032/146] .nsprc execption edited --- .nsprc | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/.nsprc b/.nsprc index cf290f643..f49a2ac69 100644 --- a/.nsprc +++ b/.nsprc @@ -23,5 +23,14 @@ }, "1095024": { "notes": "" + }, + "1096366": { + "notes": "" + }, + "1095365": { + "notes": "" + }, + "1095367": { + "notes": "" } } \ No newline at end of file From 9efd708ef5b72bfa616329290e6af35279b98db9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Sat, 3 Feb 2024 23:27:22 +0300 Subject: [PATCH 033/146] workflow tests removed --- .github/workflows/ci.yaml | 53 +-------------------------------------- 1 file changed, 1 insertion(+), 52 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index a5da53947..9a67cae34 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -58,59 +58,8 @@ jobs: npm i -g better-npm-audit npx better-npm-audit audit -p - Tests: - needs: Build - runs-on: ubuntu-20.04 - permissions: - actions: write - checks: write - contents: write - deployments: write - id-token: write - issues: write - discussions: write - packages: write - pages: write - pull-requests: write - repository-projects: write - security-events: write - statuses: write - strategy: - matrix: - platform: - - linux/amd64 - - linux/386 - - linux/arm/v6 - - linux/arm/v7 - - linux/arm64 - node: [ 16, 17, 16, 19,20, 21 ] - name: Node ${{ matrix.node }} Test - steps: - - uses: actions/checkout@v3 - - name: Setup Node ${{ matrix.node }} Test - uses: actions/setup-node@v3 - with: - node-version: ${{ matrix.node }} - - name: Cache Node Modules - uses: actions/cache@v3 - with: - path: | - node_modules - key: ${{ runner.os }}-controller-node_modules-${{ hashFiles('package-lock.json') }} - restore-keys: | - ${{ runner.os }}-controller-node_modules- - - run: npm install - - run: npm run test -- junit - - run: npm run postman_test - - name: Publish Test Results - uses: EnricoMi/publish-unit-test-result-action@v2 - if: always() - with: - files: | - *-results.xml - Publish: - needs: [Build, Tests] + needs: [Build] runs-on: ubuntu-20.04 permissions: actions: write From 06501825ac502556a63011839a7b24a47b5e59be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Sat, 3 Feb 2024 23:34:07 +0300 Subject: [PATCH 034/146] release version edited --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 0def6cf1d..fe9085f56 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@datasance/iofogcontroller", - "version": "3.0.4", + "version": "3.0.5", "description": "ioFog Controller project for Eclipse IoFog @ iofog.org \\nCopyright (c) 2023 Datasance Teknoloji A.S.", "main": "./src/main.js", "author": "Emirhan Durmus", From 8936b27fd23dd40a329b27b14ac04e03a7f4b897 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Fri, 16 Feb 2024 17:25:50 +0300 Subject: [PATCH 035/146] ecn viewer package update test --- Dockerfile.dev | 12 ++++++++++++ package.json | 4 ++-- src/server.js | 4 ++-- src/services/controller-service.js | 2 +- 4 files changed, 17 insertions(+), 5 deletions(-) diff --git a/Dockerfile.dev b/Dockerfile.dev index 460e6c51f..74fd13f1e 100644 --- a/Dockerfile.dev +++ b/Dockerfile.dev @@ -1,6 +1,7 @@ FROM node:hydrogen-bookworm AS builder ARG PKG_VERSION +ARG GITHUB_TOKEN WORKDIR /tmp @@ -10,6 +11,11 @@ COPY package.json . COPY . . +# Set GitHub npm registry with authentication token +RUN echo "//npm.pkg.github.com/:_authToken=${GITHUB_TOKEN}" > ~/.npmrc + +RUN npm config set @datasance:registry https://npm.pkg.github.com/ + RUN npm i --build-from-source RUN npm version $PKG_VERSION --allow-same-version --no-git-tag-version @@ -31,6 +37,12 @@ RUN python3 -m ensurepip RUN pip3 install --no-cache --upgrade pip setuptools COPY --from=builder /tmp/datasance-iofogcontroller-*.tgz /tmp/iofog-controller.tgz +ARG GITHUB_TOKEN + +# Set GitHub npm registry with authentication token +RUN echo "//npm.pkg.github.com/:_authToken=${GITHUB_TOKEN}" > ~/.npmrc + +RUN npm config set @datasance:registry https://npm.pkg.github.com/ RUN npm i -g /tmp/iofog-controller.tgz && \ rm -rf /tmp/iofog-controller.tgz && \ diff --git a/package.json b/package.json index fe9085f56..c2319a1f8 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@datasance/iofogcontroller", - "version": "3.0.5", + "version": "3.0.6", "description": "ioFog Controller project for Eclipse IoFog @ iofog.org \\nCopyright (c) 2023 Datasance Teknoloji A.S.", "main": "./src/main.js", "author": "Emirhan Durmus", @@ -57,7 +57,7 @@ "iofog-controller": "src/main.js" }, "dependencies": { - "@iofog/ecn-viewer": "3.0.2", + "@datasance/ecn-viewer": "0.0.1", "axios": "1.0.0-alpha.1", "body-parser": "^1.20.1", "child_process": "1.0.2", diff --git a/src/server.js b/src/server.js index 6dce62643..b465e178e 100755 --- a/src/server.js +++ b/src/server.js @@ -18,7 +18,7 @@ const db = require('./data/models') const bodyParser = require('body-parser') const cookieParser = require('cookie-parser') const express = require('express') -const ecnViewer = process.env.ECN_VIEWER_PATH ? require(`${process.env.ECN_VIEWER_PATH}/package/index.js`) : require('@iofog/ecn-viewer') +const ecnViewer = process.env.ECN_VIEWER_PATH ? require(`${process.env.ECN_VIEWER_PATH}/package/index.js`) : require('@datasance/ecn-viewer') const fs = require('fs') const helmet = require('helmet') const cors = require('cors') @@ -198,7 +198,7 @@ const initState = async () => { }) } // Set up controller-config.js for ECN Viewer - const ecnViewerControllerConfigFilePath = path.join(__dirname, '..', 'node_modules', '@iofog', 'ecn-viewer', 'build', 'controller-config.js') + const ecnViewerControllerConfigFilePath = path.join(__dirname, '..', 'node_modules', '@datasance', 'ecn-viewer', 'build', 'controller-config.js') const ecnViewerControllerConfig = { port: apiPort, user: {} diff --git a/src/services/controller-service.js b/src/services/controller-service.js index 7796c210a..8b01bdf0b 100644 --- a/src/services/controller-service.js +++ b/src/services/controller-service.js @@ -57,7 +57,7 @@ const statusController = async function (isCLI) { 'uptimeSec': process.uptime(), versions: { controller: packageJson.version, - ecnViewer: packageJson.dependencies['@iofog/ecn-viewer'] + ecnViewer: packageJson.dependencies['@datasance/ecn-viewer'] } } } From 40e7411c9fbf6b3e9c8a36e0fcab92f8f3c76f41 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Fri, 16 Feb 2024 17:57:07 +0300 Subject: [PATCH 036/146] workflow nprmc edit --- .github/workflows/ci.yaml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 9a67cae34..ee6b30f38 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -52,6 +52,12 @@ jobs: - uses: actions/setup-node@v3 with: node-version: 18 + - name: Replace values + shell: bash + env: + PAT: ${{ secrets.PAT }} + run: | + sed -i.back "s|PAT|${PAT}|g" .npmrc - run: npm install - run: npm run standard - run: | From 24d8a60d5bbb28b3942097a447aa2dd714202858 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Fri, 16 Feb 2024 18:02:12 +0300 Subject: [PATCH 037/146] workflow edit --- .github/workflows/ci.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index ee6b30f38..e8bb3afa4 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -58,6 +58,7 @@ jobs: PAT: ${{ secrets.PAT }} run: | sed -i.back "s|PAT|${PAT}|g" .npmrc + - run: npm config set @datasance:registry https://npm.pkg.github.com/ - run: npm install - run: npm run standard - run: | @@ -93,7 +94,7 @@ jobs: PAT: ${{ secrets.PAT }} run: | sed -i.back "s|PAT|${PAT}|g" .npmrc - + - run: npm config set @datasance:registry https://npm.pkg.github.com/ - run: npm install - name: npm version From 376ecc32ee744347781ccd784aedeaa7d806bb63 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Fri, 16 Feb 2024 18:14:30 +0300 Subject: [PATCH 038/146] workflow and nsprc edit --- .github/workflows/ci.yaml | 4 ++++ .nsprc | 10 ++++++++++ 2 files changed, 14 insertions(+) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index e8bb3afa4..eb3c3dc7f 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -139,6 +139,10 @@ jobs: registry: "ghcr.io" username: ${{ github.actor }} password: ${{ secrets.PAT }} + - name: build -argument + shell: bash + run: | + echo "GITHUB_TOKEN=${{ secrets.PAT }}" >> "${GITHUB_OUTPUT}" - name: Build and Push to ghcr uses: docker/build-push-action@v3 diff --git a/.nsprc b/.nsprc index f49a2ac69..2a54564df 100644 --- a/.nsprc +++ b/.nsprc @@ -32,5 +32,15 @@ }, "1095367": { "notes": "" + }, + "1096460": { + "notes": "" + }, + "1096482": { + "notes": "" + }, + "1096483": { + "notes": "" } + } \ No newline at end of file From e54314efde19568418083d30f3df6473926c9fc2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Fri, 16 Feb 2024 18:21:43 +0300 Subject: [PATCH 039/146] workflow docker build argument edited --- .github/workflows/ci.yaml | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index eb3c3dc7f..b640804d1 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -139,11 +139,7 @@ jobs: registry: "ghcr.io" username: ${{ github.actor }} password: ${{ secrets.PAT }} - - name: build -argument - shell: bash - run: | - echo "GITHUB_TOKEN=${{ secrets.PAT }}" >> "${GITHUB_OUTPUT}" - + - name: Build and Push to ghcr uses: docker/build-push-action@v3 id: build_push_ghcr @@ -151,6 +147,7 @@ jobs: file: Dockerfile.dev push: true outputs: type=image,name=target,annotation-index.org.opencontainers.image.description=Controller + build-args: GITHUB_TOKEN=${{ secrets.PAT }} tags: | ghcr.io/datasance/${{ env.IMAGE_NAME }}:${{ steps.tags.outputs.VERSION }} ghcr.io/datasance/${{ env.IMAGE_NAME }}:latest From 5dcf7b6330fcec6412a60ceafb03ecbf1d412000 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Fri, 16 Feb 2024 20:26:54 +0300 Subject: [PATCH 040/146] dockerfile updated --- Dockerfile.dev | 1 + 1 file changed, 1 insertion(+) diff --git a/Dockerfile.dev b/Dockerfile.dev index 74fd13f1e..13f3e6130 100644 --- a/Dockerfile.dev +++ b/Dockerfile.dev @@ -39,6 +39,7 @@ RUN pip3 install --no-cache --upgrade pip setuptools COPY --from=builder /tmp/datasance-iofogcontroller-*.tgz /tmp/iofog-controller.tgz ARG GITHUB_TOKEN +COPY --from=builder /tmp/.npmrc . # Set GitHub npm registry with authentication token RUN echo "//npm.pkg.github.com/:_authToken=${GITHUB_TOKEN}" > ~/.npmrc From b75b31f449a2c43865063a7fc5f322d55e2c5193 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Sat, 17 Feb 2024 00:20:29 +0300 Subject: [PATCH 041/146] dockerfile edited --- Dockerfile.dev | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Dockerfile.dev b/Dockerfile.dev index 13f3e6130..a2aebba04 100644 --- a/Dockerfile.dev +++ b/Dockerfile.dev @@ -37,13 +37,13 @@ RUN python3 -m ensurepip RUN pip3 install --no-cache --upgrade pip setuptools COPY --from=builder /tmp/datasance-iofogcontroller-*.tgz /tmp/iofog-controller.tgz -ARG GITHUB_TOKEN +#ARG GITHUB_TOKEN -COPY --from=builder /tmp/.npmrc . +#COPY --from=builder /tmp/.npmrc . # Set GitHub npm registry with authentication token -RUN echo "//npm.pkg.github.com/:_authToken=${GITHUB_TOKEN}" > ~/.npmrc +#RUN echo "//npm.pkg.github.com/:_authToken=${GITHUB_TOKEN}" > ~/.npmrc -RUN npm config set @datasance:registry https://npm.pkg.github.com/ +#RUN npm config set @datasance:registry https://npm.pkg.github.com/ RUN npm i -g /tmp/iofog-controller.tgz && \ rm -rf /tmp/iofog-controller.tgz && \ From 6d3274a45325b4f7bc0bd1d3d45b397cdf6f9fb2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Sat, 17 Feb 2024 00:38:05 +0300 Subject: [PATCH 042/146] dockerfile edited --- Dockerfile.dev | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile.dev b/Dockerfile.dev index a2aebba04..861ebfa3f 100644 --- a/Dockerfile.dev +++ b/Dockerfile.dev @@ -12,7 +12,7 @@ COPY package.json . COPY . . # Set GitHub npm registry with authentication token -RUN echo "//npm.pkg.github.com/:_authToken=${GITHUB_TOKEN}" > ~/.npmrc +RUN sed -i.back "s|PAT|${GITHUB_TOKEN}|g" .npmrc RUN npm config set @datasance:registry https://npm.pkg.github.com/ From cfd8e25826cdd9ad97df24d4d5092f0376588bfa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Sat, 17 Feb 2024 21:19:14 +0300 Subject: [PATCH 043/146] public port range edited --- src/config/default.json | 2 +- src/services/microservice-ports/default.js | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/config/default.json b/src/config/default.json index 51747dcc9..caa7c33c5 100644 --- a/src/config/default.json +++ b/src/config/default.json @@ -32,7 +32,7 @@ "DiagnosticDir": "diagnostic" }, "PublicPorts": { - "Range": "6000-7000", + "Range": "6001-7999", "ProxyBrokerUrl": "http://localhost:3000", "ProxyBrokerToken": "" }, diff --git a/src/services/microservice-ports/default.js b/src/services/microservice-ports/default.js index 9e877bc38..b511a60cc 100644 --- a/src/services/microservice-ports/default.js +++ b/src/services/microservice-ports/default.js @@ -55,9 +55,9 @@ function _createDefaultPublicPortRange () { const [startStr, endStr] = defaultPortRangeStr.split('-') let start = parseInt(startStr) let end = parseInt(endStr) - if (!start || Number.isNaN(start)) { start = 6000 } + if (!start || Number.isNaN(start)) { start = 6001 } if (!end || Number.isNaN(end) || end < start) { - end = start + 1000 + end = start + 1998 } const size = end - start const availablePorts = new Array(size) @@ -106,7 +106,7 @@ async function validatePortMapping (agent, mapping, availablePublicPortsByHost, } else { // Assign next available public port const currentPublicPorts = (await MicroservicePublicPortManager.findAll({ hostId: host.uuid }, transaction)).map(p => p.publicPort) - // Default range 6000 -> 7000 + // Default range 6001 -> 7999 availablePublicPortsByHost[host.uuid] = availablePublicPortsByHost[host.uuid] || _createDefaultPublicPortRange() availablePublicPortsByHost[host.uuid] = availablePublicPortsByHost[host.uuid].filter(port => !currentPublicPorts.includes(port)) if (availablePublicPortsByHost[host.uuid].length === 0) { From 8f1e8de5dd41fb8286a1d3c2428a3cc5283735da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Fri, 1 Mar 2024 15:32:49 +0300 Subject: [PATCH 044/146] mysql adapter created --- .dockerignore | 1 + .gitignore | 1 + package.json | 1 + src/data/providers/mysql.js | 41 +++++++++++++++++++++++++++++++++++++ 4 files changed, 44 insertions(+) create mode 100644 src/data/providers/mysql.js diff --git a/.dockerignore b/.dockerignore index 18dfe8d78..0e9dec078 100644 --- a/.dockerignore +++ b/.dockerignore @@ -9,6 +9,7 @@ node_modules *.pid /src/data/providers/* !/src/data/providers/sqlite.js +!/src/data/providers/mysql.js !/src/data/providers/database-*.js /src/config/*-config.json .DS_Store diff --git a/.gitignore b/.gitignore index 97d5e39fa..427fc02a9 100644 --- a/.gitignore +++ b/.gitignore @@ -9,6 +9,7 @@ node_modules *.pid /src/data/providers/* !/src/data/providers/sqlite.js +!/src/data/providers/mysql.js !/src/data/providers/database-*.js /src/config/*-config.json .DS_Store diff --git a/package.json b/package.json index c2319a1f8..d982c0529 100644 --- a/package.json +++ b/package.json @@ -80,6 +80,7 @@ "moment-timezone": "0.5.38", "morgan": "1.9.1", "multer": "1.4.5-lts.1", + "mysql": "2.18.1", "nconf": "0.12.0", "nodemailer": "6.7.3", "nodemailer-smtp-transport": "2.4.2", diff --git a/src/data/providers/mysql.js b/src/data/providers/mysql.js new file mode 100644 index 000000000..cede3bae3 --- /dev/null +++ b/src/data/providers/mysql.js @@ -0,0 +1,41 @@ +const Sequelize = require('sequelize') +const mysql = require('mysql') + +const config = require('../../config') +const DatabaseProvider = require('./database-provider') + +class MySqlDatabaseProvider extends DatabaseProvider { + constructor () { + super() + + const mysqlConfig = config.get('Database:Config', {}) + mysqlConfig.dialect = 'mysql' + mysqlConfig.host = process.env.DB_HOST || mysqlConfig.host + mysqlConfig.port = process.env.DB_PORT || mysqlConfig.port + mysqlConfig.user = process.env.DB_USERNAME || mysqlConfig.user + mysqlConfig.password = process.env.DB_PASSWORD || mysqlConfig.password + mysqlConfig.databaseName = process.env.DB_NAME || mysqlConfig.database + if (!mysqlConfig.database.endsWith('.sql')) { + mysqlConfig.database += '.sql' + } + if (config.use_env_variable) { + this.sequelize = new Sequelize(process.env[config.use_env_variable], mysqlConfig) + } else { + this.sequelize = new Sequelize(mysqlConfig) + } + this.connection = mysql.createConnection({ + host: mysqlConfig.host, + port: mysqlConfig.port, + user: mysqlConfig.user, + password: mysqlConfig.password, + database: mysqlConfig.databaseName + }) + this.connection.connect() + } + + async initDB () { + // Implement initialization logic here + } +} + +module.exports = MySqlDatabaseProvider From da26c538d758881eafe89b182ceac0d2903437d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Fri, 1 Mar 2024 17:39:37 +0300 Subject: [PATCH 045/146] configs and mysql adapter updated --- package.json | 2 +- src/config/development.json | 27 ++++++++++++++++++--------- src/config/production.json | 27 ++++++++++++++++++--------- src/data/providers/mysql.js | 17 +++++++++-------- src/data/providers/sqlite.js | 2 +- 5 files changed, 47 insertions(+), 28 deletions(-) diff --git a/package.json b/package.json index d982c0529..e09247a00 100644 --- a/package.json +++ b/package.json @@ -80,7 +80,7 @@ "moment-timezone": "0.5.38", "morgan": "1.9.1", "multer": "1.4.5-lts.1", - "mysql": "2.18.1", + "mysql2": "3.2.2", "nconf": "0.12.0", "nodemailer": "6.7.3", "nodemailer-smtp-transport": "2.4.2", diff --git a/src/config/development.json b/src/config/development.json index 08c72584d..253fdcbdb 100644 --- a/src/config/development.json +++ b/src/config/development.json @@ -41,15 +41,24 @@ "Database": { "Provider": "sqlite", "Config": { - "databaseName": "dev_database.sqlite", - "logging": false, - "transactionType": "IMMEDIATE", - "pool": { - "maxactive": 1, - "max": 1, - "min": 0, - "idle": 20000 + "sqlite": { + "databaseName": "dev_database.sqlite", + "logging": false, + "transactionType": "IMMEDIATE", + "pool": { + "maxactive": 1, + "max": 1, + "min": 0, + "idle": 20000 + } + }, + "mysql": { + "host": "", + "port": "", + "username": "", + "password": "", + "databaseName": "dev_database.sql" } } - } + } } \ No newline at end of file diff --git a/src/config/production.json b/src/config/production.json index 725d8abb2..4e6b967e2 100644 --- a/src/config/production.json +++ b/src/config/production.json @@ -29,15 +29,24 @@ "Database": { "Provider": "sqlite", "Config": { - "databaseName": "prod_database.sqlite", - "logging": false, - "transactionType": "IMMEDIATE", - "pool": { - "maxactive": 1, - "max": 1, - "min": 0, - "idle": 20000 + "sqlite": { + "databaseName": "prod_database.sqlite", + "logging": false, + "transactionType": "IMMEDIATE", + "pool": { + "maxactive": 1, + "max": 1, + "min": 0, + "idle": 20000 + } + }, + "mysql": { + "host": "", + "port": "", + "username": "", + "password": "", + "databaseName": "" } } - } + } } \ No newline at end of file diff --git a/src/data/providers/mysql.js b/src/data/providers/mysql.js index cede3bae3..aa50fe761 100644 --- a/src/data/providers/mysql.js +++ b/src/data/providers/mysql.js @@ -1,5 +1,5 @@ const Sequelize = require('sequelize') -const mysql = require('mysql') +const mysql = require('mysql2') const config = require('../../config') const DatabaseProvider = require('./database-provider') @@ -8,16 +8,17 @@ class MySqlDatabaseProvider extends DatabaseProvider { constructor () { super() - const mysqlConfig = config.get('Database:Config', {}) + const mysqlConfig = config.get('Database:Config:mysql', {}) mysqlConfig.dialect = 'mysql' mysqlConfig.host = process.env.DB_HOST || mysqlConfig.host mysqlConfig.port = process.env.DB_PORT || mysqlConfig.port - mysqlConfig.user = process.env.DB_USERNAME || mysqlConfig.user + mysqlConfig.username = process.env.DB_USERNAME || mysqlConfig.username mysqlConfig.password = process.env.DB_PASSWORD || mysqlConfig.password mysqlConfig.databaseName = process.env.DB_NAME || mysqlConfig.database - if (!mysqlConfig.database.endsWith('.sql')) { - mysqlConfig.database += '.sql' - } + if (!mysqlConfig.databaseName.endsWith('.sql')) { + mysqlConfig.databaseName += '.sql' + } + if (config.use_env_variable) { this.sequelize = new Sequelize(process.env[config.use_env_variable], mysqlConfig) } else { @@ -26,7 +27,7 @@ class MySqlDatabaseProvider extends DatabaseProvider { this.connection = mysql.createConnection({ host: mysqlConfig.host, port: mysqlConfig.port, - user: mysqlConfig.user, + user: mysqlConfig.username, password: mysqlConfig.password, database: mysqlConfig.databaseName }) @@ -34,7 +35,7 @@ class MySqlDatabaseProvider extends DatabaseProvider { } async initDB () { - // Implement initialization logic here + } } diff --git a/src/data/providers/sqlite.js b/src/data/providers/sqlite.js index a34da5ee3..0f65837a2 100644 --- a/src/data/providers/sqlite.js +++ b/src/data/providers/sqlite.js @@ -9,7 +9,7 @@ class SqliteDatabaseProvider extends DatabaseProvider { constructor () { super() - const sqliteConfig = config.get('Database:Config', {}) + const sqliteConfig = config.get('Database:Config:sqlite', {}) sqliteConfig.dialect = 'sqlite' sqliteConfig.databaseName = process.env.DB_NAME || sqliteConfig.databaseName if (!sqliteConfig.databaseName.endsWith('.sqlite')) { From b59131e1ad59a5d852da63d2f972680d6ca22f3a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Fri, 1 Mar 2024 21:10:27 +0300 Subject: [PATCH 046/146] mysql adapter and sequalize model --- src/config/development.json | 2 +- .../20200123045032-fog-and-change-tracking.js | 17 +++++++++++------ src/data/providers/mysql.js | 7 ++----- 3 files changed, 14 insertions(+), 12 deletions(-) diff --git a/src/config/development.json b/src/config/development.json index 253fdcbdb..942e68199 100644 --- a/src/config/development.json +++ b/src/config/development.json @@ -57,7 +57,7 @@ "port": "", "username": "", "password": "", - "databaseName": "dev_database.sql" + "databaseName": "" } } } diff --git a/src/data/migrations/20200123045032-fog-and-change-tracking.js b/src/data/migrations/20200123045032-fog-and-change-tracking.js index 6d2854203..4f7f5451c 100644 --- a/src/data/migrations/20200123045032-fog-and-change-tracking.js +++ b/src/data/migrations/20200123045032-fog-and-change-tracking.js @@ -1,7 +1,7 @@ -'use strict' +'use strict'; module.exports = { - up: (queryInterface, Sequelize) => { + up: async (queryInterface, Sequelize) => { /* Add altering commands here. Return a promise to correctly handle asynchronicity. @@ -9,10 +9,15 @@ module.exports = { Example: return queryInterface.createTable('users', { id: Sequelize.INTEGER }); */ + await queryInterface.removeColumn('Fogs', 'docker_pruning_freq'); + await queryInterface.removeColumn('Fogs', 'available_disk_threshold'); + await queryInterface.removeColumn('Fogs', 'log_level'); + await queryInterface.removeColumn('ChangeTrackings', 'prune'); + return Promise.all([ queryInterface.addColumn('Fogs', 'docker_pruning_freq', { type: Sequelize.INTEGER, - defaultValue: 60, + defaultValue: 1, field: 'docker_pruning_freq' }), queryInterface.addColumn('Fogs', 'available_disk_threshold', { @@ -29,7 +34,7 @@ module.exports = { type: Sequelize.BOOLEAN, field: 'prune' }) - ]) + ]); }, down: (queryInterface, Sequelize) => { @@ -45,6 +50,6 @@ module.exports = { queryInterface.removeColumn('Fogs', 'available_disk_threshold'), queryInterface.removeColumn('Fogs', 'log_level'), queryInterface.removeColumn('ChangeTrackings', 'prune') - ]) + ]); } -} +}; diff --git a/src/data/providers/mysql.js b/src/data/providers/mysql.js index aa50fe761..ce575c6e0 100644 --- a/src/data/providers/mysql.js +++ b/src/data/providers/mysql.js @@ -15,14 +15,11 @@ class MySqlDatabaseProvider extends DatabaseProvider { mysqlConfig.username = process.env.DB_USERNAME || mysqlConfig.username mysqlConfig.password = process.env.DB_PASSWORD || mysqlConfig.password mysqlConfig.databaseName = process.env.DB_NAME || mysqlConfig.database - if (!mysqlConfig.databaseName.endsWith('.sql')) { - mysqlConfig.databaseName += '.sql' - } if (config.use_env_variable) { this.sequelize = new Sequelize(process.env[config.use_env_variable], mysqlConfig) } else { - this.sequelize = new Sequelize(mysqlConfig) + this.sequelize = new Sequelize(mysqlConfig.databaseName, mysqlConfig.username, mysqlConfig.password, mysqlConfig) } this.connection = mysql.createConnection({ host: mysqlConfig.host, @@ -35,7 +32,7 @@ class MySqlDatabaseProvider extends DatabaseProvider { } async initDB () { - + // Implement initialization logic here } } From 53dbf6fa1afdbb855f4f3b99d7215524999f0c56 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Fri, 1 Mar 2024 23:14:09 +0300 Subject: [PATCH 047/146] mysql provider updated --- package.json | 1 - .../20200123045032-fog-and-change-tracking.js | 15 +++++---------- src/data/providers/mysql.js | 14 +++++--------- 3 files changed, 10 insertions(+), 20 deletions(-) diff --git a/package.json b/package.json index e09247a00..c2319a1f8 100644 --- a/package.json +++ b/package.json @@ -80,7 +80,6 @@ "moment-timezone": "0.5.38", "morgan": "1.9.1", "multer": "1.4.5-lts.1", - "mysql2": "3.2.2", "nconf": "0.12.0", "nodemailer": "6.7.3", "nodemailer-smtp-transport": "2.4.2", diff --git a/src/data/migrations/20200123045032-fog-and-change-tracking.js b/src/data/migrations/20200123045032-fog-and-change-tracking.js index 4f7f5451c..ecc9e793f 100644 --- a/src/data/migrations/20200123045032-fog-and-change-tracking.js +++ b/src/data/migrations/20200123045032-fog-and-change-tracking.js @@ -1,7 +1,7 @@ -'use strict'; +'use strict' module.exports = { - up: async (queryInterface, Sequelize) => { + up: (queryInterface, Sequelize) => { /* Add altering commands here. Return a promise to correctly handle asynchronicity. @@ -9,11 +9,6 @@ module.exports = { Example: return queryInterface.createTable('users', { id: Sequelize.INTEGER }); */ - await queryInterface.removeColumn('Fogs', 'docker_pruning_freq'); - await queryInterface.removeColumn('Fogs', 'available_disk_threshold'); - await queryInterface.removeColumn('Fogs', 'log_level'); - await queryInterface.removeColumn('ChangeTrackings', 'prune'); - return Promise.all([ queryInterface.addColumn('Fogs', 'docker_pruning_freq', { type: Sequelize.INTEGER, @@ -34,7 +29,7 @@ module.exports = { type: Sequelize.BOOLEAN, field: 'prune' }) - ]); + ]) }, down: (queryInterface, Sequelize) => { @@ -50,6 +45,6 @@ module.exports = { queryInterface.removeColumn('Fogs', 'available_disk_threshold'), queryInterface.removeColumn('Fogs', 'log_level'), queryInterface.removeColumn('ChangeTrackings', 'prune') - ]); + ]) } -}; +} \ No newline at end of file diff --git a/src/data/providers/mysql.js b/src/data/providers/mysql.js index ce575c6e0..f8b226276 100644 --- a/src/data/providers/mysql.js +++ b/src/data/providers/mysql.js @@ -1,5 +1,4 @@ const Sequelize = require('sequelize') -const mysql = require('mysql2') const config = require('../../config') const DatabaseProvider = require('./database-provider') @@ -21,14 +20,11 @@ class MySqlDatabaseProvider extends DatabaseProvider { } else { this.sequelize = new Sequelize(mysqlConfig.databaseName, mysqlConfig.username, mysqlConfig.password, mysqlConfig) } - this.connection = mysql.createConnection({ - host: mysqlConfig.host, - port: mysqlConfig.port, - user: mysqlConfig.username, - password: mysqlConfig.password, - database: mysqlConfig.databaseName - }) - this.connection.connect() + sequelize.authenticate().then(() => { + console.log('Connection has been established successfully.'); + }).catch((error) => { + console.error('Unable to connect to the database: ', error); + }); } async initDB () { From 4cd802fdbcb446fdbb43ea1b403af52537a81116 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Fri, 1 Mar 2024 23:26:56 +0300 Subject: [PATCH 048/146] mysql provider updated --- .../20200123045032-fog-and-change-tracking.js | 2 +- src/data/providers/mysql.js | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/data/migrations/20200123045032-fog-and-change-tracking.js b/src/data/migrations/20200123045032-fog-and-change-tracking.js index ecc9e793f..a73b2e8e4 100644 --- a/src/data/migrations/20200123045032-fog-and-change-tracking.js +++ b/src/data/migrations/20200123045032-fog-and-change-tracking.js @@ -47,4 +47,4 @@ module.exports = { queryInterface.removeColumn('ChangeTrackings', 'prune') ]) } -} \ No newline at end of file +} diff --git a/src/data/providers/mysql.js b/src/data/providers/mysql.js index f8b226276..0326afc2e 100644 --- a/src/data/providers/mysql.js +++ b/src/data/providers/mysql.js @@ -20,11 +20,11 @@ class MySqlDatabaseProvider extends DatabaseProvider { } else { this.sequelize = new Sequelize(mysqlConfig.databaseName, mysqlConfig.username, mysqlConfig.password, mysqlConfig) } - sequelize.authenticate().then(() => { - console.log('Connection has been established successfully.'); - }).catch((error) => { - console.error('Unable to connect to the database: ', error); - }); + this.sequelize.authenticate().then(() => { + console.log('Connection has been established successfully.') + }).catch((error) => { + console.error('Unable to connect to the database: ', error) + }) } async initDB () { From 1f87e523ce36fdeedb0aef2ce6c000bbda566747 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Fri, 1 Mar 2024 23:36:40 +0300 Subject: [PATCH 049/146] mysql2 added to package.json --- package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/package.json b/package.json index c2319a1f8..e09247a00 100644 --- a/package.json +++ b/package.json @@ -80,6 +80,7 @@ "moment-timezone": "0.5.38", "morgan": "1.9.1", "multer": "1.4.5-lts.1", + "mysql2": "3.2.2", "nconf": "0.12.0", "nodemailer": "6.7.3", "nodemailer-smtp-transport": "2.4.2", From 102768f251ee310b489cb4811990e7ff5d356f88 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Sat, 2 Mar 2024 01:52:38 +0300 Subject: [PATCH 050/146] provider updated --- src/data/providers/mysql.js | 45 ++++++++++++++++++------------------- 1 file changed, 22 insertions(+), 23 deletions(-) diff --git a/src/data/providers/mysql.js b/src/data/providers/mysql.js index 0326afc2e..30715a4fe 100644 --- a/src/data/providers/mysql.js +++ b/src/data/providers/mysql.js @@ -1,35 +1,34 @@ -const Sequelize = require('sequelize') +const Sequelize = require('sequelize'); -const config = require('../../config') -const DatabaseProvider = require('./database-provider') +const config = require('../../config'); +const DatabaseProvider = require('./database-provider'); class MySqlDatabaseProvider extends DatabaseProvider { constructor () { - super() + super(); - const mysqlConfig = config.get('Database:Config:mysql', {}) - mysqlConfig.dialect = 'mysql' - mysqlConfig.host = process.env.DB_HOST || mysqlConfig.host - mysqlConfig.port = process.env.DB_PORT || mysqlConfig.port - mysqlConfig.username = process.env.DB_USERNAME || mysqlConfig.username - mysqlConfig.password = process.env.DB_PASSWORD || mysqlConfig.password - mysqlConfig.databaseName = process.env.DB_NAME || mysqlConfig.database + const mysqlConfig = config.get('Database:Config:mysql', {}); + mysqlConfig.dialect = 'mysql'; + mysqlConfig.host = process.env.DB_HOST || mysqlConfig.host; + mysqlConfig.port = process.env.DB_PORT || mysqlConfig.port; + mysqlConfig.username = process.env.DB_USERNAME || mysqlConfig.username; + mysqlConfig.password = process.env.DB_PASSWORD || mysqlConfig.password; + mysqlConfig.databaseName = process.env.DB_NAME || mysqlConfig.database; - if (config.use_env_variable) { - this.sequelize = new Sequelize(process.env[config.use_env_variable], mysqlConfig) - } else { - this.sequelize = new Sequelize(mysqlConfig.databaseName, mysqlConfig.username, mysqlConfig.password, mysqlConfig) - } - this.sequelize.authenticate().then(() => { - console.log('Connection has been established successfully.') - }).catch((error) => { - console.error('Unable to connect to the database: ', error) - }) + this.sequelize = new Sequelize(mysqlConfig.databaseName, mysqlConfig.username, mysqlConfig.password, mysqlConfig); + + this.initDB(); // Call initDB method to start the database initialization } async initDB () { - // Implement initialization logic here + try { + await this.sequelize.authenticate(); + console.log('Connection has been established successfully.'); + // Implement further initialization logic here + } catch (error) { + console.error('Unable to connect to the database: ', error); + } } } -module.exports = MySqlDatabaseProvider +module.exports = MySqlDatabaseProvider; From 66cea4a31c8e5b462f3f436cf35d53643e28c09b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Thu, 7 Mar 2024 23:29:10 +0300 Subject: [PATCH 051/146] migration notes and controlplane model --- docs/.swagger-codegen/VERSION | 2 +- docs/swagger.json | 19 + docs/swagger.yaml | 15 + logrotate.conf | 2 +- package-lock.json | 17550 ++++++++++++++++ src/config/development.json | 14 +- src/config/production.json | 16 +- src/controllers/control-plane-controller.js | 26 + src/data/managers/control-plane.js | 36 + .../20200123045032-fog-and-change-tracking.js | 2 +- .../20200213033350-create-config.js | 4 +- .../20200506004924-add-route-name.js | 4 +- .../20201001230303-add-tags-fogs.js | 4 +- .../20201028005645-create-edge-resources.js | 2 +- ...1204003312-create_application_templates.js | 2 +- ...211022010318-add-unique-constraint-msvc.js | 2 +- ...11022013326-add-unique-constraint-route.js | 2 +- src/data/models/application.js | 8 +- src/data/models/applicationTemplate.js | 8 +- src/data/models/catalogitem.js | 8 +- src/data/models/controlPlane.js | 66 + src/data/models/edgeResource.js | 9 +- src/data/models/fog.js | 9 +- src/data/models/fogaccesstoken.js | 8 +- src/data/models/kubeletaccesstoken.js | 8 +- src/data/models/microservice.js | 8 +- src/data/models/microserviceport.js | 8 +- src/data/models/registry.js | 9 +- src/data/models/user.js | 9 + src/data/providers/mysql.js | 35 +- src/data/providers/sqlite.js | 2 +- .../20240304180631-insert-control-plane.js | 19 + src/routes/controlPlane.js | 45 + src/schemas/controlPlane.js | 26 + src/services/control-plane.js | 1 + 35 files changed, 17907 insertions(+), 81 deletions(-) create mode 100644 package-lock.json create mode 100644 src/controllers/control-plane-controller.js create mode 100644 src/data/managers/control-plane.js create mode 100644 src/data/models/controlPlane.js create mode 100644 src/data/seeders/20240304180631-insert-control-plane.js create mode 100644 src/routes/controlPlane.js create mode 100644 src/schemas/controlPlane.js create mode 100644 src/services/control-plane.js diff --git a/docs/.swagger-codegen/VERSION b/docs/.swagger-codegen/VERSION index 5ccbb5bb7..2560437e4 100644 --- a/docs/.swagger-codegen/VERSION +++ b/docs/.swagger-codegen/VERSION @@ -1 +1 @@ -2.4.29 \ No newline at end of file +2.4.31 \ No newline at end of file diff --git a/docs/swagger.json b/docs/swagger.json index 11df5eaa8..29afc4b7d 100644 --- a/docs/swagger.json +++ b/docs/swagger.json @@ -7,6 +7,9 @@ "tags" : [ { "name" : "Controller", "description" : "Manage your controller" + }, { + "name" : "Control Plane", + "description" : "Manage your Control Plane" }, { "name" : "ioFog", "description" : "Manage your agents" @@ -45,6 +48,22 @@ "description" : "Manage your users" } ], "paths" : { + "/controlplane/profile" : { + "get" : { + "tags" : [ "ControlPlane" ], + "summary" : "Returns Control Plane Profile", + "operationId" : "getControlPlaneProfile", + "parameters" : [ ], + "responses" : { + "200" : { + "description" : "Control Plane Profile" + }, + "500" : { + "description" : "Internal Server Error" + } + } + } + }, "/status" : { "get" : { "tags" : [ "Controller" ], diff --git a/docs/swagger.yaml b/docs/swagger.yaml index c840cdcaa..cd13d6b03 100755 --- a/docs/swagger.yaml +++ b/docs/swagger.yaml @@ -3,6 +3,21 @@ info: version: 1.0.0 title: Datasance PoT-ioFog Controller paths: + /controlplane/profile: + get: + tags: + - ControlPlane + summary: Returns Control Plane Profile + operationId: getControlPlaneProfile + responses: + "200": + description: Control Plane Profile + content: + application/json: + schema: + $ref: "#/components/schemas/ControlPlaneProfileResponse" + "500": + description: Internal Server Error /status: get: tags: diff --git a/logrotate.conf b/logrotate.conf index b94c050dc..219c0f9ba 100644 --- a/logrotate.conf +++ b/logrotate.conf @@ -5,6 +5,6 @@ notifempty missingok postrotate - kill -HUP `cat /usr/local/lib/node_modules/iofogcontroller/src/iofog-controller.pid` + kill -HUP `cat /usr/local/lib/node_modules/@datasance/iofogcontroller/src/iofog-controller.pid` endscript } diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 000000000..8948b350b --- /dev/null +++ b/package-lock.json @@ -0,0 +1,17550 @@ +{ + "name": "@datasance/iofogcontroller", + "version": "3.0.6", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "@datasance/iofogcontroller", + "version": "3.0.6", + "hasInstallScript": true, + "license": "EPL-2.0", + "dependencies": { + "@datasance/ecn-viewer": "0.0.1", + "axios": "1.0.0-alpha.1", + "body-parser": "^1.20.1", + "child_process": "1.0.2", + "command-line-args": "5.0.2", + "command-line-usage": "5.0.5", + "concurrent-queue": "7.0.2", + "cookie-parser": "1.4.3", + "cors": "2.8.5", + "daemonize2": "0.4.2", + "ejs": "3.1.7", + "express": "4.17.3", + "formidable": "1.2.1", + "ftp": "0.3.10", + "helmet": "3.21.2", + "is-elevated": "3.0.0", + "js-yaml": "3.14.1", + "jsonschema": "1.2.5", + "minimatch": "3.1.2", + "moment": "2.29.4", + "moment-timezone": "0.5.38", + "morgan": "1.9.1", + "multer": "1.4.5-lts.1", + "mysql2": "3.2.2", + "nconf": "0.12.0", + "nodemailer": "6.7.3", + "nodemailer-smtp-transport": "2.4.2", + "os": "0.1.1", + "path": "0.12.7", + "pino": "6.6.1", + "pino-std-serializers": "2.5.0", + "portscanner": "2.2.0", + "qs": "6.10.3", + "request": "2.88.0", + "request-promise": "4.2.4", + "retry-as-promised": "3.1.0", + "semantic-release": "19.0.3", + "semver": "5.6.0", + "sequelize": "6.29.0", + "sqlite3": "^5.1.5", + "string-format": "2.0.0", + "swagger-ui-express": "^4.6.2", + "umzug": "2.2.0", + "underscore": "1.13.1", + "xss-clean": "0.1.1" + }, + "bin": { + "iofog-controller": "src/main.js" + }, + "devDependencies": { + "acorn": "7.1.1", + "bdd-lazy-var": "2.5.2", + "chai": "4.2.0", + "chai-as-promised": "7.1.1", + "chai-http": "4.2.1", + "eslint": "5.14.1", + "eslint-config-google": "0.12.0", + "mocha": "9.2.2", + "mocha-junit-reporter": "2.0.0", + "newman": "5.3.2", + "newman-reporter-junitfull": "1.1.1", + "nyc": "15.0.0", + "sequelize-cli": "5.5.0", + "sinon": "7.5.0", + "sinon-chai": "3.3.0", + "snyk": "^1.1064.0", + "standard": "12.0.1" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", + "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", + "dependencies": { + "@babel/highlight": "^7.23.4", + "chalk": "^2.4.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz", + "integrity": "sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.0.tgz", + "integrity": "sha512-fQfkg0Gjkza3nf0c7/w6Xf34BW4YvzNfACRLmmb7XRLa6XHdR+K9AlJlxneFfWYf6uhOzuzZVTjF/8KfndZANw==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.6", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helpers": "^7.24.0", + "@babel/parser": "^7.24.0", + "@babel/template": "^7.24.0", + "@babel/traverse": "^7.24.0", + "@babel/types": "^7.24.0", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/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/@babel/core/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@babel/core/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz", + "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.23.6", + "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz", + "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.23.5", + "@babel/helper-validator-option": "^7.23.5", + "browserslist": "^4.22.2", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets/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/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-compilation-targets/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/@babel/helper-environment-visitor": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", + "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", + "dev": true, + "dependencies": { + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", + "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz", + "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-simple-access": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/helper-validator-identifier": "^7.22.20" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-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.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", + "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz", + "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.0.tgz", + "integrity": "sha512-ulDZdc0Aj5uLc5nETsa7EPx2L7rM0YJM8r7ck7U73AXi7qOV44IHHRAYZHY6iU1rr3C5N4NtTmMRUJP6kwCWeA==", + "dev": true, + "dependencies": { + "@babel/template": "^7.24.0", + "@babel/traverse": "^7.24.0", + "@babel/types": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", + "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", + "dependencies": { + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.0.tgz", + "integrity": "sha512-QuP/FxEAzMSjXygs8v4N9dvdXzEHN4W1oF3PxuWAtPo08UdM17u89RDMgjLn/mlc56iM0HlLmVkO/wgR+rDgHg==", + "dev": true, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/template": { + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.0.tgz", + "integrity": "sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.23.5", + "@babel/parser": "^7.24.0", + "@babel/types": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.0.tgz", + "integrity": "sha512-HfuJlI8qq3dEDmNU5ChzzpZRWq+oxCZQyMzIMEqLho+AQnhMnKQUzH6ydo3RBl/YjPCuk68Y6s0Gx0AeyULiWw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.6", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.24.0", + "@babel/types": "^7.24.0", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@babel/traverse/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/@babel/types": { + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.0.tgz", + "integrity": "sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==", + "dev": true, + "dependencies": { + "@babel/helper-string-parser": "^7.23.4", + "@babel/helper-validator-identifier": "^7.22.20", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@colors/colors": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", + "optional": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/@datasance/ecn-viewer": { + "version": "0.0.1", + "resolved": "https://npm.pkg.github.com/download/@datasance/ecn-viewer/0.0.1/e4d3b4942f496b6bcafa982865b9bb14e324eb06", + "integrity": "sha512-rrSn+AWwRDCyME5zLH444VtRNcm7umTKoDOKa/3xFKyFPi6QntZVLr7iI207NcmoU4ilNXPpdvOmLGk7ZSUCWA==", + "license": "EPL-2.0" + }, + "node_modules/@gar/promisify": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", + "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", + "optional": true + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "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/load-nyc-config/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/@istanbuljs/load-nyc-config/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/@istanbuljs/load-nyc-config/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/@istanbuljs/load-nyc-config/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/@istanbuljs/load-nyc-config/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/@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/@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "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==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "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==", + "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==", + "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==", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@npmcli/fs": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz", + "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==", + "optional": true, + "dependencies": { + "@gar/promisify": "^1.0.1", + "semver": "^7.3.5" + } + }, + "node_modules/@npmcli/fs/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==", + "optional": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@npmcli/fs/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "optional": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@npmcli/move-file": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", + "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", + "deprecated": "This functionality has been moved to @npmcli/fs", + "optional": true, + "dependencies": { + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@npmcli/move-file/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "optional": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@npmcli/move-file/node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "optional": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "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/@octokit/core": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/@octokit/core/-/core-4.2.4.tgz", + "integrity": "sha512-rYKilwgzQ7/imScn3M9/pFfUf4I1AZEH3KhyJmtPdE2zfaXAn2mFfUy4FbKewzc2We5y/LlKLj36fWJLKC2SIQ==", + "dependencies": { + "@octokit/auth-token": "^3.0.0", + "@octokit/graphql": "^5.0.0", + "@octokit/request": "^6.0.0", + "@octokit/request-error": "^3.0.0", + "@octokit/types": "^9.0.0", + "before-after-hook": "^2.2.0", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "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/graphql": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-5.0.6.tgz", + "integrity": "sha512-Fxyxdy/JH0MnIB5h+UQ3yCoh1FG4kWXfFKkpWqjZHw/p+Kc8Y44Hu/kCgNBT6nU1shNumEchmW/sUO1JuQnPcw==", + "dependencies": { + "@octokit/request": "^6.0.0", + "@octokit/types": "^9.0.0", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@octokit/openapi-types": { + "version": "18.1.1", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-18.1.1.tgz", + "integrity": "sha512-VRaeH8nCDtF5aXWnjPuEMIYf1itK/s3JYyJcWFJT8X9pSNnBtriDf7wlEWsGuhPLl4QIH4xM8fqTXDwJ3Mu6sw==" + }, + "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", + "integrity": "sha512-qhrmtQeHU/IivxucOV1bbI/xZyC/iOBhclokv7Sut5vnejAIAEXVcGQeRpQlU39E0WwK9lNvJHphHri/DB6lbQ==", + "dependencies": { + "@octokit/tsconfig": "^1.0.2", + "@octokit/types": "^9.2.3" + }, + "engines": { + "node": ">= 14" + }, + "peerDependencies": { + "@octokit/core": ">=4" + } + }, + "node_modules/@octokit/plugin-retry": { + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@octokit/plugin-retry/-/plugin-retry-4.1.6.tgz", + "integrity": "sha512-obkYzIgEC75r8+9Pnfiiqy3y/x1bc3QLE5B7qvv9wi9Kj0R5tGQFC6QMBg1154WQ9lAVypuQDGyp3hNpp15gQQ==", + "dependencies": { + "@octokit/types": "^9.0.0", + "bottleneck": "^2.15.3" + }, + "engines": { + "node": ">= 14" + }, + "peerDependencies": { + "@octokit/core": ">=3" + } + }, + "node_modules/@octokit/plugin-throttling": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/@octokit/plugin-throttling/-/plugin-throttling-5.2.3.tgz", + "integrity": "sha512-C9CFg9mrf6cugneKiaI841iG8DOv6P5XXkjmiNNut+swePxQ7RWEdAZRp5rJoE1hjsIqiYcKa/ZkOQ+ujPI39Q==", + "dependencies": { + "@octokit/types": "^9.0.0", + "bottleneck": "^2.15.3" + }, + "engines": { + "node": ">= 14" + }, + "peerDependencies": { + "@octokit/core": "^4.0.0" + } + }, + "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/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/request-error/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/@octokit/tsconfig": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@octokit/tsconfig/-/tsconfig-1.0.2.tgz", + "integrity": "sha512-I0vDR0rdtP8p2lGMzvsJzbhdOWy405HcGovrspJ8RRibHnyRgggUSNO5AIox5LmqiwmatHKYsvj6VGFHkqS7lA==" + }, + "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/@one-ini/wasm": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@one-ini/wasm/-/wasm-0.1.1.tgz", + "integrity": "sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw==", + "dev": true + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@pnpm/config.env-replace": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@pnpm/config.env-replace/-/config.env-replace-1.1.0.tgz", + "integrity": "sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==", + "engines": { + "node": ">=12.22.0" + } + }, + "node_modules/@pnpm/network.ca-file": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@pnpm/network.ca-file/-/network.ca-file-1.0.2.tgz", + "integrity": "sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==", + "dependencies": { + "graceful-fs": "4.2.10" + }, + "engines": { + "node": ">=12.22.0" + } + }, + "node_modules/@pnpm/network.ca-file/node_modules/graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" + }, + "node_modules/@pnpm/npm-conf": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@pnpm/npm-conf/-/npm-conf-2.2.2.tgz", + "integrity": "sha512-UA91GwWPhFExt3IizW6bOeY/pQ0BkuNwKjk9iQW9KqxluGCrg4VenZ0/L+2Y0+ZOtme72EVvg6v0zo3AMQRCeA==", + "dependencies": { + "@pnpm/config.env-replace": "^1.1.0", + "@pnpm/network.ca-file": "^1.0.1", + "config-chain": "^1.1.11" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@postman/form-data": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@postman/form-data/-/form-data-3.1.1.tgz", + "integrity": "sha512-vjh8Q2a8S6UCm/KKs31XFJqEEgmbjBmpPNVV2eVav6905wyFAwaUOBGA1NPBI4ERH9MMZc6w0umFgM6WbEPMdg==", + "dev": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@postman/tunnel-agent": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/@postman/tunnel-agent/-/tunnel-agent-0.6.3.tgz", + "integrity": "sha512-k57fzmAZ2PJGxfOA4SGR05ejorHbVAa/84Hxh/2nAztjNXc4ZjOm9NUIk6/Z6LCrBvJZqjRZbN8e/nROVUPVdg==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@semantic-release/commit-analyzer": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/@semantic-release/commit-analyzer/-/commit-analyzer-9.0.2.tgz", + "integrity": "sha512-E+dr6L+xIHZkX4zNMe6Rnwg4YQrWNXK+rNsvwOPpdFppvZO1olE2fIgWhv89TkQErygevbjsZFSIxp+u6w2e5g==", + "dependencies": { + "conventional-changelog-angular": "^5.0.0", + "conventional-commits-filter": "^2.0.0", + "conventional-commits-parser": "^3.2.3", + "debug": "^4.0.0", + "import-from": "^4.0.0", + "lodash": "^4.17.4", + "micromatch": "^4.0.2" + }, + "engines": { + "node": ">=14.17" + }, + "peerDependencies": { + "semantic-release": ">=18.0.0-beta.1" + } + }, + "node_modules/@semantic-release/commit-analyzer/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/@semantic-release/commit-analyzer/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/@semantic-release/error": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-3.0.0.tgz", + "integrity": "sha512-5hiM4Un+tpl4cKw3lV4UgzJj+SmfNIDCLLw0TepzQxz9ZGV5ixnqkzIVF+3tp0ZHgcMKE+VNGHJjEeyFG2dcSw==", + "engines": { + "node": ">=14.17" + } + }, + "node_modules/@semantic-release/github": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@semantic-release/github/-/github-8.1.0.tgz", + "integrity": "sha512-erR9E5rpdsz0dW1I7785JtndQuMWN/iDcemcptf67tBNOmBUN0b2YNOgcjYUnBpgRpZ5ozfBHrK7Bz+2ets/Dg==", + "dependencies": { + "@octokit/core": "^4.2.1", + "@octokit/plugin-paginate-rest": "^6.1.2", + "@octokit/plugin-retry": "^4.1.3", + "@octokit/plugin-throttling": "^5.2.3", + "@semantic-release/error": "^3.0.0", + "aggregate-error": "^3.0.0", + "debug": "^4.0.0", + "dir-glob": "^3.0.0", + "fs-extra": "^11.0.0", + "globby": "^11.0.0", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.0", + "issue-parser": "^6.0.0", + "lodash": "^4.17.4", + "mime": "^3.0.0", + "p-filter": "^2.0.0", + "url-join": "^4.0.0" + }, + "engines": { + "node": ">=14.17" + }, + "peerDependencies": { + "semantic-release": ">=18.0.0-beta.1" + } + }, + "node_modules/@semantic-release/github/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/@semantic-release/github/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/@semantic-release/npm": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/@semantic-release/npm/-/npm-9.0.2.tgz", + "integrity": "sha512-zgsynF6McdzxPnFet+a4iO9HpAlARXOM5adz7VGVCvj0ne8wtL2ZOQoDV2wZPDmdEotDIbVeJjafhelZjs9j6g==", + "dependencies": { + "@semantic-release/error": "^3.0.0", + "aggregate-error": "^3.0.0", + "execa": "^5.0.0", + "fs-extra": "^11.0.0", + "lodash": "^4.17.15", + "nerf-dart": "^1.0.0", + "normalize-url": "^6.0.0", + "npm": "^8.3.0", + "rc": "^1.2.8", + "read-pkg": "^5.0.0", + "registry-auth-token": "^5.0.0", + "semver": "^7.1.2", + "tempy": "^1.0.0" + }, + "engines": { + "node": ">=16 || ^14.17" + }, + "peerDependencies": { + "semantic-release": ">=19.0.0" + } + }, + "node_modules/@semantic-release/npm/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==", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@semantic-release/npm/node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "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/@semantic-release/npm/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==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/npm/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==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/npm/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/@semantic-release/npm/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==", + "engines": { + "node": ">=6" + } + }, + "node_modules/@semantic-release/npm/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==", + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@semantic-release/npm/node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/npm/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==", + "engines": { + "node": ">=8" + } + }, + "node_modules/@semantic-release/npm/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@semantic-release/npm/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==", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@semantic-release/npm/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==", + "engines": { + "node": ">=8" + } + }, + "node_modules/@semantic-release/npm/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@semantic-release/release-notes-generator": { + "version": "10.0.3", + "resolved": "https://registry.npmjs.org/@semantic-release/release-notes-generator/-/release-notes-generator-10.0.3.tgz", + "integrity": "sha512-k4x4VhIKneOWoBGHkx0qZogNjCldLPRiAjnIpMnlUh6PtaWXp/T+C9U7/TaNDDtgDa5HMbHl4WlREdxHio6/3w==", + "dependencies": { + "conventional-changelog-angular": "^5.0.0", + "conventional-changelog-writer": "^5.0.0", + "conventional-commits-filter": "^2.0.0", + "conventional-commits-parser": "^3.2.3", + "debug": "^4.0.0", + "get-stream": "^6.0.0", + "import-from": "^4.0.0", + "into-stream": "^6.0.0", + "lodash": "^4.17.4", + "read-pkg-up": "^7.0.0" + }, + "engines": { + "node": ">=14.17" + }, + "peerDependencies": { + "semantic-release": ">=18.0.0-beta.1" + } + }, + "node_modules/@semantic-release/release-notes-generator/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/@semantic-release/release-notes-generator/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==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/release-notes-generator/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/@sentry-internal/tracing": { + "version": "7.105.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.105.0.tgz", + "integrity": "sha512-b+AFYB7Bc9vmyxl2jbmuT4esX5G0oPfpz35A0sxFzmJIhvMg1YMDNio2c81BtKN+VSPORCnKMLhfk3kyKKvWMQ==", + "dev": true, + "dependencies": { + "@sentry/core": "7.105.0", + "@sentry/types": "7.105.0", + "@sentry/utils": "7.105.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@sentry/core": { + "version": "7.105.0", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.105.0.tgz", + "integrity": "sha512-5xsaTG6jZincTeJUmZomlv20mVRZUEF1U/g89lmrSOybyk2+opEnB1JeBn4ODwnvmSik8r2QLr6/RiYlaxRJCg==", + "dev": true, + "dependencies": { + "@sentry/types": "7.105.0", + "@sentry/utils": "7.105.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@sentry/node": { + "version": "7.105.0", + "resolved": "https://registry.npmjs.org/@sentry/node/-/node-7.105.0.tgz", + "integrity": "sha512-b0QwZ7vT4hcJi6LmNRh3dcaYpLtXnkYXkL0rfhMb8hN8sUx8zuOWFMI7j0cfAloVThUeJVwGyv9dERfzGS2r2w==", + "dev": true, + "dependencies": { + "@sentry-internal/tracing": "7.105.0", + "@sentry/core": "7.105.0", + "@sentry/types": "7.105.0", + "@sentry/utils": "7.105.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@sentry/types": { + "version": "7.105.0", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.105.0.tgz", + "integrity": "sha512-80o0KMVM+X2Ym9hoQxvJetkJJwkpCg7o6tHHFXI+Rp7fawc2iCMTa0IRQMUiSkFvntQLYIdDoNNuKdzz2PbQGA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@sentry/utils": { + "version": "7.105.0", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.105.0.tgz", + "integrity": "sha512-YVAV0c2KLM8+VZCicQ/E/P2+J9Vs0hGhrXwV7w6ZEAtvxrg4oF270toL1WRhvcaf8JO4J1v4V+LuU6Txs4uEeQ==", + "dev": true, + "dependencies": { + "@sentry/types": "7.105.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@sinonjs/commons": { + "version": "1.8.6", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.6.tgz", + "integrity": "sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==", + "dev": true, + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/@sinonjs/formatio": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@sinonjs/formatio/-/formatio-3.2.2.tgz", + "integrity": "sha512-B8SEsgd8gArBLMD6zpRw3juQ2FVSsmdd7qlevyDqzS9WTCtvF55/gAL+h6gue8ZvPYcdiPdvueM/qm//9XzyTQ==", + "dev": true, + "dependencies": { + "@sinonjs/commons": "^1", + "@sinonjs/samsam": "^3.1.0" + } + }, + "node_modules/@sinonjs/samsam": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-3.3.3.tgz", + "integrity": "sha512-bKCMKZvWIjYD0BLGnNrxVuw4dkWCYsLqFOUWw8VgKF/+5Y+mE7LfHWPIYoDXowH+3a9LsWDMo0uAP8YDosPvHQ==", + "dev": true, + "dependencies": { + "@sinonjs/commons": "^1.3.0", + "array-from": "^2.1.1", + "lodash": "^4.17.15" + } + }, + "node_modules/@sinonjs/text-encoding": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.2.tgz", + "integrity": "sha512-sXXKG+uL9IrKqViTtao2Ws6dy0znu9sOaP1di/jKGW1M6VssO8vlpXCQcpZ+jisQ1tTFAC5Jo/EOzFbggBagFQ==", + "dev": true + }, + "node_modules/@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "optional": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@types/chai": { + "version": "4.3.12", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.12.tgz", + "integrity": "sha512-zNKDHG/1yxm8Il6uCCVsm+dRdEsJlFoDu73X17y09bId6UwoYww+vFBsAcRzl8knM1sab3Dp1VRikFQwDOtDDw==", + "dev": true + }, + "node_modules/@types/cookiejar": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@types/cookiejar/-/cookiejar-2.1.5.tgz", + "integrity": "sha512-he+DHOWReW0nghN24E1WUqM0efK4kI9oTqDm6XmK8ZPe2djZ90BSNdGnIyCLzCPw7/pogPlGbzI2wHGGmi4O/Q==", + "dev": true + }, + "node_modules/@types/debug": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", + "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", + "dependencies": { + "@types/ms": "*" + } + }, + "node_modules/@types/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==" + }, + "node_modules/@types/ms": { + "version": "0.7.34", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz", + "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==" + }, + "node_modules/@types/node": { + "version": "20.11.24", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.24.tgz", + "integrity": "sha512-Kza43ewS3xoLgCEpQrsT+xRo/EJej1y0kVYGiLFE1NEODXGzTfwiC6tXTLMQskn1X4/Rjlh0MQUvx9W+L9long==", + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@types/normalize-package-data": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", + "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==" + }, + "node_modules/@types/parse-json": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz", + "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==" + }, + "node_modules/@types/superagent": { + "version": "3.8.7", + "resolved": "https://registry.npmjs.org/@types/superagent/-/superagent-3.8.7.tgz", + "integrity": "sha512-9KhCkyXv268A2nZ1Wvu7rQWM+BmdYUVkycFeNnYrUL5Zwu7o8wPQ3wBfW59dDP+wuoxw0ww8YKgTNv8j/cgscA==", + "dev": true, + "dependencies": { + "@types/cookiejar": "*", + "@types/node": "*" + } + }, + "node_modules/@types/validator": { + "version": "13.11.9", + "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.11.9.tgz", + "integrity": "sha512-FCTsikRozryfayPuiI46QzH3fnrOoctTjvOYZkho9BTFLCOZ2rgZJHMOVgCOfttjPJcgOx52EpkY0CMfy87MIw==" + }, + "node_modules/@ungap/promise-all-settled": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz", + "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==", + "dev": true + }, + "node_modules/abbrev": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-2.0.0.tgz", + "integrity": "sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "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": "7.1.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.1.tgz", + "integrity": "sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg==", + "dev": true, + "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/afterward": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/afterward/-/afterward-2.0.0.tgz", + "integrity": "sha512-7n9Vkbb8cmMRKKSfe5qgyqX4Yjdaty0QP/+GXYawZK8Vcq+8E5FCmbWbwfCoiBnDoAY/edKLNg2TwgGcwdA+3Q==", + "dependencies": { + "define-error": "~1.0.0" + } + }, + "node_modules/agent-base": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz", + "integrity": "sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==", + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/agent-base/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/agent-base/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/agentkeepalive": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.5.0.tgz", + "integrity": "sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==", + "optional": true, + "dependencies": { + "humanize-ms": "^1.2.1" + }, + "engines": { + "node": ">= 8.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==", + "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/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-escapes": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "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/ansicolors": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/ansicolors/-/ansicolors-0.3.2.tgz", + "integrity": "sha512-QXu7BPrP29VllRxH8GwB7x5iX5qWKAAMLqKQGWTeLWVlNHNOpVMJ91dsxQAIWXpjuW5wqvxu3Jd/nRjrJ+0pqg==" + }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==" + }, + "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/append-field": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz", + "integrity": "sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw==" + }, + "node_modules/append-transform": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-2.0.0.tgz", + "integrity": "sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg==", + "dev": true, + "dependencies": { + "default-require-extensions": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/aproba": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", + "optional": true + }, + "node_modules/archy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", + "integrity": "sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==", + "dev": true + }, + "node_modules/are-we-there-yet": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz", + "integrity": "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==", + "optional": true, + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/are-we-there-yet/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==", + "optional": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/are-we-there-yet/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==", + "optional": true, + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "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/argv-formatter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/argv-formatter/-/argv-formatter-1.0.0.tgz", + "integrity": "sha512-F2+Hkm9xFaRg+GkaNnbwXNDV5O6pnCFEmqyhvfC/Ic5LbgOWjJh3L+mN/s91rxVL3znE7DYVpW0GJFT+4YBgWw==" + }, + "node_modules/argv-tools": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/argv-tools/-/argv-tools-0.1.2.tgz", + "integrity": "sha512-wxqoymY0BEu9NblZVQiOTOAiJUjPhaa/kbNMjC2h6bnrmUSgnxKgWJo3lzXvi3bHJRwXyqK/dHzMlZVRT89Cxg==", + "dependencies": { + "array-back": "^2.0.0", + "find-replace": "^2.0.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/array-back": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-2.0.0.tgz", + "integrity": "sha512-eJv4pLLufP3g5kcZry0j6WXpIbzYw9GUB4mVJZno9wfwiBxbizTnHCw3VJb07cBihbFX48Y7oSrW9y+gt4glyw==", + "dependencies": { + "typical": "^2.6.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", + "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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-from": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/array-from/-/array-from-2.1.1.tgz", + "integrity": "sha512-GQTc6Uupx1FCavi5mPzBvVT7nEOeWMmUA9P95wpfpW1XwMSKs+KaymD5C2Up7KAUKg/mYwbsUYzdZWcoajlNZg==", + "dev": true + }, + "node_modules/array-ify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", + "integrity": "sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==" + }, + "node_modules/array-includes": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.7.tgz", + "integrity": "sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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==", + "engines": { + "node": ">=8" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", + "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.2.1", + "get-intrinsic": "^1.2.3", + "is-array-buffer": "^3.0.4", + "is-shared-array-buffer": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/asn1": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", + "dependencies": { + "safer-buffer": "~2.1.0" + } + }, + "node_modules/assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/astral-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/async": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", + "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==" + }, + "node_modules/asynckit": { + "version": "0.4.0", + "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.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dev": true, + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", + "engines": { + "node": "*" + } + }, + "node_modules/aws4": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz", + "integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==" + }, + "node_modules/axios": { + "version": "1.0.0-alpha.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.0.0-alpha.1.tgz", + "integrity": "sha512-p+meG161943WT+K7sJYquHR46xxi/z0tk7vnSmEf/LrfEAyiP+0uTMMYk1OEo1IRF18oGRhnFxN1y8fLcXaTMw==", + "dependencies": { + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha512-XqYMR2dfdGMW+hd0IUZ2PwK+fGeFkOxZJ0wY+JaQAHzt1Zx8LcvpiZD2NiGkEG8qx0CfkAOr5xt76d1e8vG90g==", + "dev": true, + "dependencies": { + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" + } + }, + "node_modules/babel-code-frame/node_modules/ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/babel-code-frame/node_modules/chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "dev": true, + "dependencies": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/babel-code-frame/node_modules/js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha512-RjTcuD4xjtthQkaWH7dFlH85L+QaVtSoOyGdZ3g6HFhS9dFNDfLyqgm2NFe2X6cQpeFmt0452FJjFG5UameExg==", + "dev": true + }, + "node_modules/babel-code-frame/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/babel-code-frame/node_modules/supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==", + "dependencies": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.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/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "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/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==", + "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==" + }, + "node_modules/bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", + "dependencies": { + "tweetnacl": "^0.14.3" + } + }, + "node_modules/bdd-lazy-var": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/bdd-lazy-var/-/bdd-lazy-var-2.5.2.tgz", + "integrity": "sha512-EBFk8uOTALu8crLChd+KfhHwv+frhxqE235jcy6NY1G1weB0Gyr5H7u0zvUnr1yduzX6M1I/ERaVGdY1cd+6ZQ==", + "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/bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dependencies": { + "file-uri-to-path": "1.0.0" + } + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/bl/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/bl/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/bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" + }, + "node_modules/body-parser": { + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", + "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.5", + "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.2", + "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/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/boolean": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/boolean/-/boolean-3.2.0.tgz", + "integrity": "sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==", + "dev": true + }, + "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", + "integrity": "sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==" + }, + "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==", + "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==", + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/brotli": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/brotli/-/brotli-1.3.3.tgz", + "integrity": "sha512-oTKjJdShmDuGW94SyyaoQvAjf30dZaHnjJ8uAF+u2/vGJkJbJPJAT1gDiOJP5v1Zb6f9KEyW/1HpuaWIXtGHPg==", + "dev": true, + "dependencies": { + "base64-js": "^1.1.2" + } + }, + "node_modules/browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "dev": true + }, + "node_modules/browserslist": { + "version": "4.23.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", + "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", + "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.30001587", + "electron-to-chromium": "^1.4.668", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.0.13" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "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.1.13" + } + }, + "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==" + }, + "node_modules/busboy": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", + "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", + "dependencies": { + "streamsearch": "^1.1.0" + }, + "engines": { + "node": ">=10.16.0" + } + }, + "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/cacache": { + "version": "15.3.0", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", + "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", + "optional": true, + "dependencies": { + "@npmcli/fs": "^1.0.0", + "@npmcli/move-file": "^1.0.1", + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "glob": "^7.1.4", + "infer-owner": "^1.0.4", + "lru-cache": "^6.0.0", + "minipass": "^3.1.1", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.2", + "mkdirp": "^1.0.3", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^8.0.1", + "tar": "^6.0.2", + "unique-filename": "^1.1.1" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/cacache/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==", + "optional": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/cacache/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "optional": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/cacache/node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "optional": true, + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cacache/node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "optional": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/caching-transform": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-4.0.0.tgz", + "integrity": "sha512-kpqOvwXnjjN44D89K5ccQC+RUrsy7jB/XLlRrx0D7/2HNcTPqzsb6XgYoErwko6QsV184CA2YgS1fxDiiDZMWA==", + "dev": true, + "dependencies": { + "hasha": "^5.0.0", + "make-dir": "^3.0.0", + "package-hash": "^4.0.0", + "write-file-atomic": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/caller-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", + "integrity": "sha512-UJiE1otjXPF5/x+T3zTnSFiTOEmJoGTD9HmBoxnCUwho61a2eSNn/VwtwuIBDAo2SEOv1AJ7ARI5gCmohFLu/g==", + "dev": true, + "dependencies": { + "callsites": "^0.2.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/caller-path/node_modules/callsites": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", + "integrity": "sha512-Zv4Dns9IbXXmPkgRRUjAaJQgfN4xX5p6+RQFhWUqscdvvK2xK/ZL8b3IXIJsj+4sD+f24NwnWy2BY8AJ82JB0A==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "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==", + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase-keys": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", + "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", + "dependencies": { + "camelcase": "^5.3.1", + "map-obj": "^4.0.0", + "quick-lru": "^4.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/camelize": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/camelize/-/camelize-1.0.0.tgz", + "integrity": "sha512-W2lPwkBkMZwFlPCXhIlYgxu+7gC/NUlCtdK652DAJ1JdgV0sTrvuPFshNPrFa1TY2JOkLhgdeEBplB4ezEa+xg==" + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001593", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001593.tgz", + "integrity": "sha512-UWM1zlo3cZfkpBysd7AS+z+v007q9G1+fLTUU42rQnY6t2axoogPW/xol6T7juU5EUoOhML4WgBIdG+9yYqAjQ==", + "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/capture-stack-trace": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.2.tgz", + "integrity": "sha512-X/WM2UQs6VMHUtjUDnZTRI+i1crWteJySFzr9UpGoQa4WQffXVTTXuekjl7TjZRlcF2XfjgITT0HxZ9RnxeT0w==", + "engines": { + "node": ">=0.10.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cardinal": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/cardinal/-/cardinal-2.1.1.tgz", + "integrity": "sha512-JSr5eOgoEymtYHBjNWyjrMqet9Am2miJhlfKNdqLp6zoeAh0KN5dRAcxlecj5mAJrmQomgiOBj35xHLrFjqBpw==", + "dependencies": { + "ansicolors": "~0.3.2", + "redeyed": "~2.1.0" + }, + "bin": { + "cdl": "bin/cdl.js" + } + }, + "node_modules/caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==" + }, + "node_modules/chai": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.2.0.tgz", + "integrity": "sha512-XQU3bhBukrOsQCuwZndwGcCVQHyZi53fQ6Ys1Fym7E4olpIqqZZhhoFJoaKVvV17lWQoXYwgWN2nF5crA8J2jw==", + "dev": true, + "dependencies": { + "assertion-error": "^1.1.0", + "check-error": "^1.0.2", + "deep-eql": "^3.0.1", + "get-func-name": "^2.0.0", + "pathval": "^1.1.0", + "type-detect": "^4.0.5" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chai-as-promised": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/chai-as-promised/-/chai-as-promised-7.1.1.tgz", + "integrity": "sha512-azL6xMoi+uxu6z4rhWQ1jbdUhOMhis2PvscD/xjLqNMkv3BPPp2JyyuTHOrf9BOosGpNQ11v6BKv/g57RXbiaA==", + "dev": true, + "dependencies": { + "check-error": "^1.0.2" + }, + "peerDependencies": { + "chai": ">= 2.1.2 < 5" + } + }, + "node_modules/chai-http": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/chai-http/-/chai-http-4.2.1.tgz", + "integrity": "sha512-S2Ezy5uSVuOYleeXppfUKtTU/xbHCZyKkwjheNJ/76SGFTUPDpDkkpVdPNgC3sAO1Ap5J5LJ+/rXdLG8EGhCDA==", + "dev": true, + "dependencies": { + "@types/chai": "4", + "@types/superagent": "^3.8.3", + "cookiejar": "^2.1.1", + "is-ip": "^2.0.0", + "methods": "^1.1.2", + "qs": "^6.5.1", + "superagent": "^3.7.0" + }, + "engines": { + "node": ">=4" + } + }, + "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/chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true + }, + "node_modules/charenc": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", + "integrity": "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/charset": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/charset/-/charset-1.0.1.tgz", + "integrity": "sha512-6dVyOOYjpfFcL1Y4qChrAoQLRHvj2ziyhcm0QJlhOcAhykL/k1kTUPbeo+87MNRTRdk2OIIsIXbuF3x2wi5EXg==", + "dev": true, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/check-error": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", + "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", + "dev": true, + "dependencies": { + "get-func-name": "^2.0.2" + }, + "engines": { + "node": "*" + } + }, + "node_modules/child_process": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/child_process/-/child_process-1.0.2.tgz", + "integrity": "sha512-Wmza/JzL0SiWz7kl6MhIKT5ceIlnFPJX+lwUGj7Clhy5MMldsSoJR0+uvRzOS5Kv45Mq7t1PoE8TsOA9bzvb6g==" + }, + "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/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "engines": { + "node": ">=10" + } + }, + "node_modules/circular-json": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", + "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", + "deprecated": "CircularJSON is in maintenance only, flatted is its successor.", + "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/cli-color": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/cli-color/-/cli-color-1.4.0.tgz", + "integrity": "sha512-xu6RvQqqrWEo6MPR1eixqGPywhYBHRs653F9jfXB2Hx4jdM/3WxiNE1vppRmxtMIfl16SFYTpYlrnqH/HsK/2w==", + "dev": true, + "dependencies": { + "ansi-regex": "^2.1.1", + "d": "1", + "es5-ext": "^0.10.46", + "es6-iterator": "^2.0.3", + "memoizee": "^0.4.14", + "timers-ext": "^0.1.5" + } + }, + "node_modules/cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==", + "dev": true, + "dependencies": { + "restore-cursor": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cli-progress": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/cli-progress/-/cli-progress-3.10.0.tgz", + "integrity": "sha512-kLORQrhYCAtUPLZxqsAt2YJGOvRdt34+O6jl5cQGb7iF3dM55FQZlTR+rQyIK9JUcO9bBMwZsTlND+3dmFU2Cw==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cli-progress/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/cli-progress/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/cli-progress/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/cli-progress/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/cli-table3": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.1.tgz", + "integrity": "sha512-w0q/enDHhPLq44ovMGdQeeDLvwxwavsJX7oQGYt/LrBlYsyaxyDnp6z3QzFut/6kLLKnlcUVJLrpB7KBfgG/RA==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0" + }, + "engines": { + "node": "10.* || >= 12.*" + }, + "optionalDependencies": { + "colors": "1.4.0" + } + }, + "node_modules/cli-table3/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/cli-table3/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/cli-table3/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/cli-table3/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/cli-width": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", + "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==", + "dev": true + }, + "node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/cliui/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==", + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/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==", + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/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==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/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==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "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/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/color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "optional": true, + "bin": { + "color-support": "bin.js" + } + }, + "node_modules/colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", + "dev": true, + "engines": { + "node": ">=0.1.90" + } + }, + "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==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/command-line-args": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-5.0.2.tgz", + "integrity": "sha512-/qPcbL8zpqg53x4rAaqMFlRV4opN3pbla7I7k9x8kyOBMQoGT6WltjN6sXZuxOXw6DgdK7Ad+ijYS5gjcr7vlA==", + "dependencies": { + "argv-tools": "^0.1.1", + "array-back": "^2.0.0", + "find-replace": "^2.0.1", + "lodash.camelcase": "^4.3.0", + "typical": "^2.6.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/command-line-usage": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/command-line-usage/-/command-line-usage-5.0.5.tgz", + "integrity": "sha512-d8NrGylA5oCXSbGoKz05FkehDAzSmIm4K03S5VDh4d5lZAtTWfc3D1RuETtuQCn8129nYfJfDdF7P/lwcz1BlA==", + "dependencies": { + "array-back": "^2.0.0", + "chalk": "^2.4.1", + "table-layout": "^0.4.3", + "typical": "^2.6.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", + "dev": true + }, + "node_modules/compare-func": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz", + "integrity": "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==", + "dependencies": { + "array-ify": "^1.0.0", + "dot-prop": "^5.1.0" + } + }, + "node_modules/component-emitter": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.1.tgz", + "integrity": "sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, + "node_modules/concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "engines": [ + "node >= 0.8" + ], + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "node_modules/concat-stream/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, + "node_modules/concat-stream/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/concat-stream/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==" + }, + "node_modules/concat-stream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/concurrent-queue": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/concurrent-queue/-/concurrent-queue-7.0.2.tgz", + "integrity": "sha512-icXDqc0JBdcQ3ubXiXcqVhuFeRrec39zVD2X5z7FKwwj0pImnfLWtAhGyX4CcBDD+YoqLesClOeRss+pZnm6/Q==", + "dependencies": { + "afterward": "~2.0.0", + "define-error": "~1.0.0", + "eventuate": "~4.0.0", + "object-assign": "~4.0.1", + "on-error": "~2.1.0", + "once": "~1.3.2", + "promise-polyfill": "~2.1.0" + } + }, + "node_modules/config-chain": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", + "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", + "dependencies": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" + } + }, + "node_modules/config-chain/node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" + }, + "node_modules/console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", + "optional": true + }, + "node_modules/contains-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", + "integrity": "sha512-OKZnPGeMQy2RPaUIBPFFd71iNf4791H12MCRuVQDnzGRwCYNYmTDy5pdafo2SLAcEMKzTOQnLWG4QdcjeJUMEg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "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-security-policy-builder": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/content-security-policy-builder/-/content-security-policy-builder-2.1.0.tgz", + "integrity": "sha512-/MtLWhJVvJNkA9dVLAp6fg9LxD2gfI6R2Fi1hPmfjYXSahJJzcfvoeDOxSyp4NvxMuwWv3WMssE9o31DoULHrQ==", + "engines": { + "node": ">=4.0.0" + } + }, + "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/conventional-changelog-angular": { + "version": "5.0.13", + "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.13.tgz", + "integrity": "sha512-i/gipMxs7s8L/QeuavPF2hLnJgH6pEZAttySB6aiQLWcX3puWDL3ACVmvBhJGxnAy52Qc15ua26BufY6KpmrVA==", + "dependencies": { + "compare-func": "^2.0.0", + "q": "^1.5.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-writer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-5.0.1.tgz", + "integrity": "sha512-5WsuKUfxW7suLblAbFnxAcrvf6r+0b7GvNaWUwUIk0bXMnENP/PEieGKVUQrjPqwPT4o3EPAASBXiY6iHooLOQ==", + "dependencies": { + "conventional-commits-filter": "^2.0.7", + "dateformat": "^3.0.0", + "handlebars": "^4.7.7", + "json-stringify-safe": "^5.0.1", + "lodash": "^4.17.15", + "meow": "^8.0.0", + "semver": "^6.0.0", + "split": "^1.0.0", + "through2": "^4.0.0" + }, + "bin": { + "conventional-changelog-writer": "cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-writer/node_modules/semver": { + "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" + } + }, + "node_modules/conventional-commits-filter": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-2.0.7.tgz", + "integrity": "sha512-ASS9SamOP4TbCClsRHxIHXRfcGCnIoQqkvAzCSbZzTFLfcTqJVugB0agRgsEELsqaeWgsXv513eS116wnlSSPA==", + "dependencies": { + "lodash.ismatch": "^4.4.0", + "modify-values": "^1.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-commits-parser": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-3.2.4.tgz", + "integrity": "sha512-nK7sAtfi+QXbxHCYfhpZsfRtaitZLIA6889kFIouLvz6repszQDgxBu7wf2WbU+Dco7sAnNCJYERCwt54WPC2Q==", + "dependencies": { + "is-text-path": "^1.0.1", + "JSONStream": "^1.0.4", + "lodash": "^4.17.15", + "meow": "^8.0.0", + "split2": "^3.0.0", + "through2": "^4.0.0" + }, + "bin": { + "conventional-commits-parser": "cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "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/cookie": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", + "integrity": "sha512-+IJOX0OqlHCszo2mBUq+SrEbCj6w7Kpffqx60zYbPTFaO4+yYgRjHwcZNpWvaTylDHaV7PPmBHzSecZiMhtPgw==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-parser": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.4.3.tgz", + "integrity": "sha512-EZyO2G+zVFsMjU8jDtxs2iLS1DmryYNjC0s4/IHtsS6pWPUJSr0kt0UPOctRZosebPHYekb7bNcIBt4YW0S9bg==", + "dependencies": { + "cookie": "0.3.1", + "cookie-signature": "1.0.6" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "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/core-js": { + "version": "2.6.12", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", + "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==", + "deprecated": "core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.", + "hasInstallScript": true + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + }, + "node_modules/cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/cosmiconfig": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", + "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "node_modules/crypt": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", + "integrity": "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/crypto-random-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", + "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/csv-parse": { + "version": "4.16.3", + "resolved": "https://registry.npmjs.org/csv-parse/-/csv-parse-4.16.3.tgz", + "integrity": "sha512-cO1I/zmz4w2dcKHVvpCr7JVRu8/FymG5OEpmvsZYlccYolPBLoVGKUHgNoc4ZGkFeFlWGEDmMyBM+TTqRdW/wg==", + "dev": true + }, + "node_modules/d": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.2.tgz", + "integrity": "sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==", + "dev": true, + "dependencies": { + "es5-ext": "^0.10.64", + "type": "^2.7.2" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/daemonize2": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/daemonize2/-/daemonize2-0.4.2.tgz", + "integrity": "sha512-dzB3qdxvcJ2AWyESI8xv90qZ4wZt4P+lvQUT1sVKcrbEKSvBk/8zkDlZvMyaWmoKe7DXLGu00z59b7K9gkzbqQ==", + "engines": { + "node": ">0.8.x" + } + }, + "node_modules/dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", + "dependencies": { + "assert-plus": "^1.0.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/dasherize": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dasherize/-/dasherize-2.0.0.tgz", + "integrity": "sha512-APql/TZ6FdLEpf2z7/X2a2zyqK8juYtqaSVqxw9mYoQ64CXkfU15AeLh8pUszT8+fnYjgm6t0aIYpWKJbnLkuA==" + }, + "node_modules/dateformat": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", + "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==", + "engines": { + "node": "*" + } + }, + "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/debug-log": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/debug-log/-/debug-log-1.0.1.tgz", + "integrity": "sha512-gV/pe1YIaKNgLYnd1g9VNW80tcb7oV5qvNUxG7NM8rbDpnl6RGunzlAtlGSb0wEs3nesu2vHNiX9TSsZ+Y+RjA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decamelize-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz", + "integrity": "sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==", + "dependencies": { + "decamelize": "^1.1.0", + "map-obj": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/decamelize-keys/node_modules/map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "dependencies": { + "mimic-response": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/deep-eql": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", + "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", + "dev": true, + "dependencies": { + "type-detect": "^4.0.0" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "engines": { + "node": ">=4.0.0" + } + }, + "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/default-require-extensions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-3.0.1.tgz", + "integrity": "sha512-eXTJmRbm2TIt9MgWTsOH1wEuhew6XGZcMeGKCtLedIg/NCsg1iBePXkceTdK4Fii7pzmN9tGsZhKzZ4h7O/fxw==", + "dev": true, + "dependencies": { + "strip-bom": "^4.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-error": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-error/-/define-error-1.0.0.tgz", + "integrity": "sha512-HLdUb9mNENZ/tjnZGlITfOnx7wSM7a6e+WEDyhKSrsN/g5dJUS6kepG6qJApRLAdjRofQ2W8R3yrtI6GeyGGVg==", + "dependencies": { + "capture-stack-trace": "~1.0.0" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/deglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/deglob/-/deglob-2.1.1.tgz", + "integrity": "sha512-2kjwuGGonL7gWE1XU4Fv79+vVzpoQCl0V+boMwWtOQJV2AGDabCwez++nB1Nli/8BabAfZQ/UuHPlp6AymKdWw==", + "dev": true, + "dependencies": { + "find-root": "^1.0.0", + "glob": "^7.0.5", + "ignore": "^3.0.9", + "pkg-config": "^1.1.0", + "run-parallel": "^1.1.2", + "uniq": "^1.0.1" + } + }, + "node_modules/deglob/node_modules/ignore": { + "version": "3.3.10", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", + "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==", + "dev": true + }, + "node_modules/del": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/del/-/del-6.1.1.tgz", + "integrity": "sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==", + "dependencies": { + "globby": "^11.0.1", + "graceful-fs": "^4.2.4", + "is-glob": "^4.0.1", + "is-path-cwd": "^2.2.0", + "is-path-inside": "^3.0.2", + "p-map": "^4.0.0", + "rimraf": "^3.0.2", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/del/node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/del/node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", + "optional": true + }, + "node_modules/denque": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/denque/-/denque-2.1.0.tgz", + "integrity": "sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==", + "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-libc": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.2.tgz", + "integrity": "sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "dev": true + }, + "node_modules/diff": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", + "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, + "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==", + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dns-prefetch-control": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/dns-prefetch-control/-/dns-prefetch-control-0.2.0.tgz", + "integrity": "sha512-hvSnros73+qyZXhHFjx2CMLwoj3Fe7eR9EJsFsqmcI1bB2OBWL/+0YzaEaKssCHnj/6crawNnUyw74Gm2EKe+Q==", + "engines": { + "node": ">=4.0.0" + } + }, + "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/dont-sniff-mimetype": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/dont-sniff-mimetype/-/dont-sniff-mimetype-1.1.0.tgz", + "integrity": "sha512-ZjI4zqTaxveH2/tTlzS1wFp+7ncxNZaIEWYg3lzZRHkKf5zPT/MnEG6WL0BhHMJUabkh8GeU5NL5j+rEUCb7Ug==", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/dot-prop": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "dependencies": { + "is-obj": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dottie": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/dottie/-/dottie-2.0.6.tgz", + "integrity": "sha512-iGCHkfUc5kFekGiqhe8B/mdaurD+lakO9txNnTvKtA6PISrw86LgqHvRzWYPyoE2Ph5aMIrCw9/uko6XHTKCwA==" + }, + "node_modules/duplexer2": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==", + "dependencies": { + "readable-stream": "^2.0.2" + } + }, + "node_modules/duplexer2/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, + "node_modules/duplexer2/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/duplexer2/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==" + }, + "node_modules/duplexer2/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, + "node_modules/ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", + "dependencies": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "node_modules/ecc-jsbn/node_modules/jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==" + }, + "node_modules/editorconfig": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-1.0.4.tgz", + "integrity": "sha512-L9Qe08KWTlqYMVvMcTIvMAdl1cDUubzRNYL+WfA4bLDMHe4nemKkpmYzkznE1FwLKu0EEmy6obgQKzMJrg4x9Q==", + "dev": true, + "dependencies": { + "@one-ini/wasm": "0.1.1", + "commander": "^10.0.0", + "minimatch": "9.0.1", + "semver": "^7.5.3" + }, + "bin": { + "editorconfig": "bin/editorconfig" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/editorconfig/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==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/editorconfig/node_modules/commander": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", + "dev": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/editorconfig/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/editorconfig/node_modules/minimatch": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.1.tgz", + "integrity": "sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/editorconfig/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "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/ejs": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.7.tgz", + "integrity": "sha512-BIar7R6abbUxDA3bfXrO4DSgwo8I+fB5/1zgujl3HLLjwd6+9iOnrT+t3grn2qbk9vOgBubXOFwX2m9axoFaGw==", + "dependencies": { + "jake": "^10.8.5" + }, + "bin": { + "ejs": "bin/cli.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.4.691", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.691.tgz", + "integrity": "sha512-vJ+/LmKja/St8Ofq4JGMFVZuwG7ECU6akjNSn2/g6nv8xbIBOWGlEs+WA8/3XaWkU0Nlyu0iFGgOxC4mpgFjgA==", + "dev": true + }, + "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==" + }, + "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/encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "optional": true, + "dependencies": { + "iconv-lite": "^0.6.2" + } + }, + "node_modules/encoding/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "optional": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "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/end-of-stream/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/env-ci": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/env-ci/-/env-ci-5.5.0.tgz", + "integrity": "sha512-o0JdWIbOLP+WJKIUt36hz1ImQQFuN92nhsfTkHHap+J8CiI8WgGpH/a9jEGHh4/TU5BUUGjlnKXNoDb57+ne+A==", + "dependencies": { + "execa": "^5.0.0", + "fromentries": "^1.3.2", + "java-properties": "^1.0.0" + }, + "engines": { + "node": ">=10.17" + } + }, + "node_modules/env-ci/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==", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/env-ci/node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "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/env-ci/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==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/env-ci/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==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/env-ci/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==", + "engines": { + "node": ">=6" + } + }, + "node_modules/env-ci/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==", + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/env-ci/node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/env-ci/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==", + "engines": { + "node": ">=8" + } + }, + "node_modules/env-ci/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==", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/env-ci/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==", + "engines": { + "node": ">=8" + } + }, + "node_modules/env-ci/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "optional": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/err-code": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", + "optional": true + }, + "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/es-abstract": { + "version": "1.22.5", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.5.tgz", + "integrity": "sha512-oW69R+4q2wG+Hc3KZePPZxOiisRIqfKBVo/HLx94QcJeWGU/8sZhCvc829rd1kS366vlJbzBfXf9yWwf0+Ko7w==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "arraybuffer.prototype.slice": "^1.0.3", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "es-set-tostringtag": "^2.0.3", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.4", + "get-symbol-description": "^1.0.2", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", + "has-symbols": "^1.0.3", + "hasown": "^2.0.1", + "internal-slot": "^1.0.7", + "is-array-buffer": "^3.0.4", + "is-callable": "^1.2.7", + "is-negative-zero": "^2.0.3", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.3", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.13", + "is-weakref": "^1.0.2", + "object-inspect": "^1.13.1", + "object-keys": "^1.1.1", + "object.assign": "^4.1.5", + "regexp.prototype.flags": "^1.5.2", + "safe-array-concat": "^1.1.0", + "safe-regex-test": "^1.0.3", + "string.prototype.trim": "^1.2.8", + "string.prototype.trimend": "^1.0.7", + "string.prototype.trimstart": "^1.0.7", + "typed-array-buffer": "^1.0.2", + "typed-array-byte-length": "^1.0.1", + "typed-array-byte-offset": "^1.0.2", + "typed-array-length": "^1.0.5", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", + "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.4", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es5-ext": { + "version": "0.10.64", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.64.tgz", + "integrity": "sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.3", + "esniff": "^2.0.1", + "next-tick": "^1.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/es6-error": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", + "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", + "dev": true + }, + "node_modules/es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", + "dev": true, + "dependencies": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "node_modules/es6-symbol": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.4.tgz", + "integrity": "sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==", + "dev": true, + "dependencies": { + "d": "^1.0.2", + "ext": "^1.7.0" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/es6-weak-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", + "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", + "dev": true, + "dependencies": { + "d": "1", + "es5-ext": "^0.10.46", + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.1" + } + }, + "node_modules/escalade": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", + "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": "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/eslint": { + "version": "5.14.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.14.1.tgz", + "integrity": "sha512-CyUMbmsjxedx8B0mr79mNOqetvkbij/zrXnFeK2zc3pGRn3/tibjiNAv/3UxFEyfMDjh+ZqTrJrEGBFiGfD5Og==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "ajv": "^6.9.1", + "chalk": "^2.1.0", + "cross-spawn": "^6.0.5", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "eslint-scope": "^4.0.0", + "eslint-utils": "^1.3.1", + "eslint-visitor-keys": "^1.0.0", + "espree": "^5.0.1", + "esquery": "^1.0.1", + "esutils": "^2.0.2", + "file-entry-cache": "^5.0.1", + "functional-red-black-tree": "^1.0.1", + "glob": "^7.1.2", + "globals": "^11.7.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "inquirer": "^6.2.2", + "js-yaml": "^3.12.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.3.0", + "lodash": "^4.17.11", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "optionator": "^0.8.2", + "path-is-inside": "^1.0.2", + "progress": "^2.0.0", + "regexpp": "^2.0.1", + "semver": "^5.5.1", + "strip-ansi": "^4.0.0", + "strip-json-comments": "^2.0.1", + "table": "^5.2.3", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^6.14.0 || ^8.10.0 || >=9.10.0" + } + }, + "node_modules/eslint-config-google": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/eslint-config-google/-/eslint-config-google-0.12.0.tgz", + "integrity": "sha512-SHDM3nIRCJBACjf8c/H6FvCwRmKbphESNl3gJFBNbw4KYDLCONB3ABYLXDGF+iaVP9XSTND/Q5/PuGoFkp4xbg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + }, + "peerDependencies": { + "eslint": ">=5.4.0" + } + }, + "node_modules/eslint-config-standard": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-12.0.0.tgz", + "integrity": "sha512-COUz8FnXhqFitYj4DTqHzidjIL/t4mumGZto5c7DrBpvWoie+Sn3P4sLEzUGeYhRElWuFEf8K1S1EfvD1vixCQ==", + "dev": true, + "peerDependencies": { + "eslint": ">=5.0.0", + "eslint-plugin-import": ">=2.13.0", + "eslint-plugin-node": ">=7.0.0", + "eslint-plugin-promise": ">=4.0.0", + "eslint-plugin-standard": ">=4.0.0" + } + }, + "node_modules/eslint-config-standard-jsx": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/eslint-config-standard-jsx/-/eslint-config-standard-jsx-6.0.2.tgz", + "integrity": "sha512-D+YWAoXw+2GIdbMBRAzWwr1ZtvnSf4n4yL0gKGg7ShUOGXkSOLerI17K4F6LdQMJPNMoWYqepzQD/fKY+tXNSg==", + "dev": true, + "peerDependencies": { + "eslint": ">=5.0.0", + "eslint-plugin-react": ">=7.11.1" + } + }, + "node_modules/eslint-import-resolver-node": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", + "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", + "dev": true, + "dependencies": { + "debug": "^3.2.7", + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" + } + }, + "node_modules/eslint-import-resolver-node/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/eslint-import-resolver-node/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==", + "dev": true + }, + "node_modules/eslint-module-utils": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.1.tgz", + "integrity": "sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==", + "dev": true, + "dependencies": { + "debug": "^3.2.7" + }, + "engines": { + "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } + } + }, + "node_modules/eslint-module-utils/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/eslint-module-utils/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==", + "dev": true + }, + "node_modules/eslint-plugin-es": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-1.4.1.tgz", + "integrity": "sha512-5fa/gR2yR3NxQf+UXkeLeP8FBBl6tSgdrAz1+cF84v1FMM4twGwQoqTnn+QxFLcPOrF4pdKEJKDB/q9GoyJrCA==", + "dev": true, + "dependencies": { + "eslint-utils": "^1.4.2", + "regexpp": "^2.0.1" + }, + "engines": { + "node": ">=6.5.0" + }, + "peerDependencies": { + "eslint": ">=4.19.1" + } + }, + "node_modules/eslint-plugin-import": { + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.14.0.tgz", + "integrity": "sha512-FpuRtniD/AY6sXByma2Wr0TXvXJ4nA/2/04VPlfpmUDPOpOY264x+ILiwnrk/k4RINgDAyFZByxqPUbSQ5YE7g==", + "dev": true, + "dependencies": { + "contains-path": "^0.1.0", + "debug": "^2.6.8", + "doctrine": "1.5.0", + "eslint-import-resolver-node": "^0.3.1", + "eslint-module-utils": "^2.2.0", + "has": "^1.0.1", + "lodash": "^4.17.4", + "minimatch": "^3.0.3", + "read-pkg-up": "^2.0.0", + "resolve": "^1.6.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "2.x - 5.x" + } + }, + "node_modules/eslint-plugin-import/node_modules/doctrine": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", + "integrity": "sha512-lsGyRuYr4/PIB0txi+Fy2xOMI2dGaTguCaotzFGkVZuKR5usKfcRWIFKNM3QNrU7hh/+w2bwTW+ZeXPK5l8uVg==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2", + "isarray": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-import/node_modules/find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", + "dev": true, + "dependencies": { + "locate-path": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-plugin-import/node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "node_modules/eslint-plugin-import/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "node_modules/eslint-plugin-import/node_modules/load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha512-3p6ZOGNbiX4CdvEd1VcE6yi78UrGNpjHO33noGwHCnT/o2fyllJDepsm8+mFFv/DvtwFHht5HIHSyOy5a+ChVQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-plugin-import/node_modules/locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", + "dev": true, + "dependencies": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-plugin-import/node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/eslint-plugin-import/node_modules/p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "dependencies": { + "p-try": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-plugin-import/node_modules/p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", + "dev": true, + "dependencies": { + "p-limit": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-plugin-import/node_modules/p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-plugin-import/node_modules/parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==", + "dev": true, + "dependencies": { + "error-ex": "^1.2.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-import/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==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-plugin-import/node_modules/path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha512-dUnb5dXUf+kzhC/W/F4e5/SkluXIFf5VUHolW1Eg1irn1hGWjPGdsRcvYJ1nD6lhk8Ir7VM0bHJKsYTx8Jx9OQ==", + "dev": true, + "dependencies": { + "pify": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-plugin-import/node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-import/node_modules/read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha512-eFIBOPW7FGjzBuk3hdXEuNSiTZS/xEMlH49HxMyzb0hyPfu4EhVjT2DH32K1hSSmVq4sebAWnZuuY5auISUTGA==", + "dev": true, + "dependencies": { + "load-json-file": "^2.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-plugin-import/node_modules/read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha512-1orxQfbWGUiTn9XsPlChs6rLie/AV9jwZTGmu2NZw/CUDJQchXJFYE0Fq5j7+n558T1JhDWLdhyd1Zj+wLY//w==", + "dev": true, + "dependencies": { + "find-up": "^2.0.0", + "read-pkg": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-plugin-import/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==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-plugin-node": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-7.0.1.tgz", + "integrity": "sha512-lfVw3TEqThwq0j2Ba/Ckn2ABdwmL5dkOgAux1rvOk6CO7A6yGyPI2+zIxN6FyNkp1X1X/BSvKOceD6mBWSj4Yw==", + "dev": true, + "dependencies": { + "eslint-plugin-es": "^1.3.1", + "eslint-utils": "^1.3.1", + "ignore": "^4.0.2", + "minimatch": "^3.0.4", + "resolve": "^1.8.1", + "semver": "^5.5.0" + }, + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "eslint": ">=4.19.1" + } + }, + "node_modules/eslint-plugin-promise": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-4.0.1.tgz", + "integrity": "sha512-Si16O0+Hqz1gDHsys6RtFRrW7cCTB6P7p3OJmKp3Y3dxpQE2qwOA7d3xnV+0mBmrPoi0RBnxlCKvqu70te6wjg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/eslint-plugin-react": { + "version": "7.11.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.11.1.tgz", + "integrity": "sha512-cVVyMadRyW7qsIUh3FHp3u6QHNhOgVrLQYdQEB1bPWBsgbNCHdFAeNMquBMCcZJu59eNthX053L70l7gRt4SCw==", + "dev": true, + "dependencies": { + "array-includes": "^3.0.3", + "doctrine": "^2.1.0", + "has": "^1.0.3", + "jsx-ast-utils": "^2.0.1", + "prop-types": "^15.6.2" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0" + } + }, + "node_modules/eslint-plugin-react/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-standard": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-standard/-/eslint-plugin-standard-4.0.2.tgz", + "integrity": "sha512-nKptN8l7jksXkwFk++PhJB3cCDTcXOEyhISIN86Ue2feJ1LFyY3PrY3/xT2keXlJSY5bpmbiTG0f885/YKAvTA==", + "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" + } + ], + "peerDependencies": { + "eslint": ">=5.0.0" + } + }, + "node_modules/eslint-scope": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", + "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", + "dev": true, + "dependencies": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/eslint-utils": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", + "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^1.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/eslint/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/esniff": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/esniff/-/esniff-2.0.1.tgz", + "integrity": "sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==", + "dev": true, + "dependencies": { + "d": "^1.0.1", + "es5-ext": "^0.10.62", + "event-emitter": "^0.3.5", + "type": "^2.7.2" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/espree": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-5.0.1.tgz", + "integrity": "sha512-qWAZcWh4XE/RwzLJejfcofscgMc9CamR6Tn1+XRXNzrvUSSbiAjGOI/fggztjIi7y9VLPqnICMIPiGyr8JaZ0A==", + "dev": true, + "dependencies": { + "acorn": "^6.0.7", + "acorn-jsx": "^5.0.0", + "eslint-visitor-keys": "^1.0.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/espree/node_modules/acorn": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", + "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "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/esquery/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/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/esrecurse/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/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/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/event-emitter": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", + "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==", + "dev": true, + "dependencies": { + "d": "1", + "es5-ext": "~0.10.14" + } + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true + }, + "node_modules/eventuate": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eventuate/-/eventuate-4.0.0.tgz", + "integrity": "sha512-SysKo5/rgqCaXlO4H4DE62JXCFtDpdm+boWOzaeaYph3Xejy04Cc4/E2HDPnOES0MFb643WgKRlx09W2iVAIBw==", + "dependencies": { + "define-error": "~1.0.0", + "object-assign": "~3.0.0", + "shallow-copy": "0.0.1" + } + }, + "node_modules/eventuate/node_modules/object-assign": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz", + "integrity": "sha512-jHP15vXVGeVh1HuaA2wY6lxk+whK/x4KBG88VXeRma7CCun7iGD5qPc4eYykQ9sdQvg8jkwFKsSxHln2ybW3xQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dependencies": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/expand-template": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", + "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/expect-ct": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/expect-ct/-/expect-ct-0.2.0.tgz", + "integrity": "sha512-6SK3MG/Bbhm8MsgyJAylg+ucIOU71/FzyFalcfu5nY19dH8y/z0tBJU0wrNBXD4B27EoQtqPF/9wqH0iYAd04g==", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/express": { + "version": "4.17.3", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.3.tgz", + "integrity": "sha512-yuSQpz5I+Ch7gFrPCk4/c+dIBKlQUxtgwqzph132bsT6qhuzss6I8cLJQz7B3rFblzd6wtcI0ZbGltH/C4LjUg==", + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.19.2", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.4.2", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.1.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.9.7", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.17.2", + "serve-static": "1.14.2", + "setprototypeof": "1.2.0", + "statuses": "~1.5.0", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/express/node_modules/body-parser": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-SAAwOxgoCKMGs9uUAUFHygfLAyaniaoun6I8mFY9pRAJL9+Kec34aU+oIjDhTycub1jozEfEwx1W1IuOYxVSFw==", + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.8.1", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.9.7", + "raw-body": "2.4.3", + "type-is": "~1.6.18" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/express/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/express/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/express/node_modules/http-errors": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", + "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/express/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==", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/express/node_modules/qs": { + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-IhMFgUmuNpyRfxA90umL7ByLlgRXu6tIfKPpF5TmcfRLlLCckfP/g3IQmju6jjpu+Hh8rA+2p6A27ZSPOOHdKw==", + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/express/node_modules/raw-body": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.3.tgz", + "integrity": "sha512-UlTNLIcu0uzb4D2f4WltY6cVjLi+/jEN4lgEUj3E04tpMDpUlkBo/eSn6zou9hum2VMNpCCUone0O0WeJim07g==", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "1.8.1", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/ext": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", + "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", + "dev": true, + "dependencies": { + "type": "^2.7.2" + } + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "node_modules/external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dev": true, + "dependencies": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", + "engines": [ + "node >=0.6.0" + ] + }, + "node_modules/faker": { + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/faker/-/faker-5.5.3.tgz", + "integrity": "sha512-wLTv2a28wjUyWkbnX7u/ABZBkUkIF2fCd73V6P2oFqEGEktDfzWx4UxrSqtPRw0xPRAcjeAOIiJWqZm3pP4u3g==", + "dev": true + }, + "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==" + }, + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "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==" + }, + "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": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-2.1.0.tgz", + "integrity": "sha512-0LkHpTLyadJavq9sRzzyqIoMZemWli77K2/MGOkafrR64B9ItrvZ9aT+jluvNDsv0YEHjSNhlMBtbokuoqii4A==", + "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/fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/feature-policy": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/feature-policy/-/feature-policy-0.3.0.tgz", + "integrity": "sha512-ZtijOTFN7TzCujt1fnNhfWPFPSHeZkesff9AXZj+UEjYBynWNUIYpC87Ve4wHzyexQsImicLu7WsC2LHq7/xrQ==", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==", + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/file-entry-cache": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", + "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", + "dev": true, + "dependencies": { + "flat-cache": "^2.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/file-type": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz", + "integrity": "sha512-RLoqTXE8/vPmMuTI88DAzhMYC99I8BWv7zYP4A1puo5HIjEJ5EX48ighy4ZyKMG9EDXxBgW6e++cn7d1xuFghA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==" + }, + "node_modules/filelist": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", + "dependencies": { + "minimatch": "^5.0.1" + } + }, + "node_modules/filelist/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/filelist/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/filesize": { + "version": "8.0.7", + "resolved": "https://registry.npmjs.org/filesize/-/filesize-8.0.7.tgz", + "integrity": "sha512-pjmC+bkIF8XI7fWaH8KxHcZL3DPybs1roSKP4rKDvy20tAWwIObE4+JIseG2byfGKhud5ZnM4YSGKBz7Sh0ndQ==", + "dev": true, + "engines": { + "node": ">= 0.4.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==", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/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==", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/find-cache-dir": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "dev": true, + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/avajs/find-cache-dir?sponsor=1" + } + }, + "node_modules/find-replace": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-2.0.1.tgz", + "integrity": "sha512-LzDo3Fpa30FLIBsh6DCDnMN1KW2g4QKkqKmejlImgWY67dDFPX/x9Kh/op/GK522DchQXEvDi/wD48HKW49XOQ==", + "dependencies": { + "array-back": "^2.0.0", + "test-value": "^3.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/find-root": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", + "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==", + "dev": true + }, + "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/find-versions": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/find-versions/-/find-versions-4.0.0.tgz", + "integrity": "sha512-wgpWy002tA+wgmO27buH/9KzyEOQnKsG/R0yrcjPT9BOFm0zRBVQbZ95nRGXWMywS8YR5knRbpohio0bcJABxQ==", + "dependencies": { + "semver-regex": "^3.1.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "dev": true, + "bin": { + "flat": "cli.js" + } + }, + "node_modules/flat-cache": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", + "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", + "dev": true, + "dependencies": { + "flatted": "^2.0.0", + "rimraf": "2.6.3", + "write": "1.0.3" + }, + "engines": { + "node": ">=4" + } + }, + "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": "2.0.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", + "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", + "dev": true + }, + "node_modules/follow-redirects": { + "version": "1.15.5", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz", + "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/foreground-child": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", + "integrity": "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/foreground-child/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/foreground-child/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/foreground-child/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/foreground-child/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/foreground-child/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/forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", + "engines": { + "node": "*" + } + }, + "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==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/formidable": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.1.tgz", + "integrity": "sha512-Fs9VRguL0gqGHkXS5GQiMCr1VhZBxz0JnJs4JmMp/2jL18Fmbzvv7vOFRU+U8TBkHEE/CX1qDXzJplVULgsLeg==", + "deprecated": "Please upgrade to latest, formidable@v2 or formidable@v3! Check these notes: https://bit.ly/2ZEqIau" + }, + "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/frameguard": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/frameguard/-/frameguard-3.1.0.tgz", + "integrity": "sha512-TxgSKM+7LTA6sidjOiSZK9wxY0ffMPY3Wta//MqwmX0nZuEHc8QrkV8Fh3ZhMJeiH+Uyh/tcaarImRy8u77O7g==", + "engines": { + "node": ">=4.0.0" + } + }, + "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/from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==", + "dependencies": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + } + }, + "node_modules/from2/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, + "node_modules/from2/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/from2/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==" + }, + "node_modules/from2/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/fromentries": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fromentries/-/fromentries-1.3.2.tgz", + "integrity": "sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg==", + "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/fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" + }, + "node_modules/fs-extra": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "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.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/ftp": { + "version": "0.3.10", + "resolved": "https://registry.npmjs.org/ftp/-/ftp-0.3.10.tgz", + "integrity": "sha512-faFVML1aBx2UoDStmLwv2Wptt4vw5x03xxX172nhA5Y5HBshW5JweqQ2W4xL4dezQTG8inJsuYcpPHHU3X5OTQ==", + "dependencies": { + "readable-stream": "1.1.x", + "xregexp": "2.0.0" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/function.prototype.name": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", + "dev": true + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gauge": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", + "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", + "optional": true, + "dependencies": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.3", + "console-control-strings": "^1.1.0", + "has-unicode": "^2.0.1", + "signal-exit": "^3.0.7", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.5" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/gauge/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==", + "optional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/gauge/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==", + "optional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/gauge/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==", + "optional": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/gauge/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==", + "optional": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/generate-function": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz", + "integrity": "sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==", + "dependencies": { + "is-property": "^1.0.2" + } + }, + "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==", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-func-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", + "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "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-stdin": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz", + "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/get-symbol-description": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", + "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", + "dependencies": { + "assert-plus": "^1.0.0" + } + }, + "node_modules/git-log-parser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/git-log-parser/-/git-log-parser-1.2.0.tgz", + "integrity": "sha512-rnCVNfkTL8tdNryFuaY0fYiBWEBcgF748O6ZI61rslBvr2o7U65c2/6npCRqH40vuAhtgtDiqLTJjBVdrejCzA==", + "dependencies": { + "argv-formatter": "~1.0.0", + "spawn-error-forwarder": "~1.0.0", + "split2": "~1.0.0", + "stream-combiner2": "~1.1.1", + "through2": "~2.0.0", + "traverse": "~0.6.6" + } + }, + "node_modules/git-log-parser/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, + "node_modules/git-log-parser/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/git-log-parser/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==" + }, + "node_modules/git-log-parser/node_modules/split2": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-1.0.0.tgz", + "integrity": "sha512-NKywug4u4pX/AZBB1FCPzZ6/7O+Xhz1qMVbzTvvKvikjO99oPN87SkK08mEY9P63/5lWjK+wgOOgApnTg5r6qg==", + "dependencies": { + "through2": "~2.0.0" + } + }, + "node_modules/git-log-parser/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/git-log-parser/node_modules/through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dependencies": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "node_modules/github-from-package": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", + "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==" + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "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==", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/global-agent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-agent/-/global-agent-3.0.0.tgz", + "integrity": "sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q==", + "dev": true, + "dependencies": { + "boolean": "^3.0.1", + "es6-error": "^4.1.1", + "matcher": "^3.0.0", + "roarr": "^2.15.3", + "semver": "^7.3.2", + "serialize-error": "^7.0.1" + }, + "engines": { + "node": ">=10.0" + } + }, + "node_modules/global-agent/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/global-agent/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "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/globalthis": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", + "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "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/globby/node_modules/ignore": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", + "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", + "engines": { + "node": ">= 4" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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/growl": { + "version": "1.10.5", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", + "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", + "dev": true, + "engines": { + "node": ">=4.x" + } + }, + "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/har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", + "engines": { + "node": ">=4" + } + }, + "node_modules/har-validator": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "deprecated": "this library is no longer supported", + "dependencies": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/hard-rejection": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", + "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/has": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.4.tgz", + "integrity": "sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==", + "dev": true, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==", + "dev": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "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/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", + "optional": true + }, + "node_modules/hasha": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/hasha/-/hasha-5.2.2.tgz", + "integrity": "sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ==", + "dev": true, + "dependencies": { + "is-stream": "^2.0.0", + "type-fest": "^0.8.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/hasha/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/hasown": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.1.tgz", + "integrity": "sha512-1/th4MHjnwncwXsIW6QMzlvYL9kG5e/CpVvLRZe4XPa8TOUNbCELqmvhDmnkNsAjwaG4+I8gJJL0JBvTTLO9qA==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true, + "bin": { + "he": "bin/he" + } + }, + "node_modules/helmet": { + "version": "3.21.2", + "resolved": "https://registry.npmjs.org/helmet/-/helmet-3.21.2.tgz", + "integrity": "sha512-okUo+MeWgg00cKB8Csblu8EXgcIoDyb5ZS/3u0W4spCimeVuCUvVZ6Vj3O2VJ1Sxpyb8jCDvzu0L1KKT11pkIg==", + "dependencies": { + "depd": "2.0.0", + "dns-prefetch-control": "0.2.0", + "dont-sniff-mimetype": "1.1.0", + "expect-ct": "0.2.0", + "feature-policy": "0.3.0", + "frameguard": "3.1.0", + "helmet-crossdomain": "0.4.0", + "helmet-csp": "2.9.4", + "hide-powered-by": "1.1.0", + "hpkp": "2.0.0", + "hsts": "2.2.0", + "ienoopen": "1.1.0", + "nocache": "2.1.0", + "referrer-policy": "1.2.0", + "x-xss-protection": "1.3.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/helmet-crossdomain": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/helmet-crossdomain/-/helmet-crossdomain-0.4.0.tgz", + "integrity": "sha512-AB4DTykRw3HCOxovD1nPR16hllrVImeFp5VBV9/twj66lJ2nU75DP8FPL0/Jp4jj79JhTfG+pFI2MD02kWJ+fA==", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/helmet-csp": { + "version": "2.9.4", + "resolved": "https://registry.npmjs.org/helmet-csp/-/helmet-csp-2.9.4.tgz", + "integrity": "sha512-qUgGx8+yk7Xl8XFEGI4MFu1oNmulxhQVTlV8HP8tV3tpfslCs30OZz/9uQqsWPvDISiu/NwrrCowsZBhFADYqg==", + "dependencies": { + "bowser": "^2.7.0", + "camelize": "1.0.0", + "content-security-policy-builder": "2.1.0", + "dasherize": "2.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/hide-powered-by": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/hide-powered-by/-/hide-powered-by-1.1.0.tgz", + "integrity": "sha512-Io1zA2yOA1YJslkr+AJlWSf2yWFkKjvkcL9Ni1XSUqnGLr/qRQe2UI3Cn/J9MsJht7yEVCe0SscY1HgVMujbgg==", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/hook-std": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hook-std/-/hook-std-2.0.0.tgz", + "integrity": "sha512-zZ6T5WcuBMIUVh49iPQS9t977t7C0l7OtHrpeMb5uk48JdflRX0NSFvCekfYNmGQETnLq9W/isMyHl69kxGi8g==", + "engines": { + "node": ">=8" + } + }, + "node_modules/hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/hosted-git-info/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/hpkp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hpkp/-/hpkp-2.0.0.tgz", + "integrity": "sha512-TaZpC6cO/k3DFsjfzz1LnOobbVSq+J+7WpJxrVtN4L+8+BPQj8iBDRB2Dx49613N+e7/+ZSQ9ra+xZm7Blf4wg==" + }, + "node_modules/hsts": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/hsts/-/hsts-2.2.0.tgz", + "integrity": "sha512-ToaTnQ2TbJkochoVcdXYm4HOCliNozlviNsg+X2XQLQvZNI/kCHR9rZxVYpJB3UPcHz80PgxRyWQ7PdU1r+VBQ==", + "dependencies": { + "depd": "2.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "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-cache-semantics": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", + "optional": 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/http-errors/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/http-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/http-proxy-agent/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/http-proxy-agent/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/http-reasons": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/http-reasons/-/http-reasons-0.1.0.tgz", + "integrity": "sha512-P6kYh0lKZ+y29T2Gqz+RlC9WBLhKe8kDmcJ+A+611jFfxdPsbMRQ5aNmFRM3lENqFkK+HTTL+tlQviAiv0AbLQ==", + "dev": true + }, + "node_modules/http-signature": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.3.6.tgz", + "integrity": "sha512-3adrsD6zqo4GsTqtO7FyrejHNv+NgiIfAfv68+jVlFmSr9OGy7zrxONceFRLKvnnZA5jbxQBX1u9PpB6Wi32Gw==", + "dev": true, + "dependencies": { + "assert-plus": "^1.0.0", + "jsprim": "^2.0.2", + "sshpk": "^1.14.1" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/httpntlm": { + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/httpntlm/-/httpntlm-1.7.7.tgz", + "integrity": "sha512-Pv2Rvrz8H0qv1Dne5mAdZ9JegG1uc6Vu5lwLflIY6s8RKHdZQbW39L4dYswSgqMDT0pkJILUTKjeyU0VPNRZjA==", + "dev": true, + "dependencies": { + "httpreq": ">=0.4.22", + "underscore": "~1.12.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/httpntlm/node_modules/underscore": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.12.1.tgz", + "integrity": "sha512-hEQt0+ZLDVUMhebKxL4x1BTtDY7bavVofhZ9KZ4aI26X9SRaE+Y3m83XUL1UP2jn8ynjndwCCpEHdUG+9pP1Tw==", + "dev": true + }, + "node_modules/httpreq": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/httpreq/-/httpreq-1.1.1.tgz", + "integrity": "sha512-uhSZLPPD2VXXOSN8Cni3kIsoFHaU2pT/nySEU/fHr/ePbqHYr0jeiQRmUKLEirC09SFPsdMoA7LU7UXMd/w0Kw==", + "dev": true, + "engines": { + "node": ">= 6.15.1" + } + }, + "node_modules/https-proxy-agent": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz", + "integrity": "sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==", + "dependencies": { + "agent-base": "^7.0.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/https-proxy-agent/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/https-proxy-agent/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/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==", + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/humanize-ms": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", + "optional": true, + "dependencies": { + "ms": "^2.0.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/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/ienoopen": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ienoopen/-/ienoopen-1.1.0.tgz", + "integrity": "sha512-MFs36e/ca6ohEKtinTJ5VvAJ6oDRAYFdYXweUnGY9L9vcoqFOU4n2ZhmJ0C4z/cwGZ3YIQRSB3XZ1+ghZkY5NQ==", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "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==", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/import-from/-/import-from-4.0.0.tgz", + "integrity": "sha512-P9J71vT5nLlDeV8FHs5nNxaLbrpfAV5cF5srvbZfpwpcJoM/xZR3hiv+q+SAnuSmuGbXMWud063iIMx/V/EWZQ==", + "engines": { + "node": ">=12.2" + }, + "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==", + "devOptional": 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/infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", + "optional": true + }, + "node_modules/inflection": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/inflection/-/inflection-1.13.4.tgz", + "integrity": "sha512-6I/HUDeYFfuNCVS3td055BaXBwKYuzw7K3ExVMStBowKo9oOAMJIXIHvdyR3iboTCp1b+1i5DSkIZTcwIktuDw==", + "engines": [ + "node >= 0.4.0" + ] + }, + "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/ini": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", + "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", + "engines": { + "node": ">=10" + } + }, + "node_modules/inquirer": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz", + "integrity": "sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==", + "dev": true, + "dependencies": { + "ansi-escapes": "^3.2.0", + "chalk": "^2.4.2", + "cli-cursor": "^2.1.0", + "cli-width": "^2.0.0", + "external-editor": "^3.0.3", + "figures": "^2.0.0", + "lodash": "^4.17.12", + "mute-stream": "0.0.7", + "run-async": "^2.2.0", + "rxjs": "^6.4.0", + "string-width": "^2.1.0", + "strip-ansi": "^5.1.0", + "through": "^2.3.6" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/inquirer/node_modules/ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/inquirer/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/internal-slot": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", + "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0", + "hasown": "^2.0.0", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/into-stream": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-6.0.0.tgz", + "integrity": "sha512-XHbaOAvP+uFKUFsOgoNPRjLkwB+I22JFPFe5OjTkQ0nwgj6+pSjb4NmB6VMxaPshLiOf+zcpOCBQuLwC1KHhZA==", + "dependencies": { + "from2": "^2.3.0", + "p-is-promise": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ip-address": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", + "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", + "optional": true, + "dependencies": { + "jsbn": "1.1.0", + "sprintf-js": "^1.1.3" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/ip-address/node_modules/sprintf-js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", + "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", + "optional": true + }, + "node_modules/ip-regex": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", + "integrity": "sha512-58yWmlHpp7VYfcdTwMTvwMmqx/Elfxjd9RXTDyMsbL7lLWmhMylLEqiYVLKuLzOZqVgiWXD9MfR62Vv89VRxkw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "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-admin": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-admin/-/is-admin-3.0.0.tgz", + "integrity": "sha512-wOa3CXFJAu8BZ2BDtG9xYOOrsq6oiSvc2jFPy4X/HINx5bmJUcW8e+apItVbU2E7GIfBVaFVO7Zit4oAWtTJcw==", + "dependencies": { + "execa": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", + "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "dependencies": { + "hasown": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-elevated": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-elevated/-/is-elevated-3.0.0.tgz", + "integrity": "sha512-wjcp6RkouU9jpg55zERl+BglvV5j4jx5c/EMvQ+d12j/+nIEenNWPu+qc0tCg3JkLodbKZMg1qhJzEwG4qjclg==", + "dependencies": { + "is-admin": "^3.0.0", + "is-root": "^2.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", + "devOptional": true, + "engines": { + "node": ">=4" + } + }, + "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==", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-ip": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ip/-/is-ip-2.0.0.tgz", + "integrity": "sha512-9MTn0dteHETtyUx8pxqMwg5hMBi3pvlyglJ+b79KOCca0po23337LbVV2Hl4xmMvfw++ljnO0/+5G6G+0Szh6g==", + "dev": true, + "dependencies": { + "ip-regex": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/is-lambda": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", + "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", + "optional": true + }, + "node_modules/is-negative-zero": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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==", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-like": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/is-number-like/-/is-number-like-1.0.8.tgz", + "integrity": "sha512-6rZi3ezCyFcn5L71ywzz2bS5b2Igl1En3eTlZlvKjpz1n3IZLAYMbKYAIQgFmEu0GENg92ziU/faEOA/aixjbA==", + "dependencies": { + "lodash.isfinite": "^3.3.2" + } + }, + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-path-cwd": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", + "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", + "engines": { + "node": ">=6" + } + }, + "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==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", + "engines": { + "node": ">=0.10.0" + } + }, + "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-promise": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", + "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==", + "dev": true + }, + "node_modules/is-property": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", + "integrity": "sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g==" + }, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-resolvable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", + "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", + "dev": true + }, + "node_modules/is-root": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-root/-/is-root-2.1.0.tgz", + "integrity": "sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", + "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-text-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-1.0.1.tgz", + "integrity": "sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w==", + "dependencies": { + "text-extensions": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", + "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", + "dev": true, + "dependencies": { + "which-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" + }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + }, + "node_modules/isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==" + }, + "node_modules/issue-parser": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/issue-parser/-/issue-parser-6.0.0.tgz", + "integrity": "sha512-zKa/Dxq2lGsBIXQ7CUZWTHfvxPC2ej0KfO7fIPqLlHB9J2hJ7rGhZ5rilhuufylr4RXYPzJUeFjKxz305OsNlA==", + "dependencies": { + "lodash.capitalize": "^4.2.1", + "lodash.escaperegexp": "^4.1.2", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.uniqby": "^4.7.0" + }, + "engines": { + "node": ">=10.13" + } + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-hook": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-3.0.0.tgz", + "integrity": "sha512-Pt/uge1Q9s+5VAZ+pCo16TYMWPBIl+oaNIjgLQxcX0itS6ueeaA+pEfThZpH8WxhFgCiEb8sAJY6MdUKgiIWaQ==", + "dev": true, + "dependencies": { + "append-transform": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", + "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", + "dev": true, + "dependencies": { + "@babel/core": "^7.7.5", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.0.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/istanbul-lib-processinfo": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-processinfo/-/istanbul-lib-processinfo-2.0.3.tgz", + "integrity": "sha512-NkwHbo3E00oybX6NGJi6ar0B29vxyvNwoC7eJ4G4Yq28UfY758Hgn/heV8VRFhevPED4LXfFz0DQ8z/0kw9zMg==", + "dev": true, + "dependencies": { + "archy": "^1.0.0", + "cross-spawn": "^7.0.3", + "istanbul-lib-coverage": "^3.2.0", + "p-map": "^3.0.0", + "rimraf": "^3.0.0", + "uuid": "^8.3.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-processinfo/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/istanbul-lib-processinfo/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/istanbul-lib-processinfo/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/istanbul-lib-processinfo/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/istanbul-lib-processinfo/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/istanbul-lib-processinfo/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==", + "dev": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/istanbul-lib-processinfo/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/istanbul-lib-report": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", + "dev": true, + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-report/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/istanbul-lib-report/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/istanbul-lib-report/node_modules/make-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "dev": true, + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/istanbul-lib-report/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-report/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/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-lib-source-maps/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/istanbul-lib-source-maps/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/istanbul-reports": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", + "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", + "dev": true, + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jackspeak": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", + "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", + "dev": true, + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/jake": { + "version": "10.8.7", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.7.tgz", + "integrity": "sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w==", + "dependencies": { + "async": "^3.2.3", + "chalk": "^4.0.2", + "filelist": "^1.0.4", + "minimatch": "^3.1.2" + }, + "bin": { + "jake": "bin/cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jake/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==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jake/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "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/jake/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==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jake/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==" + }, + "node_modules/jake/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==", + "engines": { + "node": ">=8" + } + }, + "node_modules/jake/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==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/java-properties": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/java-properties/-/java-properties-1.0.2.tgz", + "integrity": "sha512-qjdpeo2yKlYTH7nFdK0vbZWuTCesk4o63v5iVOlhMQPfuIZQfW/HI35SjfhA+4qpg36rnFSvUK5b1m+ckIblQQ==", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/js-beautify": { + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.15.1.tgz", + "integrity": "sha512-ESjNzSlt/sWE8sciZH8kBF8BPlwXPwhR6pWKAw8bw4Bwj+iZcnKW6ONWUutJ7eObuBZQpiIb8S7OYspWrKt7rA==", + "dev": true, + "dependencies": { + "config-chain": "^1.1.13", + "editorconfig": "^1.0.4", + "glob": "^10.3.3", + "js-cookie": "^3.0.5", + "nopt": "^7.2.0" + }, + "bin": { + "css-beautify": "js/bin/css-beautify.js", + "html-beautify": "js/bin/html-beautify.js", + "js-beautify": "js/bin/js-beautify.js" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/js-beautify/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==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/js-beautify/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/js-beautify/node_modules/foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/js-beautify/node_modules/glob": { + "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "dev": true, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/js-beautify/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/js-beautify/node_modules/minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "dev": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/js-beautify/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/js-beautify/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/js-beautify/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/js-beautify/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/js-beautify/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/js-cookie": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-3.0.5.tgz", + "integrity": "sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==", + "dev": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/js-sha512": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/js-sha512/-/js-sha512-0.8.0.tgz", + "integrity": "sha512-PWsmefG6Jkodqt+ePTvBZCSMFgN7Clckjd0O7su3I0+BW2QWUTJNzjktHsztGLhncP2h8mcF9V9Y2Ha59pAViQ==", + "dev": true + }, + "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==" + }, + "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/jsbn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", + "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==", + "optional": true + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "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==" + }, + "node_modules/json-schema": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" + }, + "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==" + }, + "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==" + }, + "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/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", + "engines": [ + "node >= 0.2.0" + ] + }, + "node_modules/jsonschema": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/jsonschema/-/jsonschema-1.2.5.tgz", + "integrity": "sha512-kVTF+08x25PQ0CjuVc0gRM9EUPb0Fe9Ln/utFOgcdxEIOHuU7ooBk/UPTd7t1M91pP35m0MU1T8M5P7vP1bRRw==", + "engines": { + "node": "*" + } + }, + "node_modules/JSONStream": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", + "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", + "dependencies": { + "jsonparse": "^1.2.0", + "through": ">=2.2.7 <3" + }, + "bin": { + "JSONStream": "bin.js" + }, + "engines": { + "node": "*" + } + }, + "node_modules/jsprim": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-2.0.2.tgz", + "integrity": "sha512-gqXddjPqQ6G40VdnI6T6yObEC+pDNvyP95wdQhkWkg7crHH3km5qP1FsOXEkzEQwnz6gz5qGTn1c2Y52wP3OyQ==", + "dev": true, + "engines": [ + "node >=0.6.0" + ], + "dependencies": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.4.0", + "verror": "1.10.0" + } + }, + "node_modules/jsx-ast-utils": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.4.1.tgz", + "integrity": "sha512-z1xSldJ6imESSzOjd3NNkieVJKRlKYSOtMG8SFyCj2FIrvSaSuli/WjpBkEzCBoR9bYYYFgqJw61Xhu7Lcgk+w==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.1", + "object.assign": "^4.1.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/just-extend": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-4.2.1.tgz", + "integrity": "sha512-g3UB796vUFIY90VIv/WX3L2c8CS2MdWUww3CNrYmqza1Fg0DURc2K/O4YrnklBdQarSJ/y8JnJYDGc+1iumQjg==", + "dev": true + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", + "dev": true, + "dependencies": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + }, + "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==" + }, + "node_modules/liquid-json": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/liquid-json/-/liquid-json-0.3.1.tgz", + "integrity": "sha512-wUayTU8MS827Dam6MxgD72Ui+KOSF+u/eIqpatOtjnvgJ0+mnDq33uC2M7J0tPK+upe/DpUAuK4JUU89iBoNKQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==", + "dependencies": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "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/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/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "node_modules/lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==" + }, + "node_modules/lodash.capitalize": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/lodash.capitalize/-/lodash.capitalize-4.2.1.tgz", + "integrity": "sha512-kZzYOKspf8XVX5AvmQF94gQW0lejFVgb80G85bU4ZWzoJ6C03PQg3coYAUpSTpQWelrZELd3XWgHzw4Ck5kaIw==" + }, + "node_modules/lodash.escaperegexp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz", + "integrity": "sha512-TM9YBvyC84ZxE3rgfefxUWiQKLilstD6k7PTGt6wfbtXF8ixIJLOL3VYyV/z+ZiPLsVxAsKAFVwWlWeb2Y8Yyw==" + }, + "node_modules/lodash.flattendeep": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", + "integrity": "sha512-uHaJFihxmJcEX3kT4I23ABqKKalJ/zDrDg0lsFtc1h+3uw49SIJ5beyhx5ExVRti3AvKoOJngIj7xz3oylPdWQ==", + "dev": true + }, + "node_modules/lodash.isfinite": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/lodash.isfinite/-/lodash.isfinite-3.3.2.tgz", + "integrity": "sha512-7FGG40uhC8Mm633uKW1r58aElFlBlxCrg9JfSi3P6aYiWmfiWF0PgMd86ZUsxE5GwWPdHoS2+48bwTh2VPkIQA==" + }, + "node_modules/lodash.ismatch": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz", + "integrity": "sha512-fPMfXjGQEV9Xsq/8MTSgUf255gawYRbjwMyDbcvDhXgV7enSZA0hynz6vMPnpAb5iONEzBHBPsT+0zes5Z301g==" + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==" + }, + "node_modules/lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==" + }, + "node_modules/lodash.padend": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/lodash.padend/-/lodash.padend-4.6.1.tgz", + "integrity": "sha512-sOQs2aqGpbl27tmCS1QNZA09Uqp01ZzWfDUoD+xzTii0E7dSQfRKcRetFwa+uXaxaqL+TKm7CgD2JdKP7aZBSw==" + }, + "node_modules/lodash.uniqby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz", + "integrity": "sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww==" + }, + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-symbols/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/log-symbols/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/log-symbols/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/log-symbols/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/log-symbols/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/log-symbols/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/lolex": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lolex/-/lolex-4.2.0.tgz", + "integrity": "sha512-gKO5uExCXvSm6zbF562EvM+rd1kQDnB9AZBbiQVzf1ZmdDpxUSvpnAaVOP83N/31mRK8Ml8/VE8DMvsAZQ+7wg==", + "dev": true + }, + "node_modules/long": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz", + "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==" + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dev": true, + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lru-cache": { + "version": "8.0.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-8.0.5.tgz", + "integrity": "sha512-MhWWlVnuab1RG5/zMRRcVGXZLCXrZTgfwMikgzCegsPnG62yDQo5JnqKkrK4jO5iKqDAZGItAqN5CtKBCBWRUA==", + "engines": { + "node": ">=16.14" + } + }, + "node_modules/lru-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz", + "integrity": "sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ==", + "dev": true, + "dependencies": { + "es5-ext": "~0.10.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-dir/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/make-fetch-happen": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz", + "integrity": "sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==", + "optional": true, + "dependencies": { + "agentkeepalive": "^4.1.3", + "cacache": "^15.2.0", + "http-cache-semantics": "^4.1.0", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^6.0.0", + "minipass": "^3.1.3", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^1.3.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.2", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^6.0.0", + "ssri": "^8.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/make-fetch-happen/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==", + "optional": true, + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/make-fetch-happen/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "optional": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/make-fetch-happen/node_modules/http-proxy-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "optional": true, + "dependencies": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/make-fetch-happen/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==", + "optional": true, + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/make-fetch-happen/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==", + "optional": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/make-fetch-happen/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==", + "optional": true + }, + "node_modules/map-obj": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", + "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/marked": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/marked/-/marked-4.3.0.tgz", + "integrity": "sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==", + "bin": { + "marked": "bin/marked.js" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/marked-terminal": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/marked-terminal/-/marked-terminal-5.2.0.tgz", + "integrity": "sha512-Piv6yNwAQXGFjZSaiNljyNFw7jKDdGrw70FSbtxEyldLsyeuV5ZHm/1wW++kWbrOF1VPnUgYOhB2oLL0ZpnekA==", + "dependencies": { + "ansi-escapes": "^6.2.0", + "cardinal": "^2.1.1", + "chalk": "^5.2.0", + "cli-table3": "^0.6.3", + "node-emoji": "^1.11.0", + "supports-hyperlinks": "^2.3.0" + }, + "engines": { + "node": ">=14.13.1 || >=16.0.0" + }, + "peerDependencies": { + "marked": "^1.0.0 || ^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0" + } + }, + "node_modules/marked-terminal/node_modules/ansi-escapes": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-6.2.0.tgz", + "integrity": "sha512-kzRaCqXnpzWs+3z5ABPQiVke+iq0KXkHo8xiWV4RPTi5Yli0l97BEQuhXV1s7+aSU/fu1kUuxgS4MsQ0fRuygw==", + "dependencies": { + "type-fest": "^3.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/marked-terminal/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==", + "engines": { + "node": ">=8" + } + }, + "node_modules/marked-terminal/node_modules/chalk": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/marked-terminal/node_modules/cli-table3": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.3.tgz", + "integrity": "sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==", + "dependencies": { + "string-width": "^4.2.0" + }, + "engines": { + "node": "10.* || >= 12.*" + }, + "optionalDependencies": { + "@colors/colors": "1.5.0" + } + }, + "node_modules/marked-terminal/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==", + "engines": { + "node": ">=8" + } + }, + "node_modules/marked-terminal/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==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/marked-terminal/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==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/marked-terminal/node_modules/type-fest": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.13.1.tgz", + "integrity": "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/matcher": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/matcher/-/matcher-3.0.0.tgz", + "integrity": "sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/matcher/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/md5": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz", + "integrity": "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==", + "dev": true, + "dependencies": { + "charenc": "0.0.2", + "crypt": "0.0.2", + "is-buffer": "~1.1.6" + } + }, + "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/memoizee": { + "version": "0.4.15", + "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.15.tgz", + "integrity": "sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ==", + "dev": true, + "dependencies": { + "d": "^1.0.1", + "es5-ext": "^0.10.53", + "es6-weak-map": "^2.0.3", + "event-emitter": "^0.3.5", + "is-promise": "^2.2.2", + "lru-queue": "^0.1.0", + "next-tick": "^1.1.0", + "timers-ext": "^0.1.7" + } + }, + "node_modules/meow": { + "version": "8.1.2", + "resolved": "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz", + "integrity": "sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==", + "dependencies": { + "@types/minimist": "^1.2.0", + "camelcase-keys": "^6.2.2", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "4.1.0", + "normalize-package-data": "^3.0.0", + "read-pkg-up": "^7.0.1", + "redent": "^3.0.0", + "trim-newlines": "^3.0.0", + "type-fest": "^0.18.0", + "yargs-parser": "^20.2.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/meow/node_modules/type-fest": { + "version": "0.18.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", + "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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==" + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "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==", + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", + "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "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-format": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mime-format/-/mime-format-2.0.1.tgz", + "integrity": "sha512-XxU3ngPbEnrYnNbIX+lYSaYg0M01v6p2ntd2YaFksTu0vayaw5OJvbdRyWs07EYRlLED5qadUZ+xo+XhOvFhwg==", + "dev": true, + "dependencies": { + "charset": "^1.0.0" + } + }, + "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": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "engines": { + "node": ">=4" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "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/minimist-options": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", + "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", + "dependencies": { + "arrify": "^1.0.1", + "is-plain-obj": "^1.1.0", + "kind-of": "^6.0.3" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-collect": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", + "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", + "optional": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minipass-fetch": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.4.1.tgz", + "integrity": "sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==", + "optional": true, + "dependencies": { + "minipass": "^3.1.0", + "minipass-sized": "^1.0.3", + "minizlib": "^2.0.0" + }, + "engines": { + "node": ">=8" + }, + "optionalDependencies": { + "encoding": "^0.1.12" + } + }, + "node_modules/minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "optional": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minipass-pipeline": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", + "optional": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-sized": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", + "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", + "optional": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" + }, + "node_modules/mocha": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-9.2.2.tgz", + "integrity": "sha512-L6XC3EdwT6YrIk0yXpavvLkn8h+EU+Y5UcCHKECyMbdUIxyMuZj4bX4U9e1nvnvUUvQVsV2VHQr5zLdcUkhW/g==", + "dev": true, + "dependencies": { + "@ungap/promise-all-settled": "1.1.2", + "ansi-colors": "4.1.1", + "browser-stdout": "1.3.1", + "chokidar": "3.5.3", + "debug": "4.3.3", + "diff": "5.0.0", + "escape-string-regexp": "4.0.0", + "find-up": "5.0.0", + "glob": "7.2.0", + "growl": "1.10.5", + "he": "1.2.0", + "js-yaml": "4.1.0", + "log-symbols": "4.1.0", + "minimatch": "4.2.1", + "ms": "2.1.3", + "nanoid": "3.3.1", + "serialize-javascript": "6.0.0", + "strip-json-comments": "3.1.1", + "supports-color": "8.1.1", + "which": "2.0.2", + "workerpool": "6.2.0", + "yargs": "16.2.0", + "yargs-parser": "20.2.4", + "yargs-unparser": "2.0.0" + }, + "bin": { + "_mocha": "bin/_mocha", + "mocha": "bin/mocha" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mochajs" + } + }, + "node_modules/mocha-junit-reporter": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mocha-junit-reporter/-/mocha-junit-reporter-2.0.0.tgz", + "integrity": "sha512-20HoWh2HEfhqmigfXOKUhZQyX23JImskc37ZOhIjBKoBEsb+4cAFRJpAVhFpnvsztLklW/gFVzsrobjLwmX4lA==", + "dev": true, + "dependencies": { + "debug": "^2.2.0", + "md5": "^2.1.0", + "mkdirp": "~0.5.1", + "strip-ansi": "^4.0.0", + "xml": "^1.0.0" + }, + "peerDependencies": { + "mocha": ">=2.2.5" + } + }, + "node_modules/mocha/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/mocha/node_modules/debug": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/mocha/node_modules/debug/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/mocha/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/mocha/node_modules/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/mocha/node_modules/glob/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/mocha/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/mocha/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/mocha/node_modules/minimatch": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-4.2.1.tgz", + "integrity": "sha512-9Uq1ChtSZO+Mxa/CL1eGizn2vRn3MlLgzhT0Iz8zaY8NdvxvB0d5QdPFmCKf7JKA9Lerx5vRrnwO03jsSfGG9g==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/mocha/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==", + "dev": true + }, + "node_modules/mocha/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==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mocha/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/mocha/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/modify-values": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/modify-values/-/modify-values-1.0.1.tgz", + "integrity": "sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/moment": { + "version": "2.29.4", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", + "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==", + "engines": { + "node": "*" + } + }, + "node_modules/moment-timezone": { + "version": "0.5.38", + "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.38.tgz", + "integrity": "sha512-nMIrzGah4+oYZPflDvLZUgoVUO4fvAqHstvG3xAUnMolWncuAiLDWNnJZj6EwJGMGfb1ZcuTFE6GI3hNOVWI/Q==", + "dependencies": { + "moment": ">= 2.9.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/morgan": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.9.1.tgz", + "integrity": "sha512-HQStPIV4y3afTiCYVxirakhlCfGkI161c76kKFca7Fk1JusM//Qeo1ej2XaMniiNeaZklMVrh3vTtIzpzwbpmA==", + "dependencies": { + "basic-auth": "~2.0.0", + "debug": "2.6.9", + "depd": "~1.1.2", + "on-finished": "~2.3.0", + "on-headers": "~1.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/morgan/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "engines": { + "node": ">= 0.6" + } + }, + "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==", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/multer": { + "version": "1.4.5-lts.1", + "resolved": "https://registry.npmjs.org/multer/-/multer-1.4.5-lts.1.tgz", + "integrity": "sha512-ywPWvcDMeH+z9gQq5qYHCCy+ethsk4goepZ45GLD63fOu0YcNecQxi64nDs3qluZB+murG3/D4dJ7+dGctcCQQ==", + "dependencies": { + "append-field": "^1.0.0", + "busboy": "^1.0.0", + "concat-stream": "^1.5.2", + "mkdirp": "^0.5.4", + "object-assign": "^4.1.1", + "type-is": "^1.6.4", + "xtend": "^4.0.0" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/multer/node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/mute-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", + "integrity": "sha512-r65nCZhrbXXb6dXOACihYApHw2Q6pV0M3V0PSxd74N0+D8nzAdEAITq2oAjA1jVnKI+tGvEBUpqiMh0+rW6zDQ==", + "dev": true + }, + "node_modules/mysql2": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.2.2.tgz", + "integrity": "sha512-h+MYStGolwzn9bNpnq3WtwQar6XVPZKbsMdkIbZ9xTH27BSMpzBdZiilALI9LP2MO1Ky1LlgcWPLRM/e6Eilqg==", + "dependencies": { + "denque": "^2.1.0", + "generate-function": "^2.3.1", + "iconv-lite": "^0.6.3", + "long": "^5.2.1", + "lru-cache": "^8.0.0", + "named-placeholders": "^1.1.3", + "seq-queue": "^0.0.5", + "sqlstring": "^2.3.2" + }, + "engines": { + "node": ">= 8.0" + } + }, + "node_modules/mysql2/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/named-placeholders": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/named-placeholders/-/named-placeholders-1.1.3.tgz", + "integrity": "sha512-eLoBxg6wE/rZkJPhU/xRX1WTpkFEwDJEN96oxFrTsqBdbT5ec295Q+CoHrL9IT0DipqKhmGcaZmwOt8OON5x1w==", + "dependencies": { + "lru-cache": "^7.14.1" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/named-placeholders/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/nanoid": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.1.tgz", + "integrity": "sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==", + "dev": true, + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/napi-build-utils": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", + "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==" + }, + "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/nconf": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/nconf/-/nconf-0.12.0.tgz", + "integrity": "sha512-T3fZPw3c7Dfrz8JBQEbEcZJ2s8f7cUMpKuyBtsGQe0b71pcXx6gNh4oti2xh5dxB+gO9ufNfISBlGvvWtfyMcA==", + "dependencies": { + "async": "^3.0.0", + "ini": "^2.0.0", + "secure-keys": "^1.0.0", + "yargs": "^16.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "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/nerf-dart": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/nerf-dart/-/nerf-dart-1.0.0.tgz", + "integrity": "sha512-EZSPZB70jiVsivaBLYDCyntd5eH8NTSMOn3rB+HxwdmKThGELLdYv8qVIMWvZEFy9w8ZZpW9h9OB32l1rGtj7g==" + }, + "node_modules/newman": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/newman/-/newman-5.3.2.tgz", + "integrity": "sha512-cWy8pV0iwvMOZLTw3hkAHcwo2ZA0GKkXm8oUMn1Ltii3ZI2nKpnrg9QGdIT0hGHChRkX6prY5e3Aar7uykMGNg==", + "dev": true, + "dependencies": { + "async": "3.2.3", + "chardet": "1.4.0", + "cli-progress": "3.10.0", + "cli-table3": "0.6.1", + "colors": "1.4.0", + "commander": "7.2.0", + "csv-parse": "4.16.3", + "eventemitter3": "4.0.7", + "filesize": "8.0.7", + "lodash": "4.17.21", + "mkdirp": "1.0.4", + "postman-collection": "4.1.1", + "postman-collection-transformer": "4.1.6", + "postman-request": "2.88.1-postman.31", + "postman-runtime": "7.29.0", + "pretty-ms": "7.0.1", + "semver": "7.3.5", + "serialised-error": "1.1.3", + "tough-cookie": "3.0.1", + "word-wrap": "1.2.3", + "xmlbuilder": "15.1.1" + }, + "bin": { + "newman": "bin/newman.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/newman-reporter-junitfull": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/newman-reporter-junitfull/-/newman-reporter-junitfull-1.1.1.tgz", + "integrity": "sha512-ET5rU1qkeJ5yvFxcKQFkqGxWia50kdnufm1uzyeNYlUg6T+k07AvOS0mfp/Ejr0njnsiPfFLb9kC48F8pafq9A==", + "dev": true, + "dependencies": { + "lodash": "^4.17.10", + "moment": "^2.22.2", + "xmlbuilder": "^10.0.0" + }, + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "newman": ">=4" + } + }, + "node_modules/newman-reporter-junitfull/node_modules/xmlbuilder": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-10.1.1.tgz", + "integrity": "sha512-OyzrcFLL/nb6fMGHbiRDuPup9ljBycsdCypwuyg5AAHvyWzGfChJpCXMG88AGTIMFhGZ9RccFN1e6lhg3hkwKg==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/newman/node_modules/async": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.3.tgz", + "integrity": "sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==", + "dev": true + }, + "node_modules/newman/node_modules/chardet": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-1.4.0.tgz", + "integrity": "sha512-NpwMDdSIprbYx1CLnfbxEIarI0Z+s9MssEgggMNheGM+WD68yOhV7IEA/3r6tr0yTRgQD0HuZJDw32s99i6L+A==", + "dev": true + }, + "node_modules/newman/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/newman/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/newman/node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/next-tick": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", + "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==", + "dev": true + }, + "node_modules/nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" + }, + "node_modules/nise": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/nise/-/nise-1.5.3.tgz", + "integrity": "sha512-Ymbac/94xeIrMf59REBPOv0thr+CJVFMhrlAkW/gjCIE58BGQdCj0x7KRCb3yz+Ga2Rz3E9XXSvUyyxqqhjQAQ==", + "dev": true, + "dependencies": { + "@sinonjs/formatio": "^3.2.1", + "@sinonjs/text-encoding": "^0.7.1", + "just-extend": "^4.0.2", + "lolex": "^5.0.1", + "path-to-regexp": "^1.7.0" + } + }, + "node_modules/nise/node_modules/lolex": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/lolex/-/lolex-5.1.2.tgz", + "integrity": "sha512-h4hmjAvHTmd+25JSwrtTIuwbKdwg5NzZVRMLn9saij4SZaepCrTCxPr35H/3bjwfMJtN+t3CX8672UIkglz28A==", + "dev": true, + "dependencies": { + "@sinonjs/commons": "^1.7.0" + } + }, + "node_modules/nise/node_modules/path-to-regexp": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", + "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", + "dev": true, + "dependencies": { + "isarray": "0.0.1" + } + }, + "node_modules/nocache": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/nocache/-/nocache-2.1.0.tgz", + "integrity": "sha512-0L9FvHG3nfnnmaEQPjT9xhfN4ISk0A8/2j4M37Np4mcDesJjHgEUfgPhdCyZuFI954tjokaIj/A3NdpFNdEh4Q==", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/node-abi": { + "version": "3.56.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.56.0.tgz", + "integrity": "sha512-fZjdhDOeRcaS+rcpve7XuwHBmktS1nS1gzgghwKUQQ8nTy2FdSDr6ZT8k6YhvlJeHmmQMYiT/IH9hfco5zeW2Q==", + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/node-abi/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/node-abi/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/node-addon-api": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.0.tgz", + "integrity": "sha512-mNcltoe1R8o7STTegSOHdnJNN7s5EUvhoS7ShnTHDyOSd+8H+UdWODq6qSv67PjC8Zc5JRT8+oLAMCr0SIXw7g==", + "engines": { + "node": "^16 || ^18 || >= 20" + } + }, + "node_modules/node-emoji": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz", + "integrity": "sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==", + "dependencies": { + "lodash": "^4.17.21" + } + }, + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "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-gyp": { + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-8.4.1.tgz", + "integrity": "sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w==", + "optional": true, + "dependencies": { + "env-paths": "^2.2.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^9.1.0", + "nopt": "^5.0.0", + "npmlog": "^6.0.0", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.2", + "which": "^2.0.2" + }, + "bin": { + "node-gyp": "bin/node-gyp.js" + }, + "engines": { + "node": ">= 10.12.0" + } + }, + "node_modules/node-gyp/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==", + "optional": true + }, + "node_modules/node-gyp/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==", + "optional": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/node-gyp/node_modules/nopt": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", + "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "optional": true, + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/node-gyp/node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "optional": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/node-gyp/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "optional": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/node-gyp/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "optional": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/node-oauth1": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/node-oauth1/-/node-oauth1-1.3.0.tgz", + "integrity": "sha512-0yggixNfrA1KcBwvh/Hy2xAS1Wfs9dcg6TdFf2zN7gilcAigMdrtZ4ybrBSXBgLvGDw9V1p2MRnGBMq7XjTWLg==", + "dev": true + }, + "node_modules/node-preload": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/node-preload/-/node-preload-0.2.1.tgz", + "integrity": "sha512-RM5oyBy45cLEoHqCeh+MNuFAxO0vTFBLskvQbOKnEE7YTTSN4tbN8QWDIPQ6L+WvKsB/qLEGpYe2ZZ9d4W9OIQ==", + "dev": true, + "dependencies": { + "process-on-spawn": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/node-releases": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", + "dev": true + }, + "node_modules/nodemailer": { + "version": "6.7.3", + "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.7.3.tgz", + "integrity": "sha512-KUdDsspqx89sD4UUyUKzdlUOper3hRkDVkrKh/89G+d9WKsU5ox51NWS4tB1XR5dPUdR4SP0E3molyEfOvSa3g==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/nodemailer-fetch": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/nodemailer-fetch/-/nodemailer-fetch-1.3.0.tgz", + "integrity": "sha512-5P5+lR0+sWvk1UZGFoTida33dG0xAqk1Pv0t7cPlrJ09dLdZWh/kenxb0vOoUoNVOci4gmSYOnMHzvheSBeFag==" + }, + "node_modules/nodemailer-shared": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/nodemailer-shared/-/nodemailer-shared-1.0.4.tgz", + "integrity": "sha512-tfqdDPbj6L3PywhNqCa988bDxxnffo3Gw0DZkaYwOYVsnMZFgF7LoffS4FAFbiGb1M+mcNBPX/Vy9l0A95fJAg==", + "dependencies": { + "nodemailer-fetch": "1.3.0" + } + }, + "node_modules/nodemailer-smtp-transport": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/nodemailer-smtp-transport/-/nodemailer-smtp-transport-2.4.2.tgz", + "integrity": "sha512-VD3oQ5Xzgszg+2f0H3qAnXhciF6pZ9j2hHNaJqHEzh+caEs/cU1dDmCbpdN2bJxPYBeCilA2XshhtEnvxJgZGQ==", + "dependencies": { + "nodemailer-shared": "1.0.4", + "nodemailer-wellknown": "0.1.8", + "smtp-connection": "2.3.2" + } + }, + "node_modules/nodemailer-wellknown": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/nodemailer-wellknown/-/nodemailer-wellknown-0.1.8.tgz", + "integrity": "sha512-kxDRGWY6ZYtcKsCr4IMw5B9nST0EKK8Ay/JjgK96lBEdpt6nRl2ds5khTVv/BGLECbLIAzOsmIwP7KUt1C9frA==" + }, + "node_modules/nopt": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-7.2.0.tgz", + "integrity": "sha512-CVDtwCdhYIvnAzFoJ6NJ6dX3oga9/HyciQDnG1vQDjSLMeKLJ4A93ZqYKDrgYSr1FBY5/hMYC+2VCi24pgpkGA==", + "dev": true, + "dependencies": { + "abbrev": "^2.0.0" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/normalize-package-data": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", + "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", + "dependencies": { + "hosted-git-info": "^4.0.1", + "is-core-module": "^2.5.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/normalize-package-data/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/normalize-package-data/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "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/normalize-url": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm": { + "version": "8.19.4", + "resolved": "https://registry.npmjs.org/npm/-/npm-8.19.4.tgz", + "integrity": "sha512-3HANl8i9DKnUA89P4KEgVNN28EjSeDCmvEqbzOAuxCFDzdBZzjUl99zgnGpOUumvW5lvJo2HKcjrsc+tfyv1Hw==", + "bundleDependencies": [ + "@isaacs/string-locale-compare", + "@npmcli/arborist", + "@npmcli/ci-detect", + "@npmcli/config", + "@npmcli/fs", + "@npmcli/map-workspaces", + "@npmcli/package-json", + "@npmcli/run-script", + "abbrev", + "archy", + "cacache", + "chalk", + "chownr", + "cli-columns", + "cli-table3", + "columnify", + "fastest-levenshtein", + "fs-minipass", + "glob", + "graceful-fs", + "hosted-git-info", + "ini", + "init-package-json", + "is-cidr", + "json-parse-even-better-errors", + "libnpmaccess", + "libnpmdiff", + "libnpmexec", + "libnpmfund", + "libnpmhook", + "libnpmorg", + "libnpmpack", + "libnpmpublish", + "libnpmsearch", + "libnpmteam", + "libnpmversion", + "make-fetch-happen", + "minimatch", + "minipass", + "minipass-pipeline", + "mkdirp", + "mkdirp-infer-owner", + "ms", + "node-gyp", + "nopt", + "npm-audit-report", + "npm-install-checks", + "npm-package-arg", + "npm-pick-manifest", + "npm-profile", + "npm-registry-fetch", + "npm-user-validate", + "npmlog", + "opener", + "p-map", + "pacote", + "parse-conflict-json", + "proc-log", + "qrcode-terminal", + "read", + "read-package-json", + "read-package-json-fast", + "readdir-scoped-modules", + "rimraf", + "semver", + "ssri", + "tar", + "text-table", + "tiny-relative-date", + "treeverse", + "validate-npm-package-name", + "which", + "write-file-atomic" + ], + "dependencies": { + "@isaacs/string-locale-compare": "^1.1.0", + "@npmcli/arborist": "^5.6.3", + "@npmcli/ci-detect": "^2.0.0", + "@npmcli/config": "^4.2.1", + "@npmcli/fs": "^2.1.0", + "@npmcli/map-workspaces": "^2.0.3", + "@npmcli/package-json": "^2.0.0", + "@npmcli/run-script": "^4.2.1", + "abbrev": "~1.1.1", + "archy": "~1.0.0", + "cacache": "^16.1.3", + "chalk": "^4.1.2", + "chownr": "^2.0.0", + "cli-columns": "^4.0.0", + "cli-table3": "^0.6.2", + "columnify": "^1.6.0", + "fastest-levenshtein": "^1.0.12", + "fs-minipass": "^2.1.0", + "glob": "^8.0.1", + "graceful-fs": "^4.2.10", + "hosted-git-info": "^5.2.1", + "ini": "^3.0.1", + "init-package-json": "^3.0.2", + "is-cidr": "^4.0.2", + "json-parse-even-better-errors": "^2.3.1", + "libnpmaccess": "^6.0.4", + "libnpmdiff": "^4.0.5", + "libnpmexec": "^4.0.14", + "libnpmfund": "^3.0.5", + "libnpmhook": "^8.0.4", + "libnpmorg": "^4.0.4", + "libnpmpack": "^4.1.3", + "libnpmpublish": "^6.0.5", + "libnpmsearch": "^5.0.4", + "libnpmteam": "^4.0.4", + "libnpmversion": "^3.0.7", + "make-fetch-happen": "^10.2.0", + "minimatch": "^5.1.0", + "minipass": "^3.1.6", + "minipass-pipeline": "^1.2.4", + "mkdirp": "^1.0.4", + "mkdirp-infer-owner": "^2.0.0", + "ms": "^2.1.2", + "node-gyp": "^9.1.0", + "nopt": "^6.0.0", + "npm-audit-report": "^3.0.0", + "npm-install-checks": "^5.0.0", + "npm-package-arg": "^9.1.0", + "npm-pick-manifest": "^7.0.2", + "npm-profile": "^6.2.0", + "npm-registry-fetch": "^13.3.1", + "npm-user-validate": "^1.0.1", + "npmlog": "^6.0.2", + "opener": "^1.5.2", + "p-map": "^4.0.0", + "pacote": "^13.6.2", + "parse-conflict-json": "^2.0.2", + "proc-log": "^2.0.1", + "qrcode-terminal": "^0.12.0", + "read": "~1.0.7", + "read-package-json": "^5.0.2", + "read-package-json-fast": "^2.0.3", + "readdir-scoped-modules": "^1.1.0", + "rimraf": "^3.0.2", + "semver": "^7.3.7", + "ssri": "^9.0.1", + "tar": "^6.1.11", + "text-table": "~0.2.0", + "tiny-relative-date": "^1.3.0", + "treeverse": "^2.0.0", + "validate-npm-package-name": "^4.0.0", + "which": "^2.0.2", + "write-file-atomic": "^4.0.1" + }, + "bin": { + "npm": "bin/npm-cli.js", + "npx": "bin/npx-cli.js" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", + "dependencies": { + "path-key": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm/node_modules/@colors/colors": { + "version": "1.5.0", + "inBundle": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/npm/node_modules/@gar/promisify": { + "version": "1.1.3", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/@isaacs/string-locale-compare": { + "version": "1.1.0", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/@npmcli/arborist": { + "version": "5.6.3", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@isaacs/string-locale-compare": "^1.1.0", + "@npmcli/installed-package-contents": "^1.0.7", + "@npmcli/map-workspaces": "^2.0.3", + "@npmcli/metavuln-calculator": "^3.0.1", + "@npmcli/move-file": "^2.0.0", + "@npmcli/name-from-folder": "^1.0.1", + "@npmcli/node-gyp": "^2.0.0", + "@npmcli/package-json": "^2.0.0", + "@npmcli/query": "^1.2.0", + "@npmcli/run-script": "^4.1.3", + "bin-links": "^3.0.3", + "cacache": "^16.1.3", + "common-ancestor-path": "^1.0.1", + "hosted-git-info": "^5.2.1", + "json-parse-even-better-errors": "^2.3.1", + "json-stringify-nice": "^1.1.4", + "minimatch": "^5.1.0", + "mkdirp": "^1.0.4", + "mkdirp-infer-owner": "^2.0.0", + "nopt": "^6.0.0", + "npm-install-checks": "^5.0.0", + "npm-package-arg": "^9.0.0", + "npm-pick-manifest": "^7.0.2", + "npm-registry-fetch": "^13.0.0", + "npmlog": "^6.0.2", + "pacote": "^13.6.1", + "parse-conflict-json": "^2.0.1", + "proc-log": "^2.0.0", + "promise-all-reject-late": "^1.0.0", + "promise-call-limit": "^1.0.1", + "read-package-json-fast": "^2.0.2", + "readdir-scoped-modules": "^1.1.0", + "rimraf": "^3.0.2", + "semver": "^7.3.7", + "ssri": "^9.0.0", + "treeverse": "^2.0.0", + "walk-up-path": "^1.0.0" + }, + "bin": { + "arborist": "bin/index.js" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm/node_modules/@npmcli/ci-detect": { + "version": "2.0.0", + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16" + } + }, + "node_modules/npm/node_modules/@npmcli/config": { + "version": "4.2.2", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/map-workspaces": "^2.0.2", + "ini": "^3.0.0", + "mkdirp-infer-owner": "^2.0.0", + "nopt": "^6.0.0", + "proc-log": "^2.0.0", + "read-package-json-fast": "^2.0.3", + "semver": "^7.3.5", + "walk-up-path": "^1.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm/node_modules/@npmcli/disparity-colors": { + "version": "2.0.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "ansi-styles": "^4.3.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm/node_modules/@npmcli/fs": { + "version": "2.1.2", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@gar/promisify": "^1.1.3", + "semver": "^7.3.5" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm/node_modules/@npmcli/git": { + "version": "3.0.2", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/promise-spawn": "^3.0.0", + "lru-cache": "^7.4.4", + "mkdirp": "^1.0.4", + "npm-pick-manifest": "^7.0.0", + "proc-log": "^2.0.0", + "promise-inflight": "^1.0.1", + "promise-retry": "^2.0.1", + "semver": "^7.3.5", + "which": "^2.0.2" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm/node_modules/@npmcli/installed-package-contents": { + "version": "1.0.7", + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-bundled": "^1.1.1", + "npm-normalize-package-bin": "^1.0.1" + }, + "bin": { + "installed-package-contents": "index.js" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/npm/node_modules/@npmcli/installed-package-contents/node_modules/npm-bundled": { + "version": "1.1.2", + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-normalize-package-bin": "^1.0.1" + } + }, + "node_modules/npm/node_modules/@npmcli/map-workspaces": { + "version": "2.0.4", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/name-from-folder": "^1.0.1", + "glob": "^8.0.1", + "minimatch": "^5.0.1", + "read-package-json-fast": "^2.0.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm/node_modules/@npmcli/metavuln-calculator": { + "version": "3.1.1", + "inBundle": true, + "license": "ISC", + "dependencies": { + "cacache": "^16.0.0", + "json-parse-even-better-errors": "^2.3.1", + "pacote": "^13.0.3", + "semver": "^7.3.5" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm/node_modules/@npmcli/move-file": { + "version": "2.0.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm/node_modules/@npmcli/name-from-folder": { + "version": "1.0.1", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/@npmcli/node-gyp": { + "version": "2.0.0", + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm/node_modules/@npmcli/package-json": { + "version": "2.0.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "json-parse-even-better-errors": "^2.3.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm/node_modules/@npmcli/promise-spawn": { + "version": "3.0.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "infer-owner": "^1.0.4" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm/node_modules/@npmcli/query": { + "version": "1.2.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-package-arg": "^9.1.0", + "postcss-selector-parser": "^6.0.10", + "semver": "^7.3.7" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm/node_modules/@npmcli/run-script": { + "version": "4.2.1", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/node-gyp": "^2.0.0", + "@npmcli/promise-spawn": "^3.0.0", + "node-gyp": "^9.0.0", + "read-package-json-fast": "^2.0.3", + "which": "^2.0.2" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm/node_modules/@tootallnate/once": { + "version": "2.0.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, + "node_modules/npm/node_modules/abbrev": { + "version": "1.1.1", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/agent-base": { + "version": "6.0.2", + "inBundle": true, + "license": "MIT", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/npm/node_modules/agentkeepalive": { + "version": "4.2.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "debug": "^4.1.0", + "depd": "^1.1.2", + "humanize-ms": "^1.2.1" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/npm/node_modules/aggregate-error": { + "version": "3.1.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/ansi-regex": { + "version": "5.0.1", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/ansi-styles": { + "version": "4.3.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/npm/node_modules/aproba": { + "version": "2.0.0", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/archy": { + "version": "1.0.0", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/are-we-there-yet": { + "version": "3.0.1", + "inBundle": true, + "license": "ISC", + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm/node_modules/asap": { + "version": "2.0.6", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/balanced-match": { + "version": "1.0.2", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/bin-links": { + "version": "3.0.3", + "inBundle": true, + "license": "ISC", + "dependencies": { + "cmd-shim": "^5.0.0", + "mkdirp-infer-owner": "^2.0.0", + "npm-normalize-package-bin": "^2.0.0", + "read-cmd-shim": "^3.0.0", + "rimraf": "^3.0.0", + "write-file-atomic": "^4.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm/node_modules/bin-links/node_modules/npm-normalize-package-bin": { + "version": "2.0.0", + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm/node_modules/binary-extensions": { + "version": "2.2.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/brace-expansion": { + "version": "2.0.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/npm/node_modules/builtins": { + "version": "5.0.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "semver": "^7.0.0" + } + }, + "node_modules/npm/node_modules/cacache": { + "version": "16.1.3", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/fs": "^2.1.0", + "@npmcli/move-file": "^2.0.0", + "chownr": "^2.0.0", + "fs-minipass": "^2.1.0", + "glob": "^8.0.1", + "infer-owner": "^1.0.4", + "lru-cache": "^7.7.1", + "minipass": "^3.1.6", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "mkdirp": "^1.0.4", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^9.0.0", + "tar": "^6.1.11", + "unique-filename": "^2.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm/node_modules/chalk": { + "version": "4.1.2", + "inBundle": true, + "license": "MIT", + "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/npm/node_modules/chownr": { + "version": "2.0.0", + "inBundle": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/cidr-regex": { + "version": "3.1.1", + "inBundle": true, + "license": "BSD-2-Clause", + "dependencies": { + "ip-regex": "^4.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/clean-stack": { + "version": "2.2.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/npm/node_modules/cli-columns": { + "version": "4.0.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/npm/node_modules/cli-table3": { + "version": "0.6.2", + "inBundle": true, + "license": "MIT", + "dependencies": { + "string-width": "^4.2.0" + }, + "engines": { + "node": "10.* || >= 12.*" + }, + "optionalDependencies": { + "@colors/colors": "1.5.0" + } + }, + "node_modules/npm/node_modules/clone": { + "version": "1.0.4", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/npm/node_modules/cmd-shim": { + "version": "5.0.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "mkdirp-infer-owner": "^2.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm/node_modules/color-convert": { + "version": "2.0.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/npm/node_modules/color-name": { + "version": "1.1.4", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/color-support": { + "version": "1.1.3", + "inBundle": true, + "license": "ISC", + "bin": { + "color-support": "bin.js" + } + }, + "node_modules/npm/node_modules/columnify": { + "version": "1.6.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "strip-ansi": "^6.0.1", + "wcwidth": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/npm/node_modules/common-ancestor-path": { + "version": "1.0.1", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/concat-map": { + "version": "0.0.1", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/console-control-strings": { + "version": "1.1.0", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/cssesc": { + "version": "3.0.0", + "inBundle": true, + "license": "MIT", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm/node_modules/debug": { + "version": "4.3.4", + "inBundle": true, + "license": "MIT", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/npm/node_modules/debug/node_modules/ms": { + "version": "2.1.2", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/debuglog": { + "version": "1.0.1", + "inBundle": true, + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/npm/node_modules/defaults": { + "version": "1.0.3", + "inBundle": true, + "license": "MIT", + "dependencies": { + "clone": "^1.0.2" + } + }, + "node_modules/npm/node_modules/delegates": { + "version": "1.0.0", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/depd": { + "version": "1.1.2", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/npm/node_modules/dezalgo": { + "version": "1.0.4", + "inBundle": true, + "license": "ISC", + "dependencies": { + "asap": "^2.0.0", + "wrappy": "1" + } + }, + "node_modules/npm/node_modules/diff": { + "version": "5.1.0", + "inBundle": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/npm/node_modules/emoji-regex": { + "version": "8.0.0", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/encoding": { + "version": "0.1.13", + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "iconv-lite": "^0.6.2" + } + }, + "node_modules/npm/node_modules/env-paths": { + "version": "2.2.1", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/npm/node_modules/err-code": { + "version": "2.0.3", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/fastest-levenshtein": { + "version": "1.0.12", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/fs-minipass": { + "version": "2.1.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/npm/node_modules/fs.realpath": { + "version": "1.0.0", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/function-bind": { + "version": "1.1.1", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/gauge": { + "version": "4.0.4", + "inBundle": true, + "license": "ISC", + "dependencies": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.3", + "console-control-strings": "^1.1.0", + "has-unicode": "^2.0.1", + "signal-exit": "^3.0.7", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.5" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm/node_modules/glob": { + "version": "8.0.3", + "inBundle": true, + "license": "ISC", + "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/npm/node_modules/graceful-fs": { + "version": "4.2.10", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/has": { + "version": "1.0.3", + "inBundle": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/npm/node_modules/has-flag": { + "version": "4.0.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/has-unicode": { + "version": "2.0.1", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/hosted-git-info": { + "version": "5.2.1", + "inBundle": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^7.5.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm/node_modules/http-cache-semantics": { + "version": "4.1.1", + "inBundle": true, + "license": "BSD-2-Clause" + }, + "node_modules/npm/node_modules/http-proxy-agent": { + "version": "5.0.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/npm/node_modules/https-proxy-agent": { + "version": "5.0.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/npm/node_modules/humanize-ms": { + "version": "1.2.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "ms": "^2.0.0" + } + }, + "node_modules/npm/node_modules/iconv-lite": { + "version": "0.6.3", + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm/node_modules/ignore-walk": { + "version": "5.0.1", + "inBundle": true, + "license": "ISC", + "dependencies": { + "minimatch": "^5.0.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm/node_modules/imurmurhash": { + "version": "0.1.4", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/npm/node_modules/indent-string": { + "version": "4.0.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/infer-owner": { + "version": "1.0.4", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/inflight": { + "version": "1.0.6", + "inBundle": true, + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/npm/node_modules/inherits": { + "version": "2.0.4", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/ini": { + "version": "3.0.1", + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm/node_modules/init-package-json": { + "version": "3.0.2", + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-package-arg": "^9.0.1", + "promzard": "^0.3.0", + "read": "^1.0.7", + "read-package-json": "^5.0.0", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4", + "validate-npm-package-name": "^4.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm/node_modules/ip": { + "version": "2.0.0", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/ip-regex": { + "version": "4.3.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/is-cidr": { + "version": "4.0.2", + "inBundle": true, + "license": "BSD-2-Clause", + "dependencies": { + "cidr-regex": "^3.1.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/is-core-module": { + "version": "2.10.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/npm/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/is-lambda": { + "version": "1.0.1", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/isexe": { + "version": "2.0.0", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/json-stringify-nice": { + "version": "1.1.4", + "inBundle": true, + "license": "ISC", + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/jsonparse": { + "version": "1.3.1", + "engines": [ + "node >= 0.2.0" + ], + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/just-diff": { + "version": "5.1.1", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/just-diff-apply": { + "version": "5.4.1", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/libnpmaccess": { + "version": "6.0.4", + "inBundle": true, + "license": "ISC", + "dependencies": { + "aproba": "^2.0.0", + "minipass": "^3.1.1", + "npm-package-arg": "^9.0.1", + "npm-registry-fetch": "^13.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm/node_modules/libnpmdiff": { + "version": "4.0.5", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/disparity-colors": "^2.0.0", + "@npmcli/installed-package-contents": "^1.0.7", + "binary-extensions": "^2.2.0", + "diff": "^5.1.0", + "minimatch": "^5.0.1", + "npm-package-arg": "^9.0.1", + "pacote": "^13.6.1", + "tar": "^6.1.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm/node_modules/libnpmexec": { + "version": "4.0.14", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/arborist": "^5.6.3", + "@npmcli/ci-detect": "^2.0.0", + "@npmcli/fs": "^2.1.1", + "@npmcli/run-script": "^4.2.0", + "chalk": "^4.1.0", + "mkdirp-infer-owner": "^2.0.0", + "npm-package-arg": "^9.0.1", + "npmlog": "^6.0.2", + "pacote": "^13.6.1", + "proc-log": "^2.0.0", + "read": "^1.0.7", + "read-package-json-fast": "^2.0.2", + "semver": "^7.3.7", + "walk-up-path": "^1.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm/node_modules/libnpmfund": { + "version": "3.0.5", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/arborist": "^5.6.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm/node_modules/libnpmhook": { + "version": "8.0.4", + "inBundle": true, + "license": "ISC", + "dependencies": { + "aproba": "^2.0.0", + "npm-registry-fetch": "^13.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm/node_modules/libnpmorg": { + "version": "4.0.4", + "inBundle": true, + "license": "ISC", + "dependencies": { + "aproba": "^2.0.0", + "npm-registry-fetch": "^13.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm/node_modules/libnpmpack": { + "version": "4.1.3", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/run-script": "^4.1.3", + "npm-package-arg": "^9.0.1", + "pacote": "^13.6.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm/node_modules/libnpmpublish": { + "version": "6.0.5", + "inBundle": true, + "license": "ISC", + "dependencies": { + "normalize-package-data": "^4.0.0", + "npm-package-arg": "^9.0.1", + "npm-registry-fetch": "^13.0.0", + "semver": "^7.3.7", + "ssri": "^9.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm/node_modules/libnpmsearch": { + "version": "5.0.4", + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-registry-fetch": "^13.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm/node_modules/libnpmteam": { + "version": "4.0.4", + "inBundle": true, + "license": "ISC", + "dependencies": { + "aproba": "^2.0.0", + "npm-registry-fetch": "^13.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm/node_modules/libnpmversion": { + "version": "3.0.7", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/git": "^3.0.0", + "@npmcli/run-script": "^4.1.3", + "json-parse-even-better-errors": "^2.3.1", + "proc-log": "^2.0.0", + "semver": "^7.3.7" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm/node_modules/lru-cache": { + "version": "7.13.2", + "inBundle": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/npm/node_modules/make-fetch-happen": { + "version": "10.2.1", + "inBundle": true, + "license": "ISC", + "dependencies": { + "agentkeepalive": "^4.2.1", + "cacache": "^16.1.0", + "http-cache-semantics": "^4.1.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^7.7.1", + "minipass": "^3.1.6", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^2.0.3", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^7.0.0", + "ssri": "^9.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm/node_modules/minimatch": { + "version": "5.1.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/minipass": { + "version": "3.3.4", + "inBundle": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/minipass-collect": { + "version": "1.0.2", + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/npm/node_modules/minipass-fetch": { + "version": "2.1.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "minipass": "^3.1.6", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + }, + "optionalDependencies": { + "encoding": "^0.1.13" + } + }, + "node_modules/npm/node_modules/minipass-flush": { + "version": "1.0.5", + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/npm/node_modules/minipass-json-stream": { + "version": "1.0.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "jsonparse": "^1.3.1", + "minipass": "^3.0.0" + } + }, + "node_modules/npm/node_modules/minipass-pipeline": { + "version": "1.2.4", + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/minipass-sized": { + "version": "1.0.3", + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/minizlib": { + "version": "2.1.2", + "inBundle": true, + "license": "MIT", + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/npm/node_modules/mkdirp": { + "version": "1.0.4", + "inBundle": true, + "license": "MIT", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/mkdirp-infer-owner": { + "version": "2.0.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "chownr": "^2.0.0", + "infer-owner": "^1.0.4", + "mkdirp": "^1.0.3" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/ms": { + "version": "2.1.3", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/mute-stream": { + "version": "0.0.8", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/negotiator": { + "version": "0.6.3", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/npm/node_modules/node-gyp": { + "version": "9.1.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "env-paths": "^2.2.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^10.0.3", + "nopt": "^5.0.0", + "npmlog": "^6.0.0", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.2", + "which": "^2.0.2" + }, + "bin": { + "node-gyp": "bin/node-gyp.js" + }, + "engines": { + "node": "^12.22 || ^14.13 || >=16" + } + }, + "node_modules/npm/node_modules/node-gyp/node_modules/brace-expansion": { + "version": "1.1.11", + "inBundle": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/npm/node_modules/node-gyp/node_modules/glob": { + "version": "7.2.3", + "inBundle": true, + "license": "ISC", + "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/npm/node_modules/node-gyp/node_modules/minimatch": { + "version": "3.1.2", + "inBundle": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/npm/node_modules/node-gyp/node_modules/nopt": { + "version": "5.0.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/npm/node_modules/nopt": { + "version": "6.0.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "abbrev": "^1.0.0" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm/node_modules/normalize-package-data": { + "version": "4.0.1", + "inBundle": true, + "license": "BSD-2-Clause", + "dependencies": { + "hosted-git-info": "^5.0.0", + "is-core-module": "^2.8.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm/node_modules/npm-audit-report": { + "version": "3.0.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "chalk": "^4.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm/node_modules/npm-bundled": { + "version": "2.0.1", + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-normalize-package-bin": "^2.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm/node_modules/npm-bundled/node_modules/npm-normalize-package-bin": { + "version": "2.0.0", + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm/node_modules/npm-install-checks": { + "version": "5.0.0", + "inBundle": true, + "license": "BSD-2-Clause", + "dependencies": { + "semver": "^7.1.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm/node_modules/npm-normalize-package-bin": { + "version": "1.0.1", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/npm-package-arg": { + "version": "9.1.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "hosted-git-info": "^5.0.0", + "proc-log": "^2.0.1", + "semver": "^7.3.5", + "validate-npm-package-name": "^4.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm/node_modules/npm-packlist": { + "version": "5.1.3", + "inBundle": true, + "license": "ISC", + "dependencies": { + "glob": "^8.0.1", + "ignore-walk": "^5.0.1", + "npm-bundled": "^2.0.0", + "npm-normalize-package-bin": "^2.0.0" + }, + "bin": { + "npm-packlist": "bin/index.js" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm/node_modules/npm-packlist/node_modules/npm-normalize-package-bin": { + "version": "2.0.0", + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm/node_modules/npm-pick-manifest": { + "version": "7.0.2", + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-install-checks": "^5.0.0", + "npm-normalize-package-bin": "^2.0.0", + "npm-package-arg": "^9.0.0", + "semver": "^7.3.5" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm/node_modules/npm-pick-manifest/node_modules/npm-normalize-package-bin": { + "version": "2.0.0", + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm/node_modules/npm-profile": { + "version": "6.2.1", + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-registry-fetch": "^13.0.1", + "proc-log": "^2.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm/node_modules/npm-registry-fetch": { + "version": "13.3.1", + "inBundle": true, + "license": "ISC", + "dependencies": { + "make-fetch-happen": "^10.0.6", + "minipass": "^3.1.6", + "minipass-fetch": "^2.0.3", + "minipass-json-stream": "^1.0.1", + "minizlib": "^2.1.2", + "npm-package-arg": "^9.0.1", + "proc-log": "^2.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm/node_modules/npm-user-validate": { + "version": "1.0.1", + "inBundle": true, + "license": "BSD-2-Clause" + }, + "node_modules/npm/node_modules/npmlog": { + "version": "6.0.2", + "inBundle": true, + "license": "ISC", + "dependencies": { + "are-we-there-yet": "^3.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^4.0.3", + "set-blocking": "^2.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm/node_modules/once": { + "version": "1.4.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/npm/node_modules/opener": { + "version": "1.5.2", + "inBundle": true, + "license": "(WTFPL OR MIT)", + "bin": { + "opener": "bin/opener-bin.js" + } + }, + "node_modules/npm/node_modules/p-map": { + "version": "4.0.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm/node_modules/pacote": { + "version": "13.6.2", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/git": "^3.0.0", + "@npmcli/installed-package-contents": "^1.0.7", + "@npmcli/promise-spawn": "^3.0.0", + "@npmcli/run-script": "^4.1.0", + "cacache": "^16.0.0", + "chownr": "^2.0.0", + "fs-minipass": "^2.1.0", + "infer-owner": "^1.0.4", + "minipass": "^3.1.6", + "mkdirp": "^1.0.4", + "npm-package-arg": "^9.0.0", + "npm-packlist": "^5.1.0", + "npm-pick-manifest": "^7.0.0", + "npm-registry-fetch": "^13.0.1", + "proc-log": "^2.0.0", + "promise-retry": "^2.0.1", + "read-package-json": "^5.0.0", + "read-package-json-fast": "^2.0.3", + "rimraf": "^3.0.2", + "ssri": "^9.0.0", + "tar": "^6.1.11" + }, + "bin": { + "pacote": "lib/bin.js" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm/node_modules/parse-conflict-json": { + "version": "2.0.2", + "inBundle": true, + "license": "ISC", + "dependencies": { + "json-parse-even-better-errors": "^2.3.1", + "just-diff": "^5.0.1", + "just-diff-apply": "^5.2.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm/node_modules/path-is-absolute": { + "version": "1.0.1", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm/node_modules/postcss-selector-parser": { + "version": "6.0.10", + "inBundle": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm/node_modules/proc-log": { + "version": "2.0.1", + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm/node_modules/promise-all-reject-late": { + "version": "1.0.1", + "inBundle": true, + "license": "ISC", + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/promise-call-limit": { + "version": "1.0.1", + "inBundle": true, + "license": "ISC", + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/promise-inflight": { + "version": "1.0.1", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/promise-retry": { + "version": "2.0.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "err-code": "^2.0.2", + "retry": "^0.12.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/promzard": { + "version": "0.3.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "read": "1" + } + }, + "node_modules/npm/node_modules/qrcode-terminal": { + "version": "0.12.0", + "inBundle": true, + "bin": { + "qrcode-terminal": "bin/qrcode-terminal.js" + } + }, + "node_modules/npm/node_modules/read": { + "version": "1.0.7", + "inBundle": true, + "license": "ISC", + "dependencies": { + "mute-stream": "~0.0.4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/npm/node_modules/read-cmd-shim": { + "version": "3.0.0", + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm/node_modules/read-package-json": { + "version": "5.0.2", + "inBundle": true, + "license": "ISC", + "dependencies": { + "glob": "^8.0.1", + "json-parse-even-better-errors": "^2.3.1", + "normalize-package-data": "^4.0.0", + "npm-normalize-package-bin": "^2.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm/node_modules/read-package-json-fast": { + "version": "2.0.3", + "inBundle": true, + "license": "ISC", + "dependencies": { + "json-parse-even-better-errors": "^2.3.0", + "npm-normalize-package-bin": "^1.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/read-package-json/node_modules/npm-normalize-package-bin": { + "version": "2.0.0", + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm/node_modules/readable-stream": { + "version": "3.6.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/npm/node_modules/readdir-scoped-modules": { + "version": "1.1.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "debuglog": "^1.0.1", + "dezalgo": "^1.0.0", + "graceful-fs": "^4.1.2", + "once": "^1.3.0" + } + }, + "node_modules/npm/node_modules/retry": { + "version": "0.12.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/npm/node_modules/rimraf": { + "version": "3.0.2", + "inBundle": true, + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/rimraf/node_modules/brace-expansion": { + "version": "1.1.11", + "inBundle": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/npm/node_modules/rimraf/node_modules/glob": { + "version": "7.2.3", + "inBundle": true, + "license": "ISC", + "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/npm/node_modules/rimraf/node_modules/minimatch": { + "version": "3.1.2", + "inBundle": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/npm/node_modules/safe-buffer": { + "version": "5.2.1", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/safer-buffer": { + "version": "2.1.2", + "inBundle": true, + "license": "MIT", + "optional": true + }, + "node_modules/npm/node_modules/semver": { + "version": "7.3.7", + "inBundle": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/semver/node_modules/lru-cache": { + "version": "6.0.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/set-blocking": { + "version": "2.0.0", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/signal-exit": { + "version": "3.0.7", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/smart-buffer": { + "version": "4.2.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/npm/node_modules/socks": { + "version": "2.7.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "ip": "^2.0.0", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.13.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/npm/node_modules/socks-proxy-agent": { + "version": "7.0.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "agent-base": "^6.0.2", + "debug": "^4.3.3", + "socks": "^2.6.2" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/npm/node_modules/spdx-correct": { + "version": "3.1.1", + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/npm/node_modules/spdx-exceptions": { + "version": "2.3.0", + "inBundle": true, + "license": "CC-BY-3.0" + }, + "node_modules/npm/node_modules/spdx-expression-parse": { + "version": "3.0.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/npm/node_modules/spdx-license-ids": { + "version": "3.0.11", + "inBundle": true, + "license": "CC0-1.0" + }, + "node_modules/npm/node_modules/ssri": { + "version": "9.0.1", + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.1.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm/node_modules/string_decoder": { + "version": "1.3.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/npm/node_modules/string-width": { + "version": "4.2.3", + "inBundle": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/strip-ansi": { + "version": "6.0.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/supports-color": { + "version": "7.2.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/tar": { + "version": "6.1.11", + "inBundle": true, + "license": "ISC", + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^3.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/npm/node_modules/text-table": { + "version": "0.2.0", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/tiny-relative-date": { + "version": "1.3.0", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/treeverse": { + "version": "2.0.0", + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm/node_modules/unique-filename": { + "version": "2.0.1", + "inBundle": true, + "license": "ISC", + "dependencies": { + "unique-slug": "^3.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm/node_modules/unique-slug": { + "version": "3.0.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm/node_modules/util-deprecate": { + "version": "1.0.2", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/validate-npm-package-license": { + "version": "3.0.4", + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/npm/node_modules/validate-npm-package-name": { + "version": "4.0.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "builtins": "^5.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm/node_modules/walk-up-path": { + "version": "1.0.0", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/wcwidth": { + "version": "1.0.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "defaults": "^1.0.3" + } + }, + "node_modules/npm/node_modules/which": { + "version": "2.0.2", + "inBundle": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/npm/node_modules/wide-align": { + "version": "1.1.5", + "inBundle": true, + "license": "ISC", + "dependencies": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, + "node_modules/npm/node_modules/wrappy": { + "version": "1.0.2", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/write-file-atomic": { + "version": "4.0.2", + "inBundle": true, + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.7" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm/node_modules/yallist": { + "version": "4.0.0", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npmlog": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", + "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", + "optional": true, + "dependencies": { + "are-we-there-yet": "^3.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^4.0.3", + "set-blocking": "^2.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/nyc": { + "version": "15.0.0", + "resolved": "https://registry.npmjs.org/nyc/-/nyc-15.0.0.tgz", + "integrity": "sha512-qcLBlNCKMDVuKb7d1fpxjPR8sHeMVX0CHarXAVzrVWoFrigCkYR8xcrjfXSPi5HXM7EU78L6ywO7w1c5rZNCNg==", + "dev": true, + "dependencies": { + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "caching-transform": "^4.0.0", + "convert-source-map": "^1.7.0", + "decamelize": "^1.2.0", + "find-cache-dir": "^3.2.0", + "find-up": "^4.1.0", + "foreground-child": "^2.0.0", + "glob": "^7.1.6", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-hook": "^3.0.0", + "istanbul-lib-instrument": "^4.0.0", + "istanbul-lib-processinfo": "^2.0.2", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.0.0", + "js-yaml": "^3.13.1", + "make-dir": "^3.0.0", + "node-preload": "^0.2.0", + "p-map": "^3.0.0", + "process-on-spawn": "^1.0.0", + "resolve-from": "^5.0.0", + "rimraf": "^3.0.0", + "signal-exit": "^3.0.2", + "spawn-wrap": "^2.0.0", + "test-exclude": "^6.0.0", + "uuid": "^3.3.3", + "yargs": "^15.0.2" + }, + "bin": { + "nyc": "bin/nyc.js" + }, + "engines": { + "node": ">=8.9" + } + }, + "node_modules/nyc/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/nyc/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/nyc/node_modules/cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "node_modules/nyc/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/nyc/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/nyc/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/nyc/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/nyc/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/nyc/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/nyc/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/nyc/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/nyc/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/nyc/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/nyc/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/nyc/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nyc/node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "dev": true + }, + "node_modules/nyc/node_modules/yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "dev": true, + "dependencies": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nyc/node_modules/yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dev": true, + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "engines": { + "node": "*" + } + }, + "node_modules/object-assign": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.0.1.tgz", + "integrity": "sha512-c6legOHWepAbWnp3j5SRUMpxCXBKI4rD7A5Osn9IzZ8w4O/KccXdW0lqdkQKbpk0eHGjNgKihgzY6WuEq99Tfw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-hash": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-1.3.1.tgz", + "integrity": "sha512-OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA==", + "dev": true, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/on-error": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/on-error/-/on-error-2.1.0.tgz", + "integrity": "sha512-wpKXxCW2wXLI+9DB9DDBVuOCN9C5rjyaP4GWwqhgrSd2ys1Vyc9yGaPmC5HSOdQ30x9zCLozi9mHx3lm01E+LQ==" + }, + "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==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", + "integrity": "sha512-6vaNInhu+CHxtONf3zw3vq4SP2DOQhjBvIa3rNcG0+P7eKWlYH6Peu7rHizSloRU2EwMz6GraLieis9Ac9+p1w==", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==", + "dev": true, + "dependencies": { + "mimic-fn": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dev": true, + "dependencies": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/os": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/os/-/os-0.1.1.tgz", + "integrity": "sha512-jg06S2xr5De63mLjZVJDf3/k37tpjppr2LR7MUOsxv8XuUCVpCnvbCksXCBcB5gQqQf/K0+87WGTRlAj5q7r1A==" + }, + "node_modules/os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/p-each-series": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-2.2.0.tgz", + "integrity": "sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-filter": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-filter/-/p-filter-2.1.0.tgz", + "integrity": "sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==", + "dependencies": { + "p-map": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-filter/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-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", + "engines": { + "node": ">=4" + } + }, + "node_modules/p-is-promise": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-3.0.0.tgz", + "integrity": "sha512-Wo8VsW4IRQSKVXsJCn7TomUaVtyfjVDn3nUP7kE967BQk0CwFpdbZs0X0uk5sW9mkBa9eNM7hCMaG93WUAwxYQ==", + "engines": { + "node": ">=8" + } + }, + "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": "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/p-map": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", + "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", + "dev": true, + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-reduce": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-2.1.0.tgz", + "integrity": "sha512-2USApvnsutq8uoxZBGbbWM0JIYLiEMJ9RlaN7fAzVNb9OZN0SHjjTTfIcb667XynS5Y1VhwDJVDa72TnPzAYWw==", + "engines": { + "node": ">=8" + } + }, + "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/package-hash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-4.0.0.tgz", + "integrity": "sha512-whdkPIooSu/bASggZ96BWVvZTRMOFxnyUG5PnTSGKoJE2gd5mbVNmR2Nj20QFzxYYgAXpoqC+AiXzl+UMRh7zQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.15", + "hasha": "^5.0.0", + "lodash.flattendeep": "^4.4.0", + "release-zalgo": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "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==", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "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==", + "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/parse-ms": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-2.1.0.tgz", + "integrity": "sha512-kHt7kzLoS9VBZfUsiKjv43mr91ea+U05EyKkEtqp7vNbHxmaVuEqN7XxeEVnGrMtYOAxGrDElSi96K7EgO1zCA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "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": { + "version": "0.12.7", + "resolved": "https://registry.npmjs.org/path/-/path-0.12.7.tgz", + "integrity": "sha512-aXXC6s+1w7otVF9UletFkFcDsJeO7lSZBPUQhtb5O0xJe8LtYhj/GxldoL09bBj9+ZmE2hNoHqQSFMN5fikh4Q==", + "dependencies": { + "process": "^0.11.1", + "util": "^0.10.3" + } + }, + "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==", + "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==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==", + "dev": true + }, + "node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "engines": { + "node": ">=4" + } + }, + "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-scurry": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", + "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", + "dev": true, + "dependencies": { + "lru-cache": "^9.1.1 || ^10.0.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", + "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==", + "dev": true, + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/path-scurry/node_modules/minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "dev": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "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==", + "engines": { + "node": ">=8" + } + }, + "node_modules/pathval": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", + "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==" + }, + "node_modules/pg-connection-string": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.6.2.tgz", + "integrity": "sha512-ch6OwaeaPYcova4kKZ15sbJ2hKb/VP48ZD2gE7i1J+L4MspCtBMAx8nMgz7bksc7IojCIIWuEhHibSMFH8m8oA==" + }, + "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==", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "engines": { + "node": ">=4" + } + }, + "node_modules/pino": { + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/pino/-/pino-6.6.1.tgz", + "integrity": "sha512-DOgm7rn6ctBkBYemHXSLj7+j3o3U1q1FWBXbHcprur8mA93QcJSycEkEqhqKiFB9Mx/3Qld2FGr6+9yfQza0kA==", + "dependencies": { + "fast-redact": "^2.0.0", + "fast-safe-stringify": "^2.0.7", + "flatstr": "^1.0.12", + "pino-std-serializers": "^2.4.2", + "quick-format-unescaped": "^4.0.1", + "sonic-boom": "^1.0.2" + }, + "bin": { + "pino": "bin.js" + } + }, + "node_modules/pino-std-serializers": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-2.5.0.tgz", + "integrity": "sha512-wXqbqSrIhE58TdrxxlfLwU9eDhrzppQDvGhBEr1gYbzzM4KKo3Y63gSjiDXRKLVS2UOXdPNR2v+KnQgNrs+xUg==" + }, + "node_modules/pkg-conf": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-2.1.0.tgz", + "integrity": "sha512-C+VUP+8jis7EsQZIhDYmS5qlNtjv2yP4SNtjXK9AP1ZcTRlnSfuumaTnRfYZnYgUUYVIKqL0fRvmUGDV2fmp6g==", + "dependencies": { + "find-up": "^2.0.0", + "load-json-file": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/pkg-conf/node_modules/find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", + "dependencies": { + "locate-path": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/pkg-conf/node_modules/locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", + "dependencies": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/pkg-conf/node_modules/p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dependencies": { + "p-try": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/pkg-conf/node_modules/p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", + "dependencies": { + "p-limit": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/pkg-conf/node_modules/p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", + "engines": { + "node": ">=4" + } + }, + "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-config": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pkg-config/-/pkg-config-1.1.1.tgz", + "integrity": "sha512-ft/WI9YK6FuTuw4Ql+QUaNXtm/ASQNqDUUsZEgFZKyFpW6amyP8Gx01xrRs8KdiNbbqXfYxkOXplpq1euWbOjw==", + "dev": true, + "dependencies": { + "debug-log": "^1.0.0", + "find-root": "^1.0.0", + "xtend": "^4.0.1" + }, + "engines": { + "node": ">=0.10" + } + }, + "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/pkg-dir/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/pkg-dir/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/pkg-dir/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/pkg-dir/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/pluralize": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz", + "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/portscanner": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/portscanner/-/portscanner-2.2.0.tgz", + "integrity": "sha512-IFroCz/59Lqa2uBvzK3bKDbDDIEaAY8XJ1jFxcLWTqosrsc32//P4VuSB2vZXoHiHqOmx8B5L5hnKOxL/7FlPw==", + "dependencies": { + "async": "^2.6.0", + "is-number-like": "^1.0.3" + }, + "engines": { + "node": ">=0.4", + "npm": ">=1.0.0" + } + }, + "node_modules/portscanner/node_modules/async": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", + "dependencies": { + "lodash": "^4.17.14" + } + }, + "node_modules/possible-typed-array-names": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/postman-collection": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/postman-collection/-/postman-collection-4.1.1.tgz", + "integrity": "sha512-ODpJtlf8r99DMcTU7gFmi/yvQYckFzcuE6zL/fWnyrFT34ugdCBFlX+DN7M+AnP6lmR822fv5s60H4DnL4+fAg==", + "dev": true, + "dependencies": { + "faker": "5.5.3", + "file-type": "3.9.0", + "http-reasons": "0.1.0", + "iconv-lite": "0.6.3", + "liquid-json": "0.3.1", + "lodash": "4.17.21", + "mime-format": "2.0.1", + "mime-types": "2.1.34", + "postman-url-encoder": "3.0.5", + "semver": "7.3.5", + "uuid": "8.3.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/postman-collection-transformer": { + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/postman-collection-transformer/-/postman-collection-transformer-4.1.6.tgz", + "integrity": "sha512-xvdQb6sZoWcG9xZXUPSuxocjcd6WCZlINlGGiuHdSfxhgiwQhj9qhF0JRFbagZ8xB0+pYUairD5MiCENc6DEVA==", + "dev": true, + "dependencies": { + "commander": "8.3.0", + "inherits": "2.0.4", + "lodash": "4.17.21", + "semver": "7.3.5", + "strip-json-comments": "3.1.1" + }, + "bin": { + "postman-collection-transformer": "bin/transform-collection.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/postman-collection-transformer/node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "dev": true, + "engines": { + "node": ">= 12" + } + }, + "node_modules/postman-collection-transformer/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/postman-collection-transformer/node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/postman-collection-transformer/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==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/postman-collection/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postman-collection/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/postman-collection/node_modules/mime-db": { + "version": "1.51.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", + "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/postman-collection/node_modules/mime-types": { + "version": "2.1.34", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", + "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", + "dev": true, + "dependencies": { + "mime-db": "1.51.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/postman-collection/node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/postman-collection/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==", + "dev": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/postman-request": { + "version": "2.88.1-postman.31", + "resolved": "https://registry.npmjs.org/postman-request/-/postman-request-2.88.1-postman.31.tgz", + "integrity": "sha512-OJbYqP7ItxQ84yHyuNpDywCZB0HYbpHJisMQ9lb1cSL3N5H3Td6a2+3l/a74UMd3u82BiGC5yQyYmdOIETP/nQ==", + "dev": true, + "dependencies": { + "@postman/form-data": "~3.1.1", + "@postman/tunnel-agent": "^0.6.3", + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "brotli": "~1.3.2", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "har-validator": "~5.1.3", + "http-signature": "~1.3.1", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "stream-length": "^1.0.2", + "tough-cookie": "~2.5.0", + "uuid": "^3.3.2" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/postman-request/node_modules/qs": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", + "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/postman-request/node_modules/tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dev": true, + "dependencies": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/postman-runtime": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/postman-runtime/-/postman-runtime-7.29.0.tgz", + "integrity": "sha512-eXxHREE/fUpohkGPRgBY1YccSGx9cyW3mtGiPyIE4zD5fYzasgBHqW6kbEND3Xrd3yf/uht/YI1H8O7J1+A1+w==", + "dev": true, + "dependencies": { + "async": "3.2.3", + "aws4": "1.11.0", + "handlebars": "4.7.7", + "httpntlm": "1.7.7", + "js-sha512": "0.8.0", + "lodash": "4.17.21", + "mime-types": "2.1.34", + "node-oauth1": "1.3.0", + "performance-now": "2.1.0", + "postman-collection": "4.1.1", + "postman-request": "2.88.1-postman.31", + "postman-sandbox": "4.0.6", + "postman-url-encoder": "3.0.5", + "serialised-error": "1.1.3", + "tough-cookie": "3.0.1", + "uuid": "8.3.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/postman-runtime/node_modules/async": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.3.tgz", + "integrity": "sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==", + "dev": true + }, + "node_modules/postman-runtime/node_modules/aws4": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", + "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", + "dev": true + }, + "node_modules/postman-runtime/node_modules/mime-db": { + "version": "1.51.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", + "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/postman-runtime/node_modules/mime-types": { + "version": "2.1.34", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", + "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", + "dev": true, + "dependencies": { + "mime-db": "1.51.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/postman-runtime/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==", + "dev": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/postman-sandbox": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/postman-sandbox/-/postman-sandbox-4.0.6.tgz", + "integrity": "sha512-PPRanSNEE4zy3kO7CeSBHmAfJnGdD9ecHY/Mjh26CQuZZarGkNO8c0U/n+xX3+5M1BRNc82UYq6YCtdsSDqcng==", + "dev": true, + "dependencies": { + "lodash": "4.17.21", + "teleport-javascript": "1.0.0", + "uvm": "2.0.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/postman-url-encoder": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/postman-url-encoder/-/postman-url-encoder-3.0.5.tgz", + "integrity": "sha512-jOrdVvzUXBC7C+9gkIkpDJ3HIxOHTIqjpQ4C1EMt1ZGeMvSEpbFCKq23DEfgsj46vMnDgyQf+1ZLp2Wm+bKSsA==", + "dev": true, + "dependencies": { + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/prebuild-install": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.2.tgz", + "integrity": "sha512-UnNke3IQb6sgarcZIDU3gbMeTp/9SSU1DAIkil7PrqG1vZlBtY5msYccSKSHDqa3hNg436IXK+SNImReuA1wEQ==", + "dependencies": { + "detect-libc": "^2.0.0", + "expand-template": "^2.0.3", + "github-from-package": "0.0.0", + "minimist": "^1.2.3", + "mkdirp-classic": "^0.5.3", + "napi-build-utils": "^1.0.1", + "node-abi": "^3.3.0", + "pump": "^3.0.0", + "rc": "^1.2.7", + "simple-get": "^4.0.0", + "tar-fs": "^2.0.0", + "tunnel-agent": "^0.6.0" + }, + "bin": { + "prebuild-install": "bin.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/pretty-ms": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-7.0.1.tgz", + "integrity": "sha512-973driJZvxiGOQ5ONsFhOF/DtzPMOMtgC11kCpUrPGMTgqp2q/1gwzCquocrN33is0VZ5GFHXZYMM9l6h67v2Q==", + "dev": true, + "dependencies": { + "parse-ms": "^2.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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-on-spawn": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/process-on-spawn/-/process-on-spawn-1.0.0.tgz", + "integrity": "sha512-1WsPDsUSMmZH5LeMLegqkPDrsGgsWwk1Exipy2hvB0o/F0ASzbpIctSCcZIK1ykJvtTJULEH+20WOFjMvGnCTg==", + "dev": true, + "dependencies": { + "fromentries": "^1.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", + "optional": true + }, + "node_modules/promise-polyfill": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/promise-polyfill/-/promise-polyfill-2.1.4.tgz", + "integrity": "sha512-/DVUJXyaiYr7Pu0q2qPV/OtABpiukAHswJb9VV/tUVFsvC5iZUTyVPxfEr8cIVatGa5/Mxeli8QMyzAMBmoiYg==" + }, + "node_modules/promise-retry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", + "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", + "optional": true, + "dependencies": { + "err-code": "^2.0.2", + "retry": "^0.12.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "dev": true, + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/prop-types/node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/proto-list": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", + "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==" + }, + "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/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, + "node_modules/psl": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==" + }, + "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.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==", + "engines": { + "node": ">=0.6.0", + "teleport": ">=0.2.0" + } + }, + "node_modules/qs": { + "version": "6.10.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", + "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", + "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==", + "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/quick-lru": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", + "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", + "engines": { + "node": ">=8" + } + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "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/rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" + } + }, + "node_modules/rc/node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" + }, + "node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "dev": true + }, + "node_modules/read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dependencies": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "dependencies": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg-up/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==", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg-up/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==", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg-up/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/read-pkg-up/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==", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg/node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" + }, + "node_modules/read-pkg/node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/read-pkg/node_modules/type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "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/redent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "dependencies": { + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/redeyed": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/redeyed/-/redeyed-2.1.1.tgz", + "integrity": "sha512-FNpGGo1DycYAdnrKFxCMmKYgo/mILAqtRYbkdQD8Ep/Hk2PQ5+aEAEx+IU713RTDmuBaH0c8P5ZozurNu5ObRQ==", + "dependencies": { + "esprima": "~4.0.0" + } + }, + "node_modules/reduce-flatten": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-1.0.1.tgz", + "integrity": "sha512-j5WfFJfc9CoXv/WbwVLHq74i/hdTUpy+iNC534LxczMRP67vJeK3V9JOdnL0N1cIRbn9mYhE2yVjvvKXDxvNXQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/referrer-policy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/referrer-policy/-/referrer-policy-1.2.0.tgz", + "integrity": "sha512-LgQJIuS6nAy1Jd88DCQRemyE3mS+ispwlqMk3b0yjZ257fI1v9c+/p6SD5gP5FGyXUIgrNOAfmyioHwZtYv2VA==", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", + "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "set-function-name": "^2.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexpp": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", + "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", + "dev": true, + "engines": { + "node": ">=6.5.0" + } + }, + "node_modules/registry-auth-token": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-5.0.2.tgz", + "integrity": "sha512-o/3ikDxtXaA59BmZuZrJZDJv8NMDGSj+6j6XaeBmHw8eY1i1qd9+6H+LjVvQXx3HN6aRCGa1cUdJ9RaJZUugnQ==", + "dependencies": { + "@pnpm/npm-conf": "^2.1.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/release-zalgo": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz", + "integrity": "sha512-gUAyHVHPPC5wdqX/LG4LWtRYtgjxyX78oanFNTMMyFEfOqdC54s3eE82imuWKbOeqYht2CrNf64Qb8vgmmtZGA==", + "dev": true, + "dependencies": { + "es6-error": "^4.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/request": { + "version": "2.88.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", + "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", + "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", + "dependencies": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.0", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.4.3", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/request-promise": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/request-promise/-/request-promise-4.2.4.tgz", + "integrity": "sha512-8wgMrvE546PzbR5WbYxUQogUnUDfM0S7QIFZMID+J73vdFARkFy+HElj4T+MWYhpXwlLp0EQ8Zoj8xUA0he4Vg==", + "deprecated": "request-promise has been deprecated because it extends the now deprecated request package, see https://github.com/request/request/issues/3142", + "dependencies": { + "bluebird": "^3.5.0", + "request-promise-core": "1.1.2", + "stealthy-require": "^1.1.1", + "tough-cookie": "^2.3.3" + }, + "engines": { + "node": ">=0.10.0" + }, + "peerDependencies": { + "request": "^2.34" + } + }, + "node_modules/request-promise-core": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.2.tgz", + "integrity": "sha512-UHYyq1MO8GsefGEt7EprS8UrXsm1TxEvFUX1IMTuSLU2Rh7fTIdFtl8xD7JiEYiWU2dl+NYAjCTksTehQUxPag==", + "dependencies": { + "lodash": "^4.17.11" + }, + "engines": { + "node": ">=0.10.0" + }, + "peerDependencies": { + "request": "^2.34" + } + }, + "node_modules/request-promise/node_modules/tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dependencies": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/request/node_modules/form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 0.12" + } + }, + "node_modules/request/node_modules/http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", + "dependencies": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + }, + "engines": { + "node": ">=0.8", + "npm": ">=1.3.7" + } + }, + "node_modules/request/node_modules/jsprim": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", + "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", + "dependencies": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.4.0", + "verror": "1.10.0" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/request/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/request/node_modules/qs": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", + "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/request/node_modules/tough-cookie": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", + "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", + "dependencies": { + "psl": "^1.1.24", + "punycode": "^1.4.1" + }, + "engines": { + "node": ">=0.8" + } + }, + "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==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, + "node_modules/require-uncached": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", + "integrity": "sha512-Xct+41K3twrbBHdxAgMoOS+cNcoqIjfM2/VxBF4LL2hVph7YsF8VSKyQ3BDFZwEVbok9yeDl2le/qo0S77WG2w==", + "dev": true, + "dependencies": { + "caller-path": "^0.1.0", + "resolve-from": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-uncached/node_modules/resolve-from": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", + "integrity": "sha512-kT10v4dhrlLNcnO084hEjvXCI1wUG9qZLoz2RogxqDQQYy7IxjI/iMUkOtQTNEh6rzHxvdQWHsJyel1pKOVCxg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dependencies": { + "is-core-module": "^2.13.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-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "engines": { + "node": ">=4" + } + }, + "node_modules/restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==", + "dev": true, + "dependencies": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", + "optional": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/retry-as-promised": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/retry-as-promised/-/retry-as-promised-3.1.0.tgz", + "integrity": "sha512-g6T9rr5G4AfRVJZcnCbbmpcTDw8NJSnmVrvrJ9Pm9OWAzigocIcFp4+ItwHGJIr0wx0YzwlCJOvvEKQrZhzPOw==", + "dependencies": { + "any-promise": "^1.3.0" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/roarr": { + "version": "2.15.4", + "resolved": "https://registry.npmjs.org/roarr/-/roarr-2.15.4.tgz", + "integrity": "sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==", + "dev": true, + "dependencies": { + "boolean": "^3.0.1", + "detect-node": "^2.0.4", + "globalthis": "^1.0.1", + "json-stringify-safe": "^5.0.1", + "semver-compare": "^1.0.0", + "sprintf-js": "^1.1.2" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/roarr/node_modules/sprintf-js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", + "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", + "dev": true + }, + "node_modules/run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "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==", + "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/rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dev": true, + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "npm": ">=2.0.0" + } + }, + "node_modules/safe-array-concat": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.0.tgz", + "integrity": "sha512-ZdQ0Jeb9Ofti4hbt5lX3T2JcAamT9hfzYU1MNB+z/jaEbB6wfFfPIR/zEORmZqobkCCJhSjodobH6WHNmJ97dg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "get-intrinsic": "^1.2.2", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-array-concat/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, + "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/safe-regex-test": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", + "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-regex": "^1.1.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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/secure-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/secure-keys/-/secure-keys-1.0.0.tgz", + "integrity": "sha512-nZi59hW3Sl5P3+wOO89eHBAAGwmCPd2aE1+dLZV5MO+ItQctIvAqihzaAXIQhvtH4KJPxM080HsnqltR2y8cWg==" + }, + "node_modules/semantic-release": { + "version": "19.0.3", + "resolved": "https://registry.npmjs.org/semantic-release/-/semantic-release-19.0.3.tgz", + "integrity": "sha512-HaFbydST1cDKZHuFZxB8DTrBLJVK/AnDExpK0s3EqLIAAUAHUgnd+VSJCUtTYQKkAkauL8G9CucODrVCc7BuAA==", + "dependencies": { + "@semantic-release/commit-analyzer": "^9.0.2", + "@semantic-release/error": "^3.0.0", + "@semantic-release/github": "^8.0.0", + "@semantic-release/npm": "^9.0.0", + "@semantic-release/release-notes-generator": "^10.0.0", + "aggregate-error": "^3.0.0", + "cosmiconfig": "^7.0.0", + "debug": "^4.0.0", + "env-ci": "^5.0.0", + "execa": "^5.0.0", + "figures": "^3.0.0", + "find-versions": "^4.0.0", + "get-stream": "^6.0.0", + "git-log-parser": "^1.2.0", + "hook-std": "^2.0.0", + "hosted-git-info": "^4.0.0", + "lodash": "^4.17.21", + "marked": "^4.0.10", + "marked-terminal": "^5.0.0", + "micromatch": "^4.0.2", + "p-each-series": "^2.1.0", + "p-reduce": "^2.0.0", + "read-pkg-up": "^7.0.0", + "resolve-from": "^5.0.0", + "semver": "^7.3.2", + "semver-diff": "^3.1.1", + "signale": "^1.2.1", + "yargs": "^16.2.0" + }, + "bin": { + "semantic-release": "bin/semantic-release.js" + }, + "engines": { + "node": ">=16 || ^14.17" + } + }, + "node_modules/semantic-release/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==", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/semantic-release/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/semantic-release/node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "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/semantic-release/node_modules/figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semantic-release/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==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semantic-release/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==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semantic-release/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/semantic-release/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==", + "engines": { + "node": ">=6" + } + }, + "node_modules/semantic-release/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/semantic-release/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==", + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/semantic-release/node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semantic-release/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==", + "engines": { + "node": ">=8" + } + }, + "node_modules/semantic-release/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==", + "engines": { + "node": ">=8" + } + }, + "node_modules/semantic-release/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semantic-release/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==", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/semantic-release/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==", + "engines": { + "node": ">=8" + } + }, + "node_modules/semantic-release/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/semver": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", + "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/semver-compare": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", + "integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==", + "dev": true + }, + "node_modules/semver-diff": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz", + "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==", + "dependencies": { + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/semver-diff/node_modules/semver": { + "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" + } + }, + "node_modules/semver-regex": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/semver-regex/-/semver-regex-3.1.4.tgz", + "integrity": "sha512-6IiqeZNgq01qGf0TId0t3NvKzSvUsjcpdEO3AQNeIjR6A2+ckTnQlDpl4qu1bjRv0RzN3FP9hzFmws3lKqRWkA==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/send": { + "version": "0.17.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.2.tgz", + "integrity": "sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww==", + "dependencies": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "1.8.1", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/send/node_modules/destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha512-3NdhDuEXnfun/z7x9GOElY49LoqVHoGScmOKwmxhsS8N5Y+Z8KyPPDnaSzqWgYt/ji4mqwfTS34Htrk0zPIXVg==" + }, + "node_modules/send/node_modules/http-errors": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", + "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/send/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/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/send/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==", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/seq-queue": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/seq-queue/-/seq-queue-0.0.5.tgz", + "integrity": "sha512-hr3Wtp/GZIc/6DAGPDcV4/9WoZhjrkXsi5B/07QgX8tsdc6ilr7BFM6PM6rbdAX1kFSDYeZGLipIZZKyQP0O5Q==" + }, + "node_modules/sequelize": { + "version": "6.29.0", + "resolved": "https://registry.npmjs.org/sequelize/-/sequelize-6.29.0.tgz", + "integrity": "sha512-m8Wi90rs3NZP9coXE52c7PL4Q078nwYZXqt1IxPvgki7nOFn0p/F0eKsYDBXCPw9G8/BCEa6zZNk0DQUAT4ypA==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/sequelize" + } + ], + "dependencies": { + "@types/debug": "^4.1.7", + "@types/validator": "^13.7.1", + "debug": "^4.3.3", + "dottie": "^2.0.2", + "inflection": "^1.13.2", + "lodash": "^4.17.21", + "moment": "^2.29.1", + "moment-timezone": "^0.5.35", + "pg-connection-string": "^2.5.0", + "retry-as-promised": "^7.0.3", + "semver": "^7.3.5", + "sequelize-pool": "^7.1.0", + "toposort-class": "^1.0.1", + "uuid": "^8.3.2", + "validator": "^13.7.0", + "wkx": "^0.5.0" + }, + "engines": { + "node": ">=10.0.0" + }, + "peerDependenciesMeta": { + "ibm_db": { + "optional": true + }, + "mariadb": { + "optional": true + }, + "mysql2": { + "optional": true + }, + "oracledb": { + "optional": true + }, + "pg": { + "optional": true + }, + "pg-hstore": { + "optional": true + }, + "snowflake-sdk": { + "optional": true + }, + "sqlite3": { + "optional": true + }, + "tedious": { + "optional": true + } + } + }, + "node_modules/sequelize-cli": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/sequelize-cli/-/sequelize-cli-5.5.0.tgz", + "integrity": "sha512-twVQ02alCpr2XvxNmpi32C48WZs6xHTH1OFTfTS5Meg3BVqOM8ghiZoml4FITFjlD8sAJSQjlAHTwqTbuolA6Q==", + "dev": true, + "dependencies": { + "bluebird": "^3.5.3", + "cli-color": "^1.4.0", + "fs-extra": "^7.0.1", + "js-beautify": "^1.8.8", + "lodash": "^4.17.5", + "resolve": "^1.5.0", + "umzug": "^2.1.0", + "yargs": "^13.1.0" + }, + "bin": { + "sequelize": "lib/sequelize" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/sequelize-cli/node_modules/ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/sequelize-cli/node_modules/cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "dev": true, + "dependencies": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + } + }, + "node_modules/sequelize-cli/node_modules/emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "node_modules/sequelize-cli/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==", + "dev": true, + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/sequelize-cli/node_modules/fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/sequelize-cli/node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/sequelize-cli/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==", + "dev": true, + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/sequelize-cli/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/sequelize-cli/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==", + "dev": true, + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/sequelize-cli/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==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/sequelize-cli/node_modules/string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "dependencies": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/sequelize-cli/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/sequelize-cli/node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/sequelize-cli/node_modules/wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/sequelize-cli/node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "dev": true + }, + "node_modules/sequelize-cli/node_modules/yargs": { + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "dev": true, + "dependencies": { + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.2" + } + }, + "node_modules/sequelize-cli/node_modules/yargs-parser": { + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", + "dev": true, + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + }, + "node_modules/sequelize-pool": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/sequelize-pool/-/sequelize-pool-7.1.0.tgz", + "integrity": "sha512-G9c0qlIWQSK29pR/5U2JF5dDQeqqHRragoyahj/Nx4KOOQ3CPPfzxnfqFPCSB7x5UgjOgnZ61nSxz+fjDpRlJg==", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/sequelize/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/sequelize/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/sequelize/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/sequelize/node_modules/retry-as-promised": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/retry-as-promised/-/retry-as-promised-7.0.4.tgz", + "integrity": "sha512-XgmCoxKWkDofwH8WddD0w85ZfqYz+ZHlr5yo+3YUCfycWawU56T5ckWXsScsj5B8tqUcIG67DxXByo3VUgiAdA==" + }, + "node_modules/sequelize/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/sequelize/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/serialised-error": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/serialised-error/-/serialised-error-1.1.3.tgz", + "integrity": "sha512-vybp3GItaR1ZtO2nxZZo8eOo7fnVaNtP3XE2vJKgzkKR2bagCkdJ1EpYYhEMd3qu/80DwQk9KjsNSxE3fXWq0g==", + "dev": true, + "dependencies": { + "object-hash": "^1.1.2", + "stack-trace": "0.0.9", + "uuid": "^3.0.0" + } + }, + "node_modules/serialize-error": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-7.0.1.tgz", + "integrity": "sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==", + "dev": true, + "dependencies": { + "type-fest": "^0.13.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/serialize-error/node_modules/type-fest": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", + "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/serialize-javascript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/serve-static": { + "version": "1.14.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.2.tgz", + "integrity": "sha512-+TMNA9AFxUEGuC0z2mevogSnn9MXKb4fa7ngeRMJaaGv8vTwnIEkKi+QGvPt33HSnf8pRS+WGM0EbMtCJLKMBQ==", + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "devOptional": true + }, + "node_modules/set-function-length": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.1.tgz", + "integrity": "sha512-j4t6ccc+VsKwYHso+kElc5neZpjtq9EnRICFZtWyBsLojhmeF/ZBd/elqm22WJh/BziDe/SBiOeAt0m2mfLD0g==", + "dependencies": { + "define-data-property": "^1.1.2", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.3", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "dev": true, + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + }, + "node_modules/shallow-copy": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/shallow-copy/-/shallow-copy-0.0.1.tgz", + "integrity": "sha512-b6i4ZpVuUxB9h5gfCxPiusKYkqTMOjEbBs4wMaFbkfia4yFv92UKZ6Df8WXcKbn08JNL/abvg3FnMAOfakDvUw==" + }, + "node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/side-channel": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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==" + }, + "node_modules/signale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/signale/-/signale-1.4.0.tgz", + "integrity": "sha512-iuh+gPf28RkltuJC7W5MRi6XAjTDCAPC/prJUpQoG4vIP3MJZ+GTydVnodXA7pwvTKb2cA0m9OFZW/cdWy/I/w==", + "dependencies": { + "chalk": "^2.3.2", + "figures": "^2.0.0", + "pkg-conf": "^2.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/simple-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", + "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", + "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/simple-get": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", + "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", + "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": { + "decompress-response": "^6.0.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" + } + }, + "node_modules/sinon": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-7.5.0.tgz", + "integrity": "sha512-AoD0oJWerp0/rY9czP/D6hDTTUYGpObhZjMpd7Cl/A6+j0xBE+ayL/ldfggkBXUs0IkvIiM1ljM8+WkOc5k78Q==", + "deprecated": "16.1.1", + "dev": true, + "dependencies": { + "@sinonjs/commons": "^1.4.0", + "@sinonjs/formatio": "^3.2.1", + "@sinonjs/samsam": "^3.3.3", + "diff": "^3.5.0", + "lolex": "^4.2.0", + "nise": "^1.5.2", + "supports-color": "^5.5.0" + } + }, + "node_modules/sinon-chai": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/sinon-chai/-/sinon-chai-3.3.0.tgz", + "integrity": "sha512-r2JhDY7gbbmh5z3Q62pNbrjxZdOAjpsqW/8yxAZRSqLZqowmfGZPGUZPFf3UX36NLis0cv8VEM5IJh9HgkSOAA==", + "dev": true, + "peerDependencies": { + "chai": "^4.0.0", + "sinon": ">=4.0.0 <8.0.0" + } + }, + "node_modules/sinon/node_modules/diff": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/slice-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", + "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.0", + "astral-regex": "^1.0.0", + "is-fullwidth-code-point": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "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==", + "optional": true, + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/smtp-connection": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/smtp-connection/-/smtp-connection-2.3.2.tgz", + "integrity": "sha512-ORefDrSgddCYkJE7oH3jB6WRv2Z7laZLCMRYD4GFFB8oaZw/hnil7exDBP4yBYs3OgschOuvVdCauUQAblTWvQ==", + "dependencies": { + "nodemailer-shared": "1.0.4" + } + }, + "node_modules/snyk": { + "version": "1.1281.0", + "resolved": "https://registry.npmjs.org/snyk/-/snyk-1.1281.0.tgz", + "integrity": "sha512-I+oVDXOF+nFTpFnRkP985x6xMlXzGzojHsC3F4YeT+NPfsn5mfmnx0NVY4tSXBoENqWGYzBw3M2adeLcbamx4Q==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "@sentry/node": "^7.36.0", + "global-agent": "^3.0.0" + }, + "bin": { + "snyk": "bin/snyk" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/socks": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.1.tgz", + "integrity": "sha512-B6w7tkwNid7ToxjZ08rQMT8M9BJAf8DKx8Ft4NivzH0zBUfd6jldGcisJn/RLgxcX3FPNDdNQCUEMMT79b+oCQ==", + "optional": true, + "dependencies": { + "ip-address": "^9.0.5", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks-proxy-agent": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.2.1.tgz", + "integrity": "sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ==", + "optional": true, + "dependencies": { + "agent-base": "^6.0.2", + "debug": "^4.3.3", + "socks": "^2.6.2" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/socks-proxy-agent/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==", + "optional": true, + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/socks-proxy-agent/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "optional": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/socks-proxy-agent/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==", + "optional": true + }, + "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/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/spawn-error-forwarder": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/spawn-error-forwarder/-/spawn-error-forwarder-1.0.0.tgz", + "integrity": "sha512-gRjMgK5uFjbCvdibeGJuy3I5OYz6VLoVdsOJdA6wV0WlfQVLFueoqMxwwYD9RODdgb6oUIvlRlsyFSiQkMKu0g==" + }, + "node_modules/spawn-wrap": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-2.0.0.tgz", + "integrity": "sha512-EeajNjfN9zMnULLwhZZQU3GWBoFNkbngTUPfaawT4RkMiviTxcX0qfhVbGey39mfctfDHkWtuecgQ8NJcyQWHg==", + "dev": true, + "dependencies": { + "foreground-child": "^2.0.0", + "is-windows": "^1.0.2", + "make-dir": "^3.0.0", + "rimraf": "^3.0.0", + "signal-exit": "^3.0.2", + "which": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/spawn-wrap/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/spawn-wrap/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/spdx-correct": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", + "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", + "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==" + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.17", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.17.tgz", + "integrity": "sha512-sh8PWc/ftMqAAdFiBu6Fy6JUOYjqDJBJvIhpfDMyHrr0Rbp5liZqd4TjtQ/RgfLjKFZb+LMx5hpml5qOWy0qvg==" + }, + "node_modules/split": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", + "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", + "dependencies": { + "through": "2" + }, + "engines": { + "node": "*" + } + }, + "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/split2/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/split2/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/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" + }, + "node_modules/sqlite3": { + "version": "5.1.7", + "resolved": "https://registry.npmjs.org/sqlite3/-/sqlite3-5.1.7.tgz", + "integrity": "sha512-GGIyOiFaG+TUra3JIfkI/zGP8yZYLPQ0pl1bH+ODjiX57sPhrLU5sQJn1y9bDKZUFYkX1crlrPfSYt0BKKdkog==", + "hasInstallScript": true, + "dependencies": { + "bindings": "^1.5.0", + "node-addon-api": "^7.0.0", + "prebuild-install": "^7.1.1", + "tar": "^6.1.11" + }, + "optionalDependencies": { + "node-gyp": "8.x" + }, + "peerDependencies": { + "node-gyp": "8.x" + }, + "peerDependenciesMeta": { + "node-gyp": { + "optional": true + } + } + }, + "node_modules/sqlstring": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.3.tgz", + "integrity": "sha512-qC9iz2FlN7DQl3+wjwn3802RTyjCx7sDvfQEXchwa6CWOx07/WVfh91gBmQ9fahw8snwGEWU3xGzOt4tFyHLxg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/sshpk": { + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.18.0.tgz", + "integrity": "sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==", + "dependencies": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + }, + "bin": { + "sshpk-conv": "bin/sshpk-conv", + "sshpk-sign": "bin/sshpk-sign", + "sshpk-verify": "bin/sshpk-verify" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sshpk/node_modules/jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==" + }, + "node_modules/ssri": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", + "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", + "optional": true, + "dependencies": { + "minipass": "^3.1.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/stack-trace": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.9.tgz", + "integrity": "sha512-vjUc6sfgtgY0dxCdnc40mK6Oftjo9+2K8H/NG81TMhgL392FtiPA9tn9RLyTxXmTLPJPjF3VyzFp6bsWFLisMQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/standard": { + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/standard/-/standard-12.0.1.tgz", + "integrity": "sha512-UqdHjh87OG2gUrNCSM4QRLF5n9h3TFPwrCNyVlkqu31Hej0L/rc8hzKqVvkb2W3x0WMq7PzZdkLfEcBhVOR6lg==", + "dev": true, + "dependencies": { + "eslint": "~5.4.0", + "eslint-config-standard": "12.0.0", + "eslint-config-standard-jsx": "6.0.2", + "eslint-plugin-import": "~2.14.0", + "eslint-plugin-node": "~7.0.1", + "eslint-plugin-promise": "~4.0.0", + "eslint-plugin-react": "~7.11.1", + "eslint-plugin-standard": "~4.0.0", + "standard-engine": "~9.0.0" + }, + "bin": { + "standard": "bin/cmd.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/standard-engine": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/standard-engine/-/standard-engine-9.0.0.tgz", + "integrity": "sha512-ZfNfCWZ2Xq67VNvKMPiVMKHnMdvxYzvZkf1AH8/cw2NLDBm5LRsxMqvEJpsjLI/dUosZ3Z1d6JlHDp5rAvvk2w==", + "dev": true, + "dependencies": { + "deglob": "^2.1.0", + "get-stdin": "^6.0.0", + "minimist": "^1.1.0", + "pkg-conf": "^2.0.0" + } + }, + "node_modules/standard/node_modules/acorn": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", + "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/standard/node_modules/chardet": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz", + "integrity": "sha512-j/Toj7f1z98Hh2cYo2BVr85EpIRWqUi7rtRSGxh/cqUjqrnJe9l9UE7IUGd2vQ2p+kSHLkSzObQPZPLUC6TQwg==", + "dev": true + }, + "node_modules/standard/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/standard/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/standard/node_modules/eslint": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.4.0.tgz", + "integrity": "sha512-UIpL91XGex3qtL6qwyCQJar2j3osKxK9e3ano3OcGEIRM4oWIpCkDg9x95AXEC2wMs7PnxzOkPZ2gq+tsMS9yg==", + "dev": true, + "dependencies": { + "ajv": "^6.5.0", + "babel-code-frame": "^6.26.0", + "chalk": "^2.1.0", + "cross-spawn": "^6.0.5", + "debug": "^3.1.0", + "doctrine": "^2.1.0", + "eslint-scope": "^4.0.0", + "eslint-utils": "^1.3.1", + "eslint-visitor-keys": "^1.0.0", + "espree": "^4.0.0", + "esquery": "^1.0.1", + "esutils": "^2.0.2", + "file-entry-cache": "^2.0.0", + "functional-red-black-tree": "^1.0.1", + "glob": "^7.1.2", + "globals": "^11.7.0", + "ignore": "^4.0.2", + "imurmurhash": "^0.1.4", + "inquirer": "^5.2.0", + "is-resolvable": "^1.1.0", + "js-yaml": "^3.11.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.3.0", + "lodash": "^4.17.5", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "optionator": "^0.8.2", + "path-is-inside": "^1.0.2", + "pluralize": "^7.0.0", + "progress": "^2.0.0", + "regexpp": "^2.0.0", + "require-uncached": "^1.0.3", + "semver": "^5.5.0", + "strip-ansi": "^4.0.0", + "strip-json-comments": "^2.0.1", + "table": "^4.0.3", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^6.14.0 || ^8.10.0 || >=9.10.0" + } + }, + "node_modules/standard/node_modules/espree": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-4.1.0.tgz", + "integrity": "sha512-I5BycZW6FCVIub93TeVY1s7vjhP9CY6cXCznIRfiig7nRviKZYdRnj/sHEWC6A7WE9RDWOFq9+7OsWSYz8qv2w==", + "dev": true, + "dependencies": { + "acorn": "^6.0.2", + "acorn-jsx": "^5.0.0", + "eslint-visitor-keys": "^1.0.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/standard/node_modules/external-editor": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz", + "integrity": "sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==", + "dev": true, + "dependencies": { + "chardet": "^0.4.0", + "iconv-lite": "^0.4.17", + "tmp": "^0.0.33" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/standard/node_modules/file-entry-cache": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", + "integrity": "sha512-uXP/zGzxxFvFfcZGgBIwotm+Tdc55ddPAzF7iHshP4YGaXMww7rSF9peD9D1sui5ebONg5UobsZv+FfgEpGv/w==", + "dev": true, + "dependencies": { + "flat-cache": "^1.2.1", + "object-assign": "^4.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/standard/node_modules/flat-cache": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.4.tgz", + "integrity": "sha512-VwyB3Lkgacfik2vhqR4uv2rvebqmDvFu4jlN/C1RzWoJEo8I7z4Q404oiqYCkq41mni8EzQnm95emU9seckwtg==", + "dev": true, + "dependencies": { + "circular-json": "^0.3.1", + "graceful-fs": "^4.1.2", + "rimraf": "~2.6.2", + "write": "^0.2.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/standard/node_modules/inquirer": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-5.2.0.tgz", + "integrity": "sha512-E9BmnJbAKLPGonz0HeWHtbKf+EeSP93paWO3ZYoUpq/aowXvYGjjCSuashhXPpzbArIjBbji39THkxTz9ZeEUQ==", + "dev": true, + "dependencies": { + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.0", + "cli-cursor": "^2.1.0", + "cli-width": "^2.0.0", + "external-editor": "^2.1.0", + "figures": "^2.0.0", + "lodash": "^4.3.0", + "mute-stream": "0.0.7", + "run-async": "^2.2.0", + "rxjs": "^5.5.2", + "string-width": "^2.1.0", + "strip-ansi": "^4.0.0", + "through": "^2.3.6" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/standard/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==", + "dev": true + }, + "node_modules/standard/node_modules/rxjs": { + "version": "5.5.12", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.12.tgz", + "integrity": "sha512-xx2itnL5sBbqeeiVgNPVuQQ1nC8Jp2WfNJhXWHmElW9YmrpS9UVnNzhP3EH3HFqexO5Tlp8GhYY+WEcqcVMvGw==", + "dev": true, + "dependencies": { + "symbol-observable": "1.0.1" + }, + "engines": { + "npm": ">=2.0.0" + } + }, + "node_modules/standard/node_modules/slice-ansi": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz", + "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==", + "dev": true, + "dependencies": { + "is-fullwidth-code-point": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/standard/node_modules/table": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/table/-/table-4.0.3.tgz", + "integrity": "sha512-S7rnFITmBH1EnyKcvxBh1LjYeQMmnZtCXSEbHcH6S0NoKit24ZuFO/T1vDcLdYsLQkM188PVVhQmzKIuThNkKg==", + "dev": true, + "dependencies": { + "ajv": "^6.0.1", + "ajv-keywords": "^3.0.0", + "chalk": "^2.1.0", + "lodash": "^4.17.4", + "slice-ansi": "1.0.0", + "string-width": "^2.1.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/standard/node_modules/write": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", + "integrity": "sha512-CJ17OoULEKXpA5pef3qLj5AxTJ6mSt7g84he2WIskKwqFO4T97d5V7Tadl0DYDk7qyUOQD5WlUlOMChaYrhxeA==", + "dev": true, + "dependencies": { + "mkdirp": "^0.5.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/stealthy-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", + "integrity": "sha512-ZnWpYnYugiOVEY5GkcuJK1io5V8QmNYChG62gSit9pQVGErXtrKuPC55ITaVSukmMta5qpMU7vqLt2Lnni4f/g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/stream-combiner2": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz", + "integrity": "sha512-3PnJbYgS56AeWgtKF5jtJRT6uFJe56Z0Hc5Ngg/6sI6rIt8iiMBTa9cvdyFfpMQjaVHr8dusbNeFGIIonxOvKw==", + "dependencies": { + "duplexer2": "~0.1.0", + "readable-stream": "^2.0.2" + } + }, + "node_modules/stream-combiner2/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, + "node_modules/stream-combiner2/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/stream-combiner2/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==" + }, + "node_modules/stream-combiner2/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/stream-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/stream-length/-/stream-length-1.0.2.tgz", + "integrity": "sha512-aI+qKFiwoDV4rsXiS7WRoCt+v2RX1nUj17+KJC5r2gfh5xoSJIfP6Y3Do/HtvesFcTSWthIuJ3l1cvKQY/+nZg==", + "dev": true, + "dependencies": { + "bluebird": "^2.6.2" + } + }, + "node_modules/stream-length/node_modules/bluebird": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-2.11.0.tgz", + "integrity": "sha512-UfFSr22dmHPQqPP9XWHRhq+gWnHCYguQGkXQlbyPtW5qTnhFWA8/iXg765tH0cAjy7l/zPJ1aBTO0g5XgA7kvQ==", + "dev": true + }, + "node_modules/streamsearch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", + "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==" + }, + "node_modules/string-format": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/string-format/-/string-format-2.0.0.tgz", + "integrity": "sha512-bbEs3scLeYNXLecRRuk6uJxdXUSj6le/8rNPHChIJTn2V79aXVTR1EH2OH5zLKKoz0V02fOUKZZcw01pLUShZA==" + }, + "node_modules/string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "devOptional": true, + "dependencies": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/string-width-cjs": { + "name": "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/string-width-cjs/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/string-width-cjs/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/string-width-cjs/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/string.prototype.trim": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz", + "integrity": "sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz", + "integrity": "sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz", + "integrity": "sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", + "devOptional": true, + "dependencies": { + "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "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-ansi-cjs/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/strip-ansi/node_modules/ansi-regex": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", + "devOptional": true, + "engines": { + "node": ">=4" + } + }, + "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-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==", + "engines": { + "node": ">=0.10.0" + } + }, + "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==", + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "dependencies": { + "min-indent": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/superagent": { + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/superagent/-/superagent-3.8.3.tgz", + "integrity": "sha512-GLQtLMCoEIK4eDv6OGtkOoSMt3D+oq0y3dsxMuYuDvaNUvuT8eFBuLmfR0iYYzHC1e8hpzC6ZsxbuP6DIalMFA==", + "deprecated": "Please upgrade to v7.0.2+ of superagent. We have fixed numerous issues with streams, form-data, attach(), filesystem errors not bubbling up (ENOENT on attach()), and all tests are now passing. See the releases tab for more information at .", + "dev": true, + "dependencies": { + "component-emitter": "^1.2.0", + "cookiejar": "^2.1.0", + "debug": "^3.1.0", + "extend": "^3.0.0", + "form-data": "^2.3.1", + "formidable": "^1.2.0", + "methods": "^1.1.1", + "mime": "^1.4.1", + "qs": "^6.5.1", + "readable-stream": "^2.3.5" + }, + "engines": { + "node": ">= 4.0" + } + }, + "node_modules/superagent/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/superagent/node_modules/form-data": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", + "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", + "dev": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 0.12" + } + }, + "node_modules/superagent/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "node_modules/superagent/node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/superagent/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==", + "dev": true + }, + "node_modules/superagent/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/superagent/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/superagent/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "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/supports-hyperlinks": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz", + "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==", + "dependencies": { + "has-flag": "^4.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-hyperlinks/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==", + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-hyperlinks/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==", + "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/swagger-ui-dist": { + "version": "5.11.9", + "resolved": "https://registry.npmjs.org/swagger-ui-dist/-/swagger-ui-dist-5.11.9.tgz", + "integrity": "sha512-e1x1x92wwjBWTjM+P9aH6qRurjFol/y5eCN0U2pK/nrS5mKxZuTsZUqdYya1W+JMom8fbw6/X8Ymp99lHRjBfw==" + }, + "node_modules/swagger-ui-express": { + "version": "4.6.3", + "resolved": "https://registry.npmjs.org/swagger-ui-express/-/swagger-ui-express-4.6.3.tgz", + "integrity": "sha512-CDje4PndhTD2HkgyKH3pab+LKspDeB/NhPN2OF1j+piYIamQqBYwAXWESOT1Yju2xFg51bRW9sUng2WxDjzArw==", + "dependencies": { + "swagger-ui-dist": ">=4.11.0" + }, + "engines": { + "node": ">= v0.10.32" + }, + "peerDependencies": { + "express": ">=4.0.0 || >=5.0.0-beta" + } + }, + "node_modules/symbol-observable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.1.tgz", + "integrity": "sha512-Kb3PrPYz4HanVF1LVGuAdW6LoVgIwjUYJGzFe7NDrBLCN4lsV/5J0MFurV+ygS4bRVwrCEt2c7MQ1R2a72oJDw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/table": { + "version": "5.4.6", + "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", + "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", + "dev": true, + "dependencies": { + "ajv": "^6.10.2", + "lodash": "^4.17.14", + "slice-ansi": "^2.1.0", + "string-width": "^3.0.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/table-layout": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/table-layout/-/table-layout-0.4.5.tgz", + "integrity": "sha512-zTvf0mcggrGeTe/2jJ6ECkJHAQPIYEwDoqsiqBjI24mvRmQbInK5jq33fyypaCBxX08hMkfmdOqj6haT33EqWw==", + "dependencies": { + "array-back": "^2.0.0", + "deep-extend": "~0.6.0", + "lodash.padend": "^4.6.1", + "typical": "^2.6.1", + "wordwrapjs": "^3.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/table/node_modules/ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/table/node_modules/emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "node_modules/table/node_modules/string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "dependencies": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/table/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tar": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.0.tgz", + "integrity": "sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ==", + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^5.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tar-fs": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", + "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", + "dependencies": { + "chownr": "^1.1.1", + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^2.1.4" + } + }, + "node_modules/tar-fs/node_modules/chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" + }, + "node_modules/tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "dependencies": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tar-stream/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/tar-stream/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/tar/node_modules/minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/tar/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/teleport-javascript": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/teleport-javascript/-/teleport-javascript-1.0.0.tgz", + "integrity": "sha512-j1llvWVFyEn/6XIFDfX5LAU43DXe0GCt3NfXDwJ8XpRRMkS+i50SAkonAONBy+vxwPFBd50MFU8a2uj8R/ccLg==", + "dev": true + }, + "node_modules/temp-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz", + "integrity": "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/tempy": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tempy/-/tempy-1.0.1.tgz", + "integrity": "sha512-biM9brNqxSc04Ee71hzFbryD11nX7VPhQQY32AdDmjFvodsRFz/3ufeoTZ6uYkRFfGo188tENcASNs3vTdsM0w==", + "dependencies": { + "del": "^6.0.0", + "is-stream": "^2.0.0", + "temp-dir": "^2.0.0", + "type-fest": "^0.16.0", + "unique-string": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/tempy/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==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/tempy/node_modules/type-fest": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz", + "integrity": "sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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/test-value": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/test-value/-/test-value-3.0.0.tgz", + "integrity": "sha512-sVACdAWcZkSU9x7AOmJo5TqE+GyNJknHaHsMrR6ZnhjVlVN9Yx6FjHrsKZ3BjIpPCT68zYesPWkakrNupwfOTQ==", + "dependencies": { + "array-back": "^2.0.0", + "typical": "^2.6.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/text-extensions": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-1.9.0.tgz", + "integrity": "sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==", + "engines": { + "node": ">=0.10" + } + }, + "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/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" + }, + "node_modules/through2": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", + "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", + "dependencies": { + "readable-stream": "3" + } + }, + "node_modules/through2/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/through2/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/timers-ext": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.7.tgz", + "integrity": "sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ==", + "dev": true, + "dependencies": { + "es5-ext": "~0.10.46", + "next-tick": "1" + } + }, + "node_modules/tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "dependencies": { + "os-tmpdir": "~1.0.2" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "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==", + "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/toposort-class": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toposort-class/-/toposort-class-1.0.1.tgz", + "integrity": "sha512-OsLcGGbYF3rMjPUf8oKktyvCiUxSbqMMS39m33MAjLTC1DVIH6x3WSt63/M77ihI09+Sdfk1AXvfhCEeUmC7mg==" + }, + "node_modules/tough-cookie": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-3.0.1.tgz", + "integrity": "sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg==", + "dev": true, + "dependencies": { + "ip-regex": "^2.1.0", + "psl": "^1.1.28", + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, + "node_modules/traverse": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.8.tgz", + "integrity": "sha512-aXJDbk6SnumuaZSANd21XAo15ucCDE38H4fkqiGsc3MhCK+wOlZvLP9cB/TvpHT0mOyWgC4Z8EwRlzqYSUzdsA==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/trim-newlines": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", + "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==" + }, + "node_modules/type": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz", + "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==", + "dev": true + }, + "node_modules/type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", + "dev": true, + "dependencies": { + "prelude-ls": "~1.1.2" + }, + "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.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "engines": { + "node": ">=8" + } + }, + "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/typed-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", + "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", + "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", + "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.5.tgz", + "integrity": "sha512-yMi0PlwuznKHxKmcpoOdeLwxBoVPkqZxd7q2FgMkmD3bNwvF5VW0+UlUQ1k1vmktTu4Yu13Q0RIxEP8+B+wloA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==" + }, + "node_modules/typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dev": true, + "dependencies": { + "is-typedarray": "^1.0.0" + } + }, + "node_modules/typical": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/typical/-/typical-2.6.1.tgz", + "integrity": "sha512-ofhi8kjIje6npGozTip9Fr8iecmYfEbS06i0JnIg+rh51KakryWF4+jX8lLKZVhy6N+ID45WYSFCxPOdTWCzNg==" + }, + "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/umzug": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/umzug/-/umzug-2.2.0.tgz", + "integrity": "sha512-xZLW76ax70pND9bx3wqwb8zqkFGzZIK8dIHD9WdNy/CrNfjWcwQgQkGCuUqcuwEBvUm+g07z+qWvY+pxDmMEEw==", + "dependencies": { + "babel-runtime": "^6.23.0", + "bluebird": "^3.5.3" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/underscore": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.1.tgz", + "integrity": "sha512-hzSoAVtJF+3ZtiFX0VgfFPHEDRm7Y/QPjGyNo4TVdnDTdft3tr8hEkD25a1jC+TjTuE7tkHGKkhwCgs9dgBB2g==" + }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" + }, + "node_modules/uniq": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", + "integrity": "sha512-Gw+zz50YNKPDKXs+9d+aKAjVwpjNwqzvNpLigIruT4HA9lMZNdMqs9x07kKHB/L9WRzqp4+DlTU5s4wG2esdoA==", + "dev": true + }, + "node_modules/unique-filename": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "optional": true, + "dependencies": { + "unique-slug": "^2.0.0" + } + }, + "node_modules/unique-slug": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "optional": true, + "dependencies": { + "imurmurhash": "^0.1.4" + } + }, + "node_modules/unique-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", + "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", + "dependencies": { + "crypto-random-string": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/universal-user-agent": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.1.tgz", + "integrity": "sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ==" + }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "engines": { + "node": ">= 10.0.0" + } + }, + "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.13", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", + "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/url-join": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz", + "integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==" + }, + "node_modules/util": { + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", + "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", + "dependencies": { + "inherits": "2.0.3" + } + }, + "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/util/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==" + }, + "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": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "bin": { + "uuid": "bin/uuid" + } + }, + "node_modules/uvm": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/uvm/-/uvm-2.0.2.tgz", + "integrity": "sha512-Ra+aPiS5GXAbwXmyNExqdS42sTqmmx4XWEDF8uJlsTfOkKf9Rd9xNgav1Yckv4HfVEZg4iOFODWHFYuJ+9Fzfg==", + "dev": true, + "dependencies": { + "flatted": "3.1.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/uvm/node_modules/flatted": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.1.1.tgz", + "integrity": "sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA==", + "dev": true + }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/validator": { + "version": "13.11.0", + "resolved": "https://registry.npmjs.org/validator/-/validator-13.11.0.tgz", + "integrity": "sha512-Ii+sehpSfZy+At5nPdnyMhx78fEoPDkR2XW/zimHEL3MyGJQOCQ7WeP20jPYRz7ZCpcKLB21NxuXHF3bxjStBQ==", + "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/verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", + "engines": [ + "node >=0.6.0" + ], + "dependencies": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "node_modules/verror/node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==" + }, + "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": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-module": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", + "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==", + "dev": true + }, + "node_modules/which-typed-array": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.14.tgz", + "integrity": "sha512-VnXFiIW8yNn9kIHN88xvZ4yOWchftKDsRJ8fEPacX/wl1lOvBrhsJ/OeJCXq7B0AaijRuqgzSKalJoPk+D8MPg==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.6", + "call-bind": "^1.0.5", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "optional": true, + "dependencies": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, + "node_modules/wkx": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/wkx/-/wkx-0.5.0.tgz", + "integrity": "sha512-Xng/d4Ichh8uN4l0FToV/258EjMGU9MGcA0HV2d9B/ZpZB3lqQm7nkOdZdm5GhKtLLhAE7PiVQwN4eN+2YJJUg==", + "dependencies": { + "@types/node": "*" + } + }, + "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", + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==" + }, + "node_modules/wordwrapjs": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-3.0.0.tgz", + "integrity": "sha512-mO8XtqyPvykVCsrwj5MlOVWvSnCdT+C+QVbm6blradR7JExAhbkZ7hZ9A+9NUtwzSqrlUo9a67ws0EiILrvRpw==", + "dependencies": { + "reduce-flatten": "^1.0.1", + "typical": "^2.6.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/workerpool": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.0.tgz", + "integrity": "sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A==", + "dev": true + }, + "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==", + "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/wrap-ansi-cjs": { + "name": "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/wrap-ansi-cjs/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/wrap-ansi-cjs/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/wrap-ansi-cjs/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/wrap-ansi-cjs/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/wrap-ansi-cjs/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/wrap-ansi-cjs/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/wrap-ansi-cjs/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/wrap-ansi/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==", + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/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==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/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==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi/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==" + }, + "node_modules/wrap-ansi/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==", + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/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==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/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==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "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": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", + "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", + "dev": true, + "dependencies": { + "mkdirp": "^0.5.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "node_modules/x-xss-protection": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/x-xss-protection/-/x-xss-protection-1.3.0.tgz", + "integrity": "sha512-kpyBI9TlVipZO4diReZMAHWtS0MMa/7Kgx8hwG/EuZLiA6sg4Ah/4TRdASHhRRN3boobzcYgFRUFSgHRge6Qhg==", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/xml": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/xml/-/xml-1.0.1.tgz", + "integrity": "sha512-huCv9IH9Tcf95zuYCsQraZtWnJvBtLVE0QHMOs8bWyZAFZNDcYjsPq1nEx8jKA9y+Beo9v+7OBPRisQTjinQMw==", + "dev": true + }, + "node_modules/xmlbuilder": { + "version": "15.1.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz", + "integrity": "sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==", + "dev": true, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/xregexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-2.0.0.tgz", + "integrity": "sha512-xl/50/Cf32VsGq/1R8jJE5ajH1yMCQkpmoS10QbFZWl2Oor4H0Me64Pu2yxvsRWK3m6soJbmGfzSR7BYmDcWAA==", + "engines": { + "node": "*" + } + }, + "node_modules/xss-clean": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/xss-clean/-/xss-clean-0.1.1.tgz", + "integrity": "sha512-On99yydxoAEkHpraR7Wjg9cD6UmKfbtH2HXO1it2djid32osHL7Qr8bIu+dGYoOeKzf3ZszLfz1gwR/D7whZ2A==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", + "dependencies": { + "xss-filters": "1.2.6" + } + }, + "node_modules/xss-filters": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/xss-filters/-/xss-filters-1.2.6.tgz", + "integrity": "sha512-uqgwZRpVJCDfHsRX9lDrkPyCitQYzPklmLSbajJncATZKAUd1tF1x9y2VyPNFMv8SsSWed80xorSS5qGpw3WiA==" + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "engines": { + "node": ">=0.4" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "engines": { + "node": ">=10" + } + }, + "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/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-parser": { + "version": "20.2.4", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-unparser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", + "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", + "dev": true, + "dependencies": { + "camelcase": "^6.0.0", + "decamelize": "^4.0.0", + "flat": "^5.0.2", + "is-plain-obj": "^2.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-unparser/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/yargs-unparser/node_modules/decamelize": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", + "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/yargs-unparser/node_modules/is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/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==", + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/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==", + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/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==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/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==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "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" + } + } + } +} diff --git a/src/config/development.json b/src/config/development.json index 942e68199..8b7dca9e4 100644 --- a/src/config/development.json +++ b/src/config/development.json @@ -60,5 +60,17 @@ "databaseName": "" } } - } + }, + "ControlPlane": { + "Auth_Manager": "Keycloak", + "Realm": { + "url": "", + "realm-key": "" + }, + "Config": { + "namespace": "", + "orgName": "", + "entitlementID": "" + } + } } \ No newline at end of file diff --git a/src/config/production.json b/src/config/production.json index 4e6b967e2..038d3490d 100644 --- a/src/config/production.json +++ b/src/config/production.json @@ -48,5 +48,17 @@ "databaseName": "" } } - } -} \ No newline at end of file + }, + "ControlPlane": { + "Auth_Manager": "Keycloak", + "Realm": { + "url": "", + "realm-key": "" + }, + "Config": { + "namespace": "", + "orgName": "", + "entitlementID": "" + } + } +} diff --git a/src/controllers/control-plane-controller.js b/src/controllers/control-plane-controller.js new file mode 100644 index 000000000..073031f91 --- /dev/null +++ b/src/controllers/control-plane-controller.js @@ -0,0 +1,26 @@ +/* + * ******************************************************************************* + * * Copyright (c) 2023 Datasance Teknoloji A.S. + * * + * * This program and the accompanying materials are made available under the + * * terms of the Eclipse Public License v. 2.0 which is available at + * * http://www.eclipse.org/legal/epl-2.0 + * * + * * SPDX-License-Identifier: EPL-2.0 + * ******************************************************************************* + * + */ + +const AuthDecorator = require('../decorators/authorization-decorator') + +const getControlPlaneProfileEndPoint = async function (req, controlPlane) { + return { + namespace: controlPlane.namespace, + OrgName: controlPlane.OrgName, + entitlementId: controlPlane.entitlementId + } +} + +module.exports = { + getControlPlaneProfileEndPoint: AuthDecorator.checkAuthToken(getControlPlaneProfileEndPoint) +} diff --git a/src/data/managers/control-plane.js b/src/data/managers/control-plane.js new file mode 100644 index 000000000..554a3a58e --- /dev/null +++ b/src/data/managers/control-plane.js @@ -0,0 +1,36 @@ +/* + * ******************************************************************************* + * * Copyright (c) 2023 Datasance Teknoloji A.S. + * * + * * This program and the accompanying materials are made available under the + * * terms of the Eclipse Public License v. 2.0 which is available at + * * http://www.eclipse.org/legal/epl-2.0 + * * + * * SPDX-License-Identifier: EPL-2.0 + * ******************************************************************************* + * + */ + +const BaseManager = require('./base-manager') +const models = require('../models') +const ControlPlane = models.ControlPlane + +class ControlPlaneManager extends BaseManager { + getEntity () { + return ControlPlane + } + + // no transaction required here, used by cli decorator + findByUuid (uuid) { + return ControlPlane.findOne({ where: { uuid } }) + } + + updateDetails (controlPlane, updateObject, transaction) { + return this.update({ + id: controlPlane.uuid + }, updateObject, transaction) + } +} + +const instance = new ControlPlaneManager() +module.exports = instance diff --git a/src/data/migrations/20200123045032-fog-and-change-tracking.js b/src/data/migrations/20200123045032-fog-and-change-tracking.js index a73b2e8e4..0c38b5745 100644 --- a/src/data/migrations/20200123045032-fog-and-change-tracking.js +++ b/src/data/migrations/20200123045032-fog-and-change-tracking.js @@ -1,5 +1,5 @@ 'use strict' - +//deleted module.exports = { up: (queryInterface, Sequelize) => { /* diff --git a/src/data/migrations/20200213033350-create-config.js b/src/data/migrations/20200213033350-create-config.js index 76988e5b7..c3c4282a0 100644 --- a/src/data/migrations/20200213033350-create-config.js +++ b/src/data/migrations/20200213033350-create-config.js @@ -1,4 +1,5 @@ 'use strict' + module.exports = { up: (queryInterface, Sequelize) => { return queryInterface.createTable('Config', { @@ -8,10 +9,9 @@ module.exports = { autoIncrement: true, allowNull: false, field: 'id' - }, key: { - type: Sequelize.TEXT, + type: Sequelize.STRING(255), field: 'key', unique: true, allowNull: false diff --git a/src/data/migrations/20200506004924-add-route-name.js b/src/data/migrations/20200506004924-add-route-name.js index b02ba2d83..91d5e2de9 100644 --- a/src/data/migrations/20200506004924-add-route-name.js +++ b/src/data/migrations/20200506004924-add-route-name.js @@ -1,9 +1,9 @@ 'use strict' - +//deleted module.exports = { up: (queryInterface, Sequelize) => { return queryInterface.addColumn('Routings', 'name', { - type: Sequelize.TEXT, + type: Sequelize.STRING(255), allowNull: false, defaultValue: 'route' }).then(() => queryInterface.addIndex('Routings', ['name'], { diff --git a/src/data/migrations/20201001230303-add-tags-fogs.js b/src/data/migrations/20201001230303-add-tags-fogs.js index 6b435c431..54a13d3ef 100644 --- a/src/data/migrations/20201001230303-add-tags-fogs.js +++ b/src/data/migrations/20201001230303-add-tags-fogs.js @@ -11,7 +11,7 @@ module.exports = { field: 'id' }, value: { - type: Sequelize.TEXT, + type: Sequelize.STRING(255), field: 'value', unique: true, allowNull: false @@ -32,7 +32,7 @@ module.exports = { onDelete: 'cascade' }, FogUuid: { - type: Sequelize.TEXT, + type: Sequelize.STRING(255), field: 'fog_uuid', references: { model: 'Fogs', key: 'uuid' }, onDelete: 'cascade' diff --git a/src/data/migrations/20201028005645-create-edge-resources.js b/src/data/migrations/20201028005645-create-edge-resources.js index e03b5f07c..5a98af753 100644 --- a/src/data/migrations/20201028005645-create-edge-resources.js +++ b/src/data/migrations/20201028005645-create-edge-resources.js @@ -45,7 +45,7 @@ module.exports = { onDelete: 'cascade' }, FogUuid: { - type: Sequelize.TEXT, + type: Sequelize.STRING(255), field: 'fog_uuid', references: { model: 'Fogs', key: 'uuid' }, onDelete: 'cascade' diff --git a/src/data/migrations/20201204003312-create_application_templates.js b/src/data/migrations/20201204003312-create_application_templates.js index 02f513767..dfd2dde85 100644 --- a/src/data/migrations/20201204003312-create_application_templates.js +++ b/src/data/migrations/20201204003312-create_application_templates.js @@ -10,7 +10,7 @@ module.exports = { allowNull: false }, name: { - type: Sequelize.TEXT, + type: Sequelize.STRING(255), field: 'name', defaultValue: 'new-application-template', unique: true diff --git a/src/data/migrations/20211022010318-add-unique-constraint-msvc.js b/src/data/migrations/20211022010318-add-unique-constraint-msvc.js index b0aff579f..3e5b504aa 100644 --- a/src/data/migrations/20211022010318-add-unique-constraint-msvc.js +++ b/src/data/migrations/20211022010318-add-unique-constraint-msvc.js @@ -1,5 +1,5 @@ 'use strict' - +//deleted module.exports = { up: (queryInterface, Sequelize) => { /* diff --git a/src/data/migrations/20211022013326-add-unique-constraint-route.js b/src/data/migrations/20211022013326-add-unique-constraint-route.js index 4c5259834..2761f083a 100644 --- a/src/data/migrations/20211022013326-add-unique-constraint-route.js +++ b/src/data/migrations/20211022013326-add-unique-constraint-route.js @@ -1,5 +1,5 @@ 'use strict' - +// deleted module.exports = { up: (queryInterface, Sequelize) => { /* diff --git a/src/data/models/application.js b/src/data/models/application.js index 1de86d5b9..3444f44bc 100644 --- a/src/data/models/application.js +++ b/src/data/models/application.js @@ -36,12 +36,12 @@ module.exports = (sequelize, DataTypes) => { underscored: true }) Application.associate = function (models) { - Application.belongsTo(models.User, { + Application.belongsTo(models.ControlPlane, { foreignKey: { - name: 'userId', - field: 'user_id' + name: 'controlPlaneUuid', + field: 'controlPlane_uuid' }, - as: 'user', + as: 'controlPlane', onDelete: 'cascade' }) diff --git a/src/data/models/applicationTemplate.js b/src/data/models/applicationTemplate.js index db9e1172c..5f19bebe7 100644 --- a/src/data/models/applicationTemplate.js +++ b/src/data/models/applicationTemplate.js @@ -35,12 +35,12 @@ module.exports = (sequelize, DataTypes) => { underscored: true }) ApplicationTemplate.associate = function (models) { - ApplicationTemplate.belongsTo(models.User, { + ApplicationTemplate.belongsTo(models.ControlPlane, { foreignKey: { - name: 'userId', - field: 'user_id' + name: 'controlPlaneUuid', + field: 'controlPlane_uuid' }, - as: 'user', + as: 'controlPlane', onDelete: 'cascade' }) ApplicationTemplate.hasMany(models.ApplicationTemplateVariable, { diff --git a/src/data/models/catalogitem.js b/src/data/models/catalogitem.js index 661b78b74..8c7da3a88 100644 --- a/src/data/models/catalogitem.js +++ b/src/data/models/catalogitem.js @@ -76,12 +76,12 @@ module.exports = (sequelize, DataTypes) => { defaultValue: 1 }) - CatalogItem.belongsTo(models.User, { + CatalogItem.belongsTo(models.ControlPlane, { foreignKey: { - name: 'userId', - field: 'user_id' + name: 'controlPlaneUuid', + field: 'controlPlane_uuid' }, - as: 'user', + as: 'controlPlane', onDelete: 'cascade' }) diff --git a/src/data/models/controlPlane.js b/src/data/models/controlPlane.js new file mode 100644 index 000000000..254665d1b --- /dev/null +++ b/src/data/models/controlPlane.js @@ -0,0 +1,66 @@ +'use strict' +module.exports = (sequelize, DataTypes) => { + const ControlPlane = sequelize.define('ControlPlane', { + uuid: { + type: DataTypes.STRING(32), + primaryKey: true, + allowNull: false, + field: 'uuid' + }, + namespace: { + /* eslint-disable new-cap */ + type: DataTypes.STRING(100), + field: 'namespace', + defaultValue: '' + }, + orgName: { + /* eslint-disable new-cap */ + type: DataTypes.STRING(100), + field: 'orgn_name', + defaultValue: '' + }, + entitlementId: { + /* eslint-disable new-cap */ + type: DataTypes.STRING(100), + field: 'entitlement_id' + } + }, { + tableName: 'ControlPlane', + timestamps: false, + underscored: true + }) + ControlPlane.associate = function (models) { + ControlPlane.hasMany(models.User, { + foreignKey: { + name: 'controlPlaneUuid', + field: 'controlPlane_uuid' + }, + as: 'user' + }) + + ControlPlane.hasMany(models.Application, { + foreignKey: { + name: 'controlPlaneUuid', + field: 'controlPlane_uuid' + }, + as: 'application' + }) + + ControlPlane.hasMany(models.Fog, { + foreignKey: { + name: 'controlPlaneUuid', + field: 'controlPlane_uuid' + }, + as: 'fog' + }) + + ControlPlane.hasMany(models.Microservice, { + foreignKey: { + name: 'controlPlaneUuid', + field: 'controlPlane_uuid' + }, + as: 'microservice' + }) + } + return ControlPlane +} diff --git a/src/data/models/edgeResource.js b/src/data/models/edgeResource.js index d0e96afdb..d19bcbb3c 100644 --- a/src/data/models/edgeResource.js +++ b/src/data/models/edgeResource.js @@ -28,13 +28,12 @@ module.exports = (sequelize, DataTypes) => { EdgeResource.belongsToMany(models.Fog, { through: 'AgentEdgeResources', as: 'agents' }) EdgeResource.belongsToMany(models.Tags, { as: 'orchestrationTags', through: 'EdgeResourceOrchestrationTags' }) - EdgeResource.belongsTo(models.User, { + EdgeResource.belongsTo(models.ControlPlane, { foreignKey: { - name: 'userId', - field: 'user_id' + name: 'controlPlaneUuid', + field: 'controlPlane_uuid' }, - as: 'user', - defaultValue: 0, + as: 'controlPlane', onDelete: 'cascade' }) } diff --git a/src/data/models/fog.js b/src/data/models/fog.js index 22e80ab1d..353943559 100644 --- a/src/data/models/fog.js +++ b/src/data/models/fog.js @@ -324,13 +324,12 @@ module.exports = (sequelize, DataTypes) => { defaultValue: 0 }) - Fog.belongsTo(models.User, { + Fog.belongsTo(models.ControlPlane, { foreignKey: { - name: 'userId', - field: 'user_id' + name: 'controlPlaneUuid', + field: 'controlPlane_uuid' }, - as: 'user', - defaultValue: 0, + as: 'controlPlane', onDelete: 'cascade' }) diff --git a/src/data/models/fogaccesstoken.js b/src/data/models/fogaccesstoken.js index a2a4e1b81..842f66852 100644 --- a/src/data/models/fogaccesstoken.js +++ b/src/data/models/fogaccesstoken.js @@ -28,12 +28,12 @@ module.exports = (sequelize, DataTypes) => { underscored: true }) FogAccessToken.associate = function (models) { - FogAccessToken.belongsTo(models.User, { + FogAccessToken.belongsTo(models.ControlPlane, { foreignKey: { - name: 'userId', - field: 'user_id' + name: 'controlPlaneUuid', + field: 'controlPlane_uuid' }, - as: 'user', + as: 'controlPlane', onDelete: 'cascade' }) diff --git a/src/data/models/kubeletaccesstoken.js b/src/data/models/kubeletaccesstoken.js index 1355fe0bd..0122cc7d8 100644 --- a/src/data/models/kubeletaccesstoken.js +++ b/src/data/models/kubeletaccesstoken.js @@ -28,12 +28,12 @@ module.exports = (sequelize, DataTypes) => { underscored: true }) KubeletAccessToken.associate = function (models) { - KubeletAccessToken.belongsTo(models.User, { + KubeletAccessToken.belongsTo(models.ControlPlane, { foreignKey: { - name: 'userId', - field: 'user_id' + name: 'controlPlaneUuid', + field: 'controlPlane_uuid' }, - as: 'user', + as: 'controlPlane', onDelete: 'cascade' }) } diff --git a/src/data/models/microservice.js b/src/data/models/microservice.js index cd25823db..0af8ace15 100644 --- a/src/data/models/microservice.js +++ b/src/data/models/microservice.js @@ -108,12 +108,12 @@ module.exports = (sequelize, DataTypes) => { onDelete: 'cascade' }) - Microservice.belongsTo(models.User, { + Microservice.belongsTo(models.ControlPlane, { foreignKey: { - name: 'userId', - field: 'user_id' + name: 'controlPlaneUuid', + field: 'controlPlane_uuid' }, - as: 'user', + as: 'controlPlane', onDelete: 'cascade' }) diff --git a/src/data/models/microserviceport.js b/src/data/models/microserviceport.js index b9b2a7bdf..c9c24ab7d 100644 --- a/src/data/models/microserviceport.js +++ b/src/data/models/microserviceport.js @@ -43,12 +43,12 @@ module.exports = (sequelize, DataTypes) => { onDelete: 'cascade' }) - MicroservicePort.belongsTo(models.User, { + MicroservicePort.belongsTo(models.ControlPlane, { foreignKey: { - name: 'userId', - field: 'user_id' + name: 'controlPlaneUuid', + field: 'controlPlane_uuid' }, - as: 'user', + as: 'controlPlane', onDelete: 'cascade' }) diff --git a/src/data/models/registry.js b/src/data/models/registry.js index 3840ecd54..48c85a034 100644 --- a/src/data/models/registry.js +++ b/src/data/models/registry.js @@ -46,12 +46,13 @@ module.exports = (sequelize, DataTypes) => { underscored: true }) Registry.associate = function (models) { - Registry.belongsTo(models.User, { + Registry.belongsTo(models.ControlPlane, { foreignKey: { - name: 'userId', - field: 'user_id' + name: 'controlPlaneUuid', + field: 'controlPlane_uuid' }, - as: 'user' + as: 'controlPlane', + onDelete: 'cascade' }) } return Registry diff --git a/src/data/models/user.js b/src/data/models/user.js index acd0a827f..d8a9e16ec 100644 --- a/src/data/models/user.js +++ b/src/data/models/user.js @@ -80,6 +80,15 @@ module.exports = (sequelize, DataTypes) => { }, as: 'microservice' }) + + User.belongsTo(models.ControlPlane, { + foreignKey: { + name: 'controlPlaneUuid', + field: 'controlPlane_uuid' + }, + as: 'controlPlane', + onDelete: 'cascade' + }) } return User } diff --git a/src/data/providers/mysql.js b/src/data/providers/mysql.js index 30715a4fe..935e25125 100644 --- a/src/data/providers/mysql.js +++ b/src/data/providers/mysql.js @@ -1,34 +1,25 @@ -const Sequelize = require('sequelize'); +const Sequelize = require('sequelize') -const config = require('../../config'); -const DatabaseProvider = require('./database-provider'); +const config = require('../../config') +const DatabaseProvider = require('./database-provider') class MySqlDatabaseProvider extends DatabaseProvider { constructor () { - super(); + super() - const mysqlConfig = config.get('Database:Config:mysql', {}); - mysqlConfig.dialect = 'mysql'; - mysqlConfig.host = process.env.DB_HOST || mysqlConfig.host; - mysqlConfig.port = process.env.DB_PORT || mysqlConfig.port; - mysqlConfig.username = process.env.DB_USERNAME || mysqlConfig.username; - mysqlConfig.password = process.env.DB_PASSWORD || mysqlConfig.password; - mysqlConfig.databaseName = process.env.DB_NAME || mysqlConfig.database; + const mysqlConfig = config.get('Database:Config:mysql', {}) + mysqlConfig.dialect = 'mysql' + mysqlConfig.host = process.env.DB_HOST || mysqlConfig.host + mysqlConfig.port = process.env.DB_PORT || mysqlConfig.port + mysqlConfig.username = process.env.DB_USERNAME || mysqlConfig.username + mysqlConfig.password = process.env.DB_PASSWORD || mysqlConfig.password + mysqlConfig.databaseName = process.env.DB_NAME || mysqlConfig.database - this.sequelize = new Sequelize(mysqlConfig.databaseName, mysqlConfig.username, mysqlConfig.password, mysqlConfig); - - this.initDB(); // Call initDB method to start the database initialization + this.sequelize = new Sequelize(mysqlConfig.databaseName, mysqlConfig.username, mysqlConfig.password, mysqlConfig) } async initDB () { - try { - await this.sequelize.authenticate(); - console.log('Connection has been established successfully.'); - // Implement further initialization logic here - } catch (error) { - console.error('Unable to connect to the database: ', error); - } } } -module.exports = MySqlDatabaseProvider; +module.exports = MySqlDatabaseProvider diff --git a/src/data/providers/sqlite.js b/src/data/providers/sqlite.js index 0f65837a2..1d0e5cb04 100644 --- a/src/data/providers/sqlite.js +++ b/src/data/providers/sqlite.js @@ -3,7 +3,7 @@ const fs = require('fs') const Sequelize = require('sequelize') const config = require('../../config') -const DatabaseProvider = require(`./database-provider`) +const DatabaseProvider = require('./database-provider') class SqliteDatabaseProvider extends DatabaseProvider { constructor () { diff --git a/src/data/seeders/20240304180631-insert-control-plane.js b/src/data/seeders/20240304180631-insert-control-plane.js new file mode 100644 index 000000000..cd015ea18 --- /dev/null +++ b/src/data/seeders/20240304180631-insert-control-plane.js @@ -0,0 +1,19 @@ +const config = require('../../config') + +const ControlPlaneConfig = config.get('ControlPlane:Config', {}) + +module.exports = { + up: (queryInterface, Sequelize) => { + return queryInterface.Insert('ControlPlane', [ + { + namespace: ControlPlaneConfig.namespace, + orgName: ControlPlaneConfig.orgName, + entitlementId: ControlPlaneConfig.entitlementID + } + ]) + }, + + down: (queryInterface, Sequelize) => { + return queryInterface.Delete('ControlPlane', null, {}) + } +} diff --git a/src/routes/controlPlane.js b/src/routes/controlPlane.js new file mode 100644 index 000000000..37750b99c --- /dev/null +++ b/src/routes/controlPlane.js @@ -0,0 +1,45 @@ +/* + * ******************************************************************************* + * * Copyright (c) 2023 Datasance Teknoloji A.S. + * * + * * This program and the accompanying materials are made available under the + * * terms of the Eclipse Public License v. 2.0 which is available at + * * http://www.eclipse.org/legal/epl-2.0 + * * + * * SPDX-License-Identifier: EPL-2.0 + * ******************************************************************************* + * + */ +const constants = require('../helpers/constants') +const ControlPlaneController = require('../controllers/control-plane-controller') +const ResponseDecorator = require('../decorators/response-decorator') +const Errors = require('../helpers/errors') +const logger = require('../logger') + +module.exports = [ + { + method: 'get', + path: '/api/v1/controlplane/profile', + middleware: async (req, res) => { + logger.apiReq(req) + + const successCode = constants.HTTP_CODE_SUCCESS + const errorCodes = [ + { + code: constants.HTTP_CODE_UNAUTHORIZED, + errors: [Errors.AuthenticationError] + } + ] + + const getControlPlaneProfileEndPoint = ResponseDecorator.handleErrors(ControlPlaneController.getControlPlaneProfileEndPoint, successCode, errorCodes) + const responseObject = await getControlPlaneProfileEndPoint(req) + + res + .status(responseObject.code) + .send(responseObject.body) + + logger.apiRes({ req: req, res: responseObject }) + } + } + +] diff --git a/src/schemas/controlPlane.js b/src/schemas/controlPlane.js new file mode 100644 index 000000000..79b659a93 --- /dev/null +++ b/src/schemas/controlPlane.js @@ -0,0 +1,26 @@ +/* + * ******************************************************************************* + * * Copyright (c) 2023 Datasance Teknoloji A.S. + * * + * * This program and the accompanying materials are made available under the + * * terms of the Eclipse Public License v. 2.0 which is available at + * * http://www.eclipse.org/legal/epl-2.0 + * * + * * SPDX-License-Identifier: EPL-2.0 + * ******************************************************************************* + * + */ + +const details = { + id: '/profile', + type: 'object', + properties: { + }, + required: [], + additionalProperties: true +} + +module.exports = { + mainSchemas: [details], + innerSchemas: [] +} diff --git a/src/services/control-plane.js b/src/services/control-plane.js new file mode 100644 index 000000000..ab0c01417 --- /dev/null +++ b/src/services/control-plane.js @@ -0,0 +1 @@ +// \ No newline at end of file From 3763b6c7d4b622586fd36c350a4ffd4984c3a8a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Sat, 9 Mar 2024 17:17:51 +0300 Subject: [PATCH 052/146] condif data model associated with controlplane, timestamps for controlplane and user --- src/data/models/config.js | 9 ++++++++- src/data/models/controlPlane.js | 2 +- src/data/models/user.js | 2 +- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/data/models/config.js b/src/data/models/config.js index 8935d9227..0ae57a117 100644 --- a/src/data/models/config.js +++ b/src/data/models/config.js @@ -31,7 +31,14 @@ module.exports = (sequelize, DataTypes) => { ] }) Config.associate = function (models) { - + Config.belongsTo(models.ControlPlane, { + foreignKey: { + name: 'controlPlaneUuid', + field: 'controlPlane_uuid' + }, + as: 'controlPlane', + onDelete: 'cascade' + }) } return Config } diff --git a/src/data/models/controlPlane.js b/src/data/models/controlPlane.js index 254665d1b..7a3710d89 100644 --- a/src/data/models/controlPlane.js +++ b/src/data/models/controlPlane.js @@ -26,7 +26,7 @@ module.exports = (sequelize, DataTypes) => { } }, { tableName: 'ControlPlane', - timestamps: false, + timestamps: true, underscored: true }) ControlPlane.associate = function (models) { diff --git a/src/data/models/user.js b/src/data/models/user.js index d8a9e16ec..3b1a30e6f 100644 --- a/src/data/models/user.js +++ b/src/data/models/user.js @@ -48,7 +48,7 @@ module.exports = (sequelize, DataTypes) => { } }, { tableName: 'Users', - timestamps: false, + timestamps: true, underscored: true }) User.associate = function (models) { From 2c1d42325317410c3727e7743ee46d1cbb0aaece Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Sun, 10 Mar 2024 01:02:41 +0300 Subject: [PATCH 053/146] commit --- Dockerfile.dev | 2 +- src/data/migrations/20180930155645-create-user.js | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/Dockerfile.dev b/Dockerfile.dev index 861ebfa3f..93120cfd2 100644 --- a/Dockerfile.dev +++ b/Dockerfile.dev @@ -48,7 +48,7 @@ COPY --from=builder /tmp/datasance-iofogcontroller-*.tgz /tmp/iofog-controller.t RUN npm i -g /tmp/iofog-controller.tgz && \ rm -rf /tmp/iofog-controller.tgz && \ iofog-controller config dev-mode --on -# RUN sudo rm -rf /usr/local/lib/node_modules/iofogcontroller/src/data/sqlite_files +# RUN sudo rm -rf /usr/local/lib/node_modules/@datasance/iofogcontroller/src/data/sqlite_files LABEL org.opencontainers.image.description controller LABEL org.opencontainers.image.source=https://github.com/datasance/controller LABEL org.opencontainers.image.licenses=EPL2.0 diff --git a/src/data/migrations/20180930155645-create-user.js b/src/data/migrations/20180930155645-create-user.js index d1d119d5c..8d931c0ca 100644 --- a/src/data/migrations/20180930155645-create-user.js +++ b/src/data/migrations/20180930155645-create-user.js @@ -47,6 +47,12 @@ module.exports = { type: Sequelize.STRING(100), field: 'subscriptionKey', defaultValue: '' + }, + controlPlaneUuid: { + type: Sequelize.STRING(32), + field: 'controlPlane_uuid', + references: { model: 'ControlPlane', key: 'uuid' }, + onDelete: 'cascade' } }) }, From 3f56ab60471c43878345f070bae76b21219fdf4b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Mon, 18 Mar 2024 00:15:05 +0300 Subject: [PATCH 054/146] keycloak connect adapter added, user removed from controller --- docs/swagger.json | 278 ----------- docs/swagger.yaml | 371 --------------- scripts/cli-tests.js | 80 +--- src/cli/application.js | 7 - src/cli/catalog.js | 7 - src/cli/config.js | 29 +- src/cli/controller.js | 9 - src/cli/iofog.js | 8 - src/cli/microservice.js | 7 - src/cli/registry.js | 7 - src/cli/user.js | 195 -------- src/config/constants.js | 3 - src/config/default.json | 4 - src/config/development.json | 18 +- src/config/keycloak.js | 48 ++ src/config/keycloak.json | 14 + src/config/production.json | 18 +- src/controllers/catalog-controller.js | 3 +- src/controllers/control-plane-controller.js | 26 -- src/controllers/controller.js | 5 - src/controllers/kubelet-controller.js | 120 ----- src/controllers/user-controller.js | 76 +-- src/data/managers/access-token-manager.js | 36 -- src/data/managers/control-plane.js | 36 -- .../managers/email-activation-code-manager.js | 65 --- .../managers/kubelet-access-token-manager.js | 25 - src/data/managers/microservice-manager.js | 9 - .../scheduler-access-token-manager.js | 25 - src/data/managers/user-manager.js | 91 ---- .../migrations/20180930155645-create-user.js | 62 --- .../migrations/20180930164635-create-flow.js | 12 - .../20180930173823-create-registry.js | 6 - .../20180930184436-create-catalog-item.js | 6 - ...0930204039-create-email-activation-code.js | 37 -- .../migrations/20180930225403-create-fog.js | 6 - .../20180930230219-create-fog-access-token.js | 6 - .../20181001062956-create-microservice.js | 6 - ...20181001070828-create-microservice-port.js | 6 - .../20181003104606-create-access-token.js | 37 -- ...microservice-rename-updatedBy-to-userId.js | 11 - ...service-port-rename-updatedBy-to-userId.js | 11 - .../20181109132723-flow-remove-updatedBy.js | 14 - ...90222135632-create-kubelet-access-token.js | 37 -- ...227154512-create-scheduler-access-token.js | 37 -- .../20200123163412-create-router.js | 12 - .../20200202113124-create-public-ports.js | 6 - .../20200213033350-create-config.js | 6 - .../20201028005645-create-edge-resources.js | 8 +- ...1204003312-create_application_templates.js | 6 - .../20221021132000-create-proxy-ports.js | 6 - src/data/models/accesstoken.js | 40 -- src/data/models/application.js | 9 - src/data/models/applicationTemplate.js | 8 - src/data/models/catalogitem.js | 9 - src/data/models/config.js | 10 - src/data/models/controlPlane.js | 66 --- src/data/models/edgeResource.js | 9 - src/data/models/emailactivationcode.js | 41 -- src/data/models/fog.js | 9 - src/data/models/fogaccesstoken.js | 9 - src/data/models/index.js | 4 - src/data/models/kubeletaccesstoken.js | 41 -- src/data/models/microservice.js | 9 - src/data/models/microserviceport.js | 9 - src/data/models/registry.js | 10 - src/data/models/scheduleraccesstoken.js | 41 -- src/data/models/user.js | 94 ---- .../20240304180631-insert-control-plane.js | 19 - src/decorators/authorization-decorator.js | 29 -- src/decorators/cli-decorator.js | 69 --- src/helpers/errors.js | 10 - src/helpers/template-helper.js | 12 +- src/routes/catalog.js | 60 +-- src/routes/controlPlane.js | 45 -- src/routes/controller.js | 18 - src/routes/kubelet.js | 434 ------------------ src/routes/user.js | 234 ---------- src/schemas/config.js | 39 +- src/schemas/user.js | 123 +---- src/server.js | 13 +- src/services/access-token-service.js | 29 -- src/services/agent-service.js | 3 - src/services/application-service.js | 29 +- src/services/application-template-service.js | 31 +- src/services/catalog-service.js | 37 +- src/services/control-plane.js | 1 - src/services/controller-service.js | 9 - src/services/diagnostic-service.js | 22 +- src/services/edge-resource-service.js | 26 +- src/services/email-activation-code-service.js | 64 --- src/services/iofog-service.js | 80 +--- src/services/kubelet-access-token-service.js | 48 -- src/services/kubelet-service.js | 432 ----------------- src/services/microservice-ports/default.js | 73 +-- src/services/microservice-ports/proxy.js | 4 +- src/services/microservices-service.js | 92 ++-- src/services/registry-service.js | 30 +- src/services/router-service.js | 32 +- src/services/routing-service.js | 2 +- .../scheduler-access-token-service.js | 48 -- src/services/user-service.js | 397 ++-------------- 101 files changed, 371 insertions(+), 4599 deletions(-) delete mode 100644 src/cli/user.js create mode 100644 src/config/keycloak.js create mode 100644 src/config/keycloak.json delete mode 100644 src/controllers/control-plane-controller.js delete mode 100644 src/controllers/kubelet-controller.js delete mode 100644 src/data/managers/access-token-manager.js delete mode 100644 src/data/managers/control-plane.js delete mode 100644 src/data/managers/email-activation-code-manager.js delete mode 100644 src/data/managers/kubelet-access-token-manager.js delete mode 100644 src/data/managers/scheduler-access-token-manager.js delete mode 100644 src/data/managers/user-manager.js delete mode 100644 src/data/migrations/20180930155645-create-user.js delete mode 100644 src/data/migrations/20180930204039-create-email-activation-code.js delete mode 100644 src/data/migrations/20181003104606-create-access-token.js delete mode 100644 src/data/migrations/20181109132609-microservice-rename-updatedBy-to-userId.js delete mode 100644 src/data/migrations/20181109132704-microservice-port-rename-updatedBy-to-userId.js delete mode 100644 src/data/migrations/20181109132723-flow-remove-updatedBy.js delete mode 100644 src/data/migrations/20190222135632-create-kubelet-access-token.js delete mode 100644 src/data/migrations/20190227154512-create-scheduler-access-token.js delete mode 100644 src/data/models/accesstoken.js delete mode 100644 src/data/models/controlPlane.js delete mode 100644 src/data/models/emailactivationcode.js delete mode 100644 src/data/models/kubeletaccesstoken.js delete mode 100644 src/data/models/scheduleraccesstoken.js delete mode 100644 src/data/models/user.js delete mode 100644 src/data/seeders/20240304180631-insert-control-plane.js delete mode 100644 src/decorators/cli-decorator.js delete mode 100644 src/routes/controlPlane.js delete mode 100644 src/routes/kubelet.js delete mode 100644 src/services/access-token-service.js delete mode 100644 src/services/control-plane.js delete mode 100644 src/services/email-activation-code-service.js delete mode 100644 src/services/kubelet-access-token-service.js delete mode 100644 src/services/kubelet-service.js delete mode 100644 src/services/scheduler-access-token-service.js diff --git a/docs/swagger.json b/docs/swagger.json index 29afc4b7d..7442ffbb3 100644 --- a/docs/swagger.json +++ b/docs/swagger.json @@ -7,9 +7,6 @@ "tags" : [ { "name" : "Controller", "description" : "Manage your controller" - }, { - "name" : "Control Plane", - "description" : "Manage your Control Plane" }, { "name" : "ioFog", "description" : "Manage your agents" @@ -48,22 +45,6 @@ "description" : "Manage your users" } ], "paths" : { - "/controlplane/profile" : { - "get" : { - "tags" : [ "ControlPlane" ], - "summary" : "Returns Control Plane Profile", - "operationId" : "getControlPlaneProfile", - "parameters" : [ ], - "responses" : { - "200" : { - "description" : "Control Plane Profile" - }, - "500" : { - "description" : "Internal Server Error" - } - } - } - }, "/status" : { "get" : { "tags" : [ "Controller" ], @@ -80,22 +61,6 @@ } } }, - "/email-activation" : { - "get" : { - "tags" : [ "Controller" ], - "summary" : "Returns email activation status", - "operationId" : "getEmailActivationStatus", - "parameters" : [ ], - "responses" : { - "200" : { - "description" : "Email activation status" - }, - "500" : { - "description" : "Internal Server Error" - } - } - } - }, "/fog-types" : { "get" : { "tags" : [ "Controller" ], @@ -3058,249 +3023,6 @@ } } }, - "/user/logout" : { - "post" : { - "tags" : [ "User" ], - "summary" : "Logout", - "operationId" : "logout", - "parameters" : [ { - "name" : "Authorization", - "in" : "header", - "description" : "User token", - "required" : true - } ], - "responses" : { - "204" : { - "description" : "Success" - }, - "401" : { - "description" : "Not Authorized" - }, - "500" : { - "description" : "Internal Server Error" - } - } - } - }, - "/user/signup" : { - "post" : { - "tags" : [ "User" ], - "summary" : "Signup", - "operationId" : "signup", - "parameters" : [ ], - "responses" : { - "201" : { - "description" : "Success", - "headers" : { - "X-Timestamp" : { - "description" : "FogController server timestamp" - } - } - }, - "400" : { - "description" : "Bad Request" - }, - "500" : { - "description" : "Internal Server Error" - } - } - } - }, - "/user/signup/resend-activation" : { - "get" : { - "tags" : [ "User" ], - "summary" : "Resend activation email", - "operationId" : "resendActivationEmail", - "parameters" : [ { - "name" : "email", - "in" : "query", - "required" : true - } ], - "responses" : { - "204" : { - "description" : "Success", - "headers" : { - "X-Timestamp" : { - "description" : "FogController server timestamp" - } - } - }, - "400" : { - "description" : "Bad Request" - }, - "500" : { - "description" : "Internal Server Error" - } - } - } - }, - "/user/activate" : { - "post" : { - "tags" : [ "User" ], - "summary" : "Activate account", - "operationId" : "activateAccount", - "parameters" : [ ], - "responses" : { - "303" : { - "description" : "Redirect to login page", - "headers" : { - "X-Timestamp" : { - "description" : "FogController server timestamp" - }, - "Location" : { - "description" : "Login page url" - } - } - }, - "404" : { - "description" : "Not Found" - }, - "500" : { - "description" : "Internal Server Error" - } - } - } - }, - "/user/profile" : { - "get" : { - "tags" : [ "User" ], - "summary" : "Get current user profile data", - "operationId" : "getUserProfile", - "parameters" : [ { - "name" : "Authorization", - "in" : "header", - "description" : "User token", - "required" : true - } ], - "responses" : { - "200" : { - "description" : "Success", - "headers" : { - "X-Timestamp" : { - "description" : "FogController server timestamp" - } - } - }, - "401" : { - "description" : "Not Authorized" - }, - "500" : { - "description" : "Internal Server Error" - } - } - }, - "delete" : { - "tags" : [ "User" ], - "summary" : "Delete account", - "operationId" : "deleteAccount", - "parameters" : [ { - "name" : "Authorization", - "in" : "header", - "description" : "User Token", - "required" : true - } ], - "responses" : { - "204" : { - "description" : "Success", - "headers" : { - "X-Timestamp" : { - "description" : "FogController server timestamp" - } - } - }, - "401" : { - "description" : "Not Authorized" - }, - "500" : { - "description" : "Internal Server Error" - } - } - }, - "patch" : { - "tags" : [ "User" ], - "summary" : "Update user profile", - "operationId" : "updateUserProfile", - "parameters" : [ { - "name" : "Authorization", - "in" : "header", - "description" : "User Token", - "required" : true - } ], - "responses" : { - "200" : { - "description" : "Updated user profile", - "headers" : { - "X-Timestamp" : { - "description" : "FogController server timestamp" - } - } - }, - "400" : { - "description" : "Bad Request" - }, - "401" : { - "description" : "Not Authorized" - }, - "500" : { - "description" : "Internal Server Error" - } - } - } - }, - "/user/password" : { - "delete" : { - "tags" : [ "User" ], - "summary" : "Reset password", - "operationId" : "resetPassword", - "parameters" : [ ], - "responses" : { - "204" : { - "description" : "Success", - "headers" : { - "X-Timestamp" : { - "description" : "FogController server timestamp" - } - } - }, - "404" : { - "description" : "Not Found" - }, - "500" : { - "description" : "Internal Server Error" - } - } - }, - "patch" : { - "tags" : [ "User" ], - "summary" : "change password", - "operationId" : "changePassword", - "parameters" : [ { - "name" : "Authorization", - "in" : "header", - "description" : "User Token", - "required" : true - } ], - "responses" : { - "204" : { - "description" : "Success", - "headers" : { - "X-Timestamp" : { - "description" : "FogController server timestamp" - } - } - }, - "400" : { - "description" : "Bad Request" - }, - "401" : { - "description" : "Not Authorized" - }, - "500" : { - "description" : "Internal Server Error" - } - } - } - }, "/routes" : { "get" : { "tags" : [ "Routing" ], diff --git a/docs/swagger.yaml b/docs/swagger.yaml index cd13d6b03..eea611c12 100755 --- a/docs/swagger.yaml +++ b/docs/swagger.yaml @@ -3,21 +3,6 @@ info: version: 1.0.0 title: Datasance PoT-ioFog Controller paths: - /controlplane/profile: - get: - tags: - - ControlPlane - summary: Returns Control Plane Profile - operationId: getControlPlaneProfile - responses: - "200": - description: Control Plane Profile - content: - application/json: - schema: - $ref: "#/components/schemas/ControlPlaneProfileResponse" - "500": - description: Internal Server Error /status: get: tags: @@ -33,21 +18,6 @@ paths: $ref: "#/components/schemas/ServiceStatusResponse" "500": description: Internal Server Error - /email-activation: - get: - tags: - - Controller - summary: Returns email activation status - operationId: getEmailActivationStatus - responses: - "200": - description: Email activation status - content: - application/json: - schema: - $ref: "#/components/schemas/EmailActivationStatusResponse" - "500": - description: Internal Server Error /fog-types: get: tags: @@ -2744,237 +2714,6 @@ paths: description: bad request "401": description: incorrect credentials - /user/logout: - post: - tags: - - User - summary: Logout - operationId: logout - security: - - userToken: [] - responses: - "204": - description: Success - "401": - description: Not Authorized - "500": - description: Internal Server Error - /user/signup: - post: - tags: - - User - summary: Signup - operationId: signup - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/SignupRequest" - description: new user data - required: true - responses: - "201": - description: Success - headers: - X-Timestamp: - description: FogController server timestamp - schema: - type: number - content: - application/json: - schema: - $ref: "#/components/schemas/SignupSuccessResponse" - "400": - description: Bad Request - "500": - description: Internal Server Error - /user/signup/resend-activation: - get: - tags: - - User - summary: Resend activation email - operationId: resendActivationEmail - parameters: - - in: query - name: email - required: true - schema: - type: string - responses: - "204": - description: Success - headers: - X-Timestamp: - description: FogController server timestamp - schema: - type: number - "400": - description: Bad Request - "500": - description: Internal Server Error - /user/activate: - post: - tags: - - User - summary: Activate account - operationId: activateAccount - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/UserActivateRequest" - description: activation code - required: true - responses: - "303": - description: Redirect to login page - headers: - X-Timestamp: - description: FogController server timestamp - schema: - type: number - Location: - description: Login page url - schema: - type: string - "404": - description: Not Found - "500": - description: Internal Server Error - /user/profile: - get: - tags: - - User - summary: Get current user profile data - operationId: getUserProfile - security: - - userToken: [] - responses: - "200": - description: Success - headers: - X-Timestamp: - description: FogController server timestamp - schema: - type: number - content: - application/json: - schema: - $ref: "#/components/schemas/UserProfileDetailsResponse" - "401": - description: Not Authorized - "500": - description: Internal Server Error - patch: - tags: - - User - summary: Update user profile - operationId: updateUserProfile - security: - - userToken: [] - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/UserProfileUpdatesRequest" - description: Updated profile data - required: true - responses: - "200": - description: Updated user profile - headers: - X-Timestamp: - description: FogController server timestamp - schema: - type: number - content: - application/json: - schema: - $ref: "#/components/schemas/UserProfileDetailsResponse" - "400": - description: Bad Request - "401": - description: Not Authorized - "500": - description: Internal Server Error - delete: - tags: - - User - summary: Delete account - operationId: deleteAccount - security: - - userToken: [] - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/DeleteParameters" - description: parameters for delete - responses: - "204": - description: Success - headers: - X-Timestamp: - description: FogController server timestamp - schema: - type: number - "401": - description: Not Authorized - "500": - description: Internal Server Error - /user/password: - patch: - tags: - - User - summary: change password - operationId: changePassword - security: - - userToken: [] - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/PasswordChangeRequest" - description: current and new password - required: true - responses: - "204": - description: Success - headers: - X-Timestamp: - description: FogController server timestamp - schema: - type: number - "400": - description: Bad Request - "401": - description: Not Authorized - "500": - description: Internal Server Error - delete: - tags: - - User - summary: Reset password - operationId: resetPassword - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/PasswordResetRequest" - description: email - required: true - responses: - "204": - description: Success - headers: - X-Timestamp: - description: FogController server timestamp - schema: - type: number - "404": - description: Not Found - "500": - description: Internal Server Error /routes: get: tags: @@ -3698,8 +3437,6 @@ components: type: string isActivated: type: boolean - userId: - type: number microservices: type: array items: @@ -3828,8 +3565,6 @@ components: type: string description: type: string - userId: - type: number application: type: object properties: @@ -3862,11 +3597,6 @@ components: example: ok timestamp: type: number - EmailActivationStatusResponse: - type: object - properties: - isEmailActivationEnabled: - type: boolean IOFogTypesResponse: type: object properties: @@ -4018,8 +3748,6 @@ components: type: number fogTypeId: type: number - userId: - type: number routerMode: type: string enum: @@ -4592,8 +4320,6 @@ components: type: string userEmail: type: string - userId: - type: string RegistryBody: type: object properties: @@ -4896,103 +4622,6 @@ components: properties: accessToken: type: string - SignupSuccessResponse: - type: object - required: - - userId - - firstName - - lastName - - email - - subscriptionKey - - emailActivated - properties: - userId: - type: number - firstName: - type: string - lastName: - type: string - email: - type: string - subscriptionKey: - type: string - emailActivated: - type: boolean - UserProfileDetailsResponse: - type: object - required: - - firstName - - lastName - - email - - subscriptionKey - properties: - firstName: - type: string - lastName: - type: string - email: - type: string - subscriptionKey: - type: string - UserProfileUpdatesRequest: - type: object - properties: - firstName: - type: string - lastName: - type: string - subscriptionKey: - type: string - UserActivateRequest: - type: object - required: - - activationCode - properties: - activationCode: - type: string - PasswordResetRequest: - type: object - required: - - email - properties: - email: - type: string - PasswordChangeRequest: - type: object - required: - - oldPassword - - newPassword - properties: - oldPassword: - type: string - newPassword: - type: string - DeleteParameters: - type: object - required: - - force - properties: - force: - type: boolean - SignupRequest: - type: object - required: - - firstName - - lastName - - email - - password - - subscriptionKey - properties: - firstName: - type: string - lastName: - type: string - email: - type: string - password: - type: string - subscriptionKey: - type: string VersionCommandResponse: type: object required: diff --git a/scripts/cli-tests.js b/scripts/cli-tests.js index 4db238617..a9866bb4e 100644 --- a/scripts/cli-tests.js +++ b/scripts/cli-tests.js @@ -34,12 +34,8 @@ let testsCounter = 0 let testsFailed = 0 const controllerStatusFields = ['status', 'timestamp'] -const controllerEmailActivationFields = ['isEmailActivationEnabled'] const controllerFogTypesFields = ['fogTypes'] -const userCreateFields = ['id'] -const userAccessTokenFields = ['accessToken'] - const ioFogCreateFields = ['uuid'] const ioFogListFields = ['fogs'] const ioFogProvisioningFields = ['key', 'expirationTime'] @@ -84,24 +80,10 @@ function testControllerSection () { console.log('\n=============================\nStarting controller section..') responseHasFields(testCommand('controller status'), controllerStatusFields) - responseHasFields(testCommand('controller email-activation'), controllerEmailActivationFields) responseHasFields(testCommand('controller fog-types'), controllerFogTypesFields) hasSomeResponse(testCommand('controller version')) } -function testUserSection () { - console.log('\n=============================\nStarting user section..') - - responseHasFields(testCommand('user add -f John -l Doe -e user@domain.com -p \'#Bugs4Fun\''), userCreateFields) - responseEquals(testCommand('user update -f John2 -l Doe2 -e user@domain.com -p \'#Bugs4Fun34\''), - 'User updated successfully.') - responseIsArray(testCommand('user list')) - responseHasFields(testCommand('user generate-token -e user@domain.com'), userAccessTokenFields) - responseEquals(testCommand('user suspend -e user@domain.com'), 'User suspended successfully.') - responseEquals(testCommand('user activate -e user@domain.com'), 'User activated successfully.') - responseEquals(testCommand('user remove -e user@domain.com'), 'User removed successfully.') -} - function testConfigSection () { console.log('\n=============================\nStarting config section..') @@ -124,18 +106,14 @@ function testTunnelSection () { function testIoFogSection () { console.log('\n=============================\nStarting iofog section..') - const userCreateResponse = responseHasFields(executeCommand('user add -f John -l Doe -e fogUser@domain.com' + - ' -p \'#Bugs4Fun\''), userCreateFields) - const userId = userCreateResponse.id - try { const ioFogCreateResponse = responseHasFields(testCommand('iofog add -n ioFog1 -l testLocation -t 55 -g 65' + ' -d testDescription -D testDockerUrl -M 55 -T testDiskDirectoryString -m 65 -c 24 -G 1 -Y testLogDirectory ' + - ' -s 25 -F 27 -Q 26 -B -W -A -y 1 -u ' + userId), ioFogCreateFields) + ' -s 25 -F 27 -Q 26 -B -W -A -y 1 -u '), ioFogCreateFields) const ioFogUuid = ioFogCreateResponse.uuid responseEquals(testCommand('iofog update -i ' + ioFogUuid + ' -n ioFog1 -l testLocation -t 55 -g 65 ' + '-d testDescription -D testDockerUrl -M 55 -T testDiskDirectoryString -m 65 -c 24 -G 1 -Y testLogDirectory ' + - ' -s 25 -F 27 -Q 26 -B -W -A -y 1 -L INFO -p 65 -k 95 -u ' + userId), 'ioFog node has been updated successfully.') + ' -s 25 -F 27 -Q 26 -B -W -A -y 1 -L INFO -p 65 -k 95 -u '), 'ioFog node has been updated successfully.') responseHasFields(testCommand('iofog list'), ioFogListFields) responseHasFields(testCommand('iofog info -i ' + ioFogUuid), ioFogCreateFields) responseHasFields(testCommand('iofog provisioning-key -i ' + ioFogUuid), ioFogProvisioningFields) @@ -145,7 +123,7 @@ function testIoFogSection () { 'ioFog version command has been set successfully') hasSomeResponse(testCommand('iofog hal-hw -i ' + ioFogUuid)) hasSomeResponse(testCommand('iofog hal-usb -i ' + ioFogUuid)) - responseEquals(testCommand('iofog remove -i ' + ioFogUuid + ' -u ' + userId), 'ioFog node has been removed successfully') + responseEquals(testCommand('iofog remove -i ' + ioFogUuid + ' -u '), 'ioFog node has been removed successfully') executeCommand('user remove -e fogUser@domain.com') } catch (exception) { executeCommand('user remove -e fogUser@domain.com') @@ -155,18 +133,15 @@ function testIoFogSection () { function testCatalogSection () { console.log('\n=============================\nStarting catalog section..') - const userCreateResponse = responseHasFields(executeCommand('user add -f John -l Doe -e catalogUser@domain.com' + - ' -p \'#Bugs4Fun\''), userCreateFields) - const userId = userCreateResponse.id const registryCreateResponse = responseHasFields(executeCommand('registry add -U testRegistryUri -b -l testUserName' + - ' -p testPassword -e testEmail@gmail.com -u ' + userId), registryCreateFields) + ' -p testPassword -e testEmail@gmail.com -u '), registryCreateFields) const registryId = registryCreateResponse.id try { const catalogCreateResponse = responseHasFields(testCommand('catalog add -n testCatalogItem1 -d testDescription' + ' -c testCategory -x testIntelImage -a testArmImage -p testPublisher -s 15 -r 15 -t testPicture -g ' + registryId + ' -I testInputType -F testInputFormat -O testOutputType -T testOutputFormat ' + - '-X \'{}\' -u ' + userId), catalogCreateFields) + '-X \'{}\' -u '), catalogCreateFields) const catalogId = catalogCreateResponse.id responseEquals(testCommand('catalog update -i ' + catalogId + ' -n testCatalogItem2 -d testDescription' + ' -c testCategory -x testIntelImage -a testArmImage -p testPublisher -s 15 -r 15 -t testPicture -g ' + @@ -186,19 +161,15 @@ function testCatalogSection () { function testApplicationSection () { console.log('\n=============================\nStarting application section..') - const userCreateResponse = responseHasFields(executeCommand('user add -f John -l Doe -e applicationUser@domain.com' + - ' -p \'#Bugs4Fun\''), userCreateFields) - const userId = userCreateResponse.id - try { const applicationCreateResponse = responseHasFields(testCommand('application add -n test-application-1 -d testDescription' + - ' -a -u ' + userId), applicationCreateFields) + ' -a -u '), applicationCreateFields) const name = applicationCreateResponse.name - responseEquals(testCommand('application update -n ' + name + ' -d testDescription -a' + ' -u ' + userId), + responseEquals(testCommand('application update -n ' + name + ' -d testDescription -a' + ' -u '), 'Application updated successfully.') responseHasFields(testCommand('application list'), applicationListFields) responseHasFields(testCommand('application info -n ' + name), applicationCreateFields) - responseEquals(testCommand('application remove -n ' + name + ' -u ' + userId), 'Application removed successfully.') + responseEquals(testCommand('application remove -n ' + name + ' -u '), 'Application removed successfully.') executeCommand('user remove -e applicationUser@domain.com') } catch (exception) { executeCommand('user remove -e applicationUser@domain.com') @@ -208,33 +179,29 @@ function testApplicationSection () { function testMicroserviceSection () { console.log('\n=============================\nStarting microservice section..') - const userCreateResponse = responseHasFields(executeCommand('user add -f John -l Doe -e microserviceUser@domain.com' + - ' -p \'#Bugs4Fun\''), userCreateFields) - const userId = userCreateResponse.id - const registryCreateResponse = responseHasFields(executeCommand('registry add -U testRegistryUri -b -l testUserName' + - ' -p testPassword -e testEmail@gmail.com -u ' + userId), registryCreateFields) + ' -p testPassword -e testEmail@gmail.com -u '), registryCreateFields) const registryId = registryCreateResponse.id const catalogCreateResponse = responseHasFields(executeCommand('catalog add -n testCatalogItem1 -d testDescription' + ' -c testCategory -x testIntelImage -a testArmImage -p testPublisher -s 15 -r 15 -t testPicture -g ' + registryId + ' -I testInputType -F testInputFormat -O testOutputType -T testOutputFormat ' + - '-X \'{}\' -u ' + userId), catalogCreateFields) + '-X \'{}\' -u '), catalogCreateFields) const catalogId = catalogCreateResponse.id const applicationCreateResponse = responseHasFields(executeCommand('application add -n test-application1 -d testDescription' + - ' -a -u ' + userId), applicationCreateFields) + ' -a -u '), applicationCreateFields) const applicationId = applicationCreateResponse.name const ioFogCreateResponse = responseHasFields(executeCommand('iofog add -n ioFog2 -l testLocation -t 55 -g 65 ' + '-d testDescription -D testDockerUrl -M 55 -T testDiskDirectoryString -m 65 -c 24 -G 1 -Y testLogDirectory ' + - ' -s 25 -F 27 -Q 26 -B -W -A -y 1 -u ' + userId), ioFogCreateFields) + ' -s 25 -F 27 -Q 26 -B -W -A -y 1 -u '), ioFogCreateFields) const ioFogUuid = ioFogCreateResponse.uuid try { const microserviceCreateResponse = responseHasFields(testCommand('microservice add -n microservice-name-1' + ' -c ' + catalogId + ' -F ' + applicationId + ' -I ' + ioFogUuid + ' -g \'{}\' -v /host_src:/container_src:rw -l 15 -R' + - ' -p 80:8080:false -u ' + userId), microserviceCreateFields) + ' -p 80:8080:false -u '), microserviceCreateFields) const microserviceUuid = microserviceCreateResponse.uuid responseEquals(testCommand('microservice update -i ' + microserviceUuid + ' -n microservice-name-2' + ' -I ' + ioFogUuid + ' -g \'{}\' -v /host_src:/container_src:rw -l 15 -R -w'), @@ -274,13 +241,9 @@ function testMicroserviceSection () { function testRegistrySection () { console.log('\n=============================\nStarting registry section..') - const userCreateResponse = responseHasFields(executeCommand('user add -f John -l Doe -e registryUser@domain.com' + - ' -p \'#Bugs4Fun\''), userCreateFields) - try { - const userId = userCreateResponse.id const registryCreateResponse = responseHasFields(testCommand('registry add -U testRegistryUri -b -l testUserName' + - ' -p testPassword -e testEmail@gmail.com -u ' + userId), registryCreateFields) + ' -p testPassword -e testEmail@gmail.com -u '), registryCreateFields) const registryId = registryCreateResponse.id responseEquals(testCommand('registry update -i ' + registryId + ' -U testRegistryUri -b -l testUserName' + ' -p testPassword -e testEmail@gmail.com'), 'Registry has been updated successfully.') @@ -295,32 +258,28 @@ function testRegistrySection () { function testDiagnosticsSection () { console.log('\n=============================\nStarting diagnostics section..') - const userCreateResponse = responseHasFields(executeCommand('user add -f John -l Doe -e diagnosticsUser@domain.com' + - ' -p \'#Bugs4Fun\''), userCreateFields) - const userId = userCreateResponse.id - const registryCreateResponse = responseHasFields(executeCommand('registry add -U testRegistryUri -b -l testUserName' + - ' -p testPassword -e testEmail@gmail.com -u ' + userId), registryCreateFields) + ' -p testPassword -e testEmail@gmail.com -u '), registryCreateFields) const registryId = registryCreateResponse.id const catalogCreateResponse = responseHasFields(executeCommand('catalog add -n testCatalogItem1 -d testDescription' + ' -c testCategory -x testIntelImage -a testArmImage -p testPublisher -s 15 -r 15 -t testPicture -g ' + registryId + ' -I testInputType -F testInputFormat -O testOutputType -T testOutputFormat ' + - '-X \'{}\' -u ' + userId), catalogCreateFields) + '-X \'{}\' -u '), catalogCreateFields) const catalogId = catalogCreateResponse.id const applicationCreateResponse = responseHasFields(executeCommand('application add -n test-application1 -d testDescription' + - ' -a -u ' + userId), applicationCreateFields) + ' -a -u '), applicationCreateFields) const applicationId = applicationCreateResponse.name const ioFogCreateResponse = responseHasFields(executeCommand('iofog add -n ioFog3 -l testLocation -t 55 -g 65' + ' -d testDescription -D testDockerUrl -M 55 -T testDiskDirectoryString -m 65 -c 24 -G 1 -Y testLogDirectory ' + - ' -s 25 -F 27 -Q 26 -B -W -A -y 1 -u ' + userId), ioFogCreateFields) + ' -s 25 -F 27 -Q 26 -B -W -A -y 1 -u '), ioFogCreateFields) const ioFogUuid = ioFogCreateResponse.uuid const microserviceCreateResponse = responseHasFields(executeCommand('microservice add -n microservice-name-1' + ' -c ' + catalogId + ' -F ' + applicationId + ' -I ' + ioFogUuid + ' -g \'{}\' -v /host_src:/container_src:rw -l 15 -R' + - ' -p 80:8080:false -u ' + userId), microserviceCreateFields) + ' -p 80:8080:false -u '), microserviceCreateFields) const microserviceUuid = microserviceCreateResponse.uuid try { @@ -421,7 +380,6 @@ async function cliTest () { await seedTestData() testControllerSection() - testUserSection() testConfigSection() testTunnelSection() testIoFogSection() diff --git a/src/cli/application.js b/src/cli/application.js index ef50cfd41..6dc99594a 100644 --- a/src/cli/application.js +++ b/src/cli/application.js @@ -71,13 +71,6 @@ class Application extends BaseCLIHandler { type: Boolean, description: 'Deactivate application', group: [constants.CMD_UPDATE, constants.CMD_ADD] - }, - { - name: 'user-id', - alias: 'u', - type: CliDataTypes.Integer, - description: 'User\'s id', - group: [constants.CMD_ADD, constants.CMD_UPDATE, constants.CMD_REMOVE] } ] this.commands = { diff --git a/src/cli/catalog.js b/src/cli/catalog.js index 33a3e1908..a9a5a60db 100644 --- a/src/cli/catalog.js +++ b/src/cli/catalog.js @@ -192,13 +192,6 @@ class Catalog extends BaseCLIHandler { type: String, description: 'Catalog item config example', group: [constants.CMD_UPDATE, constants.CMD_ADD] - }, - { - name: 'user-id', - alias: 'u', - type: CliDataTypes.Integer, - description: 'User\'s id', - group: [constants.CMD_ADD] } ] this.commands = { diff --git a/src/cli/config.js b/src/cli/config.js index f0f813fed..438dd55f0 100644 --- a/src/cli/config.js +++ b/src/cli/config.js @@ -121,13 +121,6 @@ class Config extends BaseCLIHandler { type: Boolean, description: 'Disable', group: [constants.CMD_DEV_MODE, constants.CMD_EMAIL_ACTIVATION] - }, - { - name: 'kubelet', - alias: 't', - type: String, - description: 'iofog-kubelet url', - group: constants.CMD_ADD } ] this.commands = { @@ -156,9 +149,6 @@ class Config extends BaseCLIHandler { case constants.CMD_DEV_MODE: await _executeCase(configCommand, constants.CMD_DEV_MODE, _changeDevModeState) break - case constants.CMD_EMAIL_ACTIVATION: - await _executeCase(configCommand, constants.CMD_EMAIL_ACTIVATION, _changeEmailActivationState) - break case constants.CMD_HELP: default: return this.help([], true, false) @@ -256,11 +246,6 @@ const _addConfigOption = async function (options) { config.set('Service:LogsFileCount', options.logFileCount) onSuccess() }) - - await updateConfig(options.kubelet, 'kubelet', 'Kubelet:Uri', (onSuccess) => { - config.set('Kubelet:Uri', options.kubelet) - onSuccess() - }) } const updateConfig = async function (newConfigValue, cliConfigName, configName, fn) { @@ -283,16 +268,10 @@ const _listConfigOptions = function () { 'SSL key directory': config.get('Server:SslKey'), 'SSL certificate directory': config.get('Server:SslCert'), 'Intermediate key directory': config.get('Server:IntermediateCert'), - 'Home url': config.get('Email:HomeUrl'), - 'Email activation': config.get('Email:ActivationEnabled'), - 'Email address': config.get('Email:Address'), - 'Email password': config.get('Email:Password'), - 'Email service': config.get('Email:Service'), 'Log files directory': config.get('Service:LogsDirectory'), 'Log files size': config.get('Service:LogsFileSize'), 'Log files count': config.get('Service:LogsFileCount'), - 'Dev mode': config.get('Server:DevMode'), - 'Kubelet Url': config.get('Kubelet:Uri') + 'Dev mode': config.get('Server:DevMode') } const result = Object.keys(configuration) @@ -308,10 +287,4 @@ const _changeDevModeState = async function (options) { logger.cliRes('Dev mode state updated successfully.') } -const _changeEmailActivationState = function (options) { - const enableEmailActivation = AppHelper.validateBooleanCliOptions(options.on, options.off) - config.set('Email:ActivationEnabled', enableEmailActivation) - logger.cliRes('Email activation state updated successfully.') -} - module.exports = new Config() diff --git a/src/cli/controller.js b/src/cli/controller.js index ab650c4c8..dc3327cb6 100644 --- a/src/cli/controller.js +++ b/src/cli/controller.js @@ -50,9 +50,6 @@ class Controller extends BaseCLIHandler { case constants.CMD_STATUS: await _executeCase(controllerCommand, constants.CMD_STATUS, _getStatus, false) break - case constants.CMD_EMAIL_ACTIVATION: - await _executeCase(controllerCommand, constants.CMD_EMAIL_ACTIVATION, _emailActivation, false) - break case constants.CMD_FOG_TYPES: await _executeCase(controllerCommand, constants.CMD_FOG_TYPES, _getFogTypes, false) break @@ -89,12 +86,6 @@ const _getStatus = async function () { logger.cliRes(JSON.stringify(response, null, 2)) } -const _emailActivation = async function () { - logger.cliReq('controller email-activation') - const response = await ControllerService.emailActivation(true) - logger.cliRes(JSON.stringify(response, null, 2)) -} - const _getFogTypes = async function () { logger.cliReq('controller fog-types') const response = await ControllerService.getFogTypes(true) diff --git a/src/cli/iofog.js b/src/cli/iofog.js index 163f6d27b..26790ad46 100644 --- a/src/cli/iofog.js +++ b/src/cli/iofog.js @@ -248,13 +248,6 @@ class IOFog extends BaseCLIHandler { description: 'ioFog version command ', group: [constants.CMD_VERSION] }, - { - name: 'user-id', - alias: 'u', - type: CliDataTypes.Integer, - description: 'User\'s id', - group: [constants.CMD_ADD, constants.CMD_UPDATE, constants.CMD_REMOVE] - }, { name: 'log-level', alias: 'L', @@ -507,7 +500,6 @@ function _createFogObject (cliData) { abstractedHardwareEnabled: AppHelper.validateBooleanCliOptions(cliData.absHwEnable, cliData.absHwDisable), fogType: cliData.fogType, - userId: cliData.userId, dockerPruningFrequency: cliData.dockerPruningFrequency, availableDiskThreshold: cliData.availableDiskThreshold, logLevel: cliData.logLevel, diff --git a/src/cli/microservice.js b/src/cli/microservice.js index 270371041..2f0e3baa4 100644 --- a/src/cli/microservice.js +++ b/src/cli/microservice.js @@ -266,13 +266,6 @@ class Microservice extends BaseCLIHandler { description: 'Delete microservice with cleanup', group: [constants.CMD_REMOVE] }, - { - name: 'user-id', - alias: 'u', - type: CliDataTypes.Integer, - description: 'User\'s id', - group: [constants.CMD_ADD] - }, { name: 'mapping-id', alias: 'm', diff --git a/src/cli/registry.js b/src/cli/registry.js index 0be436f1a..00791fe2a 100644 --- a/src/cli/registry.js +++ b/src/cli/registry.js @@ -86,13 +86,6 @@ class Registry extends BaseCLIHandler { description: 'Email address', group: [constants.CMD_ADD, constants.CMD_UPDATE] }, - { - name: 'user-id', - alias: 'u', - type: CliDataTypes.Integer, - description: 'User\'s id', - group: [constants.CMD_ADD] - }, { name: 'item-id', alias: 'i', diff --git a/src/cli/user.js b/src/cli/user.js deleted file mode 100644 index fdd0ad6e3..000000000 --- a/src/cli/user.js +++ /dev/null @@ -1,195 +0,0 @@ -/* - * ******************************************************************************* - * * Copyright (c) 2023 Datasance Teknoloji A.S. - * * - * * This program and the accompanying materials are made available under the - * * terms of the Eclipse Public License v. 2.0 which is available at - * * http://www.eclipse.org/legal/epl-2.0 - * * - * * SPDX-License-Identifier: EPL-2.0 - * ******************************************************************************* - * - */ - -const BaseCLIHandler = require('./base-cli-handler') -const constants = require('../helpers/constants') -const UserService = require('../services/user-service') -const logger = require('../logger') -const AppHelper = require('../helpers/app-helper') -const AuthDecorator = require('../decorators/cli-decorator') -const Validator = require('../schemas') - -class User extends BaseCLIHandler { - constructor () { - super() - - this.name = constants.CMD_USER - this.commandDefinitions = [ - { - name: 'command', - defaultOption: true, - description: 'add, remove, update, list, generate-token', - group: constants.CMD - }, - { - name: 'first-name', - alias: 'f', - type: String, - description: 'User\'s first name', - group: [constants.CMD_ADD, constants.CMD_UPDATE] - }, - { - name: 'last-name', - alias: 'l', - type: String, - description: 'User\'s last name', - group: [constants.CMD_ADD, constants.CMD_UPDATE] - }, - { - name: 'email', - alias: 'e', - type: String, - description: 'User\'s email address', - group: [constants.CMD_ADD, constants.CMD_GENERATE_TOKEN, constants.CMD_REMOVE, - constants.CMD_UPDATE, constants.CMD_ACTIVATE, constants.CMD_SUSPEND] - }, - { - name: 'password', - alias: 'p', - type: String, - description: 'User\'s password', - group: [constants.CMD_ADD, constants.CMD_UPDATE] - }, - { - name: 'subscriptionKey', - alias: 's', - type: String, - description: 'User\'s subscriptionKey', - group: [constants.CMD_ADD, constants.CMD_UPDATE] - }, - { - name: 'force', - alias: 'F', - type: Boolean, - description: 'User\'s force delete', - group: [constants.CMD_REMOVE] - } - ] - this.commands = { - [constants.CMD_ADD]: 'Add a new user.', - [constants.CMD_UPDATE]: 'Update existing user.', - [constants.CMD_REMOVE]: 'Delete a user.', - [constants.CMD_LIST]: 'List all users.', - [constants.CMD_GENERATE_TOKEN]: 'Generate token for a user.', - [constants.CMD_ACTIVATE]: 'Activate a user.', - [constants.CMD_SUSPEND]: 'Suspend a user.' - } - } - - async run (args) { - try { - const userCommand = this.parseCommandLineArgs(this.commandDefinitions, { argv: args.argv, partial: false }) - - const command = userCommand.command.command - - this.validateParameters(command, this.commandDefinitions, args.argv) - - switch (command) { - case constants.CMD_ADD: - await _executeCase(userCommand, constants.CMD_ADD, _createUser, false) - break - case constants.CMD_UPDATE: - await _executeCase(userCommand, constants.CMD_UPDATE, _updateUserDetails, true) - break - case constants.CMD_REMOVE: - await _executeCase(userCommand, constants.CMD_REMOVE, _deleteUser, true) - break - case constants.CMD_LIST: - await _executeCase(userCommand, constants.CMD_LIST, _getAllUsers, false) - break - case constants.CMD_GENERATE_TOKEN: - await _executeCase(userCommand, constants.CMD_GENERATE_TOKEN, _generateToken, true) - break - case constants.CMD_ACTIVATE: - await _executeCase(userCommand, constants.CMD_ACTIVATE, _activateUser, true) - break - case constants.CMD_SUSPEND: - await _executeCase(userCommand, constants.CMD_SUSPEND, _suspendUser, true) - break - case constants.CMD_HELP: - default: - return this.help([]) - } - } catch (error) { - this.handleCLIError(error, args.argv) - } - } -} - -const _executeCase = async function (userCommand, commandName, f, isUserRequired) { - try { - const item = userCommand[commandName] - - if (isUserRequired) { - const decoratedFunction = AuthDecorator.prepareUserByEmail(f) - await decoratedFunction(item) - } else { - await f(item) - } - } catch (error) { - logger.error(error.message) - } -} - -const _createUser = async function (user) { - logger.cliReq('user add', { args: user }) - await Validator.validate(user, Validator.schemas.signUp) - - user.password = AppHelper.encryptText(user.password, user.email) - - const response = await UserService.signUp(user, true) - logger.cliRes(JSON.stringify({ - id: response.userId - }), null, 2) -} - -const _updateUserDetails = async function (userDetails, user) { - logger.cliReq('user update', { args: userDetails }) - await UserService.updateUserDetails(user, userDetails, true) - logger.cliRes('User updated successfully.') -} - -const _deleteUser = async function (obj, user) { - logger.cliReq('user remove', { args: { user: user.dataValues, force: obj.force } }) - await UserService.deleteUser(obj.force, user, true) - logger.cliRes('User removed successfully.') -} - -const _getAllUsers = async function () { - logger.cliReq('user list') - const users = await UserService.list(true) - logger.cliRes(JSON.stringify(users, null, 2)) -} - -const _generateToken = async function (emailObj, user) { - logger.cliReq('user generate-token', { args: user.dataValues }) - const response = await UserService.login(user, true) - logger.cliRes(JSON.stringify(response, null, 2)) -} - -const _activateUser = async function (emailObj, user) { - const codeData = { - userId: user.id - } - logger.cliReq('user activate', { args: codeData }) - await UserService.activateUser(codeData, true) - logger.cliRes('User activated successfully.') -} - -const _suspendUser = async function (emailObj, user) { - logger.cliReq('user suspend', { args: user.dataValues }) - await UserService.suspendUser(user, true) - logger.cliRes('User suspended successfully.') -} - -module.exports = new User() diff --git a/src/config/constants.js b/src/config/constants.js index ce524edf5..4f1c01926 100644 --- a/src/config/constants.js +++ b/src/config/constants.js @@ -26,10 +26,7 @@ module.exports = { 'Service:LogsFileCount': 10, 'Settings:DefaultJobIntervalSeconds': 120, - 'Settings:UserTokenExpirationIntervalSeconds': 3600, 'Settings:FogTokenExpirationIntervalSeconds': 3600, - 'Settings:KubeletTokenExpirationIntervalSeconds': 3600, - 'Settings:SchedulerTokenExpirationIntervalSeconds': 3600, 'Settings:FogStatusUpdateIntervalSeconds': 30, 'Settings:FogStatusUpdateTolerance': 3, diff --git a/src/config/default.json b/src/config/default.json index caa7c33c5..ae08bdbc6 100644 --- a/src/config/default.json +++ b/src/config/default.json @@ -5,9 +5,6 @@ "Viewer": { "Port": 80 }, - "Kubelet": { - "Uri": "http://localhost:1234" - }, "Server": { "Port": 51121, "DevMode": false @@ -23,7 +20,6 @@ }, "Settings": { "DefaultJobIntervalSeconds": 120, - "UserTokenExpirationIntervalSeconds": 3600, "FogTokenExpirationIntervalSeconds": 3600, "FogStatusUpdateIntervalSeconds": 30, "FogStatusUpdateTolerance": 3 diff --git a/src/config/development.json b/src/config/development.json index 8b7dca9e4..3182f2d41 100644 --- a/src/config/development.json +++ b/src/config/development.json @@ -5,9 +5,6 @@ "Viewer": { "Port": 80 }, - "Kubelet": { - "Uri": "http://localhost:1234" - }, "Server": { "Port": 51121, "DevMode": true @@ -22,7 +19,6 @@ "LogsFileCount": 10 }, "Settings": { - "UserTokenExpirationIntervalSeconds": 360000, "FogTokenExpirationIntervalSeconds": 3600000, "FogStatusUpdateIntervalSeconds": 30, "FogStatusUpdateTolerance": 3 @@ -60,17 +56,5 @@ "databaseName": "" } } - }, - "ControlPlane": { - "Auth_Manager": "Keycloak", - "Realm": { - "url": "", - "realm-key": "" - }, - "Config": { - "namespace": "", - "orgName": "", - "entitlementID": "" - } - } + } } \ No newline at end of file diff --git a/src/config/keycloak.js b/src/config/keycloak.js new file mode 100644 index 000000000..d1dc8ca27 --- /dev/null +++ b/src/config/keycloak.js @@ -0,0 +1,48 @@ +const session = require('express-session') +const Keycloak = require('keycloak-connect') + +const keycloakConfig = { + realm: process.env.KC_REALM, + 'realm-public-key': process.env.KC_REALM_KEY, + 'auth-server-url': `${process.env.KC_URL}`, + 'ssl-required': process.env.KC_SSL_REQ, + resource: process.env.KC_CLIENT, + 'bearer-only': true, + 'verify-token-audience': true, + credentials: { + secret: process.env.KC_CLIENT_SECRET + }, + 'use-resource-role-mappings': true, + 'confidential-port': 0 +} + +let keycloak +let memoryStore + +function initKeycloak () { + if (keycloak) { + return keycloak + } else { + memoryStore = new session.MemoryStore() + keycloak = new Keycloak({ store: memoryStore }, keycloakConfig) + return keycloak + } +} + +function getKeycloak () { + if (keycloak) { + return keycloak + } +} + +function getMemoryStore () { + if (memoryStore) { + return memoryStore + } +} + +module.exports = { + initKeycloak, + getMemoryStore, + getKeycloak +} diff --git a/src/config/keycloak.json b/src/config/keycloak.json new file mode 100644 index 000000000..cfc7f6b33 --- /dev/null +++ b/src/config/keycloak.json @@ -0,0 +1,14 @@ +{ + "realm": "datasance", + "realm-public-key": "", + "auth-server-url": "", + "ssl-required": "", + "resource": "pot-controller", + "bearer-only":true, + "verify-token-audience": true, + "credentials": { + "secret": "" + }, + "use-resource-role-mappings": true, + "confidential-port": 0 +} \ No newline at end of file diff --git a/src/config/production.json b/src/config/production.json index 038d3490d..3f78f2ec9 100644 --- a/src/config/production.json +++ b/src/config/production.json @@ -18,7 +18,6 @@ "LogsFileCount": 10 }, "Settings": { - "UserTokenExpirationIntervalSeconds": 3600, "FogTokenExpirationIntervalSeconds": 3600, "FogStatusUpdateIntervalSeconds": 30, "FogStatusUpdateTolerance": 3 @@ -48,17 +47,6 @@ "databaseName": "" } } - }, - "ControlPlane": { - "Auth_Manager": "Keycloak", - "Realm": { - "url": "", - "realm-key": "" - }, - "Config": { - "namespace": "", - "orgName": "", - "entitlementID": "" - } - } -} + } +} + diff --git a/src/controllers/catalog-controller.js b/src/controllers/catalog-controller.js index fdfd144d8..5902d55d9 100644 --- a/src/controllers/catalog-controller.js +++ b/src/controllers/catalog-controller.js @@ -14,7 +14,8 @@ const CatalogService = require('../services/catalog-service') const AuthDecorator = require('./../decorators/authorization-decorator') -const createCatalogItemEndPoint = async function (req, user) { +const createCatalogItemEndPoint = async function (req) { + const user = req.kauth.grant.access_token.content return CatalogService.createCatalogItemEndPoint(req.body, user) } diff --git a/src/controllers/control-plane-controller.js b/src/controllers/control-plane-controller.js deleted file mode 100644 index 073031f91..000000000 --- a/src/controllers/control-plane-controller.js +++ /dev/null @@ -1,26 +0,0 @@ -/* - * ******************************************************************************* - * * Copyright (c) 2023 Datasance Teknoloji A.S. - * * - * * This program and the accompanying materials are made available under the - * * terms of the Eclipse Public License v. 2.0 which is available at - * * http://www.eclipse.org/legal/epl-2.0 - * * - * * SPDX-License-Identifier: EPL-2.0 - * ******************************************************************************* - * - */ - -const AuthDecorator = require('../decorators/authorization-decorator') - -const getControlPlaneProfileEndPoint = async function (req, controlPlane) { - return { - namespace: controlPlane.namespace, - OrgName: controlPlane.OrgName, - entitlementId: controlPlane.entitlementId - } -} - -module.exports = { - getControlPlaneProfileEndPoint: AuthDecorator.checkAuthToken(getControlPlaneProfileEndPoint) -} diff --git a/src/controllers/controller.js b/src/controllers/controller.js index 84cc5f3ff..abd4650e4 100644 --- a/src/controllers/controller.js +++ b/src/controllers/controller.js @@ -17,16 +17,11 @@ const statusControllerEndPoint = async function (req) { return ControllerService.statusController(false) } -const emailActivationEndPoint = async function (req) { - return ControllerService.emailActivation(false) -} - const fogTypesEndPoint = async function (req) { return ControllerService.getFogTypes(false) } module.exports = { statusControllerEndPoint: statusControllerEndPoint, - emailActivationEndPoint: emailActivationEndPoint, fogTypesEndPoint: fogTypesEndPoint } diff --git a/src/controllers/kubelet-controller.js b/src/controllers/kubelet-controller.js deleted file mode 100644 index f76dc892d..000000000 --- a/src/controllers/kubelet-controller.js +++ /dev/null @@ -1,120 +0,0 @@ -/* - * ******************************************************************************* - * * Copyright (c) 2023 Datasance Teknoloji A.S. - * * - * * This program and the accompanying materials are made available under the - * * terms of the Eclipse Public License v. 2.0 which is available at - * * http://www.eclipse.org/legal/epl-2.0 - * * - * * SPDX-License-Identifier: EPL-2.0 - * ******************************************************************************* - * - */ - -const KubeletService = require('../services/kubelet-service') -const AuthDecorator = require('../decorators/authorization-decorator') - -const kubeletCreatePodEndPoint = async function (req, user) { - const createPodData = req.body - const fogNodeUuid = req.query.nodeName - - return KubeletService.kubeletCreatePod(createPodData, fogNodeUuid, user) -} - -const kubeletUpdatePodEndPoint = async function (req, user) { - const uploadPodData = req.body - const fogNodeUuid = req.query.nodeName - - return KubeletService.kubeletUpdatePod(uploadPodData, fogNodeUuid, user) -} - -const kubeletDeletePodEndPoint = async function (req, user) { - const fogNodeUuid = req.query.nodeName - const podData = req.body - - return KubeletService.kubeletDeletePod(podData, fogNodeUuid, user) -} - -const kubeletGetPodEndPoint = async function (req, user) { - const namespace = req.query.namespace - const name = req.query.name - const fogNodeUuid = req.query.nodeName - - return KubeletService.kubeletGetPod(namespace, name, fogNodeUuid, user) -} - -const kubeletGetContainerLogsEndPoint = async function (req, user) { - const namespace = req.query.namespace - const podName = req.query.podName - const containerName = req.query.containerName - const tail = req.query.tail - const fogNodeUuid = req.query.nodeName - - return KubeletService.kubeletGetContainerLogs(namespace, podName, containerName, tail, fogNodeUuid) -} - -const kubeletGetPodStatusEndPoint = async function (req, user) { - const namespace = req.query.namespace - const name = req.query.name - const fogNodeUuid = req.query.nodeName - - return KubeletService.kubeletGetPodStatus(namespace, name, fogNodeUuid, user) -} - -const kubeletGetPodsEndPoint = async function (req, user) { - const fogNodeUuid = req.query.nodeName - - return KubeletService.kubeletGetPods(fogNodeUuid, user) -} - -const kubeletGetCapacityEndPoint = async function (req, user) { - const fogNodeUuid = req.query.nodeName - - return KubeletService.kubeletGetCapacity(fogNodeUuid, user) -} - -const kubeletGetAllocatableEndPoint = async function (req, user) { - const fogNodeUuid = req.query.nodeName - - return KubeletService.kubeletGetAllocatable(fogNodeUuid, user) -} - -const kubeletGetNodeConditionsEndPoint = async function (req, user) { - const fogNodeUuid = req.query.nodeName - - return KubeletService.kubeletGetNodeConditions(fogNodeUuid, user) -} - -const kubeletGetNodeAddressesEndPoint = async function (req, user) { - const fogNodeUuid = req.query.nodeName - - return KubeletService.kubeletGetNodeAddresses(fogNodeUuid, user) -} - -const kubeletGetVkTokenEndPoint = async function (req, user) { - const userId = user.id - - return KubeletService.kubeletGetVkToken(userId) -} - -const kubeletGetSchedulerTokenEndPoint = async function (req, user) { - const userId = user.id - - return KubeletService.kubeletGetSchedulerToken(userId) -} - -module.exports = { - kubeletCreatePodEndPoint: AuthDecorator.checkAuthToken(kubeletCreatePodEndPoint), - kubeletUpdatePodEndPoint: AuthDecorator.checkAuthToken(kubeletUpdatePodEndPoint), - kubeletDeletePodEndPoint: AuthDecorator.checkAuthToken(kubeletDeletePodEndPoint), - kubeletGetPodEndPoint: AuthDecorator.checkAuthToken(kubeletGetPodEndPoint), - kubeletGetContainerLogsEndPoint: AuthDecorator.checkAuthToken(kubeletGetContainerLogsEndPoint), - kubeletGetPodStatusEndPoint: AuthDecorator.checkAuthToken(kubeletGetPodStatusEndPoint), - kubeletGetPodsEndPoint: AuthDecorator.checkAuthToken(kubeletGetPodsEndPoint), - kubeletGetCapacityEndPoint: AuthDecorator.checkAuthToken(kubeletGetCapacityEndPoint), - kubeletGetAllocatableEndPoint: AuthDecorator.checkAuthToken(kubeletGetAllocatableEndPoint), - kubeletGetNodeConditionsEndPoint: AuthDecorator.checkAuthToken(kubeletGetNodeConditionsEndPoint), - kubeletGetNodeAddressesEndPoint: AuthDecorator.checkAuthToken(kubeletGetNodeAddressesEndPoint), - kubeletGetVkTokenEndPoint: AuthDecorator.checkAuthToken(kubeletGetVkTokenEndPoint), - kubeletGetSchedulerTokenEndPoint: AuthDecorator.checkAuthToken(kubeletGetSchedulerTokenEndPoint) -} diff --git a/src/controllers/user-controller.js b/src/controllers/user-controller.js index de0db5059..9011a41a8 100644 --- a/src/controllers/user-controller.js +++ b/src/controllers/user-controller.js @@ -12,27 +12,8 @@ */ const UserService = require('../services/user-service') -const AuthDecorator = require('../decorators/authorization-decorator') -const AppHelper = require('../helpers/app-helper') - const Validator = require('../schemas') -const userSignupEndPoint = async function (req) { - const user = req.body - - await Validator.validate(user, Validator.schemas.signUp) - - const encryptedPassword = AppHelper.encryptText(user.password, user.email) - const newUser = { - firstName: user.firstName, - lastName: user.lastName, - email: user.email, - password: encryptedPassword, - subscriptionKey: user.subscriptionKey - } - return UserService.signUp(newUser, false) -} - const userLoginEndPoint = async function (req) { const user = req.body @@ -46,61 +27,6 @@ const userLoginEndPoint = async function (req) { return UserService.login(credentials, false) } -const resendActivationEndPoint = async function (req) { - const emailData = req.query - return UserService.resendActivation(emailData, false) -} - -const activateUserAccountEndPoint = async function (req) { - const codeData = req.body - - await UserService.activateUser(codeData, false) -} - -const userLogoutEndPoint = async function (req, user) { - return UserService.logout(user, false) -} - -const getUserProfileEndPoint = async function (req, user) { - return { - firstName: user.firstName, - lastName: user.lastName, - email: user.email, - subscriptionKey: user.subscriptionKey - } -} - -const updateUserProfileEndPoint = async function (req, user) { - const profileData = req.body - return UserService.updateUserDetails(user, profileData, false) -} - -const deleteUserProfileEndPoint = async function (req, user) { - return UserService.deleteUser(req.body.force, user, false) -} - -const updateUserPasswordEndPoint = async function (req, user) { - const passwordUpdates = req.body - - await Validator.validate(passwordUpdates, Validator.schemas.updatePassword) - - return UserService.updateUserPassword(passwordUpdates, user, false) -} - -const resetUserPasswordEndPoint = async function (req) { - const emailObj = req.body - return UserService.resetUserPassword(emailObj, false) -} - module.exports = { - userSignupEndPoint: userSignupEndPoint, - userLoginEndPoint: userLoginEndPoint, - resendActivationEndPoint: resendActivationEndPoint, - activateUserAccountEndPoint: activateUserAccountEndPoint, - userLogoutEndPoint: AuthDecorator.checkAuthToken(userLogoutEndPoint), - getUserProfileEndPoint: AuthDecorator.checkAuthToken(getUserProfileEndPoint), - updateUserProfileEndPoint: AuthDecorator.checkAuthToken(updateUserProfileEndPoint), - deleteUserProfileEndPoint: AuthDecorator.checkAuthToken(deleteUserProfileEndPoint), - updateUserPasswordEndPoint: AuthDecorator.checkAuthToken(updateUserPasswordEndPoint), - resetUserPasswordEndPoint: resetUserPasswordEndPoint + userLoginEndPoint: userLoginEndPoint } diff --git a/src/data/managers/access-token-manager.js b/src/data/managers/access-token-manager.js deleted file mode 100644 index 54c1b9be7..000000000 --- a/src/data/managers/access-token-manager.js +++ /dev/null @@ -1,36 +0,0 @@ -/* - * ******************************************************************************* - * * Copyright (c) 2023 Datasance Teknoloji A.S. - * * - * * This program and the accompanying materials are made available under the - * * terms of the Eclipse Public License v. 2.0 which is available at - * * http://www.eclipse.org/legal/epl-2.0 - * * - * * SPDX-License-Identifier: EPL-2.0 - * ******************************************************************************* - * - */ - -const BaseManager = require('./base-manager') -const models = require('../models') -const AccessToken = models.AccessToken - -class AccessTokenManager extends BaseManager { - getEntity () { - return AccessToken - } - - // no transaction required here, used by auth decorator - updateExpirationTime (id, newTime) { - return AccessToken.update({ - expirationTime: newTime - }, { - where: { - id: id - } - }) - } -} - -const instance = new AccessTokenManager() -module.exports = instance diff --git a/src/data/managers/control-plane.js b/src/data/managers/control-plane.js deleted file mode 100644 index 554a3a58e..000000000 --- a/src/data/managers/control-plane.js +++ /dev/null @@ -1,36 +0,0 @@ -/* - * ******************************************************************************* - * * Copyright (c) 2023 Datasance Teknoloji A.S. - * * - * * This program and the accompanying materials are made available under the - * * terms of the Eclipse Public License v. 2.0 which is available at - * * http://www.eclipse.org/legal/epl-2.0 - * * - * * SPDX-License-Identifier: EPL-2.0 - * ******************************************************************************* - * - */ - -const BaseManager = require('./base-manager') -const models = require('../models') -const ControlPlane = models.ControlPlane - -class ControlPlaneManager extends BaseManager { - getEntity () { - return ControlPlane - } - - // no transaction required here, used by cli decorator - findByUuid (uuid) { - return ControlPlane.findOne({ where: { uuid } }) - } - - updateDetails (controlPlane, updateObject, transaction) { - return this.update({ - id: controlPlane.uuid - }, updateObject, transaction) - } -} - -const instance = new ControlPlaneManager() -module.exports = instance diff --git a/src/data/managers/email-activation-code-manager.js b/src/data/managers/email-activation-code-manager.js deleted file mode 100644 index 48e60762b..000000000 --- a/src/data/managers/email-activation-code-manager.js +++ /dev/null @@ -1,65 +0,0 @@ -/* - * ******************************************************************************* - * * Copyright (c) 2023 Datasance Teknoloji A.S. - * * - * * This program and the accompanying materials are made available under the - * * terms of the Eclipse Public License v. 2.0 which is available at - * * http://www.eclipse.org/legal/epl-2.0 - * * - * * SPDX-License-Identifier: EPL-2.0 - * ******************************************************************************* - * - */ - -const models = require('../models') -const EmailActivationCode = models.EmailActivationCode -const BaseManager = require('./base-manager') -const AppHelper = require('../../helpers/app-helper') -const Sequelize = require('sequelize') -const Op = Sequelize.Op - -class EmailActivationCodeManager extends BaseManager { - getEntity () { - return EmailActivationCode - } - - async getByActivationCode (activationCode, transaction) { - AppHelper.checkTransaction(transaction) - - return EmailActivationCode.findOne({ - where: { - activationCode: activationCode - } - }, { - transaction: transaction - }) - }; - - async createActivationCode (userId, activationCode, expirationTime, transaction) { - AppHelper.checkTransaction(transaction) - - return EmailActivationCode.create({ - userId: userId, - activationCode: activationCode, - expirationTime: expirationTime - }, { - transaction: transaction - }) - }; - - async verifyActivationCode (activationCode, transaction) { - return EmailActivationCode.findOne({ - where: { - activationCode: activationCode, - expirationTime: { - [Op.gt]: new Date().getTime() - } - } - }, { - transaction: transaction - }) - } -} - -const instance = new EmailActivationCodeManager() -module.exports = instance diff --git a/src/data/managers/kubelet-access-token-manager.js b/src/data/managers/kubelet-access-token-manager.js deleted file mode 100644 index b44a554cb..000000000 --- a/src/data/managers/kubelet-access-token-manager.js +++ /dev/null @@ -1,25 +0,0 @@ -/* - * ******************************************************************************* - * * Copyright (c) 2023 Datasance Teknoloji A.S. - * * - * * This program and the accompanying materials are made available under the - * * terms of the Eclipse Public License v. 2.0 which is available at - * * http://www.eclipse.org/legal/epl-2.0 - * * - * * SPDX-License-Identifier: EPL-2.0 - * ******************************************************************************* - * - */ - -const BaseManager = require('./base-manager') -const models = require('../models') -const KubeletAccessToken = models.KubeletAccessToken - -class KubeletAccessTokenManager extends BaseManager { - getEntity () { - return KubeletAccessToken - } -} - -const instance = new KubeletAccessTokenManager() -module.exports = instance diff --git a/src/data/managers/microservice-manager.js b/src/data/managers/microservice-manager.js index b50dcf9e0..1c8b1465c 100644 --- a/src/data/managers/microservice-manager.js +++ b/src/data/managers/microservice-manager.js @@ -24,7 +24,6 @@ const CatalogItem = models.CatalogItem const CatalogItemImage = models.CatalogItemImage const Fog = models.Fog const Application = models.Application -const User = models.User const Routing = models.Routing const Registry = models.Registry const MicroserviceStatus = models.MicroserviceStatus @@ -347,14 +346,6 @@ class MicroserviceManager extends BaseManager { model: Application, as: 'application', required: true, - include: [ - { - model: User, - as: 'user', - required: true, - attributes: ['id'] - } - ], attributes: ['id'] } ], diff --git a/src/data/managers/scheduler-access-token-manager.js b/src/data/managers/scheduler-access-token-manager.js deleted file mode 100644 index 7e51c945c..000000000 --- a/src/data/managers/scheduler-access-token-manager.js +++ /dev/null @@ -1,25 +0,0 @@ -/* - * ******************************************************************************* - * * Copyright (c) 2023 Datasance Teknoloji A.S. - * * - * * This program and the accompanying materials are made available under the - * * terms of the Eclipse Public License v. 2.0 which is available at - * * http://www.eclipse.org/legal/epl-2.0 - * * - * * SPDX-License-Identifier: EPL-2.0 - * ******************************************************************************* - * - */ - -const BaseManager = require('./base-manager') -const models = require('../models') -const SchedulerAccessToken = models.SchedulerAccessToken - -class SchedulerAccessTokenManager extends BaseManager { - getEntity () { - return SchedulerAccessToken - } -} - -const instance = new SchedulerAccessTokenManager() -module.exports = instance diff --git a/src/data/managers/user-manager.js b/src/data/managers/user-manager.js deleted file mode 100644 index 78d2b5f6e..000000000 --- a/src/data/managers/user-manager.js +++ /dev/null @@ -1,91 +0,0 @@ -/* - * ******************************************************************************* - * * Copyright (c) 2023 Datasance Teknoloji A.S. - * * - * * This program and the accompanying materials are made available under the - * * terms of the Eclipse Public License v. 2.0 which is available at - * * http://www.eclipse.org/legal/epl-2.0 - * * - * * SPDX-License-Identifier: EPL-2.0 - * ******************************************************************************* - * - */ - -const BaseManager = require('./base-manager') -const models = require('../models') -const User = models.User -const AccessToken = models.AccessToken -const AppHelper = require('../../helpers/app-helper') - -class UserManager extends BaseManager { - getEntity () { - return User - } - - findByAccessToken (token, transaction) { - AppHelper.checkTransaction(transaction) - - return User.findOne({ - include: [{ - model: AccessToken, - as: 'accessToken', - where: { - token: token - } - }] - }, { - transaction: transaction - }) - } - - findByEmail (email) { - return User.findOne({ - where: { - email: email - } - }) - } - - // no transaction required here, used by auth decorator - checkAuthentication (token) { - return User.findOne({ - include: [{ - model: AccessToken, - as: 'accessToken', - where: { - token: token - } - }] - }) - } - - // no transaction required here, used by cli decorator - findById (id) { - return User.findOne({ where: { id: id } }) - } - - updateDetails (user, updateObject, transaction) { - return this.update({ - id: user.id - }, updateObject, transaction) - } - - updatePassword (userId, newPassword, transaction) { - return this.update({ - id: userId - }, { - password: newPassword - }, transaction) - } - - updateTempPassword (userId, tempPassword, transaction) { - return this.update({ - id: userId - }, { - tempPassword: tempPassword - }, transaction) - } -} - -const instance = new UserManager() -module.exports = instance diff --git a/src/data/migrations/20180930155645-create-user.js b/src/data/migrations/20180930155645-create-user.js deleted file mode 100644 index 8d931c0ca..000000000 --- a/src/data/migrations/20180930155645-create-user.js +++ /dev/null @@ -1,62 +0,0 @@ -'use strict' -module.exports = { - up: (queryInterface, Sequelize) => { - return queryInterface.createTable('Users', { - id: { - allowNull: false, - autoIncrement: true, - primaryKey: true, - type: Sequelize.INTEGER, - field: 'id' - }, - firstName: { - /* eslint-disable new-cap */ - type: Sequelize.STRING(100), - field: 'first_name', - defaultValue: '' - }, - lastName: { - /* eslint-disable new-cap */ - type: Sequelize.STRING(100), - field: 'last_name', - defaultValue: '' - }, - email: { - /* eslint-disable new-cap */ - type: Sequelize.STRING(100), - field: 'email', - defaultValue: '' - }, - password: { - /* eslint-disable new-cap */ - type: Sequelize.STRING(100), - field: 'password' - }, - tempPassword: { - /* eslint-disable new-cap */ - type: Sequelize.STRING(100), - field: 'temp_password' - }, - emailActivated: { - type: Sequelize.BOOLEAN, - field: 'email_activated', - defaultValue: false - }, - subscriptionKey: { - /* eslint-disable new-cap */ - type: Sequelize.STRING(100), - field: 'subscriptionKey', - defaultValue: '' - }, - controlPlaneUuid: { - type: Sequelize.STRING(32), - field: 'controlPlane_uuid', - references: { model: 'ControlPlane', key: 'uuid' }, - onDelete: 'cascade' - } - }) - }, - down: (queryInterface, Sequelize) => { - return queryInterface.dropTable('Users') - } -} diff --git a/src/data/migrations/20180930164635-create-flow.js b/src/data/migrations/20180930164635-create-flow.js index acdaaf6e2..e159ebb40 100644 --- a/src/data/migrations/20180930164635-create-flow.js +++ b/src/data/migrations/20180930164635-create-flow.js @@ -34,18 +34,6 @@ module.exports = { allowNull: false, type: Sequelize.DATE, field: 'updated_at' - }, - userId: { - type: Sequelize.INTEGER, - field: 'user_id', - references: { model: 'Users', key: 'id' }, - onDelete: 'cascade' - }, - updatedBy: { - type: Sequelize.INTEGER, - field: 'updated_by', - references: { model: 'Users', key: 'id' }, - onDelete: 'set null' } }) }, diff --git a/src/data/migrations/20180930173823-create-registry.js b/src/data/migrations/20180930173823-create-registry.js index 9e8fe7cf7..a6cfd9e41 100644 --- a/src/data/migrations/20180930173823-create-registry.js +++ b/src/data/migrations/20180930173823-create-registry.js @@ -40,12 +40,6 @@ module.exports = { userEmail: { type: Sequelize.TEXT, field: 'user_email' - }, - userId: { - type: Sequelize.INTEGER, - field: 'user_id', - references: { model: 'Users', key: 'id' }, - onDelete: 'cascade' } }) }, diff --git a/src/data/migrations/20180930184436-create-catalog-item.js b/src/data/migrations/20180930184436-create-catalog-item.js index cb7624b99..934fd85f3 100644 --- a/src/data/migrations/20180930184436-create-catalog-item.js +++ b/src/data/migrations/20180930184436-create-catalog-item.js @@ -61,12 +61,6 @@ module.exports = { field: 'is_public', defaultValue: false }, - userId: { - type: Sequelize.INTEGER, - field: 'user_id', - references: { model: 'Users', key: 'id' }, - onDelete: 'cascade' - }, registryId: { type: Sequelize.INTEGER, field: 'registry_id', diff --git a/src/data/migrations/20180930204039-create-email-activation-code.js b/src/data/migrations/20180930204039-create-email-activation-code.js deleted file mode 100644 index 8516ef13b..000000000 --- a/src/data/migrations/20180930204039-create-email-activation-code.js +++ /dev/null @@ -1,37 +0,0 @@ -'use strict' - -const { convertToInt } = require('../../helpers/app-helper') - -module.exports = { - up: (queryInterface, Sequelize) => { - return queryInterface.createTable('EmailActivationCodes', { - id: { - type: Sequelize.INTEGER, - primaryKey: true, - autoIncrement: true, - allowNull: false, - field: 'id' - }, - activationCode: { - type: Sequelize.TEXT, - field: 'activation_code' - }, - expirationTime: { - type: Sequelize.BIGINT, - get () { - return convertToInt(this.getDataValue('expirationTime')) - }, - field: 'expiration_time' - }, - userId: { - type: Sequelize.INTEGER, - field: 'user_id', - references: { model: 'Users', key: 'id' }, - onDelete: 'cascade' - } - }) - }, - down: (queryInterface, Sequelize) => { - return queryInterface.dropTable('EmailActivationCodes') - } -} diff --git a/src/data/migrations/20180930225403-create-fog.js b/src/data/migrations/20180930225403-create-fog.js index 1015056f8..cb97959e7 100644 --- a/src/data/migrations/20180930225403-create-fog.js +++ b/src/data/migrations/20180930225403-create-fog.js @@ -257,12 +257,6 @@ module.exports = { type: Sequelize.DATE, field: 'updated_at' }, - userId: { - type: Sequelize.INTEGER, - field: 'user_id', - references: { model: 'Users', key: 'id' }, - onDelete: 'cascade' - }, fogTypeId: { type: Sequelize.INTEGER, field: 'fog_type_id', diff --git a/src/data/migrations/20180930230219-create-fog-access-token.js b/src/data/migrations/20180930230219-create-fog-access-token.js index 269768d74..dba652e2d 100644 --- a/src/data/migrations/20180930230219-create-fog-access-token.js +++ b/src/data/migrations/20180930230219-create-fog-access-token.js @@ -28,12 +28,6 @@ module.exports = { field: 'iofog_uuid', references: { model: 'Fogs', key: 'uuid' }, onDelete: 'cascade' - }, - userId: { - type: Sequelize.INTEGER, - field: 'user_id', - references: { model: 'Users', key: 'id' }, - onDelete: 'cascade' } }) }, diff --git a/src/data/migrations/20181001062956-create-microservice.js b/src/data/migrations/20181001062956-create-microservice.js index 7e64e19e7..adb1c8238 100644 --- a/src/data/migrations/20181001062956-create-microservice.js +++ b/src/data/migrations/20181001062956-create-microservice.js @@ -73,12 +73,6 @@ module.exports = { references: { model: 'Fogs', key: 'uuid' }, onDelete: 'set null' }, - updatedBy: { - type: Sequelize.INTEGER, - field: 'updated_by', - references: { model: 'Users', key: 'id' }, - onDelete: 'set null' - }, catalogItemId: { type: Sequelize.INTEGER, field: 'catalog_item_id', diff --git a/src/data/migrations/20181001070828-create-microservice-port.js b/src/data/migrations/20181001070828-create-microservice-port.js index 69190d27b..c8c65dabd 100644 --- a/src/data/migrations/20181001070828-create-microservice-port.js +++ b/src/data/migrations/20181001070828-create-microservice-port.js @@ -36,12 +36,6 @@ module.exports = { field: 'microservice_uuid', references: { model: 'Microservices', key: 'uuid' }, onDelete: 'cascade' - }, - updatedBy: { - type: Sequelize.INTEGER, - field: 'updated_by', - references: { model: 'Users', key: 'id' }, - onDelete: 'cascade' } }) }, diff --git a/src/data/migrations/20181003104606-create-access-token.js b/src/data/migrations/20181003104606-create-access-token.js deleted file mode 100644 index 1decdeba5..000000000 --- a/src/data/migrations/20181003104606-create-access-token.js +++ /dev/null @@ -1,37 +0,0 @@ -'use strict' - -const { convertToInt } = require('../../helpers/app-helper') - -module.exports = { - up: (queryInterface, Sequelize) => { - return queryInterface.createTable('AccessTokens', { - id: { - type: Sequelize.INTEGER, - primaryKey: true, - autoIncrement: true, - allowNull: false, - field: 'id' - }, - token: { - type: Sequelize.STRING, - field: 'token' - }, - expirationTime: { - type: Sequelize.BIGINT, - get () { - return convertToInt(this.getDataValue('expirationTime')) - }, - field: 'expiration_time' - }, - userId: { - type: Sequelize.INTEGER, - field: 'user_id', - references: { model: 'Users', key: 'id' }, - onDelete: 'cascade' - } - }) - }, - down: (queryInterface, Sequelize) => { - return queryInterface.dropTable('AccessTokens') - } -} diff --git a/src/data/migrations/20181109132609-microservice-rename-updatedBy-to-userId.js b/src/data/migrations/20181109132609-microservice-rename-updatedBy-to-userId.js deleted file mode 100644 index daa76ad5a..000000000 --- a/src/data/migrations/20181109132609-microservice-rename-updatedBy-to-userId.js +++ /dev/null @@ -1,11 +0,0 @@ -'use strict' - -module.exports = { - up: (queryInterface, Sequelize) => { - return queryInterface.renameColumn('Microservices', 'updated_by', 'user_id') - }, - - down: (queryInterface, Sequelize) => { - return queryInterface.renameColumn('Microservices', 'user_id', 'updated_by') - } -} diff --git a/src/data/migrations/20181109132704-microservice-port-rename-updatedBy-to-userId.js b/src/data/migrations/20181109132704-microservice-port-rename-updatedBy-to-userId.js deleted file mode 100644 index f033334fe..000000000 --- a/src/data/migrations/20181109132704-microservice-port-rename-updatedBy-to-userId.js +++ /dev/null @@ -1,11 +0,0 @@ -'use strict' - -module.exports = { - up: (queryInterface, Sequelize) => { - return queryInterface.renameColumn('MicroservicePorts', 'updated_by', 'user_id') - }, - - down: (queryInterface, Sequelize) => { - return queryInterface.renameColumn('MicroservicePorts', 'user_id', 'updated_by') - } -} diff --git a/src/data/migrations/20181109132723-flow-remove-updatedBy.js b/src/data/migrations/20181109132723-flow-remove-updatedBy.js deleted file mode 100644 index b51994b45..000000000 --- a/src/data/migrations/20181109132723-flow-remove-updatedBy.js +++ /dev/null @@ -1,14 +0,0 @@ -'use strict' - -module.exports = { - up: (queryInterface, Sequelize) => { - return queryInterface.removeColumn('Flows', 'updated_by') - }, - - down: (queryInterface, Sequelize) => { - return queryInterface.addColumn('Flows', - 'updated_by', - Sequelize.INTEGER - ) - } -} diff --git a/src/data/migrations/20190222135632-create-kubelet-access-token.js b/src/data/migrations/20190222135632-create-kubelet-access-token.js deleted file mode 100644 index cf62a9332..000000000 --- a/src/data/migrations/20190222135632-create-kubelet-access-token.js +++ /dev/null @@ -1,37 +0,0 @@ -'use strict' - -const { convertToInt } = require('../../helpers/app-helper') - -module.exports = { - up: (queryInterface, Sequelize) => { - return queryInterface.createTable('KubeletAccessTokens', { - id: { - type: Sequelize.INTEGER, - primaryKey: true, - autoIncrement: true, - allowNull: false, - field: 'id' - }, - expirationTime: { - type: Sequelize.BIGINT, - get () { - return convertToInt(this.getDataValue('expirationTime')) - }, - field: 'expiration_time' - }, - token: { - type: Sequelize.TEXT, - field: 'token' - }, - userId: { - type: Sequelize.INTEGER, - field: 'user_id', - references: { model: 'Users', key: 'id' }, - onDelete: 'cascade' - } - }) - }, - down: (queryInterface, Sequelize) => { - return queryInterface.dropTable('KubeletAccessTokens') - } -} diff --git a/src/data/migrations/20190227154512-create-scheduler-access-token.js b/src/data/migrations/20190227154512-create-scheduler-access-token.js deleted file mode 100644 index ebe7e2c8b..000000000 --- a/src/data/migrations/20190227154512-create-scheduler-access-token.js +++ /dev/null @@ -1,37 +0,0 @@ -'use strict' - -const { convertToInt } = require('../../helpers/app-helper') - -module.exports = { - up: (queryInterface, Sequelize) => { - return queryInterface.createTable('SchedulerAccessTokens', { - id: { - type: Sequelize.INTEGER, - primaryKey: true, - autoIncrement: true, - allowNull: false, - field: 'id' - }, - expirationTime: { - type: Sequelize.BIGINT, - get () { - return convertToInt(this.getDataValue('expirationTime')) - }, - field: 'expiration_time' - }, - token: { - type: Sequelize.TEXT, - field: 'token' - }, - userId: { - type: Sequelize.INTEGER, - field: 'user_id', - references: { model: 'Users', key: 'id' }, - onDelete: 'cascade' - } - }) - }, - down: (queryInterface, Sequelize) => { - return queryInterface.dropTable('SchedulerAccessTokens') - } -} diff --git a/src/data/migrations/20200123163412-create-router.js b/src/data/migrations/20200123163412-create-router.js index 0c8cc2cba..267655178 100644 --- a/src/data/migrations/20200123163412-create-router.js +++ b/src/data/migrations/20200123163412-create-router.js @@ -49,12 +49,6 @@ module.exports = { type: Sequelize.DATE, allowNull: false, field: 'updated_at' - }, - updatedBy: { - type: Sequelize.INTEGER, - field: 'updated_by', - references: { model: 'Users', key: 'id' }, - onDelete: 'set null' } }) @@ -87,12 +81,6 @@ module.exports = { type: Sequelize.DATE, allowNull: false, field: 'updated_at' - }, - updatedBy: { - type: Sequelize.INTEGER, - field: 'updated_by', - references: { model: 'Users', key: 'id' }, - onDelete: 'set null' } }) }, diff --git a/src/data/migrations/20200202113124-create-public-ports.js b/src/data/migrations/20200202113124-create-public-ports.js index 837850a5c..89a51de95 100644 --- a/src/data/migrations/20200202113124-create-public-ports.js +++ b/src/data/migrations/20200202113124-create-public-ports.js @@ -56,12 +56,6 @@ module.exports = { type: Sequelize.DATE, allowNull: false, field: 'updated_at' - }, - updatedBy: { - type: Sequelize.INTEGER, - field: 'updated_by', - references: { model: 'Users', key: 'id' }, - onDelete: 'set null' } }) }, diff --git a/src/data/migrations/20200213033350-create-config.js b/src/data/migrations/20200213033350-create-config.js index c3c4282a0..e23337929 100644 --- a/src/data/migrations/20200213033350-create-config.js +++ b/src/data/migrations/20200213033350-create-config.js @@ -30,12 +30,6 @@ module.exports = { type: Sequelize.DATE, allowNull: false, field: 'updated_at' - }, - updatedBy: { - type: Sequelize.INTEGER, - field: 'updated_by', - references: { model: 'Users', key: 'id' }, - onDelete: 'set null' } }).then(() => queryInterface.addIndex('Config', ['key'], { indicesType: 'UNIQUE' })) }, diff --git a/src/data/migrations/20201028005645-create-edge-resources.js b/src/data/migrations/20201028005645-create-edge-resources.js index 5a98af753..63c02dc46 100644 --- a/src/data/migrations/20201028005645-create-edge-resources.js +++ b/src/data/migrations/20201028005645-create-edge-resources.js @@ -22,13 +22,7 @@ module.exports = { displayIcon: { type: Sequelize.TEXT, field: 'display_icon' }, displayColor: { type: Sequelize.TEXT, field: 'display_color' }, interfaceProtocol: { type: Sequelize.TEXT, field: 'interface_protocol' }, - interfaceId: { type: Sequelize.INTEGER, field: 'interface_id' }, - userId: { - type: Sequelize.INTEGER, - field: 'user_id', - references: { model: 'Users', key: 'id' }, - onDelete: 'cascade' - } + interfaceId: { type: Sequelize.INTEGER, field: 'interface_id' } }) await queryInterface.createTable('AgentEdgeResources', { id: { diff --git a/src/data/migrations/20201204003312-create_application_templates.js b/src/data/migrations/20201204003312-create_application_templates.js index dfd2dde85..d8550c43c 100644 --- a/src/data/migrations/20201204003312-create_application_templates.js +++ b/src/data/migrations/20201204003312-create_application_templates.js @@ -39,12 +39,6 @@ module.exports = { allowNull: false, type: Sequelize.DATE, field: 'updated_at' - }, - userId: { - type: Sequelize.INTEGER, - field: 'user_id', - references: { model: 'Users', key: 'id' }, - onDelete: 'cascade' } }) await queryInterface.createTable('ApplicationTemplateVariables', { diff --git a/src/data/migrations/20221021132000-create-proxy-ports.js b/src/data/migrations/20221021132000-create-proxy-ports.js index 8893f1f32..5788e7665 100644 --- a/src/data/migrations/20221021132000-create-proxy-ports.js +++ b/src/data/migrations/20221021132000-create-proxy-ports.js @@ -43,12 +43,6 @@ module.exports = { type: Sequelize.DATE, allowNull: false, field: 'updated_at' - }, - updatedBy: { - type: Sequelize.INTEGER, - field: 'updated_by', - references: { model: 'Users', key: 'id' }, - onDelete: 'set null' } }) }, diff --git a/src/data/models/accesstoken.js b/src/data/models/accesstoken.js deleted file mode 100644 index acfb81fd4..000000000 --- a/src/data/models/accesstoken.js +++ /dev/null @@ -1,40 +0,0 @@ -'use strict' - -const { convertToInt } = require('../../helpers/app-helper') - -module.exports = (sequelize, DataTypes) => { - const AccessToken = sequelize.define('AccessToken', { - id: { - type: DataTypes.INTEGER, - primaryKey: true, - autoIncrement: true, - allowNull: false, - field: 'id' - }, - token: { - type: DataTypes.STRING, - field: 'token' - }, - expirationTime: { - type: DataTypes.BIGINT, - get () { - return convertToInt(this.getDataValue('expirationTime')) - }, - field: 'expiration_time' - } - }, { - tableName: 'AccessTokens', - timestamps: false, - underscored: true - }) - AccessToken.associate = function (models) { - AccessToken.belongsTo(models.User, { - foreignKey: { - name: 'userId', - field: 'user_id' - }, - as: 'user' - }) - } - return AccessToken -} diff --git a/src/data/models/application.js b/src/data/models/application.js index 3444f44bc..e1fc5504b 100644 --- a/src/data/models/application.js +++ b/src/data/models/application.js @@ -36,15 +36,6 @@ module.exports = (sequelize, DataTypes) => { underscored: true }) Application.associate = function (models) { - Application.belongsTo(models.ControlPlane, { - foreignKey: { - name: 'controlPlaneUuid', - field: 'controlPlane_uuid' - }, - as: 'controlPlane', - onDelete: 'cascade' - }) - Application.hasMany(models.Microservice, { foreignKey: { name: 'applicationId', diff --git a/src/data/models/applicationTemplate.js b/src/data/models/applicationTemplate.js index 5f19bebe7..6cb8b8fe0 100644 --- a/src/data/models/applicationTemplate.js +++ b/src/data/models/applicationTemplate.js @@ -35,14 +35,6 @@ module.exports = (sequelize, DataTypes) => { underscored: true }) ApplicationTemplate.associate = function (models) { - ApplicationTemplate.belongsTo(models.ControlPlane, { - foreignKey: { - name: 'controlPlaneUuid', - field: 'controlPlane_uuid' - }, - as: 'controlPlane', - onDelete: 'cascade' - }) ApplicationTemplate.hasMany(models.ApplicationTemplateVariable, { foreignKey: { name: 'applicationTemplateId', diff --git a/src/data/models/catalogitem.js b/src/data/models/catalogitem.js index 8c7da3a88..d4fd4c563 100644 --- a/src/data/models/catalogitem.js +++ b/src/data/models/catalogitem.js @@ -76,15 +76,6 @@ module.exports = (sequelize, DataTypes) => { defaultValue: 1 }) - CatalogItem.belongsTo(models.ControlPlane, { - foreignKey: { - name: 'controlPlaneUuid', - field: 'controlPlane_uuid' - }, - as: 'controlPlane', - onDelete: 'cascade' - }) - CatalogItem.hasMany(models.CatalogItemImage, { foreignKey: 'catalog_item_id', as: 'images' diff --git a/src/data/models/config.js b/src/data/models/config.js index 0ae57a117..3419a2acb 100644 --- a/src/data/models/config.js +++ b/src/data/models/config.js @@ -30,15 +30,5 @@ module.exports = (sequelize, DataTypes) => { } ] }) - Config.associate = function (models) { - Config.belongsTo(models.ControlPlane, { - foreignKey: { - name: 'controlPlaneUuid', - field: 'controlPlane_uuid' - }, - as: 'controlPlane', - onDelete: 'cascade' - }) - } return Config } diff --git a/src/data/models/controlPlane.js b/src/data/models/controlPlane.js deleted file mode 100644 index 7a3710d89..000000000 --- a/src/data/models/controlPlane.js +++ /dev/null @@ -1,66 +0,0 @@ -'use strict' -module.exports = (sequelize, DataTypes) => { - const ControlPlane = sequelize.define('ControlPlane', { - uuid: { - type: DataTypes.STRING(32), - primaryKey: true, - allowNull: false, - field: 'uuid' - }, - namespace: { - /* eslint-disable new-cap */ - type: DataTypes.STRING(100), - field: 'namespace', - defaultValue: '' - }, - orgName: { - /* eslint-disable new-cap */ - type: DataTypes.STRING(100), - field: 'orgn_name', - defaultValue: '' - }, - entitlementId: { - /* eslint-disable new-cap */ - type: DataTypes.STRING(100), - field: 'entitlement_id' - } - }, { - tableName: 'ControlPlane', - timestamps: true, - underscored: true - }) - ControlPlane.associate = function (models) { - ControlPlane.hasMany(models.User, { - foreignKey: { - name: 'controlPlaneUuid', - field: 'controlPlane_uuid' - }, - as: 'user' - }) - - ControlPlane.hasMany(models.Application, { - foreignKey: { - name: 'controlPlaneUuid', - field: 'controlPlane_uuid' - }, - as: 'application' - }) - - ControlPlane.hasMany(models.Fog, { - foreignKey: { - name: 'controlPlaneUuid', - field: 'controlPlane_uuid' - }, - as: 'fog' - }) - - ControlPlane.hasMany(models.Microservice, { - foreignKey: { - name: 'controlPlaneUuid', - field: 'controlPlane_uuid' - }, - as: 'microservice' - }) - } - return ControlPlane -} diff --git a/src/data/models/edgeResource.js b/src/data/models/edgeResource.js index d19bcbb3c..63e1bcb02 100644 --- a/src/data/models/edgeResource.js +++ b/src/data/models/edgeResource.js @@ -27,15 +27,6 @@ module.exports = (sequelize, DataTypes) => { EdgeResource.associate = function (models) { EdgeResource.belongsToMany(models.Fog, { through: 'AgentEdgeResources', as: 'agents' }) EdgeResource.belongsToMany(models.Tags, { as: 'orchestrationTags', through: 'EdgeResourceOrchestrationTags' }) - - EdgeResource.belongsTo(models.ControlPlane, { - foreignKey: { - name: 'controlPlaneUuid', - field: 'controlPlane_uuid' - }, - as: 'controlPlane', - onDelete: 'cascade' - }) } return EdgeResource } diff --git a/src/data/models/emailactivationcode.js b/src/data/models/emailactivationcode.js deleted file mode 100644 index 917180a7a..000000000 --- a/src/data/models/emailactivationcode.js +++ /dev/null @@ -1,41 +0,0 @@ -'use strict' - -const { convertToInt } = require('../../helpers/app-helper') - -module.exports = (sequelize, DataTypes) => { - const EmailActivationCode = sequelize.define('EmailActivationCode', { - id: { - type: DataTypes.INTEGER, - primaryKey: true, - autoIncrement: true, - allowNull: false, - field: 'id' - }, - activationCode: { - type: DataTypes.TEXT, - field: 'activation_code' - }, - expirationTime: { - type: DataTypes.BIGINT, - get () { - return convertToInt(this.getDataValue('expirationTime')) - }, - field: 'expiration_time' - } - }, { - tableName: 'EmailActivationCodes', - timestamps: false, - underscored: true - }) - EmailActivationCode.associate = function (models) { - EmailActivationCode.belongsTo(models.User, { - foreignKey: { - name: 'userId', - field: 'user_id' - }, - as: 'user', - onDelete: 'cascade' - }) - } - return EmailActivationCode -} diff --git a/src/data/models/fog.js b/src/data/models/fog.js index 353943559..b3e131eb1 100644 --- a/src/data/models/fog.js +++ b/src/data/models/fog.js @@ -324,15 +324,6 @@ module.exports = (sequelize, DataTypes) => { defaultValue: 0 }) - Fog.belongsTo(models.ControlPlane, { - foreignKey: { - name: 'controlPlaneUuid', - field: 'controlPlane_uuid' - }, - as: 'controlPlane', - onDelete: 'cascade' - }) - Fog.hasOne(models.FogAccessToken, { foreignKey: 'iofog_uuid', as: 'accessToken' diff --git a/src/data/models/fogaccesstoken.js b/src/data/models/fogaccesstoken.js index 842f66852..9eeb29437 100644 --- a/src/data/models/fogaccesstoken.js +++ b/src/data/models/fogaccesstoken.js @@ -28,15 +28,6 @@ module.exports = (sequelize, DataTypes) => { underscored: true }) FogAccessToken.associate = function (models) { - FogAccessToken.belongsTo(models.ControlPlane, { - foreignKey: { - name: 'controlPlaneUuid', - field: 'controlPlane_uuid' - }, - as: 'controlPlane', - onDelete: 'cascade' - }) - FogAccessToken.belongsTo(models.Fog, { foreignKey: { name: 'iofogUuid', diff --git a/src/data/models/index.js b/src/data/models/index.js index d502edc34..9c74bfd34 100644 --- a/src/data/models/index.js +++ b/src/data/models/index.js @@ -45,16 +45,12 @@ const configureImage = async (db, name, fogTypes, images) => { db.initDB = async (isStart) => { await databaseProvider.initDB(isStart) - const migrationUmzug = databaseProvider.createUmzug(path.resolve(__dirname, '../migrations')) - await migrationUmzug.up() - await databaseProvider.createUmzug(path.resolve(__dirname, '../seeders')).up() if (isStart) { // Configure system images const fogTypes = await db.FogType.findAll({}) await configureImage(db, constants.ROUTER_CATALOG_NAME, fogTypes, config.get('SystemImages:Router', {})) await configureImage(db, constants.PROXY_CATALOG_NAME, fogTypes, config.get('SystemImages:Proxy', {})) - await configureImage(db, constants.PORT_ROUTER_CATALOG_NAME, fogTypes, config.get('SystemImages:PortRouter', {})) } } diff --git a/src/data/models/kubeletaccesstoken.js b/src/data/models/kubeletaccesstoken.js deleted file mode 100644 index 0122cc7d8..000000000 --- a/src/data/models/kubeletaccesstoken.js +++ /dev/null @@ -1,41 +0,0 @@ -'use strict' - -const { convertToInt } = require('../../helpers/app-helper') - -module.exports = (sequelize, DataTypes) => { - const KubeletAccessToken = sequelize.define('KubeletAccessToken', { - id: { - type: DataTypes.INTEGER, - primaryKey: true, - autoIncrement: true, - allowNull: false, - field: 'id' - }, - expirationTime: { - type: DataTypes.BIGINT, - get () { - return convertToInt(this.getDataValue('expirationTime')) - }, - field: 'expiration_time' - }, - token: { - type: DataTypes.TEXT, - field: 'token' - } - }, { - tableName: 'KubeletAccessTokens', - timestamps: false, - underscored: true - }) - KubeletAccessToken.associate = function (models) { - KubeletAccessToken.belongsTo(models.ControlPlane, { - foreignKey: { - name: 'controlPlaneUuid', - field: 'controlPlane_uuid' - }, - as: 'controlPlane', - onDelete: 'cascade' - }) - } - return KubeletAccessToken -} diff --git a/src/data/models/microservice.js b/src/data/models/microservice.js index 0af8ace15..e3548c1e8 100644 --- a/src/data/models/microservice.js +++ b/src/data/models/microservice.js @@ -108,15 +108,6 @@ module.exports = (sequelize, DataTypes) => { onDelete: 'cascade' }) - Microservice.belongsTo(models.ControlPlane, { - foreignKey: { - name: 'controlPlaneUuid', - field: 'controlPlane_uuid' - }, - as: 'controlPlane', - onDelete: 'cascade' - }) - Microservice.hasMany(models.CatalogItemImage, { foreignKey: 'microservice_uuid', as: 'images' diff --git a/src/data/models/microserviceport.js b/src/data/models/microserviceport.js index c9c24ab7d..405532fed 100644 --- a/src/data/models/microserviceport.js +++ b/src/data/models/microserviceport.js @@ -43,15 +43,6 @@ module.exports = (sequelize, DataTypes) => { onDelete: 'cascade' }) - MicroservicePort.belongsTo(models.ControlPlane, { - foreignKey: { - name: 'controlPlaneUuid', - field: 'controlPlane_uuid' - }, - as: 'controlPlane', - onDelete: 'cascade' - }) - MicroservicePort.hasOne(models.MicroservicePublicPort, { foreignKey: 'port_id', as: 'publicPort' diff --git a/src/data/models/registry.js b/src/data/models/registry.js index 48c85a034..15295fbaf 100644 --- a/src/data/models/registry.js +++ b/src/data/models/registry.js @@ -45,15 +45,5 @@ module.exports = (sequelize, DataTypes) => { timestamps: false, underscored: true }) - Registry.associate = function (models) { - Registry.belongsTo(models.ControlPlane, { - foreignKey: { - name: 'controlPlaneUuid', - field: 'controlPlane_uuid' - }, - as: 'controlPlane', - onDelete: 'cascade' - }) - } return Registry } diff --git a/src/data/models/scheduleraccesstoken.js b/src/data/models/scheduleraccesstoken.js deleted file mode 100644 index 40ca28dc7..000000000 --- a/src/data/models/scheduleraccesstoken.js +++ /dev/null @@ -1,41 +0,0 @@ -'use strict' - -const { convertToInt } = require('../../helpers/app-helper') - -module.exports = (sequelize, DataTypes) => { - const SchedulerAccessToken = sequelize.define('SchedulerAccessToken', { - id: { - type: DataTypes.INTEGER, - primaryKey: true, - autoIncrement: true, - allowNull: false, - field: 'id' - }, - expirationTime: { - type: DataTypes.BIGINT, - get () { - return convertToInt(this.getDataValue('expirationTime')) - }, - field: 'expiration_time' - }, - token: { - type: DataTypes.TEXT, - field: 'token' - } - }, { - tableName: 'SchedulerAccessTokens', - timestamps: false, - underscored: true - }) - SchedulerAccessToken.associate = function (models) { - SchedulerAccessToken.belongsTo(models.User, { - foreignKey: { - name: 'userId', - field: 'user_id' - }, - as: 'user', - onDelete: 'cascade' - }) - } - return SchedulerAccessToken -} diff --git a/src/data/models/user.js b/src/data/models/user.js deleted file mode 100644 index 3b1a30e6f..000000000 --- a/src/data/models/user.js +++ /dev/null @@ -1,94 +0,0 @@ -'use strict' -module.exports = (sequelize, DataTypes) => { - const User = sequelize.define('User', { - id: { - allowNull: false, - autoIncrement: true, - primaryKey: true, - type: DataTypes.INTEGER, - field: 'id' - }, - firstName: { - /* eslint-disable new-cap */ - type: DataTypes.STRING(100), - field: 'first_name', - defaultValue: '' - }, - lastName: { - /* eslint-disable new-cap */ - type: DataTypes.STRING(100), - field: 'last_name', - defaultValue: '' - }, - email: { - /* eslint-disable new-cap */ - type: DataTypes.STRING(100), - field: 'email', - defaultValue: '' - }, - password: { - /* eslint-disable new-cap */ - type: DataTypes.STRING(100), - field: 'password' - }, - tempPassword: { - /* eslint-disable new-cap */ - type: DataTypes.STRING(100), - field: 'temp_password' - }, - emailActivated: { - type: DataTypes.BOOLEAN, - field: 'email_activated', - defaultValue: false - }, - subscriptionKey: { - type: DataTypes.STRING(100), - field: 'subscriptionKey', - defaultValue: '' - } - }, { - tableName: 'Users', - timestamps: true, - underscored: true - }) - User.associate = function (models) { - User.hasOne(models.AccessToken, { - foreignKey: 'user_id', - as: 'accessToken' - }) - - User.hasMany(models.Application, { - foreignKey: { - name: 'userId', - field: 'user_id' - }, - as: 'application' - }) - - User.hasMany(models.Fog, { - foreignKey: { - name: 'userId', - field: 'user_id' - }, - as: 'fog' - }) - - User.hasMany(models.Microservice, { - foreignKey: { - name: 'userId', - field: 'user_id' - }, - as: 'microservice' - }) - - User.belongsTo(models.ControlPlane, { - foreignKey: { - name: 'controlPlaneUuid', - field: 'controlPlane_uuid' - }, - as: 'controlPlane', - onDelete: 'cascade' - }) - } - return User -} diff --git a/src/data/seeders/20240304180631-insert-control-plane.js b/src/data/seeders/20240304180631-insert-control-plane.js deleted file mode 100644 index cd015ea18..000000000 --- a/src/data/seeders/20240304180631-insert-control-plane.js +++ /dev/null @@ -1,19 +0,0 @@ -const config = require('../../config') - -const ControlPlaneConfig = config.get('ControlPlane:Config', {}) - -module.exports = { - up: (queryInterface, Sequelize) => { - return queryInterface.Insert('ControlPlane', [ - { - namespace: ControlPlaneConfig.namespace, - orgName: ControlPlaneConfig.orgName, - entitlementId: ControlPlaneConfig.entitlementID - } - ]) - }, - - down: (queryInterface, Sequelize) => { - return queryInterface.Delete('ControlPlane', null, {}) - } -} diff --git a/src/decorators/authorization-decorator.js b/src/decorators/authorization-decorator.js index 56699125a..eb409964d 100644 --- a/src/decorators/authorization-decorator.js +++ b/src/decorators/authorization-decorator.js @@ -12,40 +12,11 @@ */ const logger = require('../logger') const config = require('../config') -const UserManager = require('../data/managers/user-manager') -const AccessTokenManager = require('../data/managers/access-token-manager') const FogManager = require('../data/managers/iofog-manager') const FogAccessTokenManager = require('../data/managers/iofog-access-token-manager') const Errors = require('../helpers/errors') const { isTest } = require('../helpers/app-helper') -function checkAuthToken (f) { - return async function (...fArgs) { - if (isTest()) { - return f.apply(this, fArgs) - } - - const req = fArgs[0] - const token = req.headers.authorization - - const user = await UserManager.checkAuthentication(token) - - if (!user) { - logger.error('token ' + token + ' incorrect') - throw new Errors.AuthenticationError('authorization failed') - } - if (Date.now() > user.accessToken.expirationTime) { - logger.error('token ' + token + ' expired') - throw new Errors.AuthenticationError('token expired') - } - - fArgs.push(user) - AccessTokenManager.updateExpirationTime(user.accessToken.id, user.accessToken.expirationTime + - config.get('Settings:UserTokenExpirationIntervalSeconds') * 1000) - return f.apply(this, fArgs) - } -} - function checkFogToken (f) { return async function (...fArgs) { if (isTest()) { diff --git a/src/decorators/cli-decorator.js b/src/decorators/cli-decorator.js deleted file mode 100644 index f7e5f8954..000000000 --- a/src/decorators/cli-decorator.js +++ /dev/null @@ -1,69 +0,0 @@ -/* - * ******************************************************************************* - * * Copyright (c) 2023 Datasance Teknoloji A.S. - * * - * * This program and the accompanying materials are made available under the - * * terms of the Eclipse Public License v. 2.0 which is available at - * * http://www.eclipse.org/legal/epl-2.0 - * * - * * SPDX-License-Identifier: EPL-2.0 - * ******************************************************************************* - * - */ - -const logger = require('../logger') -const UserManager = require('../data/managers/user-manager') -const Errors = require('../helpers/errors') -const { isTest } = require('../helpers/app-helper') - -function prepareUserById (f) { - return async function (...args) { - if (isTest()) { - return f.apply(this, args) - } - - const fArgs = Array.prototype.slice.call(args) - const obj = fArgs[0] - const userId = obj.userId - - const user = await UserManager.findById(userId) - if (!user) { - throw new Errors.AuthenticationError('user id does not exist') - } - - delete obj.userId - fArgs.push(user) - - return f.apply(this, fArgs) - } -} - -function prepareUserByEmail (f) { - return async function (...args) { - if (isTest()) { - return f.apply(this, args) - } - - const fArgs = Array.prototype.slice.call(args) - const obj = fArgs[0] - const email = obj.email - - const user = await UserManager.findByEmail(email) - - if (!user) { - logger.error('user email ' + email + ' incorrect') - throw new Errors.AuthenticationError('user email does not exist') - } - - delete obj.email - fArgs.push(user) - - return f.apply(this, fArgs) - } -} - -module.exports = { - prepareUserById: prepareUserById, - prepareUserByEmail: prepareUserByEmail - -} diff --git a/src/helpers/errors.js b/src/helpers/errors.js index 27f06a011..cb57e675c 100644 --- a/src/helpers/errors.js +++ b/src/helpers/errors.js @@ -78,15 +78,6 @@ class FtpError extends Error { } } -class EmailActivationSetupError extends Error { - constructor () { - const message = 'Email activation is not configured on Controller' - super(message) - this.message = message - this.name = 'EmailActivationSetupError' - } -} - class InvalidArgumentError extends Error { constructor (message) { super(message) @@ -120,7 +111,6 @@ module.exports = { ModelNotFoundError: ModelNotFoundError, DuplicatePropertyError: DuplicatePropertyError, FtpError: FtpError, - EmailActivationSetupError: EmailActivationSetupError, InvalidArgumentError: InvalidArgumentError, InvalidArgumentTypeError: InvalidArgumentTypeError, CLIArgsNotProvidedError: CLIArgsNotProvidedError diff --git a/src/helpers/template-helper.js b/src/helpers/template-helper.js index b11750bec..543297a59 100755 --- a/src/helpers/template-helper.js +++ b/src/helpers/template-helper.js @@ -10,7 +10,7 @@ * * Author: Franck Roudet */ -const UserManager = require('../data/managers/user-manager') + const ApplicationManager = require('../data/managers/application-manager.js') // Using manager instead of service to avoid dependency loop const FogService = require('../services/iofog-service') const MicroservicesService = require('../services/microservices-service') @@ -60,7 +60,7 @@ async function findApplicationHandler (name) { return this.context.environments._applicationsByName[name] } - const result = await ApplicationManager.findOnePopulated({ name, userId: user.id }, { exclude: ['created_at', 'updated_at'] }, { fakeTransaction: true }) // TODO: Get a proper DB transaction + const result = await ApplicationManager.findOnePopulated({ exclude: ['created_at', 'updated_at'] }, { fakeTransaction: true }) // TODO: Get a proper DB transaction if (result) { result.microservices = (await MicroservicesService.listMicroservicesEndPoint({ applicationName: name }, user, false)).microservices if (this.context.environments._applicationsByName) { @@ -169,15 +169,7 @@ const rvaluesVarSubstition = async (subjects, templateContext, user) => { const substitutionMiddleware = async (req, res, next) => { if (['POST', 'PUT', 'PATCH'].indexOf(req.method) > -1) { - const token = req.headers.authorization let user - if (token) { - try { - user = await UserManager.checkAuthentication(token) - } catch (e) { - // Nothing to do, suppose the token has no permission to access. The is the case of agent - } - } let tmplContext = { self: req.body, // Private context diff --git a/src/routes/catalog.js b/src/routes/catalog.js index e7275a860..f5b3bdaf4 100644 --- a/src/routes/catalog.js +++ b/src/routes/catalog.js @@ -15,35 +15,39 @@ const CatalogController = require('../controllers/catalog-controller') const ResponseDecorator = require('../decorators/response-decorator') const Errors = require('../helpers/errors') const logger = require('../logger') +const keycloak = require('../config/keycloak') module.exports = [ { method: 'get', path: '/api/v1/catalog/microservices', - middleware: async (req, res) => { - logger.apiReq(req) - - const successCode = constants.HTTP_CODE_SUCCESS - const errorCodes = [ - { - code: constants.HTTP_CODE_UNAUTHORIZED, - errors: [Errors.AuthenticationError] - } - ] - - const listCatalogItemsEndPoint = ResponseDecorator.handleErrors( - CatalogController.listCatalogItemsEndPoint, - successCode, - errorCodes - ) - const responseObject = await listCatalogItemsEndPoint(req) - - res - .status(responseObject.code) - .send(responseObject.body) - - logger.apiRes({ req: req, res: responseObject }) - } + middleware: [ + keycloak.protect(['Admin', 'SRE', 'Developer', 'Viewer']), + async (req, res) => { + logger.apiReq(req) + + const successCode = constants.HTTP_CODE_SUCCESS + const errorCodes = [ + { + code: constants.HTTP_CODE_UNAUTHORIZED, + errors: [Errors.AuthenticationError] + } + ] + + const listCatalogItemsEndPoint = ResponseDecorator.handleErrors( + CatalogController.listCatalogItemsEndPoint, + successCode, + errorCodes + ) + const responseObject = await listCatalogItemsEndPoint(req) + + res + .status(responseObject.code) + .send(responseObject.body) + + logger.apiRes({ req, res: responseObject }) + } + ] }, { method: 'post', @@ -79,7 +83,7 @@ module.exports = [ .status(responseObject.code) .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req, res: responseObject }) } }, { @@ -111,7 +115,7 @@ module.exports = [ .status(responseObject.code) .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req, res: responseObject }) } }, { @@ -152,7 +156,7 @@ module.exports = [ .status(responseObject.code) .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req, res: responseObject }) } }, { @@ -184,7 +188,7 @@ module.exports = [ .status(responseObject.code) .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req, res: responseObject }) } } ] diff --git a/src/routes/controlPlane.js b/src/routes/controlPlane.js deleted file mode 100644 index 37750b99c..000000000 --- a/src/routes/controlPlane.js +++ /dev/null @@ -1,45 +0,0 @@ -/* - * ******************************************************************************* - * * Copyright (c) 2023 Datasance Teknoloji A.S. - * * - * * This program and the accompanying materials are made available under the - * * terms of the Eclipse Public License v. 2.0 which is available at - * * http://www.eclipse.org/legal/epl-2.0 - * * - * * SPDX-License-Identifier: EPL-2.0 - * ******************************************************************************* - * - */ -const constants = require('../helpers/constants') -const ControlPlaneController = require('../controllers/control-plane-controller') -const ResponseDecorator = require('../decorators/response-decorator') -const Errors = require('../helpers/errors') -const logger = require('../logger') - -module.exports = [ - { - method: 'get', - path: '/api/v1/controlplane/profile', - middleware: async (req, res) => { - logger.apiReq(req) - - const successCode = constants.HTTP_CODE_SUCCESS - const errorCodes = [ - { - code: constants.HTTP_CODE_UNAUTHORIZED, - errors: [Errors.AuthenticationError] - } - ] - - const getControlPlaneProfileEndPoint = ResponseDecorator.handleErrors(ControlPlaneController.getControlPlaneProfileEndPoint, successCode, errorCodes) - const responseObject = await getControlPlaneProfileEndPoint(req) - - res - .status(responseObject.code) - .send(responseObject.body) - - logger.apiRes({ req: req, res: responseObject }) - } - } - -] diff --git a/src/routes/controller.js b/src/routes/controller.js index 6dd20d300..5ccc2f6fb 100644 --- a/src/routes/controller.js +++ b/src/routes/controller.js @@ -34,24 +34,6 @@ module.exports = [ logger.apiRes({ req: req, res: responseObject }) } }, - { - method: 'get', - path: '/api/v1/email-activation', - middleware: async (req, res) => { - logger.apiReq(req) - - const successCode = constants.HTTP_CODE_SUCCESS - const errorCodes = [] - const emailActivationEndPoint = ResponseDecorator.handleErrors(Controller.emailActivationEndPoint, successCode, errorCodes) - const responseObject = await emailActivationEndPoint(req) - - res - .status(responseObject.code) - .send(responseObject.body) - - logger.apiRes({ req: req, res: responseObject }) - } - }, { method: 'get', path: '/api/v1/fog-types/', diff --git a/src/routes/kubelet.js b/src/routes/kubelet.js deleted file mode 100644 index 54e7a5bcf..000000000 --- a/src/routes/kubelet.js +++ /dev/null @@ -1,434 +0,0 @@ -/* - * ******************************************************************************* - * * Copyright (c) 2023 Datasance Teknoloji A.S. - * * - * * This program and the accompanying materials are made available under the - * * terms of the Eclipse Public License v. 2.0 which is available at - * * http://www.eclipse.org/legal/epl-2.0 - * * - * * SPDX-License-Identifier: EPL-2.0 - * ******************************************************************************* - * - */ - -const constants = require('../helpers/constants') -const Errors = require('../helpers/errors') -const KubeletController = require('../controllers/kubelet-controller') -const logger = require('../logger') -const ResponseDecorator = require('../decorators/response-decorator') - -module.exports = [ - { - method: 'post', - path: '/api/v1/k8s/createPod', - middleware: async (req, res) => { - logger.apiReq(req) - - const successCode = constants.HTTP_CODE_SUCCESS - const errorCodes = [ - { - code: constants.HTTP_CODE_BAD_REQUEST, - errors: [Errors.ValidationError] - }, - { - code: constants.HTTP_CODE_UNAUTHORIZED, - errors: [Errors.AuthenticationError] - }, - { - code: constants.HTTP_CODE_NOT_FOUND, - errors: [Errors.NotFoundError] - } - ] - - const kubeletCreatePodEndPoint = ResponseDecorator - .handleErrors(KubeletController.kubeletCreatePodEndPoint, successCode, errorCodes) - const responseObject = await kubeletCreatePodEndPoint(req) - - res - .status(responseObject.code) - .send(responseObject.body) - - logger.apiRes({ req: req, res: responseObject }) - } - }, - { - method: 'put', - path: '/api/v1/k8s/updatePod', - middleware: async (req, res) => { - logger.apiReq(req) - - const successCode = constants.HTTP_CODE_SUCCESS - const errorCodes = [ - { - code: constants.HTTP_CODE_BAD_REQUEST, - errors: [Errors.ValidationError] - }, - { - code: constants.HTTP_CODE_UNAUTHORIZED, - errors: [Errors.AuthenticationError] - }, - { - code: constants.HTTP_CODE_NOT_FOUND, - errors: [Errors.NotFoundError] - } - ] - - const kubeletUpdatePodEndPoint = ResponseDecorator - .handleErrors(KubeletController.kubeletUpdatePodEndPoint, successCode, errorCodes) - const responseObject = await kubeletUpdatePodEndPoint(req) - - res - .status(responseObject.code) - .send(responseObject.body) - - logger.apiRes({ req: req, res: responseObject }) - } - }, - { - method: 'delete', - path: '/api/v1/k8s/deletePod', - middleware: async (req, res) => { - logger.apiReq(req) - - const successCode = constants.HTTP_CODE_SUCCESS - const errorCodes = [ - { - code: constants.HTTP_CODE_BAD_REQUEST, - errors: [Errors.ValidationError] - }, - { - code: constants.HTTP_CODE_UNAUTHORIZED, - errors: [Errors.AuthenticationError] - }, - { - code: constants.HTTP_CODE_NOT_FOUND, - errors: [Errors.NotFoundError] - } - ] - - const kubeletDeletePodEndPoint = ResponseDecorator - .handleErrors(KubeletController.kubeletDeletePodEndPoint, successCode, errorCodes) - const responseObject = await kubeletDeletePodEndPoint(req) - - res - .status(responseObject.code) - .send(responseObject.body) - - logger.apiRes({ req: req, res: responseObject }) - } - }, - { - method: 'get', - path: '/api/v1/k8s/getPod', - middleware: async (req, res) => { - logger.apiReq(req) - - const successCode = constants.HTTP_CODE_SUCCESS - const errorCodes = [ - { - code: constants.HTTP_CODE_BAD_REQUEST, - errors: [Errors.ValidationError] - }, - { - code: constants.HTTP_CODE_UNAUTHORIZED, - errors: [Errors.AuthenticationError] - }, - { - code: constants.HTTP_CODE_NOT_FOUND, - errors: [Errors.NotFoundError] - } - ] - - const kubeletGetPodEndPoint = ResponseDecorator - .handleErrors(KubeletController.kubeletGetPodEndPoint, successCode, errorCodes) - const responseObject = await kubeletGetPodEndPoint(req) - - res - .status(responseObject.code) - .send(responseObject.body) - - logger.apiRes({ req: req, res: responseObject }) - } - }, - { - method: 'get', - path: '/api/v1/k8s/getContainerLogs', - middleware: async (req, res) => { - logger.apiReq(req) - - const successCode = constants.HTTP_CODE_SUCCESS - const errorCodes = [ - { - code: constants.HTTP_CODE_BAD_REQUEST, - errors: [Errors.ValidationError] - }, - { - code: constants.HTTP_CODE_UNAUTHORIZED, - errors: [Errors.AuthenticationError] - }, - { - code: constants.HTTP_CODE_NOT_FOUND, - errors: [Errors.NotFoundError] - } - ] - - const kubeletGetContainerLogsEndPoint = ResponseDecorator - .handleErrors(KubeletController.kubeletGetContainerLogsEndPoint, successCode, errorCodes) - const responseObject = await kubeletGetContainerLogsEndPoint(req) - - res - .status(responseObject.code) - .send(responseObject.body) - - logger.apiRes({ req: req, res: responseObject }) - } - }, - { - method: 'get', - path: '/api/v1/k8s/getPodStatus', - middleware: async (req, res) => { - logger.apiReq(req) - - const successCode = constants.HTTP_CODE_SUCCESS - const errorCodes = [ - { - code: constants.HTTP_CODE_BAD_REQUEST, - errors: [Errors.ValidationError] - }, - { - code: constants.HTTP_CODE_UNAUTHORIZED, - errors: [Errors.AuthenticationError] - }, - { - code: constants.HTTP_CODE_NOT_FOUND, - errors: [Errors.NotFoundError] - } - ] - - const kubeletGetPodStatusEndPoint = ResponseDecorator - .handleErrors(KubeletController.kubeletGetPodStatusEndPoint, successCode, errorCodes) - const responseObject = await kubeletGetPodStatusEndPoint(req) - - res - .status(responseObject.code) - .send(responseObject.body) - - logger.apiRes({ req: req, res: responseObject }) - } - }, - { - method: 'get', - path: '/api/v1/k8s/getPods', - middleware: async (req, res) => { - logger.apiReq(req) - - const successCode = constants.HTTP_CODE_SUCCESS - const errorCodes = [ - { - code: constants.HTTP_CODE_BAD_REQUEST, - errors: [Errors.ValidationError] - }, - { - code: constants.HTTP_CODE_UNAUTHORIZED, - errors: [Errors.AuthenticationError] - }, - { - code: constants.HTTP_CODE_NOT_FOUND, - errors: [Errors.NotFoundError] - } - ] - - const kubeletGetPodsEndPoint = ResponseDecorator - .handleErrors(KubeletController.kubeletGetPodsEndPoint, successCode, errorCodes) - const responseObject = await kubeletGetPodsEndPoint(req) - - res - .status(responseObject.code) - .send(responseObject.body) - - logger.apiRes({ req: req, res: responseObject }) - } - }, - { - method: 'get', - path: '/api/v1/k8s/capacity', - middleware: async (req, res) => { - logger.apiReq(req) - - const successCode = constants.HTTP_CODE_SUCCESS - const errorCodes = [ - { - code: constants.HTTP_CODE_BAD_REQUEST, - errors: [Errors.ValidationError] - }, - { - code: constants.HTTP_CODE_UNAUTHORIZED, - errors: [Errors.AuthenticationError] - }, - { - code: constants.HTTP_CODE_NOT_FOUND, - errors: [Errors.NotFoundError] - } - ] - - const kubeletGetCapacityEndPoint = ResponseDecorator - .handleErrors(KubeletController.kubeletGetCapacityEndPoint, successCode, errorCodes) - const responseObject = await kubeletGetCapacityEndPoint(req) - - res - .status(responseObject.code) - .send(responseObject.body) - - logger.apiRes({ req: req, res: responseObject }) - } - }, - { - method: 'get', - path: '/api/v1/k8s/allocatable', - middleware: async (req, res) => { - logger.apiReq(req) - - const successCode = constants.HTTP_CODE_SUCCESS - const errorCodes = [ - { - code: constants.HTTP_CODE_BAD_REQUEST, - errors: [Errors.ValidationError] - }, - { - code: constants.HTTP_CODE_UNAUTHORIZED, - errors: [Errors.AuthenticationError] - }, - { - code: constants.HTTP_CODE_NOT_FOUND, - errors: [Errors.NotFoundError] - } - ] - - const kubeletGetAllocatableEndPoint = ResponseDecorator - .handleErrors(KubeletController.kubeletGetAllocatableEndPoint, successCode, errorCodes) - const responseObject = await kubeletGetAllocatableEndPoint(req) - - res - .status(responseObject.code) - .send(responseObject.body) - - logger.apiRes({ req: req, res: responseObject }) - } - }, - { - method: 'get', - path: '/api/v1/k8s/nodeConditions', - middleware: async (req, res) => { - logger.apiReq(req) - - const successCode = constants.HTTP_CODE_SUCCESS - const errorCodes = [ - { - code: constants.HTTP_CODE_BAD_REQUEST, - errors: [Errors.ValidationError] - }, - { - code: constants.HTTP_CODE_UNAUTHORIZED, - errors: [Errors.AuthenticationError] - }, - { - code: constants.HTTP_CODE_NOT_FOUND, - errors: [Errors.NotFoundError] - } - ] - - const kubeletGetNodeConditionsEndPoint = ResponseDecorator - .handleErrors(KubeletController.kubeletGetNodeConditionsEndPoint, successCode, errorCodes) - const responseObject = await kubeletGetNodeConditionsEndPoint(req) - - res - .status(responseObject.code) - .send(responseObject.body) - - logger.apiRes({ req: req, res: responseObject }) - } - }, - { - method: 'get', - path: '/api/v1/k8s/nodeAddresses', - middleware: async (req, res) => { - logger.apiReq(req) - - const successCode = constants.HTTP_CODE_SUCCESS - const errorCodes = [ - { - code: constants.HTTP_CODE_BAD_REQUEST, - errors: [Errors.ValidationError] - }, - { - code: constants.HTTP_CODE_UNAUTHORIZED, - errors: [Errors.AuthenticationError] - }, - { - code: constants.HTTP_CODE_NOT_FOUND, - errors: [Errors.NotFoundError] - } - ] - - const kubeletGetNodeAddressesEndPoint = ResponseDecorator - .handleErrors(KubeletController.kubeletGetNodeAddressesEndPoint, successCode, errorCodes) - const responseObject = await kubeletGetNodeAddressesEndPoint(req) - - res - .status(responseObject.code) - .send(responseObject.body) - - logger.apiRes({ req: req, res: responseObject }) - } - }, - { - method: 'get', - path: '/api/v1/k8s/vk-token', - middleware: async (req, res) => { - logger.apiReq(req) - - const successCode = constants.HTTP_CODE_SUCCESS - const errorCodes = [ - { - code: constants.HTTP_CODE_NOT_FOUND, - errors: [Errors.AuthenticationError] - } - ] - - const kubeletGetVkTokenEndPoint = ResponseDecorator - .handleErrors(KubeletController.kubeletGetVkTokenEndPoint, successCode, errorCodes) - const responseObject = await kubeletGetVkTokenEndPoint() - - res - .status(responseObject.code) - .send(responseObject.body) - - logger.apiRes({ req: req, res: responseObject }) - } - }, - { - method: 'get', - path: '/api/v1/k8s/scheduler-token', - middleware: async (req, res) => { - logger.apiReq(req) - - const successCode = constants.HTTP_CODE_SUCCESS - const errorCodes = [ - { - code: constants.HTTP_CODE_NOT_FOUND, - errors: [Errors.AuthenticationError] - } - ] - - const kubeletGetSchedulerTokenEndPoint = ResponseDecorator - .handleErrors(KubeletController.kubeletGetSchedulerTokenEndPoint, successCode, errorCodes) - const responseObject = await kubeletGetSchedulerTokenEndPoint() - - res - .status(responseObject.code) - .send(responseObject.body) - - logger.apiRes({ req: req, res: responseObject }) - } - } -] diff --git a/src/routes/user.js b/src/routes/user.js index 9ad3945df..df98f9317 100644 --- a/src/routes/user.js +++ b/src/routes/user.js @@ -16,7 +16,6 @@ const UserController = require('../controllers/user-controller') const ResponseDecorator = require('../decorators/response-decorator') const Errors = require('../helpers/errors') -const Config = require('../config') const logger = require('../logger') module.exports = [ @@ -48,238 +47,5 @@ module.exports = [ logger.apiRes('POST /api/v1/user/login', { args: { statusCode: responseObject.code } }) // don't use req and responseObject as args, because they have password and token } - }, - { - method: 'post', - path: '/api/v1/user/logout', - middleware: async (req, res) => { - logger.apiReq(req) - - const successCode = constants.HTTP_CODE_NO_CONTENT - const errorCodes = [ - { - code: constants.HTTP_CODE_UNAUTHORIZED, - errors: [Errors.AuthenticationError] - } - ] - - const userLogoutEndPoint = ResponseDecorator.handleErrors(UserController.userLogoutEndPoint, successCode, errorCodes) - const responseObject = await userLogoutEndPoint(req) - - res - .status(responseObject.code) - .send() - } - }, - { - method: 'post', - path: '/api/v1/user/signup', - middleware: async (req, res) => { - logger.apiReq('POST /api/v1/user/signup') // don't use req as arg, because password not encrypted - - const successCode = constants.HTTP_CODE_CREATED - const errorCodes = [ - { - code: constants.HTTP_CODE_BAD_REQUEST, - errors: [Errors.ValidationError] - } - ] - - const userSignupEndPoint = ResponseDecorator.handleErrors(UserController.userSignupEndPoint, successCode, errorCodes) - const responseObject = await userSignupEndPoint(req) - - res - .status(responseObject.code) - .send(responseObject.body) - - logger.apiRes({ req: req, res: responseObject }) - } - }, - { - method: 'get', - path: '/api/v1/user/signup/resend-activation', - middleware: async (req, res) => { - logger.apiReq(req) - - const successCode = constants.HTTP_CODE_NO_CONTENT - const errorCodes = [ - { - code: constants.HTTP_CODE_BAD_REQUEST, - errors: [Errors.ValidationError] - } - ] - - const resendActivationEndPoint = ResponseDecorator.handleErrors(UserController.resendActivationEndPoint, - successCode, errorCodes) - const responseObject = await resendActivationEndPoint(req) - - res - .status(responseObject.code) - .send(responseObject.body) - - logger.apiRes({ req: req, res: responseObject }) - } - }, - { - method: 'post', - path: '/api/v1/user/activate', - middleware: async (req, res) => { - logger.apiReq(req) - - const successCode = constants.HTTP_CODE_SEE_OTHER - const errorCodes = [ - { - code: constants.HTTP_CODE_NOT_FOUND, - errors: [Errors.NotFoundError] - } - ] - - const activateUserEndPoint = ResponseDecorator.handleErrors(UserController.activateUserAccountEndPoint, - successCode, errorCodes) - const responseObject = await activateUserEndPoint(req) - - // redirect to login page - if (responseObject.code === successCode) { - res.setHeader('Location', Config.get('Email:HomeUrl')) - } - - res - .status(responseObject.code) - .send(responseObject.body) - - logger.apiRes({ req: req, res: responseObject }) - } - }, - { - method: 'get', - path: '/api/v1/user/profile', - middleware: async (req, res) => { - logger.apiReq(req) - - const successCode = constants.HTTP_CODE_SUCCESS - const errorCodes = [ - { - code: constants.HTTP_CODE_UNAUTHORIZED, - errors: [Errors.AuthenticationError] - } - ] - - const getUserProfileEndPoint = ResponseDecorator.handleErrors(UserController.getUserProfileEndPoint, successCode, errorCodes) - const responseObject = await getUserProfileEndPoint(req) - - res - .status(responseObject.code) - .send(responseObject.body) - - logger.apiRes({ req: req, res: responseObject }) - } - }, - { - method: 'patch', - path: '/api/v1/user/profile', - middleware: async (req, res) => { - logger.apiReq(req) - - const successCode = constants.HTTP_CODE_SUCCESS - const errorCodes = [ - { - code: constants.HTTP_CODE_UNAUTHORIZED, - errors: [Errors.AuthenticationError] - }, - { - code: constants.HTTP_CODE_BAD_REQUEST, - errors: [Errors.ValidationError] - } - ] - - const updateUserProfileEndPoint = ResponseDecorator.handleErrors(UserController.updateUserProfileEndPoint, - successCode, errorCodes) - const responseObject = await updateUserProfileEndPoint(req) - - res - .status(responseObject.code) - .send(responseObject.body) - - logger.apiRes({ req: req, res: responseObject }) - } - }, - { - method: 'delete', - path: '/api/v1/user/profile', - middleware: async (req, res) => { - logger.apiReq(req) - - const successCode = constants.HTTP_CODE_NO_CONTENT - const errorCodes = [ - { - code: constants.HTTP_CODE_UNAUTHORIZED, - errors: [Errors.AuthenticationError] - } - ] - - const deleteUserProfileEndPoint = ResponseDecorator.handleErrors(UserController.deleteUserProfileEndPoint, - successCode, errorCodes) - const responseObject = await deleteUserProfileEndPoint(req) - - res - .status(responseObject.code) - .send(responseObject.body) - - logger.apiRes({ req: req, res: responseObject }) - } - }, - { - method: 'patch', - path: '/api/v1/user/password', - middleware: async (req, res) => { - logger.apiReq('PATCH /api/v1/user/password') // don't use req as arg, because password not encrypted - - const successCode = constants.HTTP_CODE_NO_CONTENT - const errorCodes = [ - { - code: constants.HTTP_CODE_UNAUTHORIZED, - errors: [Errors.AuthenticationError] - }, - { - code: constants.HTTP_CODE_BAD_REQUEST, - errors: [Errors.ValidationError] - } - ] - - const updateUserPasswordEndPoint = ResponseDecorator.handleErrors(UserController.updateUserPasswordEndPoint, - successCode, errorCodes) - const responseObject = await updateUserPasswordEndPoint(req) - - res - .status(responseObject.code) - .send(responseObject.body) - - logger.apiRes({ req: req, res: responseObject }) - } - }, - { - method: 'delete', - path: '/api/v1/user/password', - middleware: async (req, res) => { - logger.apiReq(req) - - const successCode = constants.HTTP_CODE_NO_CONTENT - const errorCodes = [ - { - code: constants.HTTP_CODE_NOT_FOUND, - errors: [Errors.NotFoundError] - } - ] - - const resetUserPasswordEndPoint = ResponseDecorator.handleErrors(UserController.resetUserPasswordEndPoint, - successCode, errorCodes) - const responseObject = await resetUserPasswordEndPoint(req) - - res - .status(responseObject.code) - .send(responseObject.body) - - logger.apiRes({ req: req, res: responseObject }) - } } ] diff --git a/src/schemas/config.js b/src/schemas/config.js index f83a89b99..c03b779ae 100644 --- a/src/schemas/config.js +++ b/src/schemas/config.js @@ -12,34 +12,27 @@ */ const configUpdate = { - 'id': '/configUpdate', - 'type': 'object', - 'properties': { - 'port': { 'type': 'integer', 'minimum': 0, 'maximum': 65535 }, - 'sslCert': { 'type': 'string' }, - 'sslKey': { 'type': 'string' }, - 'intermediateCert': { 'type': 'string' }, - 'emailActivationOn': { 'type': 'boolean' }, - 'emailActivationOff': { 'type': 'boolean' }, - 'homeUrl': { 'type': 'string' }, - 'emailAddress': { 'type': 'string' }, - 'emailPassword': { 'type': 'string', 'minLength': 1 }, - 'emailService': { 'type': 'string' }, - 'logDir': { 'type': 'string' }, - 'logSize': { 'type': 'integer' }, - 'kubelet': { 'type': 'string' } + id: '/configUpdate', + type: 'object', + properties: { + port: { type: 'integer', minimum: 0, maximum: 65535 }, + sslCert: { type: 'string' }, + sslKey: { type: 'string' }, + intermediateCert: { type: 'string' }, + logDir: { type: 'string' }, + logSize: { type: 'integer' } } } const configElement = { - 'id': '/configElement', - 'type': 'object', - 'properties': { - 'key': { 'type': 'string', 'minLength': 1 }, - 'value': { 'type': 'string' } + id: '/configElement', + type: 'object', + properties: { + key: { type: 'string', minLength: 1 }, + value: { type: 'string' } }, - 'required': ['key', 'value'], - 'additionalProperties': true + required: ['key', 'value'], + additionalProperties: true } module.exports = { diff --git a/src/schemas/user.js b/src/schemas/user.js index d65fe9d58..eae5bd6db 100644 --- a/src/schemas/user.js +++ b/src/schemas/user.js @@ -11,125 +11,22 @@ * */ -const signUp = { - 'id': '/signUp', - 'type': 'object', - 'properties': { - 'firstName': { 'type': 'string', 'minLength': 3 }, - 'lastName': { 'type': 'string', 'minLength': 3 }, - 'email': { - 'type': 'string', - 'pattern': '^(([^<>()\\[\\]\\\\.,;:\\s@"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@"]+)*)|(".+"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}' + - '\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$' - }, - 'password': { 'type': 'string', 'minLength': 8 }, - 'subscriptionKey': { 'type': 'string', 'minLength': 15 } - }, - 'required': ['email', 'password', 'firstName', 'lastName'], - 'additionalProperties': true -} - const login = { - 'id': '/login', - 'type': 'object', - 'properties': { - 'email': { - 'type': 'string', - 'pattern': '^(([^<>()\\[\\]\\\\.,;:\\s@"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@"]+)*)|(".+"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}' + + id: '/login', + type: 'object', + properties: { + email: { + type: 'string', + pattern: '^(([^<>()\\[\\]\\\\.,;:\\s@"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@"]+)*)|(".+"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}' + '\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$' }, - 'password': { 'type': 'string' } - }, - 'required': ['email', 'password'], - 'additionalProperties': true -} - -const resendActivation = { - 'id': '/resendActivation', - 'type': 'object', - 'properties': { - 'email': { - 'type': 'string', - 'pattern': '^(([^<>()\\[\\]\\\\.,;:\\s@"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@"]+)*)|(".+"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}' + - '\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$' - } - }, - 'required': ['email'], - 'additionalProperties': true -} - -const activateUser = { - 'id': '/activateUser', - 'type': 'object', - 'properties': { - 'activationCode': { 'type': 'string' } - }, - 'required': ['activationCode'], - 'additionalProperties': true -} - -const activateUserCLI = { - 'id': '/activateUserCLI', - 'type': 'object', - 'properties': { - 'email': { 'type': 'string' } - }, - 'required': ['email'], - 'additionalProperties': true -} - -const updateUserProfile = { - 'id': '/updateUserProfile', - 'type': 'object', - 'properties': { - 'firstName': { 'type': 'string', 'minLength': 3 }, - 'lastName': { 'type': 'string', 'minLength': 3 }, - 'subscriptionKey': { 'type': 'string', 'minLength': 15 } - }, - 'required': [], - 'additionalProperties': true -} - -const updateUserProfileCLI = { - 'id': '/updateUserProfileCLI', - 'type': 'object', - 'properties': { - 'firstName': { 'type': 'string', 'minLength': 3 }, - 'lastName': { 'type': 'string', 'minLength': 3 }, - 'password': { 'type': 'string', 'minLength': 8 }, - 'subscriptionKey': { 'type': 'string', 'minLength': 15 } - }, - 'required': [], - 'additionalProperties': true -} - -const updatePassword = { - 'id': '/updatePassword', - 'type': 'object', - 'properties': { - 'oldPassword': { 'type': 'string' }, - 'newPassword': { 'type': 'string', 'minLength': 8 } - }, - 'required': ['oldPassword', 'newPassword'], - 'additionalProperties': true -} - -const resetUserPassword = { - 'id': '/resetUserPassword', - 'type': 'object', - 'properties': { - 'email': { - 'type': 'string', - 'pattern': '^(([^<>()\\[\\]\\\\.,;:\\s@"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@"]+)*)|(".+"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}' + - '\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$' - } + password: { type: 'string' } }, - 'required': ['email'], - 'additionalProperties': true + required: ['email', 'password'], + additionalProperties: true } module.exports = { - mainSchemas: [signUp, login, resendActivation, activateUser, activateUserCLI, updateUserProfile, - updateUserProfileCLI, updatePassword, resetUserPassword], + mainSchemas: [login], innerSchemas: [] } diff --git a/src/server.js b/src/server.js index b465e178e..2be52d2af 100755 --- a/src/server.js +++ b/src/server.js @@ -34,6 +34,9 @@ const multerMemStorage = multer.memoryStorage() const uploadFile = (fileName) => multer({ storage: multerMemStorage }).single(fileName) +const keycloak = require('./config/keycloak.js').initKeycloak() +const session = require('express-session') +const memoryStore = require('./config/keycloak.js').getMemoryStore() const viewerApp = express() @@ -46,7 +49,13 @@ app.use(xss()) // express logs // app.use(morgan('combined')); - +app.use(session({ + secret: 'pot-controller', + resave: false, + saveUninitialized: true, + store: memoryStore +})) +app.use(keycloak.middleware()) app.use(bodyParser.urlencoded({ extended: true })) @@ -75,7 +84,7 @@ app.use((req, res, next) => { global.appRoot = path.resolve(__dirname) const registerRoute = (route) => { - const middlewares = [route.middleware] + const middlewares = [keycloak.middleware(), route.middleware] if (route.supportSubstitution) { middlewares.unshift(substitutionMiddleware) } diff --git a/src/services/access-token-service.js b/src/services/access-token-service.js deleted file mode 100644 index 822bfdceb..000000000 --- a/src/services/access-token-service.js +++ /dev/null @@ -1,29 +0,0 @@ -/* - * ******************************************************************************* - * * Copyright (c) 2023 Datasance Teknoloji A.S. - * * - * * This program and the accompanying materials are made available under the - * * terms of the Eclipse Public License v. 2.0 which is available at - * * http://www.eclipse.org/legal/epl-2.0 - * * - * * SPDX-License-Identifier: EPL-2.0 - * ******************************************************************************* - * - */ - -const AccessTokenManager = require('../data/managers/access-token-manager') - -const createAccessToken = async function (accessToken, transaction) { - return AccessTokenManager.create(accessToken, transaction) -} - -const removeAccessTokenByUserId = async function (userId, transaction) { - return AccessTokenManager.delete({ - userId: userId - }, transaction) -} - -module.exports = { - createAccessToken: createAccessToken, - removeAccessTokenByUserId: removeAccessTokenByUserId -} diff --git a/src/services/agent-service.js b/src/services/agent-service.js index dbfb6ecab..c33bd4303 100644 --- a/src/services/agent-service.js +++ b/src/services/agent-service.js @@ -369,9 +369,6 @@ const getAgentRegistries = async function (fog, transaction) { const registries = await RegistryManager.findAll({ [Op.or]: [ - { - userId: fog.userId - }, { isPublic: true } diff --git a/src/services/application-service.js b/src/services/application-service.js index 098472e18..a823588f4 100644 --- a/src/services/application-service.js +++ b/src/services/application-service.js @@ -56,14 +56,13 @@ const createApplicationEndPoint = async function (applicationData, user, isCLI, } await Validator.validate(applicationData, Validator.schemas.applicationCreate) - await _checkForDuplicateName(applicationData.name, null, user.id, transaction) + await _checkForDuplicateName(applicationData.name, null, transaction) const applicationToCreate = { name: applicationData.name, description: applicationData.description, isActivated: !!applicationData.isActivated, - isSystem: !!applicationData.isSystem, - userId: user.id + isSystem: !!applicationData.isSystem } const applicationDataCreate = AppHelper.deleteUndefinedFields(applicationToCreate) @@ -96,8 +95,7 @@ const createApplicationEndPoint = async function (applicationData, user, isCLI, const deleteApplicationEndPoint = async function (conditions, user, isCLI, transaction) { const whereObj = { - ...conditions, - userId: user.id + ...conditions } const where = AppHelper.deleteUndefinedFields(whereObj) @@ -110,13 +108,13 @@ const deleteApplicationEndPoint = async function (conditions, user, isCLI, trans const patchApplicationEndPoint = async function (applicationData, conditions, user, isCLI, transaction) { await Validator.validate(applicationData, Validator.schemas.applicationPatch) - const oldApplication = await ApplicationManager.findOne({ ...conditions, userId: user.id }, transaction) + const oldApplication = await ApplicationManager.findOne({ ...conditions }, transaction) if (!oldApplication) { throw new Errors.NotFoundError(ErrorMessages.INVALID_FLOW_ID) } if (applicationData.name) { - await _checkForDuplicateName(applicationData.name, oldApplication.id, user.id || oldApplication.userId, transaction) + await _checkForDuplicateName(applicationData.name, oldApplication.id, transaction) } const application = { @@ -130,7 +128,7 @@ const patchApplicationEndPoint = async function (applicationData, conditions, us const where = isCLI ? { id: oldApplication.id } - : { id: oldApplication.id, userId: user.id } + : { id: oldApplication.id } await ApplicationManager.update(where, updateApplicationData, transaction) if (oldApplication.isActivated !== applicationData.isActivated) { @@ -167,13 +165,13 @@ const updateApplicationEndPoint = async function (applicationData, name, user, i await Validator.validate(applicationData, Validator.schemas.applicationUpdate) - const oldApplication = await ApplicationManager.findOne({ name, userId: user.id }, transaction) + const oldApplication = await ApplicationManager.findOne({ name }, transaction) if (!oldApplication) { throw new Errors.NotFoundError(AppHelper.formatMessage(ErrorMessages.INVALID_FLOW_ID, name)) } if (applicationData.name) { - await _checkForDuplicateName(applicationData.name, oldApplication.id, user.id || oldApplication.userId, transaction) + await _checkForDuplicateName(applicationData.name, oldApplication.id, transaction) } const application = { @@ -186,7 +184,7 @@ const updateApplicationEndPoint = async function (applicationData, name, user, i const updateApplicationData = AppHelper.deleteUndefinedFields(application) const where = isCLI ? { id: oldApplication.id } - : { id: oldApplication.id, userId: user.id } + : { id: oldApplication.id } await ApplicationManager.update(where, updateApplicationData, transaction) if (applicationData.microservices) { @@ -274,7 +272,6 @@ const _updateMicroservices = async function (application, microservices, user, i const getUserApplicationsEndPoint = async function (user, isCLI, transaction) { const application = { - userId: user.id, isSystem: false } @@ -306,7 +303,7 @@ async function _buildApplicationObject (application, transaction) { async function getApplication (conditions, user, isCLI, transaction) { const where = isCLI ? { ...conditions } - : { ...conditions, userId: user.id } + : { ...conditions } const attributes = { exclude: ['created_at', 'updated_at'] } const applicationRaw = await ApplicationManager.findOnePopulated(where, attributes, transaction) @@ -322,11 +319,11 @@ const getApplicationEndPoint = async function (conditions, user, isCLI, transact return application } -const _checkForDuplicateName = async function (name, applicationId, userId, transaction) { +const _checkForDuplicateName = async function (name, applicationId, transaction) { if (name) { const where = applicationId - ? { name: name, userId: userId, id: { [Op.ne]: applicationId } } - : { name: name, userId: userId } + ? { name: name, id: { [Op.ne]: applicationId } } + : { name: name } const result = await ApplicationManager.findOne(where, transaction) if (result) { diff --git a/src/services/application-template-service.js b/src/services/application-template-service.js index 8f00742fb..8fa309cb2 100644 --- a/src/services/application-template-service.js +++ b/src/services/application-template-service.js @@ -31,13 +31,12 @@ const createApplicationTemplateEndPoint = async function (applicationTemplateDat // Remove name before storing delete applicationTemplateData.application.name - await _checkForDuplicateName(applicationTemplateData.name, null, user.id, transaction) + await _checkForDuplicateName(applicationTemplateData.name, null, transaction) const applicationTemplateToCreate = { name: applicationTemplateData.name, description: applicationTemplateData.description, - applicationJSON: JSON.stringify(applicationTemplateData.application), - userId: user.id + applicationJSON: JSON.stringify(applicationTemplateData.application) } const applicationTemplateDataCreate = AppHelper.deleteUndefinedFields(applicationTemplateToCreate) @@ -64,8 +63,7 @@ const createApplicationTemplateEndPoint = async function (applicationTemplateDat const deleteApplicationTemplateEndPoint = async function (conditions, user, isCLI, transaction) { const whereObj = { - ...conditions, - userId: user.id + ...conditions } const where = AppHelper.deleteUndefinedFields(whereObj) @@ -75,13 +73,13 @@ const deleteApplicationTemplateEndPoint = async function (conditions, user, isCL const patchApplicationTemplateEndPoint = async function (applicationTemplateData, conditions, user, isCLI, transaction) { await Validator.validate(applicationTemplateData, Validator.schemas.applicationTemplatePatch) - const oldApplicationTemplate = await ApplicationTemplateManager.findOne({ ...conditions, userId: user.id }, transaction) + const oldApplicationTemplate = await ApplicationTemplateManager.findOne({ ...conditions }, transaction) if (!oldApplicationTemplate) { throw new Errors.NotFoundError(ErrorMessages.INVALID_FLOW_ID) } if (applicationTemplateData.name) { - await _checkForDuplicateName(applicationTemplateData.name, oldApplicationTemplate.id, user.id || oldApplicationTemplate.userId, transaction) + await _checkForDuplicateName(applicationTemplateData.name, oldApplicationTemplate.id, transaction) } const applicationTemplate = { @@ -93,7 +91,7 @@ const patchApplicationTemplateEndPoint = async function (applicationTemplateData const where = isCLI ? { id: oldApplicationTemplate.id } - : { id: oldApplicationTemplate.id, userId: user.id } + : { id: oldApplicationTemplate.id } await ApplicationTemplateManager.update(where, updateApplicationTemplateData, transaction) } @@ -104,13 +102,13 @@ const updateApplicationTemplateEndPoint = async function (applicationTemplateDat // Remove name before storing delete applicationTemplateData.application.name - const oldApplicationTemplate = await ApplicationTemplateManager.findOne({ name, userId: user.id }, transaction) + const oldApplicationTemplate = await ApplicationTemplateManager.findOne({ name }, transaction) if (!oldApplicationTemplate) { return createApplicationTemplateEndPoint({ ...applicationTemplateData, name }, user, isCLI, transaction) } if (applicationTemplateData.name) { - await _checkForDuplicateName(applicationTemplateData.name, oldApplicationTemplate.id, user.id || oldApplicationTemplate.userId, transaction) + await _checkForDuplicateName(applicationTemplateData.name, oldApplicationTemplate.id, transaction) } const applicationTemplateDBModel = { @@ -122,7 +120,7 @@ const updateApplicationTemplateEndPoint = async function (applicationTemplateDat const updateApplicationTemplateData = AppHelper.deleteUndefinedFields(applicationTemplateDBModel) const where = isCLI ? { id: oldApplicationTemplate.id } - : { id: oldApplicationTemplate.id, userId: user.id } + : { id: oldApplicationTemplate.id } await ApplicationTemplateManager.update(where, updateApplicationTemplateData, transaction) if (applicationTemplateData.variables) { @@ -157,7 +155,6 @@ const _updateVariables = async function (applicationTemplateId, variables, user, const getUserApplicationTemplatesEndPoint = async function (user, isCLI, transaction) { const application = { - userId: user.id } const attributes = { exclude: ['created_at', 'updated_at'] } @@ -193,7 +190,7 @@ const getAllApplicationTemplatesEndPoint = async function (isCLI, transaction) { async function getApplicationTemplate (conditions, user, isCLI, transaction) { const where = isCLI ? { ...conditions } - : { ...conditions, userId: user.id } + : { ...conditions } const attributes = { exclude: ['created_at', 'updated_at'] } const application = await ApplicationTemplateManager.findOnePopulated(where, attributes, transaction) @@ -210,7 +207,7 @@ const getApplicationTemplateEndPoint = async function (name, user, isCLI, transa const getApplicationDataFromTemplate = async function (deploymentData, user, isCLI, transaction) { await Validator.validate(deploymentData, Validator.schemas.applicationTemplateDeploy) - const applicationTemplateDBObject = await ApplicationTemplateManager.findOnePopulated({ name: deploymentData.name, userId: user.id }, transaction) + const applicationTemplateDBObject = await ApplicationTemplateManager.findOnePopulated({ name: deploymentData.name }, transaction) if (!applicationTemplateDBObject) { throw new Errors.NotFoundError(ErrorMessages.INVALID_APPLICATION_TEMPLATE_NAME, deploymentData.name) } @@ -251,11 +248,11 @@ const getApplicationDataFromTemplate = async function (deploymentData, user, isC return newApplication } -const _checkForDuplicateName = async function (name, applicationId, userId, transaction) { +const _checkForDuplicateName = async function (name, applicationId, transaction) { if (name) { const where = applicationId - ? { name: name, userId: userId, id: { [Op.ne]: applicationId } } - : { name: name, userId: userId } + ? { name: name, id: { [Op.ne]: applicationId } } + : { name: name } const result = await ApplicationTemplateManager.findOne(where, transaction) if (result) { diff --git a/src/services/catalog-service.js b/src/services/catalog-service.js index b5920387d..baaf027eb 100644 --- a/src/services/catalog-service.js +++ b/src/services/catalog-service.js @@ -28,7 +28,7 @@ const MicroseriveStates = require('../enums/microservice-state') const createCatalogItemEndPoint = async function (data, user, transaction) { await Validator.validate(data, Validator.schemas.catalogItemCreate) - await _checkForDuplicateName(data.name, { userId: user.id }, transaction) + await _checkForDuplicateName(data.name, transaction) await _checkForRestrictedPublisher(data.publisher) const catalogItem = await _createCatalogItem(data, user, transaction) await _createCatalogImages(data, catalogItem, transaction) @@ -48,8 +48,7 @@ const updateCatalogItemEndPoint = async function (id, data, user, isCLI, transac id: id } : { - id: id, - userId: user.id + id: id } data.id = id @@ -62,13 +61,12 @@ const listCatalogItemsEndPoint = async function (user, isCLI, transaction) { const where = isCLI ? {} : { - [Op.or]: [{ userId: user.id }, { userId: null }], [Op.or]: [{ category: { [Op.ne]: 'SYSTEM' } }, { category: null }] } const attributes = isCLI ? {} - : { exclude: ['userId'] } + : {} const catalogItems = await CatalogItemManager.findAllWithDependencies(where, attributes, transaction) return { @@ -81,13 +79,12 @@ async function getCatalogItem (id, user, isCLI, transaction) { ? { id: id } : { id: id, - [Op.or]: [{ userId: user.id }, { userId: null }], [Op.or]: [{ category: { [Op.ne]: 'SYSTEM' } }, { category: null }] } const attributes = isCLI ? {} - : { exclude: ['userId'] } + : {} const item = await CatalogItemManager.findOneWithDependencies(where, attributes, transaction) if (!item) { @@ -106,7 +103,6 @@ const deleteCatalogItemEndPoint = async function (id, user, isCLI, transaction) id: id } : { - userId: user.id, id: id } @@ -128,8 +124,7 @@ async function getNetworkCatalogItem (transaction) { name: 'Networking Tool', category: 'SYSTEM', publisher: 'Eclipse ioFog', - registry_id: 1, - user_id: null + registry_id: 1 }, transaction) } @@ -138,8 +133,7 @@ async function getRouterCatalogItem (transaction) { name: DBConstants.ROUTER_CATALOG_NAME, category: 'SYSTEM', publisher: 'Eclipse ioFog', - registry_id: 1, - user_id: null + registry_id: 1 }, transaction) } @@ -148,8 +142,7 @@ async function getProxyCatalogItem (transaction) { name: DBConstants.PROXY_CATALOG_NAME, category: 'SYSTEM', publisher: 'Eclipse ioFog', - registry_id: 1, - user_id: null + registry_id: 1 }, transaction) } @@ -158,8 +151,7 @@ async function getPortRouterCatalogItem (transaction) { name: DBConstants.PORT_ROUTER_CATALOG_NAME, category: 'SYSTEM', publisher: 'Eclipse ioFog', - registry_id: 1, - user_id: null + registry_id: 1 }, transaction) } @@ -168,8 +160,7 @@ async function getBluetoothCatalogItem (transaction) { name: 'RESTBlue', category: 'SYSTEM', publisher: 'Eclipse ioFog', - registry_id: 1, - user_id: null + registry_id: 1 }, transaction) } @@ -178,16 +169,15 @@ async function getHalCatalogItem (transaction) { name: 'HAL', category: 'SYSTEM', publisher: 'Eclipse ioFog', - registry_id: 1, - user_id: null + registry_id: 1 }, transaction) } const _checkForDuplicateName = async function (name, item, transaction) { if (name) { const where = item.id - ? { [Op.or]: [{ userId: item.userId }, { userId: null }], name: name, id: { [Op.ne]: item.id } } - : { [Op.or]: [{ userId: item.userId }, { userId: null }], name: name } + ? { [Op.or]: name: name, id: { [Op.ne]: item.id } } + : { [Op.or]: name: name } const result = await CatalogItemManager.findOne(where, transaction) if (result) { @@ -221,8 +211,7 @@ const _createCatalogItem = async function (data, user, transaction) { ramRequired: data.ramRequired, picture: data.picture, isPublic: data.isPublic, - registryId: data.registryId, - userId: user.id + registryId: data.registryId } catalogItem = AppHelper.deleteUndefinedFields(catalogItem) diff --git a/src/services/control-plane.js b/src/services/control-plane.js deleted file mode 100644 index ab0c01417..000000000 --- a/src/services/control-plane.js +++ /dev/null @@ -1 +0,0 @@ -// \ No newline at end of file diff --git a/src/services/controller-service.js b/src/services/controller-service.js index 8b01bdf0b..79fa63aeb 100644 --- a/src/services/controller-service.js +++ b/src/services/controller-service.js @@ -12,7 +12,6 @@ */ const ioFogTypesManager = require('../data/managers/iofog-type-manager') -const Config = require('../config') const TransactionDecorator = require('../decorators/transaction-decorator') const packageJson = require('../../package') const AppHelper = require('../helpers/app-helper') @@ -35,13 +34,6 @@ const getFogTypes = async function (isCLI, transaction) { } } -const emailActivation = async function (isCLI) { - const emailActivation = await Config.get('Email:ActivationEnabled', false) - return { - isEmailActivationEnabled: emailActivation - } -} - const statusController = async function (isCLI) { let status @@ -68,7 +60,6 @@ const getVersion = async function (isCLI) { module.exports = { getFogTypes: TransactionDecorator.generateTransaction(getFogTypes), - emailActivation: emailActivation, statusController: statusController, getVersion: getVersion } diff --git a/src/services/diagnostic-service.js b/src/services/diagnostic-service.js index f16506720..3c5139128 100644 --- a/src/services/diagnostic-service.js +++ b/src/services/diagnostic-service.js @@ -47,7 +47,7 @@ const getMicroserviceStraceData = async function (uuid, data, user, isCLI, trans const microserviceWhere = isCLI ? { uuid: uuid } - : { uuid: uuid, userId: user.id } + : { uuid: uuid } const microservice = await MicroserviceManager.findOne(microserviceWhere, transaction) if (!microservice) { throw new Errors.NotFoundError(AppHelper.formatMessage(ErrorMessages.INVALID_MICROSERVICE_UUID, uuid)) @@ -80,7 +80,7 @@ const postMicroserviceStraceDatatoFtp = async function (uuid, data, user, isCLI, const microserviceWhere = isCLI ? { uuid: uuid } - : { uuid: uuid, userId: user.id } + : { uuid: uuid } const microservice = await MicroserviceManager.findOne(microserviceWhere, transaction) if (!microservice) { throw new Errors.NotFoundError(AppHelper.formatMessage(ErrorMessages.INVALID_MICROSERVICE_UUID, uuid)) @@ -103,12 +103,11 @@ const postMicroserviceStraceDatatoFtp = async function (uuid, data, user, isCLI, const postMicroserviceImageSnapshotCreate = async function (microserviceUuid, user, isCLI, transaction) { const where = isCLI ? { - uuid: microserviceUuid - } + uuid: microserviceUuid + } : { - uuid: microserviceUuid, - userId: user.id - } + uuid: microserviceUuid + } const microservice = await MicroserviceManager.findOneWithDependencies(where, {}, transaction) @@ -130,12 +129,11 @@ const postMicroserviceImageSnapshotCreate = async function (microserviceUuid, us const getMicroserviceImageSnapshot = async function (microserviceUuid, user, isCLI, transaction) { const where = isCLI ? { - uuid: microserviceUuid - } + uuid: microserviceUuid + } : { - uuid: microserviceUuid, - userId: user.id - } + uuid: microserviceUuid + } const microservice = await MicroserviceManager.findOneWithDependencies(where, {}, transaction) if (!microservice) { throw new Errors.NotFoundError(AppHelper.formatMessage(ErrorMessages.INVALID_MICROSERVICE_UUID, microserviceUuid)) diff --git a/src/services/edge-resource-service.js b/src/services/edge-resource-service.js index a7b3a6537..ba231b567 100644 --- a/src/services/edge-resource-service.js +++ b/src/services/edge-resource-service.js @@ -24,13 +24,13 @@ const Validator = require('../schemas') const ChangeTrackingService = require('./change-tracking-service') async function listEdgeResources (user, transaction) { - const edgeResources = await EdgeResourceManager.findAllWithOrchestrationTags({ userId: user.id }, transaction) + const edgeResources = await EdgeResourceManager.findAllWithOrchestrationTags(transaction) return edgeResources.map(buildGetObject) } async function getEdgeResource ({ name, version }, user, transaction) { if (version) { - const resource = await EdgeResourceManager.findOneWithOrchestrationTags({ name, version, userId: user.id }, transaction) + const resource = await EdgeResourceManager.findOneWithOrchestrationTags({ name, version }, transaction) if (!resource) { throw new Errors.NotFoundError(AppHelper.formatMessage(ErrorMessages.NOT_FOUND_RESOURCE_NAME_VERSION, name, version)) } @@ -39,7 +39,7 @@ async function getEdgeResource ({ name, version }, user, transaction) { const result = { ...resource.toJSON(), interface: (intrface || { toJSON: () => {} }).toJSON() } return buildGetObject(result) } else { - const resources = await EdgeResourceManager.findAllWithOrchestrationTags({ name, userId: user.id }, transaction) + const resources = await EdgeResourceManager.findAllWithOrchestrationTags({ name }, transaction) if (!resources.length) { return [] } @@ -158,12 +158,11 @@ async function _updateOrchestrationTags (tagArray, edgeResourceModel, transactio async function createEdgeResource (edgeResourceData, user, transaction) { await Validator.validate(edgeResourceData, Validator.schemas.edgeResourceCreate) const { name, description, version, orchestrationTags, interfaceProtocol, display, custom } = edgeResourceData - const existingResource = await EdgeResourceManager.findOne({ name, version, userId: user.id }, transaction) + const existingResource = await EdgeResourceManager.findOne({ name, version }, transaction) if (existingResource) { throw new Errors.ValidationError(AppHelper.formatMessage(ErrorMessages.DUPLICATE_RESOURCE_NAME_VERSION, name, version)) } const resourceData = { - userId: user.id, name, description, orchestrationTags, @@ -195,7 +194,7 @@ async function createEdgeResource (edgeResourceData, user, transaction) { async function updateEdgeResourceEndpoint (edgeResourceData, { name: oldName, version }, user, transaction) { await Validator.validate(edgeResourceData, Validator.schemas.edgeResourceUpdate) - const oldData = await EdgeResourceManager.findOne({ name: oldName, version, userId: user.id }, transaction) + const oldData = await EdgeResourceManager.findOne({ name: oldName, version }, transaction) if (!oldData) { if (!edgeResourceData.name) { edgeResourceData.name = oldName @@ -210,7 +209,6 @@ async function updateEdgeResourceEndpoint (edgeResourceData, { name: oldName, ve } const { name, description, orchestrationTags, interfaceProtocol, display, custom } = edgeResourceData const newData = { - userId: user.id, name, description, orchestrationTags, @@ -227,7 +225,7 @@ async function updateEdgeResourceEndpoint (edgeResourceData, { name: oldName, ve AppHelper.deleteUndefinedFields(newData) if (newData.name && newData.name !== oldData.name) { const newVersion = newData.version ? newData.version : version - const existingResource = await EdgeResourceManager.findOne({ name, version: newVersion, userId: user.id }, transaction) + const existingResource = await EdgeResourceManager.findOne({ name, version: newVersion }, transaction) if (existingResource) { throw new Errors.DuplicatePropertyError(AppHelper.formatMessage(ErrorMessages.DUPLICATE_RESOURCE_NAME_VERSION, name, newVersion)) } @@ -247,7 +245,7 @@ async function updateEdgeResourceEndpoint (edgeResourceData, { name: oldName, ve } async function deleteEdgeResource ({ name, version }, user, transaction) { - const resource = await EdgeResourceManager.findOne({ name, version, userId: user.id }, transaction) + const resource = await EdgeResourceManager.findOne({ name, version }, transaction) if (!resource) { throw new Errors.NotFoundError(AppHelper.formatMessage(ErrorMessages.NOT_FOUND_RESOURCE_NAME_VERSION, name, version)) } @@ -257,15 +255,15 @@ async function deleteEdgeResource ({ name, version }, user, transaction) { await agent.removeTags(tags) await ChangeTrackingService.update(agent.uuid, ChangeTrackingService.events.edgeResources, transaction) } - await EdgeResourceManager.delete({ name, version, userId: user.id }, transaction) + await EdgeResourceManager.delete({ name, version }, transaction) } async function linkEdgeResource ({ name, version }, uuid, user, transaction) { - const resource = await EdgeResourceManager.findOne({ name, version, userId: user.id }, transaction) + const resource = await EdgeResourceManager.findOne({ name, version }, transaction) if (!resource) { throw new Errors.NotFoundError(AppHelper.formatMessage(ErrorMessages.NOT_FOUND_RESOURCE_NAME_VERSION, name, version)) } - const agent = await FogManager.findOne({ uuid, userId: user.id }, transaction) + const agent = await FogManager.findOne({ uuid }, transaction) if (!agent) { throw new Errors.NotFoundError(AppHelper.formatMessage(ErrorMessages.NOT_FOUND_AGENT_NAME, uuid)) } @@ -277,11 +275,11 @@ async function linkEdgeResource ({ name, version }, uuid, user, transaction) { } async function unlinkEdgeResource ({ name, version }, uuid, user, transaction) { - const resource = await EdgeResourceManager.findOne({ name, version, userId: user.id }, transaction) + const resource = await EdgeResourceManager.findOne({ name, version }, transaction) if (!resource) { throw new Errors.NotFoundError(AppHelper.formatMessage(ErrorMessages.NOT_FOUND_RESOURCE_NAME_VERSION, name, version)) } - const agent = await FogManager.findOne({ uuid, userId: user.id }, transaction) + const agent = await FogManager.findOne({ uuid }, transaction) if (!agent) { throw new Errors.NotFoundError(AppHelper.formatMessage(ErrorMessages.NOT_FOUND_AGENT_NAME, uuid)) } diff --git a/src/services/email-activation-code-service.js b/src/services/email-activation-code-service.js deleted file mode 100644 index d395a0d55..000000000 --- a/src/services/email-activation-code-service.js +++ /dev/null @@ -1,64 +0,0 @@ -/* - * ******************************************************************************* - * * Copyright (c) 2023 Datasance Teknoloji A.S. - * * - * * This program and the accompanying materials are made available under the - * * terms of the Eclipse Public License v. 2.0 which is available at - * * http://www.eclipse.org/legal/epl-2.0 - * * - * * SPDX-License-Identifier: EPL-2.0 - * ******************************************************************************* - * - */ - -const EmailActivationCodeManager = require('../data/managers/email-activation-code-manager') -const AppHelper = require('../helpers/app-helper') -const ErrorMessages = require('../helpers/error-messages') - -const generateActivationCode = async function (transaction) { - while (true) { - const newActivationCode = AppHelper.generateRandomString(16) - const exists = await EmailActivationCodeManager.getByActivationCode(newActivationCode, transaction) - if (!exists) { - const activationCodeExpiryTime = new Date().getTime() + ((60 * 60 * 24 * 3) * 1000) - return { - activationCode: newActivationCode, - expirationTime: activationCodeExpiryTime - } - } - } -} - -const saveActivationCode = async function (userId, activationCodeData, transaction) { - const activationCode = activationCodeData.activationCode - const expirationTime = activationCodeData.expirationTime - - try { - const code = await EmailActivationCodeManager.createActivationCode(userId, activationCode, expirationTime, transaction) - return code - } catch (errMsg) { - throw new Error(ErrorMessages.UNABLE_TO_CREATE_ACTIVATION_CODE) - } -} - -const verifyActivationCode = async function (activationCode, transaction) { - try { - const value = await EmailActivationCodeManager.verifyActivationCode(activationCode, transaction) - return value - } catch (errMsg) { - throw new Error(ErrorMessages.UNABLE_TO_GET_ACTIVATION_CODE) - } -} - -const deleteActivationCode = async function (activationCode, transaction) { - return EmailActivationCodeManager.delete({ - activationCode: activationCode - }, transaction) -} - -module.exports = { - generateActivationCode: generateActivationCode, - saveActivationCode: saveActivationCode, - verifyActivationCode: verifyActivationCode, - deleteActivationCode: deleteActivationCode -} diff --git a/src/services/iofog-service.js b/src/services/iofog-service.js index 74024e42b..06b1fce95 100644 --- a/src/services/iofog-service.js +++ b/src/services/iofog-service.js @@ -11,8 +11,6 @@ * */ -const request = require('request-promise') - const TransactionDecorator = require('../decorators/transaction-decorator') const AppHelper = require('../helpers/app-helper') const FogManager = require('../data/managers/iofog-manager') @@ -29,7 +27,6 @@ const MicroserviceManager = require('../data/managers/microservice-manager') const TagsManager = require('../data/managers/tags-manager') const MicroserviceService = require('./microservices-service') const EdgeResourceService = require('./edge-resource-service') -const config = require('../config') const RouterManager = require('../data/managers/router-manager') const MicroserviceExtraHostManager = require('../data/managers/microservice-extra-host-manager') const RouterConnectionManager = require('../data/managers/router-connection-manager') @@ -68,7 +65,6 @@ async function createFogEndPoint (fogData, user, isCLI, transaction) { dockerPruningFrequency: fogData.dockerPruningFrequency, availableDiskThreshold: fogData.availableDiskThreshold, isSystem: fogData.isSystem, - userId: user.id, host: fogData.host, routerId: null, timeZone: fogData.timeZone @@ -91,11 +87,6 @@ async function createFogEndPoint (fogData, user, isCLI, transaction) { throw new Errors.ValidationError(AppHelper.formatMessage(ErrorMessages.DUPLICATE_NAME, createFogData.name)) } - // Remove user if system fog - if (fogData.isSystem) { - fogData.userId = 0 - } - let defaultRouter, upstreamRouters if (fogData.routerMode === 'none') { const networkRouter = await RouterService.getNetworkRouter(fogData.networkRouter) @@ -118,7 +109,7 @@ async function createFogEndPoint (fogData, user, isCLI, transaction) { throw new Errors.ValidationError(ErrorMessages.HOST_IS_REQUIRED) } - await RouterService.createRouterForFog(fogData, fog.uuid, user.id, upstreamRouters) + await RouterService.createRouterForFog(fogData, fog.uuid, upstreamRouters) } const res = { @@ -137,10 +128,6 @@ async function createFogEndPoint (fogData, user, isCLI, transaction) { await ChangeTrackingService.update(createFogData.uuid, ChangeTrackingService.events.microserviceCommon, transaction) - try { - await informKubelet(fog.uuid, 'POST') - } catch (e) {} - return res } @@ -203,24 +190,14 @@ async function updateFogEndPoint (fogData, user, isCLI, transaction) { await _setTags(oldFog, fogData.tags, transaction) // If using REST API and not system fog. You must be the fog's user to access it - if (!oldFog.isSystem && !isCLI && oldFog.userId !== user.id) { + if (!oldFog.isSystem && !isCLI) { throw new Errors.NotFoundError(AppHelper.formatMessage(ErrorMessages.INVALID_IOFOG_UUID, fogData.uuid)) } - // Set userId if moving fog from system to classic or from classic to system - if (!oldFog.isSystem && updateFogData.isSystem) { - updateFogData.userId = 0 - if (await FogManager.findOne({ isSystem: true }, transaction)) { - throw new Errors.ValidationError(AppHelper.formatMessage(ErrorMessages.DUPLICATE_SYSTEM_FOG)) - } - } else if (updateFogData.isSystem === false) { - updateFogData.userId = user.id - } - if (updateFogData.name) { const conflictQuery = isCLI ? { name: updateFogData.name, uuid: { [Op.not]: fogData.uuid } } - : { name: updateFogData.name, uuid: { [Op.not]: fogData.uuid }, userId: user.id } + : { name: updateFogData.name, uuid: { [Op.not]: fogData.uuid } } const conflict = await FogManager.findOne(conflictQuery, transaction) if (conflict) { throw new Errors.ValidationError(AppHelper.formatMessage(ErrorMessages.DUPLICATE_NAME, updateFogData.name)) @@ -252,19 +229,19 @@ async function updateFogEndPoint (fogData, user, isCLI, transaction) { // Only delete previous router if there is a network router if (router) { // New router mode is none, delete existing router - await _deleteFogRouter(fogData, user.id, transaction) + await _deleteFogRouter(fogData, transaction) } } else { const defaultRouter = await RouterManager.findOne({ isDefault: true }, transaction) const upstreamRouters = await RouterService.validateAndReturnUpstreamRouters(upstreamRoutersIofogUuid, oldFog.isSystem, defaultRouter) if (!router) { // Router does not exist yet - networkRouter = await RouterService.createRouterForFog(fogData, oldFog.uuid, user.id, upstreamRouters) + networkRouter = await RouterService.createRouterForFog(fogData, oldFog.uuid, upstreamRouters) } else { // Update existing router networkRouter = await RouterService.updateRouter(router, { messagingPort, interRouterPort, edgeRouterPort, isEdge: routerMode === 'edge', host - }, upstreamRouters, user.id) + }, upstreamRouters) await ChangeTrackingService.update(fogData.uuid, ChangeTrackingService.events.routerChanged, transaction) } } @@ -333,7 +310,7 @@ async function _updateProxyRouters (fogId, router, transaction) { } } -async function _deleteFogRouter (fogData, userId, transaction) { +async function _deleteFogRouter (fogData, transaction) { const router = await RouterManager.findOne({ iofogUuid: fogData.uuid }, transaction) const defaultRouter = await RouterManager.findOne({ isDefault: true }, transaction) @@ -359,7 +336,7 @@ async function _deleteFogRouter (fogData, userId, transaction) { } // Update router config - await RouterService.updateConfig(router.id, userId, transaction) + await RouterService.updateConfig(router.id, transaction) // Set routerChanged flag await ChangeTrackingService.update(router.iofogUuid, ChangeTrackingService.events.routerChanged, transaction) } @@ -393,17 +370,13 @@ async function deleteFogEndPoint (fogData, user, isCLI, transaction) { } // If using REST API and not system fog. You must be the fog's user to access it - if (!fog.isSystem && !isCLI && fog.userId !== user.id) { + if (!fog.isSystem && !isCLI) { throw new Errors.NotFoundError(AppHelper.formatMessage(ErrorMessages.INVALID_IOFOG_UUID, fogData.uuid)) } - await _deleteFogRouter(fogData, user.id, transaction) + await _deleteFogRouter(fogData, transaction) await _processDeleteCommand(fog, transaction) - - try { - await informKubelet(fog.uuid, 'DELETE') - } catch (e) {} } function _getRouterUuid (router, defaultRouter) { @@ -472,7 +445,7 @@ function _mapTags (fog) { async function getFog (fogData, user, isCLI, transaction) { await Validator.validate(fogData, Validator.schemas.iofogGet) - const queryFogData = fogData.uuid ? { uuid: fogData.uuid } : { name: fogData.name, userId: user.id } + const queryFogData = fogData.uuid ? { uuid: fogData.uuid } : { name: fogData.name } const fog = await FogManager.findOneWithTags(queryFogData, transaction) if (!fog) { @@ -480,7 +453,7 @@ async function getFog (fogData, user, isCLI, transaction) { } // If using REST API and not system fog. You must be the fog's user to access it - if (!fog.isSystem && !isCLI && fog.userId !== user.id) { + if (!fog.isSystem && !isCLI) { throw new Errors.NotFoundError(AppHelper.formatMessage(ErrorMessages.INVALID_IOFOG_UUID, fogData.uuid)) } @@ -499,7 +472,7 @@ async function getFogListEndPoint (filters, user, isCLI, isSystem, transaction) throw new Errors.AuthenticationError('Unauthorized') } - const queryFogData = isSystem ? { isSystem } : (isCLI ? {} : { userId: user.id, isSystem: false }) + const queryFogData = isSystem ? { isSystem } : (isCLI ? {} : { isSystem: false }) let fogs = await FogManager.findAllWithTags(queryFogData, transaction) fogs = _filterFogs(fogs, filters) @@ -529,7 +502,7 @@ async function generateProvisioningKeyEndPoint (fogData, user, isCLI, transactio } // If using REST API and not system fog. You must be the fog's user to access it - if (!fog.isSystem && !isCLI && fog.userId !== user.id) { + if (!fog.isSystem && !isCLI) { throw new Errors.NotFoundError(AppHelper.formatMessage(ErrorMessages.INVALID_IOFOG_UUID, fogData.uuid)) } @@ -557,7 +530,7 @@ async function setFogVersionCommandEndPoint (fogVersionData, user, isCLI, transa } // If using REST API and not system fog. You must be the fog's user to access it - if (!fog.isSystem && !isCLI && fog.userId !== user.id) { + if (!fog.isSystem && !isCLI) { throw new Errors.NotFoundError(AppHelper.formatMessage(ErrorMessages.INVALID_IOFOG_UUID, queryFogData.uuid)) } @@ -584,7 +557,7 @@ async function setFogRebootCommandEndPoint (fogData, user, isCLI, transaction) { } // If using REST API and not system fog. You must be the fog's user to access it - if (!fog.isSystem && !isCLI && fog.userId !== user.id) { + if (!fog.isSystem && !isCLI) { throw new Errors.NotFoundError(AppHelper.formatMessage(ErrorMessages.INVALID_IOFOG_UUID, fogData.uuid)) } @@ -602,7 +575,7 @@ async function getHalHardwareInfoEndPoint (uuidObj, user, isCLI, transaction) { } // If using REST API and not system fog. You must be the fog's user to access it - if (!fog.isSystem && !isCLI && fog.userId !== user.id) { + if (!fog.isSystem && !isCLI) { throw new Errors.NotFoundError(AppHelper.formatMessage(ErrorMessages.INVALID_IOFOG_UUID, uuidObj.uuid)) } @@ -622,7 +595,7 @@ async function getHalUsbInfoEndPoint (uuidObj, user, isCLI, transaction) { } // If using REST API and not system fog. You must be the fog's user to access it - if (!fog.isSystem && !isCLI && fog.userId !== user.id) { + if (!fog.isSystem && !isCLI) { throw new Errors.NotFoundError(AppHelper.formatMessage(ErrorMessages.INVALID_IOFOG_UUID, uuidObj.uuid)) } @@ -678,7 +651,6 @@ async function _createHalMicroserviceForFog (fogData, oldFog, user, transaction) iofogUuid: fogData.uuid, rootHostAccess: true, logSize: Constants.MICROSERVICE_DEFAULT_LOG_SIZE, - userId: oldFog ? oldFog.userId : user.id, configLastUpdated: Date.now() } @@ -706,7 +678,6 @@ async function _createBluetoothMicroserviceForFog (fogData, oldFog, user, transa iofogUuid: fogData.uuid, rootHostAccess: true, logSize: Constants.MICROSERVICE_DEFAULT_LOG_SIZE, - userId: oldFog ? oldFog.userId : user.id, configLastUpdated: Date.now() } @@ -723,19 +694,6 @@ async function _deleteBluetoothMicroserviceByFog (fogData, transaction) { await MicroserviceManager.delete(deleteBluetoothMicroserviceData, transaction) } -const informKubelet = function (iofogUuid, method) { - const kubeletUri = config.get('Kubelet:Uri') - const options = { - uri: kubeletUri + '/node', - qs: { - uuid: iofogUuid - }, - method: method - } - - return request(options) -} - async function setFogPruneCommandEndPoint (fogData, user, isCLI, transaction) { await Validator.validate(fogData, Validator.schemas.iofogPrune) @@ -747,7 +705,7 @@ async function setFogPruneCommandEndPoint (fogData, user, isCLI, transaction) { } // If using REST API and not system fog. You must be the fog's user to access it - if (!fog.isSystem && !isCLI && fog.userId !== user.id) { + if (!fog.isSystem && !isCLI) { throw new Errors.NotFoundError(AppHelper.formatMessage(ErrorMessages.INVALID_IOFOG_UUID, fogData.uuid)) } diff --git a/src/services/kubelet-access-token-service.js b/src/services/kubelet-access-token-service.js deleted file mode 100644 index 0ccc5c379..000000000 --- a/src/services/kubelet-access-token-service.js +++ /dev/null @@ -1,48 +0,0 @@ -/* - * ******************************************************************************* - * * Copyright (c) 2023 Datasance Teknoloji A.S. - * * - * * This program and the accompanying materials are made available under the - * * terms of the Eclipse Public License v. 2.0 which is available at - * * http://www.eclipse.org/legal/epl-2.0 - * * - * * SPDX-License-Identifier: EPL-2.0 - * ******************************************************************************* - * - */ - -const AppHelper = require('../helpers/app-helper') -const KubeletAccessTokenManager = require('../data/managers/kubelet-access-token-manager') - -const Config = require('../config') - -const generateAccessToken = async function (transaction) { - while (true) { - const newAccessToken = AppHelper.generateAccessToken() - const exists = await KubeletAccessTokenManager.findOne({ - token: newAccessToken - }, transaction) - if (!exists) { - const accessTokenExpiryTime = Date.now() + Config.get('Settings:KubeletTokenExpirationIntervalSeconds') * 9999999 - return { - token: newAccessToken, - expirationTime: accessTokenExpiryTime - } - } - } -} - -async function updateAccessToken (userId, newAccessToken, transaction) { - return KubeletAccessTokenManager.updateOrCreate({ - userId: userId - }, { - userId: userId, - token: newAccessToken.token, - expirationTime: newAccessToken.expirationTime - }, transaction) -} - -module.exports = { - generateAccessToken, - updateAccessToken -} diff --git a/src/services/kubelet-service.js b/src/services/kubelet-service.js deleted file mode 100644 index c5afd3072..000000000 --- a/src/services/kubelet-service.js +++ /dev/null @@ -1,432 +0,0 @@ -/* - * ******************************************************************************* - * * Copyright (c) 2023 Datasance Teknoloji A.S. - * * - * * This program and the accompanying materials are made available under the - * * terms of the Eclipse Public License v. 2.0 which is available at - * * http://www.eclipse.org/legal/epl-2.0 - * * - * * SPDX-License-Identifier: EPL-2.0 - * ******************************************************************************* - * - */ - -const moment = require('moment') - -const AppHelper = require('../helpers/app-helper') -const ErrorMessages = require('../helpers/error-messages') -const Errors = require('../helpers/errors') -const ApplicationService = require('./application-service') -const FogManager = require('../data/managers/iofog-manager') -const IOFogService = require('./iofog-service') -const KubeletAccessTokenService = require('./kubelet-access-token-service') -const logger = require('../logger') -const MicroservicesService = require('./microservices-service') -const MicroserviceStatusManager = require('../data/managers/microservice-status-manager') -// const SchedulerAccessTokenService = require('./scheduler-access-token-service') -const TransactionDecorator = require('../decorators/transaction-decorator') - -const NODE_CAPACITY = 100 - -const processPodPayload = function (createPodData, fogNodeUuid) { - const msMetadata = JSON.parse(createPodData.metadata.annotations.microservices) - const applicationDescription = { - metadata: createPodData, - node: fogNodeUuid - } - - const applicationData = { - name: createPodData.metadata.name, - isActivated: true, - description: Buffer.from(JSON.stringify(applicationDescription)).toString('base64') - } - - const microservices = microservicesTopologicalOrder(msMetadata) - - return { - applicationData, - microservices - } -} - -const kubeletCreatePod = async function (createPodData, fogNodeUuid, user, transaction) { - const podPayload = processPodPayload(createPodData, fogNodeUuid) - const { applicationData, microservices } = podPayload - - const applications = await ApplicationService.getAllApplicationsEndPoint(false, transaction) - let application = applications.applications.find((application) => application.name === applicationData.name) - if (!application) { - application = await ApplicationService.createApplicationEndPoint(applicationData, user, false, transaction) - } - - const existingMicroservices = await MicroservicesService.listMicroservicesEndPoint(application.id, user, false, transaction) - - const microservicesIds = [] - for (const ms of microservices) { - const name = `${applicationData.name}-${ms.name}` - const existingMicroservice = existingMicroservices.microservices.find((it) => it.name === name) - if (existingMicroservice) { - microservicesIds.push(existingMicroservice.uuid) - continue - } - - ms.routes = ms.routes || [] - ms.routes = ms.routes.map((route) => { - if (!route.startsWith('@')) { - return route - } - const routeId = route.substr(1) * 1 - const idx = microservices.findIndex((it) => it.originalIndex === routeId) - return microservicesIds[idx] - }) - - const microserviceData = { - name: name, - config: ms.config, - catalogItemId: ms['catalog-item-id'], - applicationId: application.id, - iofogUuid: fogNodeUuid, - rootHostAccess: ms['host-access'], - volumeMappings: ms['volume-mappings'] || [], - ports: ms.ports || [], - routes: ms.routes || [] - } - if (ms.env && ms.env.length > 0) { - microserviceData.env = ms.env - } - if (ms.cmd && ms.cmd.length > 0) { - microserviceData.cmd = ms.cmd - } - - const microservice = await MicroservicesService.createMicroserviceEndPoint(microserviceData, user, false, transaction) - microservicesIds.push(microservice.uuid) - } -} - -const kubeletUpdatePod = async function (uploadPodData, fogNodeUuid, user, transaction) { - // Not supported yet. - // const podPayload = processPodPayload(uploadPodData, fogNodeUuid) - // const { applicationData, microservices } = podPayload - - // const applications = await ApplicationService.getAllApplicationsEndPoint(false, transaction) - // const application = applications.applications.find((application) => application.name === applicationData.name) - // if (!application) { - // throw new Errors.NotFoundError(AppHelper.formatMessage(ErrorMessages.INVALID_FLOW_ID, applicationData.name)) - // } - - // const existingMicroservices = await MicroservicesService.listMicroservicesEndPoint(application.id, user, false, transaction) - // const msDup = [].concat(microservices) - // const toDelete = [] - // existingMicroservices.forEach((ms) => { - // const name = `${applicationData.name}-${ms.name}` - // const idx = msDup.findIndex((it) => it.name === name) - - // if (!idx) { - // toDelete.push(ms) - // } else { - // toUpdate.push(msDup[idx]) - // msDup = msDup.splice(idx, 1) - // } - // }) - - // msDup.map((ms) => { - // const name = `${applicationData.name}-${ms.name}` - - // const microserviceData = { - // name: name, - // config: ms.config, - // catalogItemId: ms['catalog-item-id'], - // applicationId: application.id, - // iofogUuid: fogNodeUuid, - // rootHostAccess: ms['host-access'], - // volumeMappings: ms['volume-mappings'] || [], - // ports: ms.ports || [], - // routes: ms.routes || [] - // } - // if (ms.env && ms.env.length > 0) { - // microserviceData.env = ms.env - // } - // if (ms.cmd && ms.cmd.length > 0) { - // microserviceData.cmd = ms.cmd - // } - - // return microserviceData - // }) -} - -const kubeletDeletePod = async function (podData, fogNodeUuid, user, transaction) { - const applicationName = podData.metadata.name - - const applications = await ApplicationService.getAllApplicationsEndPoint(false, transaction) - const application = applications.applications.find((application) => application.name === applicationName) - if (!application) { - throw new Errors.NotFoundError(AppHelper.formatMessage(ErrorMessages.INVALID_IOFOG_UUID, fogNodeUuid)) - } - - const existingMicroservices = await MicroservicesService.listMicroservicesEndPoint(application.id, user, false, transaction) - existingMicroservices.microservices.forEach(async (ms) => { - await MicroservicesService.deleteMicroserviceEndPoint(ms.uuid, { withCleanup: true }, user, false, transaction) - }) - - await ApplicationService.deleteApplicationEndPoint(application.id, user, false, transaction) -} - -const kubeletGetPod = async function (namespace, name, fogNodeUuid, user, transaction) { - const application = await ApplicationService.getApplicationByName(name, user, false, transaction) - - return JSON.parse(Buffer.from(application.description, 'base64').toString('utf8')).metadata -} - -const kubeletGetContainerLogs = async function (namespace, podName, containerName, tail, fogNodeUuid, user, transaction) { - // Not supported yet -} - -const kubeletGetPodStatus = async function (namespace, name, fogNodeUuid, user, transaction) { - const fog = await FogManager.findOne({ uuid: fogNodeUuid }, transaction) - const changeFrequency = (fog && fog.changeFrequency) || 60 - - const application = await ApplicationService.getApplicationByName(name, user, false, transaction) - const microservices = await MicroservicesService.listMicroservicesEndPoint(application.id, user, false, transaction) - const pod = JSON.parse(Buffer.from(application.description, 'base64').toString('utf8')).metadata - - for (const ms of microservices.microservices) { - const status = await MicroserviceStatusManager.findOne({ microserviceUuid: ms.uuid }, transaction) - ms.status = status.dataValues - ms.status.alive = moment().diff(moment(ms.status.updated_at), 'seconds') <= (changeFrequency * 2) - } - - const phase = microservices.microservices.every((ms) => ms.status.status === 'RUNNING') ? 'Running' : 'Pending' - const alive = microservices.microservices.every((ms) => ms.status.alive) - const status = { - phase: phase, - startTime: (alive && phase === 'Running') ? moment(microservices.microservices[0].startTime).utc().toISOString() : null, - conditions: [ - { - Type: 'PodInitialized', - Status: 'True' - }, - { - Type: 'PodReady', - Status: (alive && phase === 'Running') ? 'True' : 'False' - }, - { - Type: 'PodScheduled', - Status: 'True' - } - ], - containerStatuses: [] - } - - status.containerStatuses = pod.spec.containers.map((c) => { - const microservice = microservices.microservices.find((ms) => ms.name === `${name}-${c.name}`) - - const containerState = {} - if (microservice.status.status === 'RUNNING') { - containerState.running = { startedAt: moment(microservice.status.startTime).utc().toISOString() } - } else { - containerState.waiting = { reason: microservice.status.status } - } - - return { - name: c.name, - imageID: microservice.uuid, - ready: alive && microservice.status.status === 'RUNNING', - restartCount: 0, - state: containerState, - containerId: microservice.status.containerId - } - }) - - return status -} - -const kubeletGetPods = async function (fogNodeUuid, user, transaction) { - const applications = await ApplicationService.getAllApplicationsEndPoint(false, transaction) - const pods = applications.applications - .reduce((prev, application) => { - try { - const podsInfo = JSON.parse(Buffer.from(application.description, 'base64').toString('utf8')) - if (podsInfo.node === fogNodeUuid) { - prev = prev.concat(podsInfo.metadata) - } - } catch (err) { - logger.error(err) - } - - return prev - }, []) - - return pods -} - -const kubeletGetCapacity = async function (fogNodeUuid, user, transaction) { - const node = await IOFogService.getFogEndPoint({ uuid: fogNodeUuid }, user, false, transaction) - - return { - cpu: node.cpuLimit, - memory: `${(node.memoryLimit).toFixed(0)}Mi`, - pods: `${NODE_CAPACITY}` - } -} - -const kubeletGetAllocatable = async function (fogNodeUuid, user, transaction) { - const node = await IOFogService.getFogEndPoint({ uuid: fogNodeUuid }, user, false, transaction) - - const pods = await kubeletGetPods(fogNodeUuid, user, transaction) - const allocatablePods = NODE_CAPACITY - (pods || []).length - - return { - cpu: node.cpuLimit - node.cpuUsage, - memory: `${(node.memoryLimit - node.memoryUsage).toFixed(0)}Mi`, - pods: allocatablePods < 0 ? 0 : allocatablePods - } -} - -const kubeletGetNodeConditions = async function (fogNodeUuid, user, transaction) { - const node = await IOFogService.getFogEndPoint({ uuid: fogNodeUuid }, user, false, transaction) - const now = moment().utc().toISOString() - const lastStatusTime = node.lastStatusTime ? moment(node.lastStatusTime).utc().toISOString() : null - return [ - { - type: 'Ready', - status: node.daemonStatus === 'RUNNING' ? 'True' : 'False', - lastHeartbeatTime: lastStatusTime, - lastTransitionTime: now, - reason: '', - message: node.daemonStatus - }, - { - type: 'OutOfDisk', - status: node.diskUsage >= node.diskLimit ? 'True' : 'False', - lastHeartbeatTime: lastStatusTime, - lastTransitionTime: now, - reason: '', - message: `Usage: ${node.diskUsage}, Limit: ${node.diskLimit}` - }, - { - type: 'MemoryPressure', - status: (node.memoryUsage / node.memoryLimit) >= 0.9 ? 'True' : 'False', - lastHeartbeatTime: lastStatusTime, - lastTransitionTime: now, - reason: '', - message: `Usage: ${node.memoryUsage}, Limit: ${node.memoryLimit}` - }, - { - type: 'DiskPressure', - status: (node.diskUsage / node.diskLimit) >= 0.9 ? 'True' : 'False', - lastHeartbeatTime: lastStatusTime, - lastTransitionTime: now, - reason: '', - message: `Usage: ${node.diskUsage}, Limit: ${node.diskLimit}` - }, - { - type: 'NetworkUnavailable', - status: 'False', - lastHeartbeatTime: lastStatusTime, - lastTransitionTime: now, - reason: '', - message: '' - } - ] -} - -const kubeletGetNodeAddresses = async function (fogNodeUuid, user, transaction) { - const node = await IOFogService.getFogEndPoint({ uuid: fogNodeUuid }, user, false, transaction) - return [ - { - type: 'InternalIP', - address: node.ipAddress ? node.ipAddress : '0.0.0.0' - }, - { - type: 'ExternalIP', - address: node.ipAddressExternal ? node.ipAddressExternal : '0.0.0.0' - } - ] -} - -const kubeletGetVkToken = async function (userId, transaction) { - const newAccessToken = await KubeletAccessTokenService.generateAccessToken(transaction) - await KubeletAccessTokenService.updateAccessToken(userId, newAccessToken, transaction) - - return { - userId: userId, - token: newAccessToken.token - } -} - -const kubeletGetSchedulerToken = async function (transaction) { - // Not implemented yet. - userId is undefined - // const newAccessToken = await SchedulerAccessTokenService.generateAccessToken(transaction) - // await SchedulerAccessTokenService.updateAccessToken(userId, newAccessToken, transaction) - - // return { - // userId: userId, - // token: newAccessToken.token - // } -} - -const microservicesTopologicalOrder = function (msMetadata) { - const microservices = [] - const graph = [] - msMetadata.forEach((ms, i) => { - graph[i] = { - edges: [] - } - - if (!ms.routes) { - return - } - - ms.routes.forEach((route) => { - if (route.startsWith('@')) { - graph[i].edges.push(route.substr(1)) - } - }) - }) - - const stack = msMetadata.reduce((prev, ms, i) => { - if (graph[i].edges.length === 0) { - return prev.concat(i) - } - - return prev - }, []) - - while (stack.length > 0) { - const n = stack.pop() - microservices.push(n) - graph.forEach((node, i) => { - if (!node.edges.length) { - return - } - - node.edges = node.edges.filter((e) => `${e}` !== `${n}`) - if (!node.edges.length) { - stack.push(i) - } - }) - } - - const hasCircuit = !!graph.filter((node) => !!node.edges.length).length - if (hasCircuit) { - throw new Error('Circular dependency!!!') - } - - return microservices.map((idx) => Object.assign({ originalIndex: idx }, msMetadata[idx])) -} - -module.exports = { - kubeletCreatePod: TransactionDecorator.generateTransaction(kubeletCreatePod), - kubeletUpdatePod: TransactionDecorator.generateTransaction(kubeletUpdatePod), - kubeletDeletePod: TransactionDecorator.generateTransaction(kubeletDeletePod), - kubeletGetPod: TransactionDecorator.generateTransaction(kubeletGetPod), - kubeletGetContainerLogs: TransactionDecorator.generateTransaction(kubeletGetContainerLogs), - kubeletGetPodStatus: TransactionDecorator.generateTransaction(kubeletGetPodStatus), - kubeletGetPods: TransactionDecorator.generateTransaction(kubeletGetPods), - kubeletGetCapacity: TransactionDecorator.generateTransaction(kubeletGetCapacity), - kubeletGetAllocatable: TransactionDecorator.generateTransaction(kubeletGetAllocatable), - kubeletGetNodeConditions: TransactionDecorator.generateTransaction(kubeletGetNodeConditions), - kubeletGetNodeAddresses: TransactionDecorator.generateTransaction(kubeletGetNodeAddresses), - kubeletGetVkToken: TransactionDecorator.generateTransaction(kubeletGetVkToken), - kubeletGetSchedulerToken: TransactionDecorator.generateTransaction(kubeletGetSchedulerToken) -} diff --git a/src/services/microservice-ports/default.js b/src/services/microservice-ports/default.js index b511a60cc..8ca6ac690 100644 --- a/src/services/microservice-ports/default.js +++ b/src/services/microservice-ports/default.js @@ -255,13 +255,12 @@ async function _createOrUpdateProxyMicroservice (mapping, networkRouter, hostUui name: 'Proxy', config: JSON.stringify({ mappings: [mapping], - networkRouter: networkRouter + networkRouter }), catalogItemId: proxyCatalogId, iofogUuid: hostUuid, rootHostAccess: true, - registryId: 1, - userId: user.id + registryId: 1 } const res = await MicroserviceManager.create(proxyMicroserviceData, transaction) await ChangeTrackingService.update(hostUuid, ChangeTrackingService.events.microserviceCommon, transaction) @@ -284,13 +283,15 @@ async function _createPublicPortMapping (microservice, portMappingData, user, tr const localMapping = `amqp:${queueName}=>${isTcp ? 'tcp' : 'http'}:${portMappingData.external}` const remoteMapping = `${isTcp ? 'tcp' : 'http'}:${portMappingData.publicPort}=>amqp:${queueName}` - const localProxy = !portMappingData.public.disabled ? await _createOrUpdateProxyMicroservice( - localMapping, - localNetworkRouter, - microservice.iofogUuid, - proxyCatalog.id, - user, - transaction) : null + const localProxy = !portMappingData.public.disabled + ? await _createOrUpdateProxyMicroservice( + localMapping, + localNetworkRouter, + microservice.iofogUuid, + proxyCatalog.id, + user, + transaction) + : null let remoteProxy if (portMappingData.publicHost) { @@ -300,13 +301,15 @@ async function _createPublicPortMapping (microservice, portMappingData, user, tr port: hostRouter.messagingPort } - remoteProxy = !portMappingData.public.disabled ? await _createOrUpdateProxyMicroservice( - remoteMapping, - remoteNetworkRouter, - portMappingData.publicHost.uuid, - proxyCatalog.id, - user, - transaction) : null + remoteProxy = !portMappingData.public.disabled + ? await _createOrUpdateProxyMicroservice( + remoteMapping, + remoteNetworkRouter, + portMappingData.publicHost.uuid, + proxyCatalog.id, + user, + transaction) + : null } const mappingData = { @@ -315,7 +318,6 @@ async function _createPublicPortMapping (microservice, portMappingData, user, tr portInternal: portMappingData.internal, portExternal: portMappingData.external, isUdp, - userId: microservice.userId, microserviceUuid: microservice.uuid } const port = await MicroservicePortManager.create(mappingData, transaction) @@ -391,7 +393,6 @@ async function _createSimplePortMapping (microservice, portMappingData, user, tr isProxy: false, portInternal: portMappingData.internal, portExternal: portMappingData.external, - userId: microservice.userId, isUdp: portMappingData.protocol.toLowerCase() === 'udp', microserviceUuid: microservice.uuid } @@ -451,7 +452,7 @@ async function buildPublicPortMapping (pm, mapping, transaction) { enabled: !!publicPortMapping.localProxyId } mapping.public.router = { - port: port, + port, host: hostFog.isSystem ? DEFAULT_ROUTER_NAME : hostFog.uuid } } @@ -472,20 +473,20 @@ async function switchOnUpdateFlagsForMicroservicesForPortMapping (microservice, async function listPortMappings (microserviceUuid, user, isCLI, transaction) { const where = isCLI ? { uuid: microserviceUuid } - : { uuid: microserviceUuid, userId: user.id } + : { uuid: microserviceUuid } const microservice = await MicroserviceManager.findOne(where, transaction) if (!microservice) { throw new Errors.NotFoundError(AppHelper.formatMessage(ErrorMessages.INVALID_MICROSERVICE_UUID, microserviceUuid)) } - const portsPairs = await MicroservicePortManager.findAll({ microserviceUuid: microserviceUuid }, transaction) + const portsPairs = await MicroservicePortManager.findAll({ microserviceUuid }, transaction) return _buildPortsList(portsPairs, transaction) } async function deletePortMapping (microserviceUuid, internalPort, user, isCLI, transaction) { const where = isCLI ? { uuid: microserviceUuid } - : { uuid: microserviceUuid, userId: user.id } + : { uuid: microserviceUuid } const microservice = await MicroserviceManager.findOne(where, transaction) if (!microservice) { @@ -515,7 +516,7 @@ async function deletePortMappings (microservice, user, transaction) { } async function getPortMappings (microserviceUuid, transaction) { - return MicroservicePortManager.findAll({ microserviceUuid: microserviceUuid }, transaction) + return MicroservicePortManager.findAll({ microserviceUuid }, transaction) } function listAllPublicPorts (user, transaction) { @@ -523,16 +524,16 @@ function listAllPublicPorts (user, transaction) { } module.exports = { - validatePublicPortAppHostTemplate: validatePublicPortAppHostTemplate, - validatePortMappings: validatePortMappings, - validatePortMapping: validatePortMapping, - movePublicPortsToNewFog: movePublicPortsToNewFog, - switchOnUpdateFlagsForMicroservicesForPortMapping: switchOnUpdateFlagsForMicroservicesForPortMapping, - createPortMapping: createPortMapping, - buildPublicPortMapping: buildPublicPortMapping, - listPortMappings: listPortMappings, - deletePortMapping: deletePortMapping, - deletePortMappings: deletePortMappings, - getPortMappings: getPortMappings, - listAllPublicPorts: listAllPublicPorts + validatePublicPortAppHostTemplate, + validatePortMappings, + validatePortMapping, + movePublicPortsToNewFog, + switchOnUpdateFlagsForMicroservicesForPortMapping, + createPortMapping, + buildPublicPortMapping, + listPortMappings, + deletePortMapping, + deletePortMappings, + getPortMappings, + listAllPublicPorts } diff --git a/src/services/microservice-ports/proxy.js b/src/services/microservice-ports/proxy.js index 76e3342be..0a7e2dab2 100644 --- a/src/services/microservice-ports/proxy.js +++ b/src/services/microservice-ports/proxy.js @@ -52,8 +52,7 @@ async function _createOrUpdatePortRouterMicroservice (existingProxy, localPort, catalogItemId: portRouterCatalogId, iofogUuid: hostUuid, rootHostAccess: true, - registryId: 1, - userId: user.id + registryId: 1 } const res = await MicroserviceManager.create(proxyMicroserviceData, transaction) await ChangeTrackingService.update(hostUuid, ChangeTrackingService.events.microserviceCommon, transaction) @@ -92,7 +91,6 @@ async function createProxyPortMapping (microservice, portMappingData, user, tran portInternal: portMappingData.internal, portExternal: portMappingData.external, isUdp: protocol === 'udp', - userId: microservice.userId, microserviceUuid: microservice.uuid } const port = await MicroservicePortManager.create(mappingData, transaction) diff --git a/src/services/microservices-service.js b/src/services/microservices-service.js index f8bb4a579..ec65e00d8 100644 --- a/src/services/microservices-service.js +++ b/src/services/microservices-service.js @@ -48,9 +48,7 @@ async function listMicroservicesEndPoint (opt, user, isCLI, transaction) { } const where = application ? { applicationId: application.id, delete: false } : { delete: false, applicationId: { [Op.ne]: null } } - if (!isCLI) { - where.userId = user.id - } + const microservices = await MicroserviceManager.findAllExcludeFields(where, transaction) const res = await Promise.all(microservices.map(async (microservice) => { @@ -64,7 +62,7 @@ async function listMicroservicesEndPoint (opt, user, isCLI, transaction) { async function getMicroserviceEndPoint (microserviceUuid, user, isCLI, transaction) { if (!isCLI) { - await _validateMicroserviceOnGet(user.id, microserviceUuid, transaction) + await _validateMicroserviceOnGet(microserviceUuid, transaction) } const microservice = await MicroserviceManager.findOneExcludeFields({ @@ -113,11 +111,11 @@ async function _validateLocalAppHostTemplate (extraHost, templateArgs, msvc, tra return extraHost } -async function _validateAppHostTemplate (extraHost, templateArgs, userId, transaction) { +async function _validateAppHostTemplate (extraHost, templateArgs, transaction) { if (templateArgs.length < 4) { throw new Errors.ValidationError(AppHelper.formatMessage(ErrorMessages.INVALID_HOST_TEMPLATE, templateArgs.join('.'))) } - const application = await ApplicationManager.findOne({ name: templateArgs[1], userId }, transaction) + const application = await ApplicationManager.findOne({ name: templateArgs[1] }, transaction) if (!application) { throw new Errors.ValidationError(AppHelper.formatMessage(ErrorMessages.NOT_FOUND_HOST_TEMPLATE, templateArgs[1])) } @@ -136,13 +134,13 @@ async function _validateAppHostTemplate (extraHost, templateArgs, userId, transa throw new Errors.ValidationError(AppHelper.formatMessage(ErrorMessages.INVALID_HOST_TEMPLATE, templateArgs.join('.'))) } -async function _validateAgentHostTemplate (extraHost, templateArgs, userId, transaction) { +async function _validateAgentHostTemplate (extraHost, templateArgs, transaction) { if (templateArgs.length !== 2) { throw new Errors.ValidationError(AppHelper.formatMessage(ErrorMessages.INVALID_HOST_TEMPLATE, templateArgs.join('.'))) } extraHost.templateType = 'Agents' - const fog = await FogManager.findOne({ name: templateArgs[1], userId }, transaction) + const fog = await FogManager.findOne({ name: templateArgs[1] }, transaction) if (!fog) { throw new Errors.ValidationError(AppHelper.formatMessage(ErrorMessages.NOT_FOUND_HOST_TEMPLATE, templateArgs[1])) } @@ -166,9 +164,9 @@ async function _validateExtraHost (extraHostData, user, transaction) { const templateArgs = template.split('.') extraHost.templateType = templateArgs[0] if (templateArgs[0] === 'Apps') { - return _validateAppHostTemplate(extraHost, templateArgs, user.id, transaction) + return _validateAppHostTemplate(extraHost, templateArgs, transaction) } else if (templateArgs[0] === 'Agents') { - return _validateAgentHostTemplate(extraHost, templateArgs, user.id, transaction) + return _validateAgentHostTemplate(extraHost, templateArgs, transaction) } throw new Errors.ValidationError(AppHelper.formatMessage(ErrorMessages.INVALID_HOST_TEMPLATE, template)) } @@ -202,9 +200,6 @@ async function _findFog (microserviceData, user, isCLI, transaction) { if (microserviceData.iofogUuid) { fogConditions.uuid = microserviceData.iofogUuid } else { - if (!isCLI) { - fogConditions.userId = user.id - } fogConditions.name = microserviceData.agentName } return FogManager.findOne(fogConditions, transaction) @@ -356,12 +351,11 @@ async function updateMicroserviceEndPoint (microserviceUuid, microserviceData, u let needStatusReset = false const query = isCLI ? { - uuid: microserviceUuid - } + uuid: microserviceUuid + } : { - uuid: microserviceUuid, - userId: user.id - } + uuid: microserviceUuid + } // validate extraHosts const extraHosts = microserviceData.extraHosts ? await _validateExtraHosts(microserviceData, user, transaction) : null @@ -461,8 +455,7 @@ async function updateMicroserviceEndPoint (microserviceUuid, microserviceData, u } if (microserviceDataUpdate.name) { - const userId = isCLI ? microservice.userId : user.id - await _checkForDuplicateName(microserviceDataUpdate.name, { id: microserviceUuid }, userId, microservice.applicationId || microservice.application, transaction) + await _checkForDuplicateName(microserviceDataUpdate.name, { id: microserviceUuid }, microservice.applicationId || microservice.application, transaction) } // validate fog node @@ -571,12 +564,11 @@ const _checkIfMicroserviceImagesAreEqual = (microserviceDataUpdateImages, catalo async function deleteMicroserviceEndPoint (microserviceUuid, microserviceData, user, isCLI, transaction) { const where = isCLI ? { - uuid: microserviceUuid - } + uuid: microserviceUuid + } : { - uuid: microserviceUuid, - userId: user.id - } + uuid: microserviceUuid + } const microservice = await MicroserviceManager.findOneWithStatusAndCategory(where, transaction) if (!microservice) { @@ -640,7 +632,7 @@ async function createPortMappingEndPoint (microserviceUuid, portMappingData, use const where = isCLI ? { uuid: microserviceUuid } - : { uuid: microserviceUuid, userId: user.id } + : { uuid: microserviceUuid } const microservice = await MicroserviceManager.findOne(where, transaction) if (!microservice) { @@ -673,7 +665,6 @@ async function _createEnv (microservice, envData, user, transaction) { const msEnvData = { key: envData.key, value: envData.value, - userId: microservice.userId, microserviceUuid: microservice.uuid } @@ -720,7 +711,7 @@ async function createVolumeMappingEndPoint (microserviceUuid, volumeMappingData, const where = isCLI ? { uuid: microserviceUuid } - : { uuid: microserviceUuid, userId: user.id } + : { uuid: microserviceUuid } const microservice = await MicroserviceManager.findOne(where, transaction) if (!microservice) { @@ -755,7 +746,7 @@ async function createVolumeMappingEndPoint (microserviceUuid, volumeMappingData, async function deleteVolumeMappingEndPoint (microserviceUuid, volumeMappingUuid, user, isCLI, transaction) { const where = isCLI ? { uuid: microserviceUuid } - : { uuid: microserviceUuid, userId: user.id } + : { uuid: microserviceUuid } const microservice = await MicroserviceManager.findOne(where, transaction) if (!microservice) { @@ -776,7 +767,7 @@ async function deleteVolumeMappingEndPoint (microserviceUuid, volumeMappingUuid, async function listVolumeMappingsEndPoint (microserviceUuid, user, isCLI, transaction) { const where = isCLI ? { uuid: microserviceUuid } - : { uuid: microserviceUuid, userId: user.id } + : { uuid: microserviceUuid } const microservice = await MicroserviceManager.findOne(where, transaction) if (!microservice) { throw new Errors.NotFoundError(AppHelper.formatMessage(ErrorMessages.INVALID_MICROSERVICE_UUID, microserviceUuid)) @@ -809,8 +800,7 @@ async function _createMicroservice (microserviceData, user, isCLI, transaction) iofogUuid: microserviceData.iofogUuid, rootHostAccess: microserviceData.rootHostAccess, registryId: microserviceData.registryId || 1, - logSize: (microserviceData.logSize || constants.MICROSERVICE_DEFAULT_LOG_SIZE) * 1, - userId: user.id + logSize: (microserviceData.logSize || constants.MICROSERVICE_DEFAULT_LOG_SIZE) * 1 } newMicroservice = AppHelper.deleteUndefinedFields(newMicroservice) @@ -826,7 +816,7 @@ async function _createMicroservice (microserviceData, user, isCLI, transaction) const application = await _validateApplication(microserviceData.application, user, isCLI, transaction) newMicroservice.applicationId = application.id - await _checkForDuplicateName(newMicroservice.name, {}, user.id, newMicroservice.applicationId, transaction) + await _checkForDuplicateName(newMicroservice.name, {}, newMicroservice.applicationId, transaction) // validate fog node if (newMicroservice.iofogUuid) { @@ -847,14 +837,14 @@ async function _validateApplication (name, user, isCLI, transaction) { // Force name conversion to string for PG const where = isCLI ? { name: name.toString() } - : { name: name.toString(), userId: user.id } + : { name: name.toString() } const application = await ApplicationManager.findOne(where, transaction) if (!application) { // Try with id const where = isCLI ? { id: name } - : { id: name, userId: user.id } + : { id: name } const application = await ApplicationManager.findOne(where, transaction) if (!application) { @@ -979,22 +969,20 @@ async function _updateChangeTracking (configUpdated, fogNodeUuid, transaction) { } } -async function _checkForDuplicateName (name, item, userId, applicationId, transaction) { +async function _checkForDuplicateName (name, item, applicationId, transaction) { if (name) { const where = item.id ? { - name: name, - uuid: { [Op.ne]: item.id }, - delete: false, - userId: userId, - applicationId - } + name: name, + uuid: { [Op.ne]: item.id }, + delete: false, + applicationId + } : { - name: name, - userId: userId, - applicationId, - delete: false - } + name: name, + applicationId, + delete: false + } const result = await MicroserviceManager.findOne(where, transaction) if (result) { @@ -1003,9 +991,8 @@ async function _checkForDuplicateName (name, item, userId, applicationId, transa } } -async function _validateMicroserviceOnGet (userId, microserviceUuid, transaction) { +async function _validateMicroserviceOnGet (microserviceUuid, transaction) { const where = { - '$application.user.id$': userId, 'uuid': microserviceUuid } const microservice = await MicroserviceManager.findMicroserviceOnGet(where, transaction) @@ -1037,15 +1024,12 @@ async function _getLogicalRoutesByMicroservice (microserviceUuid, transaction) { } async function deleteMicroserviceWithRoutesAndPortMappings (microservice, transaction) { - const user = { - id: microservice.userId - } const routes = await _getLogicalRoutesByMicroservice(microservice.uuid, transaction) for (const route of routes) { - await RoutingService.deleteRouting(route.application.name, route.name, user, false, transaction) + await RoutingService.deleteRouting(route.application.name, route.name, false, transaction) } - await MicroservicePortService.deletePortMappings(microservice, user, transaction) + await MicroservicePortService.deletePortMappings(microservice, transaction) await MicroserviceManager.delete({ uuid: microservice.uuid diff --git a/src/services/registry-service.js b/src/services/registry-service.js index 912075c42..5025c0b70 100644 --- a/src/services/registry-service.js +++ b/src/services/registry-service.js @@ -35,8 +35,7 @@ const createRegistry = async function (registry, user, transaction) { isPublic: registry.isPublic, userEmail: registry.email, requiresCert: registry.requiresCert, - certificate: registry.certificate, - userId: user.id + certificate: registry.certificate } registryCreate = AppHelper.deleteUndefinedFields(registryCreate) @@ -54,16 +53,13 @@ const findRegistries = async function (user, isCLI, transaction) { const queryRegistry = isCLI ? {} : { - [Op.or]: + [Op.or]: [ - { - userId: user.id - }, { isPublic: true } ] - } + } const registries = await RegistryManager.findAllWithAttributes(queryRegistry, { exclude: ['password'] }, transaction) return { @@ -75,14 +71,11 @@ const deleteRegistry = async function (registryData, user, isCLI, transaction) { await Validator.validate(registryData, Validator.schemas.registryDelete) const queryData = isCLI ? { id: registryData.id } - : { id: registryData.id, userId: user.id } + : { id: registryData.id } const registry = await RegistryManager.findOne(queryData, transaction) if (!registry) { throw new Errors.NotFoundError(AppHelper.formatMessage(ErrorMessages.INVALID_REGISTRY_ID, registryData.id)) } - if (isCLI) { - user = { id: registry.userId } - } await RegistryManager.delete(queryData, transaction) await _updateChangeTracking(user, transaction) } @@ -116,24 +109,19 @@ const updateRegistry = async function (registry, registryId, user, isCLI, transa const where = isCLI ? { - id: registryId - } + id: registryId + } : { - id: registryId, - userId: user.id - } + id: registryId + } await RegistryManager.update(where, registryUpdate, transaction) - if (isCLI) { - user = { id: existingRegistry.userId } - } - await _updateChangeTracking(user, transaction) } const _updateChangeTracking = async function (user, transaction) { - const fogs = await FogManager.findAll({ userId: user.id }, transaction) + const fogs = await FogManager.findAll(transaction) for (const fog of fogs) { await ChangeTrackingService.update(fog.uuid, ChangeTrackingService.events.registries, transaction) } diff --git a/src/services/router-service.js b/src/services/router-service.js index fc332bfc0..8c8dbdc52 100644 --- a/src/services/router-service.js +++ b/src/services/router-service.js @@ -51,7 +51,7 @@ async function validateAndReturnUpstreamRouters (upstreamRouterIds, isSystemFog, return upstreamRouters } -async function createRouterForFog (fogData, uuid, userId, upstreamRouters, transaction) { +async function createRouterForFog (fogData, uuid, upstreamRouters, transaction) { const isEdge = fogData.routerMode === 'edge' const messagingPort = fogData.messagingPort || 5672 // Is default router if we are on a system fog and no other default router already exists @@ -75,17 +75,17 @@ async function createRouterForFog (fogData, uuid, userId, upstreamRouters, trans microserviceConfig.connectors = (microserviceConfig.connectors || []).concat(_getRouterConnectorConfig(isEdge, upstreamRouter)) } - const routerMicroservice = await _createRouterMicroservice(isEdge, uuid, userId, microserviceConfig, transaction) - await _createRouterPorts(routerMicroservice.uuid, messagingPort, userId, transaction) + const routerMicroservice = await _createRouterMicroservice(isEdge, uuid, microserviceConfig, transaction) + await _createRouterPorts(routerMicroservice.uuid, messagingPort, transaction) if (!isEdge) { - await _createRouterPorts(routerMicroservice.uuid, fogData.edgeRouterPort, userId, transaction) - await _createRouterPorts(routerMicroservice.uuid, fogData.interRouterPort, userId, transaction) + await _createRouterPorts(routerMicroservice.uuid, fogData.edgeRouterPort, transaction) + await _createRouterPorts(routerMicroservice.uuid, fogData.interRouterPort, transaction) } return router } -async function updateRouter (oldRouter, newRouterData, upstreamRouters, userId, transaction) { +async function updateRouter (oldRouter, newRouterData, upstreamRouters, transaction) { const routerCatalog = await CatalogService.getRouterCatalogItem(transaction) const routerMicroservice = await MicroserviceManager.findOne({ catalogItemId: routerCatalog.id, @@ -107,8 +107,8 @@ async function updateRouter (oldRouter, newRouterData, upstreamRouters, userId, } else if (!newRouterData.isEdge && oldRouter.isEdge) { // Moving from edge to internal // Nothing specific to update - await _createRouterPorts(routerMicroservice.uuid, newRouterData.edgeRouterPort, userId, transaction) - await _createRouterPorts(routerMicroservice.uuid, newRouterData.interRouterPort, userId, transaction) + await _createRouterPorts(routerMicroservice.uuid, newRouterData.edgeRouterPort, transaction) + await _createRouterPorts(routerMicroservice.uuid, newRouterData.interRouterPort, transaction) } newRouterData.messagingPort = newRouterData.messagingPort || 5672 await RouterManager.update({ id: oldRouter.id }, newRouterData, transaction) @@ -135,7 +135,7 @@ async function updateRouter (oldRouter, newRouterData, upstreamRouters, userId, } // Update config if needed - await updateConfig(oldRouter.id, userId, transaction) + await updateConfig(oldRouter.id, transaction) await ChangeTrackingService.update(oldRouter.iofogUuid, ChangeTrackingService.events.routerChanged, transaction) await ChangeTrackingService.update(oldRouter.iofogUuid, ChangeTrackingService.events.microserviceList, transaction) await ChangeTrackingService.update(oldRouter.iofogUuid, ChangeTrackingService.events.microserviceConfig, transaction) @@ -153,7 +153,7 @@ async function _deleteRouterPorts (routerMicroserviceUuid, port, transaction) { await MicroservicePortManager.delete({ microserviceUuid: routerMicroserviceUuid, portInternal: port }, transaction) } -async function updateConfig (routerID, userId, transaction) { +async function updateConfig (routerID, transaction) { const router = await RouterManager.findOne({ id: routerID }, transaction) if (!router) { throw new Errors.NotFoundError(AppHelper.formatMessage(ErrorMessages.INVALID_ROUTER, routerID)) @@ -179,10 +179,10 @@ async function updateConfig (routerID, userId, transaction) { if (_listenersChanged(JSON.parse(routerMicroservice.config || '{}').listeners, microserviceConfig.listeners)) { MicroservicePortManager.delete({ microserviceUuid: routerMicroservice.uuid }, transaction) - await _createRouterPorts(routerMicroservice.uuid, router.messagingPort, userId, transaction) + await _createRouterPorts(routerMicroservice.uuid, router.messagingPort, transaction) if (!router.isEdge) { - await _createRouterPorts(routerMicroservice.uuid, router.edgeRouterPort, userId, transaction) - await _createRouterPorts(routerMicroservice.uuid, router.interRouterPort, userId, transaction) + await _createRouterPorts(routerMicroservice.uuid, router.edgeRouterPort, transaction) + await _createRouterPorts(routerMicroservice.uuid, router.interRouterPort, transaction) } await MicroserviceManager.update({ uuid: routerMicroservice.uuid }, { rebuild: true }, transaction) await ChangeTrackingService.update(router.iofogUuid, ChangeTrackingService.events.microserviceList, transaction) @@ -206,19 +206,18 @@ function _listenersChanged (currentListeners, newListeners) { return false } -function _createRouterPorts (routerMicroserviceUuid, port, userId, transaction) { +function _createRouterPorts (routerMicroserviceUuid, port, transaction) { const mappingData = { isPublic: false, portInternal: port, portExternal: port, - userId: userId, microserviceUuid: routerMicroserviceUuid } return MicroservicePortManager.create(mappingData, transaction) } -async function _createRouterMicroservice (isEdge, uuid, userId, microserviceConfig, transaction) { +async function _createRouterMicroservice (isEdge, uuid, microserviceConfig, transaction) { const routerCatalog = await CatalogService.getRouterCatalogItem(transaction) const routerMicroserviceData = { uuid: AppHelper.generateRandomString(32), @@ -228,7 +227,6 @@ async function _createRouterMicroservice (isEdge, uuid, userId, microserviceConf iofogUuid: uuid, rootHostAccess: false, logSize: constants.MICROSERVICE_DEFAULT_LOG_SIZE, - userId, configLastUpdated: Date.now() } return MicroserviceManager.create(routerMicroserviceData, transaction) diff --git a/src/services/routing-service.js b/src/services/routing-service.js index 96bbd69fa..b3737ba90 100644 --- a/src/services/routing-service.js +++ b/src/services/routing-service.js @@ -70,7 +70,7 @@ async function _validateRouteMsvc (routingData, user, isCLI, transaction) { } return { sourceMicroservice, destMicroservice } } else { - const applicationWhere = isCLI ? { name: routingData.application } : { name: routingData.application, userId: user.id } + const applicationWhere = isCLI ? { name: routingData.application } : { name: routingData.application } const application = await ApplicationManager.findOne(applicationWhere, transaction) if (!application) { throw new Errors.NotFoundError(AppHelper.formatMessage(ErrorMessages.INVALID_FLOW_ID, routingData.application)) diff --git a/src/services/scheduler-access-token-service.js b/src/services/scheduler-access-token-service.js deleted file mode 100644 index d40fb2f0f..000000000 --- a/src/services/scheduler-access-token-service.js +++ /dev/null @@ -1,48 +0,0 @@ -/* - * ******************************************************************************* - * * Copyright (c) 2023 Datasance Teknoloji A.S. - * * - * * This program and the accompanying materials are made available under the - * * terms of the Eclipse Public License v. 2.0 which is available at - * * http://www.eclipse.org/legal/epl-2.0 - * * - * * SPDX-License-Identifier: EPL-2.0 - * ******************************************************************************* - * - */ - -const AppHelper = require('../helpers/app-helper') -const SchedulerAccessTokenManager = require('../data/managers/scheduler-access-token-manager') - -const Config = require('../config') - -const generateAccessToken = async function (transaction) { - while (true) { - const newAccessToken = AppHelper.generateAccessToken() - const exists = await SchedulerAccessTokenManager.findOne({ - token: newAccessToken - }, transaction) - if (!exists) { - const accessTokenExpiryTime = Date.now() + Config.get('Settings:SchedulerTokenExpirationIntervalSeconds') * 99999 - return { - token: newAccessToken, - expirationTime: accessTokenExpiryTime - } - } - } -} - -async function updateAccessToken (userId, newAccessToken, transaction) { - return SchedulerAccessTokenManager.updateOrCreate({ - userId: userId - }, { - userId: userId, - token: newAccessToken.token, - expirationTime: newAccessToken.expirationTime - }, transaction) -} - -module.exports = { - generateAccessToken, - updateAccessToken -} diff --git a/src/services/user-service.js b/src/services/user-service.js index f500ea9a0..42dd2b082 100644 --- a/src/services/user-service.js +++ b/src/services/user-service.js @@ -11,387 +11,46 @@ * */ -const nodemailer = require('nodemailer') -const smtpTransport = require('nodemailer-smtp-transport') -const UserManager = require('../data/managers/user-manager') -const AppHelper = require('../helpers/app-helper') const Errors = require('../helpers/errors') -const ErrorMessages = require('../helpers/error-messages') -const Config = require('../config') -const ioFogManager = require('../data/managers/iofog-manager') -const FogStates = require('../enums/fog-state') -const emailActivationTemplate = require('../views/email-activation-temp') -const emailRecoveryTemplate = require('../views/email-temp') -const emailResetTemplate = require('../views/reset-password-temp') -const EmailActivationCodeService = require('./email-activation-code-service') -const AccessTokenService = require('./access-token-service') - const TransactionDecorator = require('../decorators/transaction-decorator') -const Validator = require('../schemas') - -const signUp = async function (user, isCLI, transaction) { - const isEmailActivationEnabled = Config.get('Email:ActivationEnabled') - - if (isEmailActivationEnabled) { - const newUser = await _handleCreateUser(user, isEmailActivationEnabled, transaction) - - const activationCodeData = await EmailActivationCodeService.generateActivationCode(transaction) - await EmailActivationCodeService.saveActivationCode(newUser.id, activationCodeData, transaction) - - const emailData = await _getEmailData() - const transporter = await _userEmailSender(emailData) - await _notifyUserAboutActivationCode(user.email, Config.get('Email:HomeUrl'), emailData, activationCodeData, transporter) - return newUser - } else { - return _handleCreateUser(user, isEmailActivationEnabled, transaction) - } -} +const axios = require('axios') +const qs = require('qs') const login = async function (credentials, isCLI, transaction) { - const user = await UserManager.findOne({ - email: credentials.email - }, transaction) - if (!user) { - throw new Errors.InvalidCredentialsError() - } - - const pass = AppHelper.decryptText(user.password, user.email) - if (isCLI) { - credentials.password = AppHelper.decryptText(credentials.password, credentials.email) - } - - const validPassword = credentials.password === pass || credentials.password === user.tempPassword - if (!validPassword) { - throw new Errors.InvalidCredentialsError() - } - - _verifyEmailActivation(user.emailActivated) - - const accessToken = await _generateAccessToken(transaction) - accessToken.userId = user.id - - await AccessTokenService.createAccessToken(accessToken, transaction) - - return { - accessToken: accessToken.token - } -} - -const resendActivation = async function (emailObj, isCLI, transaction) { - await Validator.validate(emailObj, Validator.schemas.resendActivation) - - const user = await UserManager.findOne({ - email: emailObj.email - }, transaction) - if (!user) { - throw new Errors.ValidationError(ErrorMessages.INVALID_USER_EMAIL) - } - - const activationCodeData = await EmailActivationCodeService.generateActivationCode(transaction) - await EmailActivationCodeService.saveActivationCode(user.id, activationCodeData, transaction) - - const emailData = await _getEmailData() - const transporter = await _userEmailSender(emailData) - await _notifyUserAboutActivationCode(user.email, Config.get('Email:HomeUrl'), emailData, activationCodeData, transporter) -} - -const activateUser = async function (codeData, isCLI, transaction) { - const updatedObj = { - emailActivated: true - } - - if (isCLI) { - const user = await UserManager.findOne({ - id: codeData.userId - }, transaction) - - if (user.emailActivated === true) { - throw new Error(ErrorMessages.USER_ALREADY_ACTIVATED) - } - - await _updateUser(codeData.userId, updatedObj, transaction) - } else { - await Validator.validate(codeData, Validator.schemas.activateUser) - - const activationCode = await EmailActivationCodeService.verifyActivationCode(codeData.activationCode, transaction) - if (!activationCode) { - throw new Errors.NotFoundError(ErrorMessages.ACTIVATION_CODE_NOT_FOUND) - } - - await _updateUser(activationCode.userId, updatedObj, transaction) - - await EmailActivationCodeService.deleteActivationCode(codeData.activationCode, transaction) - } -} - -const logout = async function (user, isCLI, transaction) { - return AccessTokenService.removeAccessTokenByUserId(user.id, transaction) -} - -const updateUserDetails = async function (user, profileData, isCLI, transaction) { - if (isCLI) { - await Validator.validate(profileData, Validator.schemas.updateUserProfileCLI) - } else { - await Validator.validate(profileData, Validator.schemas.updateUserProfile) - } - - const password = (profileData.password) ? AppHelper.encryptText(profileData.password, user.email) : undefined - - let updateObject = isCLI - ? { - firstName: profileData.firstName, - lastName: profileData.lastName, - password: password, - subscriptionKey: profileData.subscriptionKey - } - : { - firstName: profileData.firstName, - lastName: profileData.lastName, - subscriptionKey: profileData.subscriptionKey - } - - updateObject = AppHelper.deleteUndefinedFields(updateObject) - - await UserManager.updateDetails(user, updateObject, transaction) - - return { - firstName: updateObject.firstName, - lastName: updateObject.lastName, - email: user.email, - subscriptionKey: profileData.subscriptionKey - } -} - -const deleteUser = async function (force, user, isCLI, transaction) { - if (!force) { - const ioFogArray = await ioFogManager.findAll({ - userId: user.id - }, transaction) - - if (ioFogArray) { - for (const ioFog of ioFogArray) { - if (ioFog.daemonStatus === FogStates.RUNNING) { - throw new Errors.ValidationError(ErrorMessages.NEEDED_FORCE_DELETE_USER) - } - } - } - } - - await UserManager.delete({ - id: user.id - }, transaction) -} - -const updateUserPassword = async function (passwordUpdates, user, isCLI, transaction) { - const pass = AppHelper.decryptText(user.password, user.email) - - if (pass !== passwordUpdates.oldPassword && user.tempPassword !== passwordUpdates.oldPassword) { - throw new Errors.ValidationError(ErrorMessages.INVALID_OLD_PASSWORD) - } - const newPass = AppHelper.encryptText(passwordUpdates.newPassword, user.email) - - await UserManager.updatePassword(user.id, newPass, transaction) - await AccessTokenService.removeAccessTokenByUserId(user.id, transaction) - - try { - const emailData = await _getEmailData() - const transporter = await _userEmailSender(emailData) - - await _notifyUserAboutPasswordChange(user, emailData, transporter) - } catch (e) { - console.error(e) - } -} - -const resetUserPassword = async function (emailObj, isCLI, transaction) { - await Validator.validate(emailObj, Validator.schemas.resetUserPassword) - - const user = await UserManager.findOne({ - email: emailObj.email - }, transaction) - if (!user) { - throw new Errors.NotFoundError(ErrorMessages.ACCOUNT_NOT_FOUND) - } - - const tempPass = AppHelper.generateRandomString(2) + 'uL7' - const tempDbPass = AppHelper.encryptText(tempPass, user.email) - await UserManager.updateTempPassword(user.id, tempDbPass, transaction) - - const emailData = await _getEmailData() - const transporter = await _userEmailSender(emailData) - await _notifyUserAboutPasswordReset(user, Config.get('Email:HomeUrl'), emailData, tempPass, transporter) -} - -const list = async function (isCLI, transaction) { - return UserManager.findAllWithAttributes({}, { exclude: ['password'] }, transaction) -} - -const suspendUser = async function (user, isCLI, transaction) { - if (user.emailActivated === false) { - throw new Error(ErrorMessages.USER_NOT_ACTIVATED_YET) - } - - const updatedObj = { - emailActivated: false - } - - await AccessTokenService.removeAccessTokenByUserId(user.id, transaction) - - return _updateUser(user.id, updatedObj, transaction) -} - -async function _updateUser (userId, updatedUser, transaction) { try { - return UserManager.update({ - id: userId - }, updatedUser, transaction) - } catch (errMsg) { - throw new Error(ErrorMessages.USER_NOT_UPDATED) - } -} - -async function _generateAccessToken (transaction) { - while (true) { - const newAccessToken = AppHelper.generateAccessToken() - const exists = await UserManager.findByAccessToken(newAccessToken, transaction) - if (!exists) { - const tokenExpiryTime = new Date().getTime() + (Config.get('Settings:UserTokenExpirationIntervalSeconds') * 1000) - - return { - token: newAccessToken, - expirationTime: tokenExpiryTime - } + const data = qs.stringify({ + grant_type: 'password', + username: credentials.email, + password: credentials.password, + client_id: process.env.KC_CLIENT, + client_secret: process.env.KC_CLIENT_SECRET + }) + + const config = { + method: 'post', + maxBodyLength: Infinity, + url: `${process.env.KC_URL}/realms/${process.env.KC_REALM}/protocol/openid-connect/token`, + headers: { + 'Cache-Control': 'no-cache', + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data: data } - } -} - -function _verifyEmailActivation (emailActivated) { - const isEmailActivationEnabled = Config.get('Email:ActivationEnabled') - if (isEmailActivationEnabled && !emailActivated) { - throw new Error(ErrorMessages.EMAIL_NOT_ACTIVATED) - } -} -async function _userEmailSender (emailData) { - let transporter - if (emailData.service) { - transporter = nodemailer.createTransport(smtpTransport({ - service: emailData.service, - auth: { - user: emailData.email, - pass: emailData.password - } - })) - } else { - transporter = nodemailer.createTransport(smtpTransport({ - host: emailData.host, - port: emailData.port, - auth: { - user: emailData.email, - pass: emailData.password - } - })) - } - - return transporter -} - -async function _handleCreateUser (user, isEmailActivationEnabled, transaction) { - const existingUser = await UserManager.findOne({ - email: user.email - }, transaction) - - if (existingUser) { - throw new Errors.ValidationError('Registration failed: There is already an account associated with your email address. ' + - 'Please try logging in instead.') - } - - const newUser = await _createNewUser(user, isEmailActivationEnabled, transaction) - return { - userId: newUser.id, - firstName: newUser.firstName, - lastName: newUser.lastName, - email: newUser.email, - subscriptionKey: newUser.subscriptionKey, - emailActivated: user.emailActivated - } -} - -async function _createNewUser (user, isEmailActivationEnabled, transaction) { - user.emailActivated = !isEmailActivationEnabled - return UserManager.create(user, transaction) -} - -async function _notifyUserAboutActivationCode (email, url, emailSenderData, activationCodeData, transporter) { - const mailOptions = { - from: '"IOFOG" <' + emailSenderData.email + '>', - to: email, - subject: 'Activate Your Account', - html: emailActivationTemplate.p1 + url + emailActivationTemplate.p2 + activationCodeData.activationCode + - emailActivationTemplate.p3 + url + emailActivationTemplate.p4 + activationCodeData.activationCode + - emailActivationTemplate.p5 + url + emailActivationTemplate.p6 + activationCodeData.activationCode + emailActivationTemplate.p7 - } - - await _sendEmail(transporter, mailOptions) -} - -async function _notifyUserAboutPasswordChange (user, emailSenderData, transporter) { - const mailOptions = { - from: '"IOFOG" <' + emailSenderData.email + '>', - to: user.email, - subject: 'Password Change Notification', - html: emailRecoveryTemplate.p1 + user.firstName + ' ' + user.lastName + emailRecoveryTemplate.p2 - } - - await _sendEmail(transporter, mailOptions) -} - -async function _notifyUserAboutPasswordReset (user, url, emailSenderData, tempPass, transporter) { - const mailOptions = { - from: '"IOFOG" <' + emailSenderData.email + '>', - to: user.email, - subject: 'Password Reset Request', - html: emailResetTemplate.p1 + user.firstName + ' ' + user.lastName + emailResetTemplate.p2 + tempPass + emailResetTemplate.p3 + - url + emailResetTemplate.p4 - } - - await _sendEmail(transporter, mailOptions) -} - -async function _sendEmail (transporter, mailOptions) { - try { - await transporter.sendMail(mailOptions) - } catch (errMsg) { - throw new Error(ErrorMessages.EMAIL_SENDER_NOT_CONFIGURED) - } -} - -async function _getEmailData () { - try { - const email = Config.get('Email:Address') - const password = AppHelper.decryptText(Config.get('Email:Password'), Config.get('Email:Address')) - const service = Config.get('Email:Service') + // Make a POST request to Keycloak token endpoint + const response = await axios.request(config) + // Extract the access token from the response + const accessToken = response.data.access_token return { - email: email, - password: password, - service: service + accessToken: accessToken } - } catch (errMsg) { - throw new Errors.EmailActivationSetupError() + } catch (error) { + console.error('Error during login:', error) + throw new Errors.InvalidCredentialsError() } } module.exports = { - signUp: TransactionDecorator.generateTransaction(signUp), - login: TransactionDecorator.generateTransaction(login), - resendActivation: TransactionDecorator.generateTransaction(resendActivation), - activateUser: TransactionDecorator.generateTransaction(activateUser), - logout: TransactionDecorator.generateTransaction(logout), - updateUserDetails: TransactionDecorator.generateTransaction(updateUserDetails), - deleteUser: TransactionDecorator.generateTransaction(deleteUser), - updateUserPassword: TransactionDecorator.generateTransaction(updateUserPassword), - resetUserPassword: TransactionDecorator.generateTransaction(resetUserPassword), - list: TransactionDecorator.generateTransaction(list), - suspendUser: TransactionDecorator.generateTransaction(suspendUser) + login: TransactionDecorator.generateTransaction(login) } From 1b124d0c6bafe50b1a9d74ca40c1067a7b1ad688 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Mon, 18 Mar 2024 00:49:59 +0300 Subject: [PATCH 055/146] authdecorator removed --- src/cli/application.js | 10 +--------- src/cli/catalog.js | 9 +-------- src/cli/controller.js | 9 +-------- src/cli/diagnostics.js | 9 +-------- src/cli/index.js | 1 - src/cli/iofog.js | 9 +-------- src/cli/microservice.js | 9 +-------- src/cli/registry.js | 9 +-------- src/cli/tunnel.js | 9 +-------- 9 files changed, 8 insertions(+), 66 deletions(-) diff --git a/src/cli/application.js b/src/cli/application.js index 6dc99594a..db8ae7901 100644 --- a/src/cli/application.js +++ b/src/cli/application.js @@ -13,12 +13,10 @@ const BaseCLIHandler = require('./base-cli-handler') const constants = require('../helpers/constants') -const AuthDecorator = require('../decorators/cli-decorator') const ApplicationService = require('../services/application-service') const AppHelper = require('../helpers/app-helper') const logger = require('../logger') const fs = require('fs') -const CliDataTypes = require('./cli-data-types') const JSON_SCHEMA = AppHelper.stringifyCliJsonSchema({ name: 'string', @@ -131,13 +129,7 @@ class Application extends BaseCLIHandler { const _executeCase = async function (applicationCommand, commandName, f, isUserRequired) { try { const item = applicationCommand[commandName] - - if (isUserRequired) { - const decoratedFunction = AuthDecorator.prepareUserById(f) - await decoratedFunction(item) - } else { - await f(item) - } + await f(item) } catch (error) { logger.error(error.message) } diff --git a/src/cli/catalog.js b/src/cli/catalog.js index a9a5a60db..c4df259ec 100644 --- a/src/cli/catalog.js +++ b/src/cli/catalog.js @@ -17,7 +17,6 @@ const logger = require('../logger') const CatalogItemService = require('../services/catalog-service') const fs = require('fs') const AppHelper = require('../helpers/app-helper') -const AuthDecorator = require('../decorators/cli-decorator') const Errors = require('../helpers/errors') const ErrorMessages = require('../helpers/error-messages') const CliDataTypes = require('./cli-data-types') @@ -252,13 +251,7 @@ class Catalog extends BaseCLIHandler { const _executeCase = async function (catalogCommand, commandName, f, isUserRequired) { try { const item = catalogCommand[commandName] - - if (isUserRequired) { - const decoratedFunction = AuthDecorator.prepareUserById(f) - await decoratedFunction(item) - } else { - await f(item) - } + await f(item) } catch (error) { logger.error(error.message) } diff --git a/src/cli/controller.js b/src/cli/controller.js index dc3327cb6..c02fece71 100644 --- a/src/cli/controller.js +++ b/src/cli/controller.js @@ -15,7 +15,6 @@ const BaseCLIHandler = require('./base-cli-handler') const constants = require('../helpers/constants') const ControllerService = require('../services/controller-service') const logger = require('../logger') -const AuthDecorator = require('../decorators/cli-decorator') class Controller extends BaseCLIHandler { constructor () { @@ -69,13 +68,7 @@ class Controller extends BaseCLIHandler { const _executeCase = async function (userCommand, commandName, f, isUserRequired) { try { const item = userCommand[commandName] - - if (isUserRequired) { - const decoratedFunction = AuthDecorator.prepareUserByEmail(f) - await decoratedFunction(item) - } else { - await f(item) - } + await f(item) } catch (error) { logger.error(error.message) } diff --git a/src/cli/diagnostics.js b/src/cli/diagnostics.js index 586ee838f..ab716cb4b 100644 --- a/src/cli/diagnostics.js +++ b/src/cli/diagnostics.js @@ -16,7 +16,6 @@ const constants = require('../helpers/constants') const logger = require('../logger') const DiagnosticService = require('../services/diagnostic-service') const AppHelper = require('../helpers/app-helper') -const AuthDecorator = require('../decorators/cli-decorator') const CliDataTypes = require('./cli-data-types') class Diagnostics extends BaseCLIHandler { @@ -141,13 +140,7 @@ class Diagnostics extends BaseCLIHandler { const _executeCase = async function (diagnosticCommand, commandName, f, isUserRequired) { try { const item = diagnosticCommand[commandName] - - if (isUserRequired) { - const decoratedFunction = AuthDecorator.prepareUserById(f) - await decoratedFunction(item) - } else { - await f(item) - } + await f(item) } catch (error) { logger.error(error.message) } diff --git a/src/cli/index.js b/src/cli/index.js index 8b8aba684..1e1847e7a 100644 --- a/src/cli/index.js +++ b/src/cli/index.js @@ -13,7 +13,6 @@ const BaseCLIHandler = require('./base-cli-handler') const Start = require('./start') -const User = require('./user') const Config = require('./config') const Tunnel = require('./tunnel') const IOFog = require('./iofog') diff --git a/src/cli/iofog.js b/src/cli/iofog.js index 26790ad46..8ac4d0081 100644 --- a/src/cli/iofog.js +++ b/src/cli/iofog.js @@ -15,7 +15,6 @@ const BaseCLIHandler = require('./base-cli-handler') const constants = require('../helpers/constants') const logger = require('../logger') const fs = require('fs') -const CliDecorator = require('../decorators/cli-decorator') const AppHelper = require('../helpers/app-helper') const FogService = require('../services/iofog-service') const CliDataTypes = require('./cli-data-types') @@ -358,13 +357,7 @@ class IOFog extends BaseCLIHandler { async function _executeCase (commands, commandName, f, isUserRequired) { try { const obj = commands[commandName] - - if (isUserRequired) { - const decoratedFunction = CliDecorator.prepareUserById(f) - await decoratedFunction(obj) - } else { - await f(obj) - } + await f(obj) } catch (error) { logger.error(error.message) } diff --git a/src/cli/microservice.js b/src/cli/microservice.js index 2f0e3baa4..cce7264f5 100644 --- a/src/cli/microservice.js +++ b/src/cli/microservice.js @@ -18,7 +18,6 @@ const logger = require('../logger') const MicroserviceService = require('../services/microservices-service') const fs = require('fs') const AppHelper = require('../helpers/app-helper') -const CliDecorator = require('../decorators/cli-decorator') const CliDataTypes = require('./cli-data-types') const JSON_SCHEMA_ADD = AppHelper.stringifyCliJsonSchema( @@ -433,13 +432,7 @@ class Microservice extends BaseCLIHandler { async function _executeCase (commands, commandName, f, isUserRequired) { try { const obj = commands[commandName] - - if (isUserRequired) { - const decoratedFunction = CliDecorator.prepareUserById(f) - await decoratedFunction(obj) - } else { - await f(obj) - } + await f(obj) } catch (error) { logger.error(error.message) } diff --git a/src/cli/registry.js b/src/cli/registry.js index 00791fe2a..4afae2bf2 100644 --- a/src/cli/registry.js +++ b/src/cli/registry.js @@ -14,7 +14,6 @@ const BaseCLIHandler = require('./base-cli-handler') const constants = require('../helpers/constants') const logger = require('../logger') -const CliDecorator = require('../decorators/cli-decorator') const RegistryService = require('../services/registry-service') const AppHelper = require('../helpers/app-helper') const CliDataTypes = require('./cli-data-types') @@ -172,13 +171,7 @@ async function _updateRegistry (obj) { async function _executeCase (commands, commandName, f, isUserRequired) { try { const obj = commands[commandName] - - if (isUserRequired) { - const decoratedFunction = CliDecorator.prepareUserById(f) - await decoratedFunction(obj) - } else { - await f(obj) - } + await f(obj) } catch (error) { logger.error(error.message) } diff --git a/src/cli/tunnel.js b/src/cli/tunnel.js index 5592e5364..287b391ec 100644 --- a/src/cli/tunnel.js +++ b/src/cli/tunnel.js @@ -16,7 +16,6 @@ const constants = require('../helpers/constants') const fs = require('fs') const logger = require('../logger') const TunnelService = require('../services/tunnel-service') -const CliDecorator = require('../decorators/cli-decorator') const Errors = require('../helpers/errors') const ErrorMessages = require('../helpers/error-messages') const CliDataTypes = require('./cli-data-types') @@ -147,13 +146,7 @@ async function _tunnelList () { async function _executeCase (commands, commandName, f, isUserRequired) { try { const obj = commands[commandName] - - if (isUserRequired) { - const decoratedFunction = CliDecorator.prepareUserById(f) - await decoratedFunction(obj) - } else { - await f(obj) - } + await f(obj) } catch (error) { logger.error(error.message) } From fb672f0eff93bc1c916260dbf459a9fb9989c942 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Mon, 18 Mar 2024 01:08:48 +0300 Subject: [PATCH 056/146] indentations fixied --- src/cli/index.js | 2 -- src/decorators/authorization-decorator.js | 1 - src/services/catalog-service.js | 4 +-- src/services/diagnostic-service.js | 16 +++++------ src/services/microservices-service.js | 34 +++++++++++------------ src/services/registry-service.js | 12 ++++---- 6 files changed, 33 insertions(+), 36 deletions(-) diff --git a/src/cli/index.js b/src/cli/index.js index 1e1847e7a..56961ddb9 100644 --- a/src/cli/index.js +++ b/src/cli/index.js @@ -64,8 +64,6 @@ class Cli extends BaseCLIHandler { return case constants.CMD_CONTROLLER: return Controller.run({ argv }) - case constants.CMD_USER: - return User.run({ argv }) case constants.CMD_CONFIG: return Config.run({ argv }) case constants.CMD_TUNNEL: diff --git a/src/decorators/authorization-decorator.js b/src/decorators/authorization-decorator.js index eb409964d..9883feddc 100644 --- a/src/decorators/authorization-decorator.js +++ b/src/decorators/authorization-decorator.js @@ -50,6 +50,5 @@ function checkFogToken (f) { } module.exports = { - checkAuthToken: checkAuthToken, checkFogToken: checkFogToken } diff --git a/src/services/catalog-service.js b/src/services/catalog-service.js index baaf027eb..9b7a07a77 100644 --- a/src/services/catalog-service.js +++ b/src/services/catalog-service.js @@ -176,8 +176,8 @@ async function getHalCatalogItem (transaction) { const _checkForDuplicateName = async function (name, item, transaction) { if (name) { const where = item.id - ? { [Op.or]: name: name, id: { [Op.ne]: item.id } } - : { [Op.or]: name: name } + ? { name: name, id: { [Op.ne]: item.id } } + : { name: name } const result = await CatalogItemManager.findOne(where, transaction) if (result) { diff --git a/src/services/diagnostic-service.js b/src/services/diagnostic-service.js index 3c5139128..0b8502a12 100644 --- a/src/services/diagnostic-service.js +++ b/src/services/diagnostic-service.js @@ -103,11 +103,11 @@ const postMicroserviceStraceDatatoFtp = async function (uuid, data, user, isCLI, const postMicroserviceImageSnapshotCreate = async function (microserviceUuid, user, isCLI, transaction) { const where = isCLI ? { - uuid: microserviceUuid - } + uuid: microserviceUuid + } : { - uuid: microserviceUuid - } + uuid: microserviceUuid + } const microservice = await MicroserviceManager.findOneWithDependencies(where, {}, transaction) @@ -129,11 +129,11 @@ const postMicroserviceImageSnapshotCreate = async function (microserviceUuid, us const getMicroserviceImageSnapshot = async function (microserviceUuid, user, isCLI, transaction) { const where = isCLI ? { - uuid: microserviceUuid - } + uuid: microserviceUuid + } : { - uuid: microserviceUuid - } + uuid: microserviceUuid + } const microservice = await MicroserviceManager.findOneWithDependencies(where, {}, transaction) if (!microservice) { throw new Errors.NotFoundError(AppHelper.formatMessage(ErrorMessages.INVALID_MICROSERVICE_UUID, microserviceUuid)) diff --git a/src/services/microservices-service.js b/src/services/microservices-service.js index ec65e00d8..4c90f7185 100644 --- a/src/services/microservices-service.js +++ b/src/services/microservices-service.js @@ -351,11 +351,11 @@ async function updateMicroserviceEndPoint (microserviceUuid, microserviceData, u let needStatusReset = false const query = isCLI ? { - uuid: microserviceUuid - } + uuid: microserviceUuid + } : { - uuid: microserviceUuid - } + uuid: microserviceUuid + } // validate extraHosts const extraHosts = microserviceData.extraHosts ? await _validateExtraHosts(microserviceData, user, transaction) : null @@ -564,11 +564,11 @@ const _checkIfMicroserviceImagesAreEqual = (microserviceDataUpdateImages, catalo async function deleteMicroserviceEndPoint (microserviceUuid, microserviceData, user, isCLI, transaction) { const where = isCLI ? { - uuid: microserviceUuid - } + uuid: microserviceUuid + } : { - uuid: microserviceUuid - } + uuid: microserviceUuid + } const microservice = await MicroserviceManager.findOneWithStatusAndCategory(where, transaction) if (!microservice) { @@ -973,16 +973,16 @@ async function _checkForDuplicateName (name, item, applicationId, transaction) { if (name) { const where = item.id ? { - name: name, - uuid: { [Op.ne]: item.id }, - delete: false, - applicationId - } + name: name, + uuid: { [Op.ne]: item.id }, + delete: false, + applicationId + } : { - name: name, - applicationId, - delete: false - } + name: name, + applicationId, + delete: false + } const result = await MicroserviceManager.findOne(where, transaction) if (result) { diff --git a/src/services/registry-service.js b/src/services/registry-service.js index 5025c0b70..b5220cb99 100644 --- a/src/services/registry-service.js +++ b/src/services/registry-service.js @@ -53,13 +53,13 @@ const findRegistries = async function (user, isCLI, transaction) { const queryRegistry = isCLI ? {} : { - [Op.or]: + [Op.or]: [ { isPublic: true } ] - } + } const registries = await RegistryManager.findAllWithAttributes(queryRegistry, { exclude: ['password'] }, transaction) return { @@ -109,11 +109,11 @@ const updateRegistry = async function (registry, registryId, user, isCLI, transa const where = isCLI ? { - id: registryId - } + id: registryId + } : { - id: registryId - } + id: registryId + } await RegistryManager.update(where, registryUpdate, transaction) From c33a68e90372a02e788d3f7b17854973fa880cbd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Mon, 18 Mar 2024 12:30:27 +0300 Subject: [PATCH 057/146] builtin auth decorator for users removed --- docs/swagger.yaml | 4 +-- package.json | 2 ++ src/controllers/application-controller.js | 23 +++++++------ .../application-template-controller.js | 17 +++++----- src/controllers/catalog-controller.js | 11 +++---- src/controllers/config-controller.js | 7 ++-- src/controllers/diagnostic-controller.js | 11 +++---- src/controllers/edge-resource-controller.js | 17 +++++----- src/controllers/iofog-controller.js | 22 ++++++------- src/controllers/microservices-controller.js | 33 +++++++++---------- src/controllers/registry-controller.js | 8 ++--- src/controllers/router-controller.js | 5 ++- src/controllers/routing-controller.js | 11 +++---- src/controllers/tunnel-controller.js | 4 +-- src/services/user-service.js | 2 +- 15 files changed, 85 insertions(+), 92 deletions(-) diff --git a/docs/swagger.yaml b/docs/swagger.yaml index eea611c12..81dcc1117 100755 --- a/docs/swagger.yaml +++ b/docs/swagger.yaml @@ -3191,11 +3191,11 @@ servers: components: securitySchemes: userToken: - type: apiKey + type: Bearer in: header name: Authorization agentToken: - type: apiKey + type: Bearer in: header name: Authorization requestBodies: diff --git a/package.json b/package.json index e09247a00..91b5e755e 100644 --- a/package.json +++ b/package.json @@ -69,12 +69,14 @@ "daemonize2": "0.4.2", "ejs": "3.1.7", "express": "4.17.3", + "express-session": "1.18.0", "formidable": "1.2.1", "ftp": "0.3.10", "helmet": "3.21.2", "is-elevated": "3.0.0", "js-yaml": "3.14.1", "jsonschema": "1.2.5", + "keycloak-connect": "24.0.1" , "minimatch": "3.1.2", "moment": "2.29.4", "moment-timezone": "0.5.38", diff --git a/src/controllers/application-controller.js b/src/controllers/application-controller.js index 6f16bf308..da06cfe8b 100644 --- a/src/controllers/application-controller.js +++ b/src/controllers/application-controller.js @@ -11,7 +11,6 @@ * */ -const AuthDecorator = require('./../decorators/authorization-decorator') const ApplicationService = require('../services/application-service') const YAMLParserService = require('../services/yaml-parser-service') const errors = require('../helpers/errors') @@ -101,15 +100,15 @@ const getApplicationByIdEndPoint = async function (req, user) { } module.exports = { - createApplicationEndPoint: AuthDecorator.checkAuthToken(createApplicationEndPoint), - createApplicationYAMLEndPoint: AuthDecorator.checkAuthToken(createApplicationYAMLEndPoint), - getApplicationsByUserEndPoint: AuthDecorator.checkAuthToken(getApplicationsByUserEndPoint), - getApplicationEndPoint: AuthDecorator.checkAuthToken(getApplicationEndPoint), - getApplicationByIdEndPoint: AuthDecorator.checkAuthToken(getApplicationByIdEndPoint), - updateApplicationEndPoint: AuthDecorator.checkAuthToken(updateApplicationEndPoint), - updateApplicationYAMLEndPoint: AuthDecorator.checkAuthToken(updateApplicationYAMLEndPoint), - patchApplicationEndPoint: AuthDecorator.checkAuthToken(patchApplicationEndPoint), - patchApplicationByIdEndPoint: AuthDecorator.checkAuthToken(patchApplicationByIdEndPoint), - deleteApplicationEndPoint: AuthDecorator.checkAuthToken(deleteApplicationEndPoint), - deleteApplicationByIdEndPoint: AuthDecorator.checkAuthToken(deleteApplicationByIdEndPoint) + createApplicationEndPoint: (createApplicationEndPoint), + createApplicationYAMLEndPoint: (createApplicationYAMLEndPoint), + getApplicationsByUserEndPoint: (getApplicationsByUserEndPoint), + getApplicationEndPoint: (getApplicationEndPoint), + getApplicationByIdEndPoint: (getApplicationByIdEndPoint), + updateApplicationEndPoint: (updateApplicationEndPoint), + updateApplicationYAMLEndPoint: (updateApplicationYAMLEndPoint), + patchApplicationEndPoint: (patchApplicationEndPoint), + patchApplicationByIdEndPoint: (patchApplicationByIdEndPoint), + deleteApplicationEndPoint: (deleteApplicationEndPoint), + deleteApplicationByIdEndPoint: (deleteApplicationByIdEndPoint) } diff --git a/src/controllers/application-template-controller.js b/src/controllers/application-template-controller.js index 9ebea7122..7a9e85d0a 100644 --- a/src/controllers/application-template-controller.js +++ b/src/controllers/application-template-controller.js @@ -11,7 +11,6 @@ * */ -const AuthDecorator = require('./../decorators/authorization-decorator') const ApplicationTemplateService = require('../services/application-template-service') const YAMLParserService = require('../services/yaml-parser-service') const errors = require('../helpers/errors') @@ -78,12 +77,12 @@ const deleteApplicationTemplateEndPoint = async function (req, user) { } module.exports = { - createApplicationTemplateEndPoint: AuthDecorator.checkAuthToken(createApplicationTemplateEndPoint), - getApplicationTemplatesByUserEndPoint: AuthDecorator.checkAuthToken(getApplicationTemplatesByUserEndPoint), - getApplicationTemplateEndPoint: AuthDecorator.checkAuthToken(getApplicationTemplateEndPoint), - updateApplicationTemplateEndPoint: AuthDecorator.checkAuthToken(updateApplicationTemplateEndPoint), - updateApplicationTemplateYAMLEndPoint: AuthDecorator.checkAuthToken(updateApplicationTemplateYAMLEndPoint), - patchApplicationTemplateEndPoint: AuthDecorator.checkAuthToken(patchApplicationTemplateEndPoint), - deleteApplicationTemplateEndPoint: AuthDecorator.checkAuthToken(deleteApplicationTemplateEndPoint), - createApplicationTemplateYAMLEndPoint: AuthDecorator.checkAuthToken(createApplicationTemplateYAMLEndPoint) + createApplicationTemplateEndPoint: (createApplicationTemplateEndPoint), + getApplicationTemplatesByUserEndPoint: (getApplicationTemplatesByUserEndPoint), + getApplicationTemplateEndPoint: (getApplicationTemplateEndPoint), + updateApplicationTemplateEndPoint: (updateApplicationTemplateEndPoint), + updateApplicationTemplateYAMLEndPoint: (updateApplicationTemplateYAMLEndPoint), + patchApplicationTemplateEndPoint: (patchApplicationTemplateEndPoint), + deleteApplicationTemplateEndPoint: (deleteApplicationTemplateEndPoint), + createApplicationTemplateYAMLEndPoint: (createApplicationTemplateYAMLEndPoint) } diff --git a/src/controllers/catalog-controller.js b/src/controllers/catalog-controller.js index 5902d55d9..1559e7935 100644 --- a/src/controllers/catalog-controller.js +++ b/src/controllers/catalog-controller.js @@ -12,7 +12,6 @@ */ const CatalogService = require('../services/catalog-service') -const AuthDecorator = require('./../decorators/authorization-decorator') const createCatalogItemEndPoint = async function (req) { const user = req.kauth.grant.access_token.content @@ -36,9 +35,9 @@ const updateCatalogItemEndPoint = async function (req, user) { } module.exports = { - createCatalogItemEndPoint: AuthDecorator.checkAuthToken(createCatalogItemEndPoint), - listCatalogItemsEndPoint: AuthDecorator.checkAuthToken(listCatalogItemsEndPoint), - listCatalogItemEndPoint: AuthDecorator.checkAuthToken(listCatalogItemEndPoint), - deleteCatalogItemEndPoint: AuthDecorator.checkAuthToken(deleteCatalogItemEndPoint), - updateCatalogItemEndPoint: AuthDecorator.checkAuthToken(updateCatalogItemEndPoint) + createCatalogItemEndPoint: (createCatalogItemEndPoint), + listCatalogItemsEndPoint: (listCatalogItemsEndPoint), + listCatalogItemEndPoint: (listCatalogItemEndPoint), + deleteCatalogItemEndPoint: (deleteCatalogItemEndPoint), + updateCatalogItemEndPoint: (updateCatalogItemEndPoint) } diff --git a/src/controllers/config-controller.js b/src/controllers/config-controller.js index c6846baf4..0b57a14fc 100644 --- a/src/controllers/config-controller.js +++ b/src/controllers/config-controller.js @@ -11,7 +11,6 @@ * */ -const AuthDecorator = require('./../decorators/authorization-decorator') const ConfigService = require('../services/config-service') const upsertConfigElementEndpoint = async function (req, user) { @@ -29,7 +28,7 @@ const getConfigEndpoint = async function (req, user) { } module.exports = { - upsertConfigElementEndpoint: AuthDecorator.checkAuthToken(upsertConfigElementEndpoint), - listConfigEndpoint: AuthDecorator.checkAuthToken(listConfigEndpoint), - getConfigEndpoint: AuthDecorator.checkAuthToken(getConfigEndpoint) + upsertConfigElementEndpoint: (upsertConfigElementEndpoint), + listConfigEndpoint: (listConfigEndpoint), + getConfigEndpoint: (getConfigEndpoint) } diff --git a/src/controllers/diagnostic-controller.js b/src/controllers/diagnostic-controller.js index d7ae6e199..640ae6642 100644 --- a/src/controllers/diagnostic-controller.js +++ b/src/controllers/diagnostic-controller.js @@ -12,7 +12,6 @@ */ const DiagnosticService = require('../services/diagnostic-service') -const AuthDecorator = require('./../decorators/authorization-decorator') const changeMicroserviceStraceStateEndPoint = async function (req, user) { return DiagnosticService.changeMicroserviceStraceState(req.params.uuid, req.body, user, false) @@ -35,9 +34,9 @@ const getMicroserviceImageSnapshotEndPoint = async function (req, user) { } module.exports = { - changeMicroserviceStraceStateEndPoint: AuthDecorator.checkAuthToken(changeMicroserviceStraceStateEndPoint), - getMicroserviceStraceDataEndPoint: AuthDecorator.checkAuthToken(getMicroserviceStraceDataEndPoint), - postMicroserviceStraceDataToFtpEndPoint: AuthDecorator.checkAuthToken(postMicroserviceStraceDataToFtpEndPoint), - createMicroserviceImageSnapshotEndPoint: AuthDecorator.checkAuthToken(createMicroserviceImageSnapshotEndPoint), - getMicroserviceImageSnapshotEndPoint: AuthDecorator.checkAuthToken(getMicroserviceImageSnapshotEndPoint) + changeMicroserviceStraceStateEndPoint: (changeMicroserviceStraceStateEndPoint), + getMicroserviceStraceDataEndPoint: (getMicroserviceStraceDataEndPoint), + postMicroserviceStraceDataToFtpEndPoint: (postMicroserviceStraceDataToFtpEndPoint), + createMicroserviceImageSnapshotEndPoint: (createMicroserviceImageSnapshotEndPoint), + getMicroserviceImageSnapshotEndPoint: (getMicroserviceImageSnapshotEndPoint) } diff --git a/src/controllers/edge-resource-controller.js b/src/controllers/edge-resource-controller.js index 9cd0dccdd..f6ca86473 100644 --- a/src/controllers/edge-resource-controller.js +++ b/src/controllers/edge-resource-controller.js @@ -11,7 +11,6 @@ * */ -const AuthDecorator = require('./../decorators/authorization-decorator') const EdgeResourceService = require('../services/edge-resource-service') const createEdgeResourceEndpoint = async function (req, user) { @@ -63,12 +62,12 @@ const unlinkEdgeResourceEndpoint = async function (req, user) { } module.exports = { - createEdgeResourceEndpoint: AuthDecorator.checkAuthToken(createEdgeResourceEndpoint), - updateEdgeResourceEndpoint: AuthDecorator.checkAuthToken(updateEdgeResourceEndpoint), - listEdgeResourcesEndpoint: AuthDecorator.checkAuthToken(listEdgeResourcesEndpoint), - getEdgeResourceEndpoint: AuthDecorator.checkAuthToken(getEdgeResourceEndpoint), - deleteEdgeResourceEndpoint: AuthDecorator.checkAuthToken(deleteEdgeResourceEndpoint), - linkEdgeResourceEndpoint: AuthDecorator.checkAuthToken(linkEdgeResourceEndpoint), - unlinkEdgeResourceEndpoint: AuthDecorator.checkAuthToken(unlinkEdgeResourceEndpoint), - getEdgeResourceAllVersionsEndpoint: AuthDecorator.checkAuthToken(getEdgeResourceAllVersionsEndpoint) + createEdgeResourceEndpoint: (createEdgeResourceEndpoint), + updateEdgeResourceEndpoint: (updateEdgeResourceEndpoint), + listEdgeResourcesEndpoint: (listEdgeResourcesEndpoint), + getEdgeResourceEndpoint: (getEdgeResourceEndpoint), + deleteEdgeResourceEndpoint: (deleteEdgeResourceEndpoint), + linkEdgeResourceEndpoint: (linkEdgeResourceEndpoint), + unlinkEdgeResourceEndpoint: (unlinkEdgeResourceEndpoint), + getEdgeResourceAllVersionsEndpoint: (getEdgeResourceAllVersionsEndpoint) } diff --git a/src/controllers/iofog-controller.js b/src/controllers/iofog-controller.js index 00e540fce..817c7eff3 100644 --- a/src/controllers/iofog-controller.js +++ b/src/controllers/iofog-controller.js @@ -95,15 +95,15 @@ async function setFogPruneCommandEndPoint (req, user) { } module.exports = { - createFogEndPoint: AuthDecorator.checkAuthToken(createFogEndPoint), - updateFogEndPoint: AuthDecorator.checkAuthToken(updateFogEndPoint), - deleteFogEndPoint: AuthDecorator.checkAuthToken(deleteFogEndPoint), - getFogEndPoint: AuthDecorator.checkAuthToken(getFogEndPoint), - getFogListEndPoint: AuthDecorator.checkAuthToken(getFogListEndPoint), - generateProvisioningKeyEndPoint: AuthDecorator.checkAuthToken(generateProvisionKeyEndPoint), - setFogVersionCommandEndPoint: AuthDecorator.checkAuthToken(setFogVersionCommandEndPoint), - setFogRebootCommandEndPoint: AuthDecorator.checkAuthToken(setFogRebootCommandEndPoint), - getHalHardwareInfoEndPoint: AuthDecorator.checkAuthToken(getHalHardwareInfoEndPoint), - getHalUsbInfoEndPoint: AuthDecorator.checkAuthToken(getHalUsbInfoEndPoint), - setFogPruneCommandEndPoint: AuthDecorator.checkAuthToken(setFogPruneCommandEndPoint) + createFogEndPoint: (createFogEndPoint), + updateFogEndPoint: (updateFogEndPoint), + deleteFogEndPoint: (deleteFogEndPoint), + getFogEndPoint: (getFogEndPoint), + getFogListEndPoint: (getFogListEndPoint), + generateProvisioningKeyEndPoint: (generateProvisionKeyEndPoint), + setFogVersionCommandEndPoint: (setFogVersionCommandEndPoint), + setFogRebootCommandEndPoint: (setFogRebootCommandEndPoint), + getHalHardwareInfoEndPoint: (getHalHardwareInfoEndPoint), + getHalUsbInfoEndPoint: (getHalUsbInfoEndPoint), + setFogPruneCommandEndPoint: (setFogPruneCommandEndPoint) } diff --git a/src/controllers/microservices-controller.js b/src/controllers/microservices-controller.js index 32fe33e40..f2ff25531 100644 --- a/src/controllers/microservices-controller.js +++ b/src/controllers/microservices-controller.js @@ -11,7 +11,6 @@ * */ -const AuthDecorator = require('./../decorators/authorization-decorator') const MicroservicesService = require('../services/microservices-service') const YAMLParserService = require('../services/yaml-parser-service') const { rvaluesVarSubstition } = require('../helpers/template-helper') @@ -121,20 +120,20 @@ const listAllPublicPortsEndPoint = async function (req, user) { } module.exports = { - createMicroserviceOnFogEndPoint: AuthDecorator.checkAuthToken(createMicroserviceOnFogEndPoint), - getMicroserviceEndPoint: AuthDecorator.checkAuthToken(getMicroserviceEndPoint), - updateMicroserviceEndPoint: AuthDecorator.checkAuthToken(updateMicroserviceEndPoint), - deleteMicroserviceEndPoint: AuthDecorator.checkAuthToken(deleteMicroserviceEndPoint), - getMicroservicesByApplicationEndPoint: AuthDecorator.checkAuthToken(getMicroservicesByApplicationEndPoint), - createMicroserviceRouteEndPoint: AuthDecorator.checkAuthToken(createMicroserviceRouteEndPoint), - deleteMicroserviceRouteEndPoint: AuthDecorator.checkAuthToken(deleteMicroserviceRouteEndPoint), - createMicroservicePortMappingEndPoint: AuthDecorator.checkAuthToken(createMicroservicePortMappingEndPoint), - deleteMicroservicePortMappingEndPoint: AuthDecorator.checkAuthToken(deleteMicroservicePortMappingEndPoint), - getMicroservicePortMappingListEndPoint: AuthDecorator.checkAuthToken(listMicroservicePortMappingsEndPoint), - createMicroserviceVolumeMappingEndPoint: AuthDecorator.checkAuthToken(createMicroserviceVolumeMappingEndPoint), - listMicroserviceVolumeMappingsEndPoint: AuthDecorator.checkAuthToken(listMicroserviceVolumeMappingsEndPoint), - deleteMicroserviceVolumeMappingEndPoint: AuthDecorator.checkAuthToken(deleteMicroserviceVolumeMappingEndPoint), - listAllPublicPortsEndPoint: AuthDecorator.checkAuthToken(listAllPublicPortsEndPoint), - createMicroserviceYAMLEndPoint: AuthDecorator.checkAuthToken(createMicroserviceYAMLEndPoint), - updateMicroserviceYAMLEndPoint: AuthDecorator.checkAuthToken(updateMicroserviceYAMLEndPoint) + createMicroserviceOnFogEndPoint: (createMicroserviceOnFogEndPoint), + getMicroserviceEndPoint: (getMicroserviceEndPoint), + updateMicroserviceEndPoint: (updateMicroserviceEndPoint), + deleteMicroserviceEndPoint: (deleteMicroserviceEndPoint), + getMicroservicesByApplicationEndPoint: (getMicroservicesByApplicationEndPoint), + createMicroserviceRouteEndPoint: (createMicroserviceRouteEndPoint), + deleteMicroserviceRouteEndPoint: (deleteMicroserviceRouteEndPoint), + createMicroservicePortMappingEndPoint: (createMicroservicePortMappingEndPoint), + deleteMicroservicePortMappingEndPoint: (deleteMicroservicePortMappingEndPoint), + getMicroservicePortMappingListEndPoint: (listMicroservicePortMappingsEndPoint), + createMicroserviceVolumeMappingEndPoint: (createMicroserviceVolumeMappingEndPoint), + listMicroserviceVolumeMappingsEndPoint: (listMicroserviceVolumeMappingsEndPoint), + deleteMicroserviceVolumeMappingEndPoint: (deleteMicroserviceVolumeMappingEndPoint), + listAllPublicPortsEndPoint: (listAllPublicPortsEndPoint), + createMicroserviceYAMLEndPoint: (createMicroserviceYAMLEndPoint), + updateMicroserviceYAMLEndPoint: (updateMicroserviceYAMLEndPoint) } diff --git a/src/controllers/registry-controller.js b/src/controllers/registry-controller.js index 7c05aabb7..0317873e3 100644 --- a/src/controllers/registry-controller.js +++ b/src/controllers/registry-controller.js @@ -37,8 +37,8 @@ const updateRegistryEndPoint = async function (req, user) { } module.exports = { - createRegistryEndPoint: AuthDecorator.checkAuthToken(createRegistryEndPoint), - getRegistriesEndPoint: AuthDecorator.checkAuthToken(getRegistriesEndPoint), - deleteRegistryEndPoint: AuthDecorator.checkAuthToken(deleteRegistryEndPoint), - updateRegistryEndPoint: AuthDecorator.checkAuthToken(updateRegistryEndPoint) + createRegistryEndPoint: (createRegistryEndPoint), + getRegistriesEndPoint: (getRegistriesEndPoint), + deleteRegistryEndPoint: (deleteRegistryEndPoint), + updateRegistryEndPoint: (updateRegistryEndPoint) } diff --git a/src/controllers/router-controller.js b/src/controllers/router-controller.js index 0d61f536e..7c3734145 100644 --- a/src/controllers/router-controller.js +++ b/src/controllers/router-controller.js @@ -11,7 +11,6 @@ * */ -const AuthDecorator = require('./../decorators/authorization-decorator') const RouterService = require('../services/router-service') const upsertDefaultRouter = async function (req) { @@ -24,6 +23,6 @@ const getRouterEndPoint = async function () { } module.exports = { - upsertDefaultRouter: AuthDecorator.checkAuthToken(upsertDefaultRouter), - getRouterEndPoint: AuthDecorator.checkAuthToken(getRouterEndPoint) + upsertDefaultRouter: (upsertDefaultRouter), + getRouterEndPoint: (getRouterEndPoint) } diff --git a/src/controllers/routing-controller.js b/src/controllers/routing-controller.js index b151924f8..01b5f8ec8 100644 --- a/src/controllers/routing-controller.js +++ b/src/controllers/routing-controller.js @@ -11,7 +11,6 @@ * */ -const AuthDecorator = require('./../decorators/authorization-decorator') const RoutingService = require('../services/routing-service') const createRoutingEndpoint = async function (req, user) { @@ -43,9 +42,9 @@ const deleteRoutingEndpoint = async function (req, user) { } module.exports = { - deleteRoutingEndpoint: AuthDecorator.checkAuthToken(deleteRoutingEndpoint), - updateRoutingEndpoint: AuthDecorator.checkAuthToken(updateRoutingEndpoint), - createRoutingEndpoint: AuthDecorator.checkAuthToken(createRoutingEndpoint), - getRoutingEndPoint: AuthDecorator.checkAuthToken(getRoutingEndPoint), - getRoutingsEndPoint: AuthDecorator.checkAuthToken(getRoutingsEndPoint) + deleteRoutingEndpoint: (deleteRoutingEndpoint), + updateRoutingEndpoint: (updateRoutingEndpoint), + createRoutingEndpoint: (createRoutingEndpoint), + getRoutingEndPoint: (getRoutingEndPoint), + getRoutingsEndPoint: (getRoutingsEndPoint) } diff --git a/src/controllers/tunnel-controller.js b/src/controllers/tunnel-controller.js index fc4da747a..396fe5b49 100644 --- a/src/controllers/tunnel-controller.js +++ b/src/controllers/tunnel-controller.js @@ -42,6 +42,6 @@ const getTunnelEndPoint = async function (req, user) { } module.exports = { - manageTunnelEndPoint: AuthDecorator.checkAuthToken(manageTunnelEndPoint), - getTunnelEndPoint: AuthDecorator.checkAuthToken(getTunnelEndPoint) + manageTunnelEndPoint: (manageTunnelEndPoint), + getTunnelEndPoint: (getTunnelEndPoint) } diff --git a/src/services/user-service.js b/src/services/user-service.js index 42dd2b082..94aaae0b5 100644 --- a/src/services/user-service.js +++ b/src/services/user-service.js @@ -29,7 +29,7 @@ const login = async function (credentials, isCLI, transaction) { const config = { method: 'post', maxBodyLength: Infinity, - url: `${process.env.KC_URL}/realms/${process.env.KC_REALM}/protocol/openid-connect/token`, + url: `${process.env.KC_URL}realms/${process.env.KC_REALM}/protocol/openid-connect/token`, headers: { 'Cache-Control': 'no-cache', 'Content-Type': 'application/x-www-form-urlencoded' From e637ebb8843c9dd9f2af37f0c557b815a49b9f7b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Mon, 18 Mar 2024 12:41:01 +0300 Subject: [PATCH 058/146] removed missing builtin auth decorator --- src/controllers/iofog-controller.js | 1 - src/controllers/registry-controller.js | 1 - src/controllers/tunnel-controller.js | 1 - 3 files changed, 3 deletions(-) diff --git a/src/controllers/iofog-controller.js b/src/controllers/iofog-controller.js index 817c7eff3..2a6c793c7 100644 --- a/src/controllers/iofog-controller.js +++ b/src/controllers/iofog-controller.js @@ -11,7 +11,6 @@ * */ -const AuthDecorator = require('../decorators/authorization-decorator') const FogService = require('../services/iofog-service') const qs = require('qs') diff --git a/src/controllers/registry-controller.js b/src/controllers/registry-controller.js index 0317873e3..906db93cf 100644 --- a/src/controllers/registry-controller.js +++ b/src/controllers/registry-controller.js @@ -11,7 +11,6 @@ * */ -const AuthDecorator = require('../decorators/authorization-decorator') const RegistryService = require('../services/registry-service') const createRegistryEndPoint = async function (req, user) { diff --git a/src/controllers/tunnel-controller.js b/src/controllers/tunnel-controller.js index 396fe5b49..7bc0ac9be 100644 --- a/src/controllers/tunnel-controller.js +++ b/src/controllers/tunnel-controller.js @@ -11,7 +11,6 @@ * */ -const AuthDecorator = require('../decorators/authorization-decorator') const TunnelService = require('../services/tunnel-service') const Errors = require('../helpers/errors') const ErrorMessages = require('../helpers/error-messages') From de5c600302062c2a264be75d808d8c9adbece63f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Mon, 18 Mar 2024 13:21:45 +0300 Subject: [PATCH 059/146] axios ssl self signed issue fixed --- package.json | 1 + src/routes/catalog.js | 2 +- src/services/user-service.js | 8 +++++++- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 91b5e755e..a98aa80a9 100644 --- a/package.json +++ b/package.json @@ -73,6 +73,7 @@ "formidable": "1.2.1", "ftp": "0.3.10", "helmet": "3.21.2", + "https": "1.0.0", "is-elevated": "3.0.0", "js-yaml": "3.14.1", "jsonschema": "1.2.5", diff --git a/src/routes/catalog.js b/src/routes/catalog.js index f5b3bdaf4..945864312 100644 --- a/src/routes/catalog.js +++ b/src/routes/catalog.js @@ -15,7 +15,7 @@ const CatalogController = require('../controllers/catalog-controller') const ResponseDecorator = require('../decorators/response-decorator') const Errors = require('../helpers/errors') const logger = require('../logger') -const keycloak = require('../config/keycloak') +const keycloak = require('../config/keycloak.js').getKeycloak() module.exports = [ { diff --git a/src/services/user-service.js b/src/services/user-service.js index 94aaae0b5..2e9f4f4dc 100644 --- a/src/services/user-service.js +++ b/src/services/user-service.js @@ -15,6 +15,7 @@ const Errors = require('../helpers/errors') const TransactionDecorator = require('../decorators/transaction-decorator') const axios = require('axios') const qs = require('qs') +const https = require('https') const login = async function (credentials, isCLI, transaction) { try { @@ -26,6 +27,10 @@ const login = async function (credentials, isCLI, transaction) { client_secret: process.env.KC_CLIENT_SECRET }) + const agent = new https.Agent({ + rejectUnauthorized: false // Ignore SSL certificate errors + }) + const config = { method: 'post', maxBodyLength: Infinity, @@ -34,7 +39,8 @@ const login = async function (credentials, isCLI, transaction) { 'Cache-Control': 'no-cache', 'Content-Type': 'application/x-www-form-urlencoded' }, - data: data + data: data, + httpsAgent: agent } // Make a POST request to Keycloak token endpoint From c75c93b21562f1cb789b3900a9319373fbd980ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Mon, 18 Mar 2024 17:27:08 +0300 Subject: [PATCH 060/146] listCatalogItemsEndPoint edited for keycloak test --- src/controllers/catalog-controller.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/controllers/catalog-controller.js b/src/controllers/catalog-controller.js index 1559e7935..e5c38e7a4 100644 --- a/src/controllers/catalog-controller.js +++ b/src/controllers/catalog-controller.js @@ -18,8 +18,9 @@ const createCatalogItemEndPoint = async function (req) { return CatalogService.createCatalogItemEndPoint(req.body, user) } -const listCatalogItemsEndPoint = async function (req, user) { - return CatalogService.listCatalogItemsEndPoint(user, false) +const listCatalogItemsEndPoint = async function (req) { + const user = req.kauth.grant.access_token.content + return CatalogService.listCatalogItemsEndPoint(req.body, user) } const listCatalogItemEndPoint = async function (req, user) { From 7f3e78c15c8b1cc2fe68fdb9996865903c1f1a8f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Mon, 18 Mar 2024 18:40:00 +0300 Subject: [PATCH 061/146] keycloak protect added to server.js --- src/controllers/catalog-controller.js | 8 ++--- src/routes/catalog.js | 52 +++++++++++++-------------- src/server.js | 2 +- 3 files changed, 28 insertions(+), 34 deletions(-) diff --git a/src/controllers/catalog-controller.js b/src/controllers/catalog-controller.js index e5c38e7a4..afed875af 100644 --- a/src/controllers/catalog-controller.js +++ b/src/controllers/catalog-controller.js @@ -13,14 +13,12 @@ const CatalogService = require('../services/catalog-service') -const createCatalogItemEndPoint = async function (req) { - const user = req.kauth.grant.access_token.content +const createCatalogItemEndPoint = async function (req, user) { return CatalogService.createCatalogItemEndPoint(req.body, user) } -const listCatalogItemsEndPoint = async function (req) { - const user = req.kauth.grant.access_token.content - return CatalogService.listCatalogItemsEndPoint(req.body, user) +const listCatalogItemsEndPoint = async function (req, user) { + return CatalogService.listCatalogItemsEndPoint(user, false) } const listCatalogItemEndPoint = async function (req, user) { diff --git a/src/routes/catalog.js b/src/routes/catalog.js index 945864312..c547edcd9 100644 --- a/src/routes/catalog.js +++ b/src/routes/catalog.js @@ -15,39 +15,35 @@ const CatalogController = require('../controllers/catalog-controller') const ResponseDecorator = require('../decorators/response-decorator') const Errors = require('../helpers/errors') const logger = require('../logger') -const keycloak = require('../config/keycloak.js').getKeycloak() module.exports = [ { method: 'get', path: '/api/v1/catalog/microservices', - middleware: [ - keycloak.protect(['Admin', 'SRE', 'Developer', 'Viewer']), - async (req, res) => { - logger.apiReq(req) - - const successCode = constants.HTTP_CODE_SUCCESS - const errorCodes = [ - { - code: constants.HTTP_CODE_UNAUTHORIZED, - errors: [Errors.AuthenticationError] - } - ] - - const listCatalogItemsEndPoint = ResponseDecorator.handleErrors( - CatalogController.listCatalogItemsEndPoint, - successCode, - errorCodes - ) - const responseObject = await listCatalogItemsEndPoint(req) - - res - .status(responseObject.code) - .send(responseObject.body) - - logger.apiRes({ req, res: responseObject }) - } - ] + middleware: async (req, res) => { + logger.apiReq(req) + + const successCode = constants.HTTP_CODE_SUCCESS + const errorCodes = [ + { + code: constants.HTTP_CODE_UNAUTHORIZED, + errors: [Errors.AuthenticationError] + } + ] + + const listCatalogItemsEndPoint = ResponseDecorator.handleErrors( + CatalogController.listCatalogItemsEndPoint, + successCode, + errorCodes + ) + const responseObject = await listCatalogItemsEndPoint(req) + + res + .status(responseObject.code) + .send(responseObject.body) + + logger.apiRes({ req: req, res: responseObject }) + } }, { method: 'post', diff --git a/src/server.js b/src/server.js index 2be52d2af..eb04c6e10 100755 --- a/src/server.js +++ b/src/server.js @@ -84,7 +84,7 @@ app.use((req, res, next) => { global.appRoot = path.resolve(__dirname) const registerRoute = (route) => { - const middlewares = [keycloak.middleware(), route.middleware] + const middlewares = [keycloak.middleware(), keycloak.protect('SRE'), route.middleware] if (route.supportSubstitution) { middlewares.unshift(substitutionMiddleware) } From ea9c538038054be09645a0c47503968824c48e45 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Mon, 18 Mar 2024 19:18:55 +0300 Subject: [PATCH 062/146] test keycloak.protect --- src/routes/catalog.js | 15 ++++++++++----- src/server.js | 2 +- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/src/routes/catalog.js b/src/routes/catalog.js index c547edcd9..583b5a82f 100644 --- a/src/routes/catalog.js +++ b/src/routes/catalog.js @@ -15,6 +15,7 @@ const CatalogController = require('../controllers/catalog-controller') const ResponseDecorator = require('../decorators/response-decorator') const Errors = require('../helpers/errors') const logger = require('../logger') +const keycloak = require('../config/keycloak.js').initKeycloak() module.exports = [ { @@ -36,13 +37,17 @@ module.exports = [ successCode, errorCodes ) - const responseObject = await listCatalogItemsEndPoint(req) - res - .status(responseObject.code) - .send(responseObject.body) + // Add keycloak.protect() middleware to protect the route + await keycloak.protect('SRE')(req, res, async () => { + const responseObject = await listCatalogItemsEndPoint(req) + + res + .status(responseObject.code) + .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, res: responseObject }) + }) } }, { diff --git a/src/server.js b/src/server.js index eb04c6e10..92dcac4be 100755 --- a/src/server.js +++ b/src/server.js @@ -84,7 +84,7 @@ app.use((req, res, next) => { global.appRoot = path.resolve(__dirname) const registerRoute = (route) => { - const middlewares = [keycloak.middleware(), keycloak.protect('SRE'), route.middleware] + const middlewares = [route.middleware] if (route.supportSubstitution) { middlewares.unshift(substitutionMiddleware) } From be8baf5786ac107cbf5b7b8770f614f4f49c69b3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Tue, 19 Mar 2024 17:56:02 +0300 Subject: [PATCH 063/146] keycloak protection added to all endpoints, old migration and seeder files removed, nonused components deleted, swagger files updated, user profile endpoint created --- .github/PULL_REQUEST_TEMPLATE.md | 15 - azure-pipelines.yml | 227 ---- azure-templates/test.yml | 39 - docs/swagger.json | 1156 ++++------------- docs/swagger.yaml | 493 +------ package-lock.json | 631 ++++++++- scripts/cli-tests.js | 1 - src/cli/config.js | 65 +- src/cli/controller.js | 3 +- src/config/constants.js | 3 - src/config/default.json | 4 - src/config/development.json | 6 +- src/config/production.json | 3 - src/config/test.json | 3 - src/controllers/user-controller.js | 7 +- .../migrations/20180930164635-create-flow.js | 43 - .../20180930173823-create-registry.js | 49 - .../20180930184436-create-catalog-item.js | 77 -- .../20180930184703-create-fog-type.js | 47 - ...0180930184921-create-catalog-item-image.js | 33 - ...30194506-create-catalog-item-input-type.js | 31 - ...0195746-create-catalog-item-output-type.js | 31 - .../migrations/20180930225403-create-fog.js | 271 ---- .../20180930225846-create-change-tracking.js | 67 - .../20180930230219-create-fog-access-token.js | 37 - ...20180930230626-create-fog-provision-key.js | 38 - ...180930231241-create-fog-version-command.js | 27 - .../20180930231536-create-hw-info.js | 38 - .../20180930232242-create-usb-info.js | 38 - .../20180930232508-create-tunnel.js | 53 - .../20181001062956-create-microservice.js | 100 -- ...20181001070828-create-microservice-port.js | 45 - ...181001071315-create-microservice-status.js | 57 - .../20181001071628-create-connector.js | 51 - .../20181001071858-create-connector-port.js | 69 - ...0181001073429-create-strace-diagnostics.js | 32 - .../20181003102815-create-volume-mapping.js | 35 - .../20181022110529-create-routing.js | 64 - ...2114905-create-microservice-public-mode.js | 47 - ...4923-drop-need-update-col-microservices.js | 14 - ...croservice-status-add-missing-time-cols.js | 18 - ...81102163657-microservice-add-col-remove.js | 14 - ...king-container-to-microservice-renaming.js | 17 - .../20181113094807-add-missing-constraints.js | 133 -- .../20190117110458-create-tracking-event.js | 44 - ...0190226111416-add-system-metrics-to-fog.js | 50 - ...190305142715-add-security-status-fields.js | 44 - .../20190409055710-add-microservices-env.js | 31 - .../20190410055710-add-microservices-arg.js | 27 - .../20190704043715-agent-external-ip.js | 37 - ...tem images to be linked to microservice.js | 16 - .../20190916030304-connector-health.js | 15 - .../20190916030532-connector-port-deletion.js | 15 - .../20200123000302-system-fog-and-flow.js | 39 - .../20200123045032-fog-and-change-tracking.js | 50 - .../20200123163412-create-router.js | 91 -- ...123205245-router-port-host-agent-config.js | 18 - .../20200124040224-router-changed-flag.js | 29 - .../20200202113124-create-public-ports.js | 65 - .../20200213033350-create-config.js | 39 - ...0200220210224-change-tracking-timestamp.js | 15 - .../20200316011904-microservice-extra-host.js | 52 - .../migrations/20200316032240-add-fog-host.js | 27 - .../20200323050813-fog-update-messagespeed.js | 22 - .../20200420020250-remove-connector.js | 136 -- .../20200423201804-add-volume-mapping-type.js | 13 - .../20200506004924-add-route-name.js | 17 - .../migrations/20200512044934-rename-flow.js | 11 - ...200512214530-add-application-to-routing.js | 25 - ...200901053246-add-percentage-msvc-status.js | 14 - .../20201001230303-add-tags-fogs.js | 46 - .../20201028005645-create-edge-resources.js | 113 -- ...003849-create-edge-resources-agent-flag.js | 15 - ...203011708-microservice-status-error-msg.js | 14 - ...1204003312-create_application_templates.js | 87 -- ...0104191500-add_custom_to_edge_resources.js | 22 - .../20210118012712-add_is_udp_to_port.js | 21 - ...11019214923-add-schemes-to-public-ports.js | 22 - ...0211020014715-add-index-to-public-ports.js | 17 - ...211022010318-add-unique-constraint-msvc.js | 30 - ...11022013326-add-unique-constraint-route.js | 30 - ...220405053419-add-time-zone-agent-config.js | 27 - .../20220409021708-drop-table-tracking.js | 25 - .../20221021102712-add_is_proxy_to_port.js | 21 - .../20221021132000-create-proxy-ports.js | 52 - ...021152712-add_admin_port_to_proxy_ports.js | 21 - ...0221031162712-add_tokens_to_proxy_ports.js | 21 - ...51246-add_port_uuid_to_proxy_ports copy.js | 27 - .../seeders/20180928110125-insert-registry.js | 34 - .../20180928111532-insert-catalog-item.js | 168 --- .../20180928112152-insert-iofog-type.js | 50 - ...0180928121334-insert-catalog-item-image.js | 132 -- ...90130112616-insert-logging-catalog-item.js | 42 - ...1441-insert-json-generator-catalog-item.js | 38 - .../20190218103641-adding-default-configs.js | 80 -- ...200122200231-insert-router-catalog-item.js | 87 -- ...200313163114-update-router-catalog-item.js | 58 - ...9163114-insert-port-router-catalog-item.js | 57 - src/{config => }/keycloak.json | 0 src/routes/application.js | 115 +- src/routes/applicationTemplate.js | 113 +- src/routes/capabilities.js | 13 +- src/routes/catalog.js | 59 +- src/routes/config.js | 48 +- src/routes/diagnostics.js | 136 +- src/routes/edgeResource.js | 127 +- src/routes/flow.js | 76 +- src/routes/iofog.js | 170 ++- src/routes/microservices.js | 282 ++-- src/routes/registries.js | 63 +- src/routes/router.js | 41 +- src/routes/routing.js | 115 +- src/routes/tunnel.js | 41 +- src/routes/user.js | 34 +- src/services/user-service.js | 38 +- src/views/email-activation-temp.js | 140 -- src/views/email-temp.js | 76 -- src/views/reset-password-temp.js | 126 -- 118 files changed, 1887 insertions(+), 6457 deletions(-) delete mode 100644 .github/PULL_REQUEST_TEMPLATE.md delete mode 100755 azure-pipelines.yml delete mode 100644 azure-templates/test.yml delete mode 100644 src/data/migrations/20180930164635-create-flow.js delete mode 100644 src/data/migrations/20180930173823-create-registry.js delete mode 100644 src/data/migrations/20180930184436-create-catalog-item.js delete mode 100644 src/data/migrations/20180930184703-create-fog-type.js delete mode 100644 src/data/migrations/20180930184921-create-catalog-item-image.js delete mode 100644 src/data/migrations/20180930194506-create-catalog-item-input-type.js delete mode 100644 src/data/migrations/20180930195746-create-catalog-item-output-type.js delete mode 100644 src/data/migrations/20180930225403-create-fog.js delete mode 100644 src/data/migrations/20180930225846-create-change-tracking.js delete mode 100644 src/data/migrations/20180930230219-create-fog-access-token.js delete mode 100644 src/data/migrations/20180930230626-create-fog-provision-key.js delete mode 100644 src/data/migrations/20180930231241-create-fog-version-command.js delete mode 100644 src/data/migrations/20180930231536-create-hw-info.js delete mode 100644 src/data/migrations/20180930232242-create-usb-info.js delete mode 100644 src/data/migrations/20180930232508-create-tunnel.js delete mode 100644 src/data/migrations/20181001062956-create-microservice.js delete mode 100644 src/data/migrations/20181001070828-create-microservice-port.js delete mode 100644 src/data/migrations/20181001071315-create-microservice-status.js delete mode 100644 src/data/migrations/20181001071628-create-connector.js delete mode 100644 src/data/migrations/20181001071858-create-connector-port.js delete mode 100644 src/data/migrations/20181001073429-create-strace-diagnostics.js delete mode 100644 src/data/migrations/20181003102815-create-volume-mapping.js delete mode 100644 src/data/migrations/20181022110529-create-routing.js delete mode 100644 src/data/migrations/20181022114905-create-microservice-public-mode.js delete mode 100644 src/data/migrations/20181031094923-drop-need-update-col-microservices.js delete mode 100644 src/data/migrations/20181102105758-microservice-status-add-missing-time-cols.js delete mode 100644 src/data/migrations/20181102163657-microservice-add-col-remove.js delete mode 100644 src/data/migrations/20181105120036-change-tracking-container-to-microservice-renaming.js delete mode 100644 src/data/migrations/20181113094807-add-missing-constraints.js delete mode 100644 src/data/migrations/20190117110458-create-tracking-event.js delete mode 100644 src/data/migrations/20190226111416-add-system-metrics-to-fog.js delete mode 100644 src/data/migrations/20190305142715-add-security-status-fields.js delete mode 100644 src/data/migrations/20190409055710-add-microservices-env.js delete mode 100644 src/data/migrations/20190410055710-add-microservices-arg.js delete mode 100644 src/data/migrations/20190704043715-agent-external-ip.js delete mode 100644 src/data/migrations/20190830071324-update catalog item images to be linked to microservice.js delete mode 100644 src/data/migrations/20190916030304-connector-health.js delete mode 100644 src/data/migrations/20190916030532-connector-port-deletion.js delete mode 100644 src/data/migrations/20200123000302-system-fog-and-flow.js delete mode 100644 src/data/migrations/20200123045032-fog-and-change-tracking.js delete mode 100644 src/data/migrations/20200123163412-create-router.js delete mode 100644 src/data/migrations/20200123205245-router-port-host-agent-config.js delete mode 100644 src/data/migrations/20200124040224-router-changed-flag.js delete mode 100644 src/data/migrations/20200202113124-create-public-ports.js delete mode 100644 src/data/migrations/20200213033350-create-config.js delete mode 100644 src/data/migrations/20200220210224-change-tracking-timestamp.js delete mode 100644 src/data/migrations/20200316011904-microservice-extra-host.js delete mode 100644 src/data/migrations/20200316032240-add-fog-host.js delete mode 100644 src/data/migrations/20200323050813-fog-update-messagespeed.js delete mode 100644 src/data/migrations/20200420020250-remove-connector.js delete mode 100644 src/data/migrations/20200423201804-add-volume-mapping-type.js delete mode 100644 src/data/migrations/20200506004924-add-route-name.js delete mode 100644 src/data/migrations/20200512044934-rename-flow.js delete mode 100644 src/data/migrations/20200512214530-add-application-to-routing.js delete mode 100644 src/data/migrations/20200901053246-add-percentage-msvc-status.js delete mode 100644 src/data/migrations/20201001230303-add-tags-fogs.js delete mode 100644 src/data/migrations/20201028005645-create-edge-resources.js delete mode 100644 src/data/migrations/20201105003849-create-edge-resources-agent-flag.js delete mode 100644 src/data/migrations/20201203011708-microservice-status-error-msg.js delete mode 100644 src/data/migrations/20201204003312-create_application_templates.js delete mode 100644 src/data/migrations/20210104191500-add_custom_to_edge_resources.js delete mode 100644 src/data/migrations/20210118012712-add_is_udp_to_port.js delete mode 100644 src/data/migrations/20211019214923-add-schemes-to-public-ports.js delete mode 100644 src/data/migrations/20211020014715-add-index-to-public-ports.js delete mode 100644 src/data/migrations/20211022010318-add-unique-constraint-msvc.js delete mode 100644 src/data/migrations/20211022013326-add-unique-constraint-route.js delete mode 100644 src/data/migrations/20220405053419-add-time-zone-agent-config.js delete mode 100644 src/data/migrations/20220409021708-drop-table-tracking.js delete mode 100644 src/data/migrations/20221021102712-add_is_proxy_to_port.js delete mode 100644 src/data/migrations/20221021132000-create-proxy-ports.js delete mode 100644 src/data/migrations/20221021152712-add_admin_port_to_proxy_ports.js delete mode 100644 src/data/migrations/20221031162712-add_tokens_to_proxy_ports.js delete mode 100644 src/data/migrations/20221110151246-add_port_uuid_to_proxy_ports copy.js delete mode 100644 src/data/seeders/20180928110125-insert-registry.js delete mode 100644 src/data/seeders/20180928111532-insert-catalog-item.js delete mode 100644 src/data/seeders/20180928112152-insert-iofog-type.js delete mode 100644 src/data/seeders/20180928121334-insert-catalog-item-image.js delete mode 100644 src/data/seeders/20190130112616-insert-logging-catalog-item.js delete mode 100644 src/data/seeders/20190131111441-insert-json-generator-catalog-item.js delete mode 100644 src/data/seeders/20190218103641-adding-default-configs.js delete mode 100644 src/data/seeders/20200122200231-insert-router-catalog-item.js delete mode 100644 src/data/seeders/20200313163114-update-router-catalog-item.js delete mode 100644 src/data/seeders/20221019163114-insert-port-router-catalog-item.js rename src/{config => }/keycloak.json (100%) delete mode 100644 src/views/email-activation-temp.js delete mode 100644 src/views/email-temp.js delete mode 100644 src/views/reset-password-temp.js diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 34f6374f1..000000000 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,15 +0,0 @@ - - -- Does the iofog.org or README.md documentation need to change? - - [ ] Yes - - [ ] No - -### Description - diff --git a/azure-pipelines.yml b/azure-pipelines.yml deleted file mode 100755 index a674ef6ab..000000000 --- a/azure-pipelines.yml +++ /dev/null @@ -1,227 +0,0 @@ -trigger: - tags: - include: - - v* - branches: - include: - - develop - - release* - paths: - exclude: - - README.md - - CHANGELOG.md - - LICENSE - -variables: - group: 'pipelines' - repository: 'focal-freedom-236620/controller' - ref: $(Build.SourceBranch) - imageTag: - buildTag: $(Build.BuildId) - branchTag: $(Build.SourceBranchName) - releaseCandidate: 'rc' - -stages: -- stage: Preflight - jobs: - - job: Build - pool: - vmImage: 'Ubuntu-20.04' - - steps: - - task: NodeTool@0 - inputs: - versionSource: 'spec' - versionSpec: '18.x' - displayName: 'Install Node.js' - - - script: | - npm -v - node -v - npm install - displayName: 'npm install and build' - - - script: | - npm run standard - displayName: 'Standardjs report' - - - script: | - npm i -g better-npm-audit - npx better-npm-audit audit -p - displayName: Check for vulnerabilities - - # npx better-npm-audit audit -p - # To be removed once new version of ncof is released - - - # - script: | - # npm run snyk -- --project-name=ControllerCI - # displayName: 'Snyk monitor' - # env: - # SNYK_TOKEN: $(snykToken) -- stage: Test - jobs: - - template: azure-templates/test.yml - parameters: - nodeVersion: '16' - - template: azure-templates/test.yml - parameters: - nodeVersion: '17' - - template: azure-templates/test.yml - parameters: - nodeVersion: '18' - - template: azure-templates/test.yml - parameters: - nodeVersion: '19' -- stage: Publish - jobs: - # - job: Platform - # dependsOn: Controller - # pool: server - # variables: - # commit: b-$(buildTag) - - # steps: - # - task: InvokeRESTAPI@1 - # displayName: 'trigger platform job' - # inputs: - # connectionType: 'connectedServiceName' - # serviceConnection: 'Pipelines' - # method: 'POST' - # urlSuffix: '/edgeworx/_apis/build/builds?api-version=5.0' - # body: "{\"Parameters\":\"{\\\"images.controller\\\": \\\"gcr.io/$(repository):$(commit)\\\"}\", \"Definition\":{\"id\":\"5\"}}" - # waitForCompletion: 'false' - - job: Controller - pool: - vmImage: 'Ubuntu-20.04' - steps: - - task: NodeTool@0 - inputs: - versionSpec: '18.x' - displayName: 'Install Node.js' - - - script: | - npm install - displayName: 'npm install' - - - script: | - npm pack - ls iofog-iofogcontroller-*.tgz - displayName: 'npm pack for release artefact' - - - script: | - if [[ $(ref) == refs/tags* ]]; then - TAG=$(echo $(ref) | sed "s|refs/tags/v||g") - echo "##vso[task.setvariable variable=imageTag]$TAG" - else - LATESTTAG=$(git tag | tail -1) - LATESTVERS=${LATESTTAG#?} - if [ -z "$LATESTVERS" ]; then LATESTVERS=0.0.0; fi - echo "##vso[task.setvariable variable=imageTag]$LATESTVERS-b$(buildTag)" - fi - echo $(imageTag) - displayName: 'Set image tag' - - - script: | - echo "gcr.io/$(repository):$(imageTag)" > GCR_DOCKER_IMAGE - displayName: 'Save Docker image name and tag to GCR_DOCKER_IMAGE into artifacts' - - - task: CopyFiles@2 - inputs: - SourceFolder: $(System.DefaultWorkingDirectory) - TargetFolder: $(Build.ArtifactStagingDirectory) - Contents: | - standardjs.out - *.tgz - GCR_DOCKER_IMAGE - OverWrite: true - displayName: 'artefacts to publish' - - - script: | - rm -fr iofog-iofogcontroller-*.tgz - git checkout package-lock.json - git config --global user.email "info@edgeworx.io" - git config --global user.name "Azure DevOps" - - PACKAGE_VERSION=$(cat package.json | grep version | head -1 | awk -F: '{ print $2 }' | sed 's/[\",]//g' | tr -d '[[:space:]]') - if [[ $(ref) == refs/tags* ]]; then - npm --no-git-tag-version version $PACKAGE_VERSION - else - npm --no-git-tag-version version $PACKAGE_VERSION-b$(buildTag) - fi - echo "##vso[task.setvariable variable=pkg_version]$PACKAGE_VERSION" - displayName: 'npm version' - - - script: | - npm pack - displayName: 'npm pack with version containing build number' - - - bash: | - echo 'checking pack file exists..' - tar=$(ls iofog-iofogcontroller-*.tgz) - echo $tar - echo "##vso[task.setvariable variable=controller_tar]$tar" - displayName: 'setting vars' - name: setvarStep - - - task: Docker@2 - displayName: 'build docker' - inputs: - containerRegistry: 'Edgeworx GCP' - repository: $(repository) - command: 'build' - Dockerfile: "Dockerfile.dev" - arguments: --build-arg PKG_VERSION=$(pkg_version) - tags: | - $(imageTag) - $(branchTag) - latest - condition: or(and(succeeded(), startsWith(variables['build.sourceBranch'], 'refs/heads/release/')), and(succeeded(), eq(variables['build.sourceBranch'], 'refs/heads/develop')), and(succeeded(), startsWith(variables['build.sourceBranch'], 'refs/tags/'))) - - - task: Docker@2 - displayName: 'push docker' - inputs: - containerRegistry: 'Edgeworx GCP' - repository: $(repository) - command: 'push' - Dockerfile: "Dockerfile.dev" - tags: | - $(imageTag) - $(branchTag) - latest - condition: or(and(succeeded(), startsWith(variables['build.sourceBranch'], 'refs/heads/release/')), and(succeeded(), eq(variables['build.sourceBranch'], 'refs/heads/develop')), and(succeeded(), startsWith(variables['build.sourceBranch'], 'refs/tags/'))) - - - task: PublishBuildArtifacts@1 - inputs: - PathtoPublish: '$(Build.ArtifactStagingDirectory)' - ArtifactName: 'controller' - - - task: DownloadSecureFile@1 - inputs: - secureFile: 'package_cloud' - displayName: 'download package cloud token file' - - - task: UseRubyVersion@0 - inputs: - versionSpec: '3.1.4' - addToPath: true - displayName: 'install rubygem to be used to install package_cloud cli' - - - script: | - gem install package_cloud - package_cloud -h - echo "config file..." - ls $(Agent.TempDirectory)/package_cloud - displayName: 'install package_cloud cli' - - - script: | - echo $(controller_tar) - package_cloud push iofog/iofog-controller-snapshots/node/1 $(controller_tar) --config=$(Agent.TempDirectory)/package_cloud - displayName: 'push to package cloud' - - script: | - package_cloud yank iofog/iofog-controller-snapshots/node/1 iofog-iofogcontroller-0.0.0-dev.tgz --config=$(Agent.TempDirectory)/package_cloud - npm --no-git-tag-version version 0.0.0-dev --allow-downgrade - npm pack - package_cloud push iofog/iofog-controller-snapshots/node/1 iofog-iofogcontroller-0.0.0-dev.tgz --config=$(Agent.TempDirectory)/package_cloud - displayName: 'push develop package to package cloud' - condition: and(succeeded(), eq(variables['build.sourceBranch'], 'refs/heads/develop')) diff --git a/azure-templates/test.yml b/azure-templates/test.yml deleted file mode 100644 index 8df410dea..000000000 --- a/azure-templates/test.yml +++ /dev/null @@ -1,39 +0,0 @@ -parameters: - nodeVersion: '' -jobs: -- job: ${{ format('Node_{0}', parameters.nodeVersion) }} - pool: - vmImage: 'Ubuntu-20.04' - steps: - - task: NodeTool@0 - inputs: - versionSpec: ${{ format('{0}.x', parameters.nodeVersion) }} - displayName: 'Install Node.js' - - script: | - npm i - displayName: Install dependencies - - - script: | - npm run test -- junit - displayName: 'unit tests' - - - script: | - npm run postman_test - displayName: 'integration tests' - # Publish Test Results - # Publish test results to Azure Pipelines - - script: | - ls -l - displayName: 'list files (looking for test results)' - - task: PublishTestResults@2 - inputs: - testResultsFormat: 'JUnit' # Options: JUnit, NUnit, VSTest, xUnit, cTest - testResultsFiles: '*-results.xml' - searchFolder: '$(System.DefaultWorkingDirectory)' # Optional - #mergeTestResults: false # Optional - #failTaskOnFailedTests: false # Optional - #testRunTitle: # Optional - buildPlatform: ${{ format('Node_{0}', parameters.nodeVersion) }} # Optional - testRunTitle: ${{ format('Node_{0}', parameters.nodeVersion) }} # Optional - #buildConfiguration: # Optional - #publishRunAttachments: true # Optional \ No newline at end of file diff --git a/docs/swagger.json b/docs/swagger.json index 7442ffbb3..7a8c89f01 100644 --- a/docs/swagger.json +++ b/docs/swagger.json @@ -87,11 +87,9 @@ "tags" : [ "ioFog" ], "summary" : "Returns list of ioFog nodes", "operationId" : "getIOFogNodes", - "parameters" : [ { - "name" : "Authorization", - "in" : "header", - "description" : "User token", - "required" : true + "parameters" : [ ], + "security" : [ { + "userToken" : [ ] } ], "responses" : { "200" : { @@ -119,11 +117,9 @@ "tags" : [ "ioFog" ], "summary" : "Creates a new ioFog node", "operationId" : "createIOFogNode", - "parameters" : [ { - "name" : "Authorization", - "in" : "header", - "description" : "User token", - "required" : true + "parameters" : [ ], + "security" : [ { + "userToken" : [ ] } ], "responses" : { "201" : { @@ -156,11 +152,9 @@ "in" : "path", "description" : "ioFog node id", "required" : true - }, { - "name" : "Authorization", - "in" : "header", - "description" : "User token", - "required" : true + } ], + "security" : [ { + "userToken" : [ ] } ], "responses" : { "200" : { @@ -191,11 +185,9 @@ "in" : "path", "description" : "ioFog node id", "required" : true - }, { - "name" : "Authorization", - "in" : "header", - "description" : "User token", - "required" : true + } ], + "security" : [ { + "userToken" : [ ] } ], "responses" : { "202" : { @@ -226,11 +218,9 @@ "in" : "path", "description" : "ioFog node id", "required" : true - }, { - "name" : "Authorization", - "in" : "header", - "description" : "User token", - "required" : true + } ], + "security" : [ { + "userToken" : [ ] } ], "responses" : { "204" : { @@ -266,11 +256,9 @@ "in" : "path", "description" : "ioFog node id", "required" : true - }, { - "name" : "Authorization", - "in" : "header", - "description" : "User token", - "required" : true + } ], + "security" : [ { + "userToken" : [ ] } ], "responses" : { "201" : { @@ -299,11 +287,6 @@ "summary" : "Set change version command", "operationId" : "setVersionCommand", "parameters" : [ { - "name" : "Authorization", - "in" : "header", - "description" : "User token", - "required" : true - }, { "name" : "uuid", "in" : "path", "description" : "ioFog node id", @@ -314,6 +297,9 @@ "description" : "change version command", "required" : true } ], + "security" : [ { + "userToken" : [ ] + } ], "responses" : { "204" : { "description" : "Success", @@ -344,16 +330,14 @@ "summary" : "remote reboot fog agent", "operationId" : "setRebootCommand", "parameters" : [ { - "name" : "Authorization", - "in" : "header", - "description" : "User Token", - "required" : true - }, { "name" : "uuid", "in" : "path", "description" : "ioFog node id", "required" : true } ], + "security" : [ { + "userToken" : [ ] + } ], "responses" : { "204" : { "description" : "Success", @@ -378,16 +362,14 @@ "summary" : "prune reboot fog agent", "operationId" : "setPruneCommand", "parameters" : [ { - "name" : "Authorization", - "in" : "header", - "description" : "User Token", - "required" : true - }, { "name" : "uuid", "in" : "path", "description" : "ioFog node id", "required" : true } ], + "security" : [ { + "userToken" : [ ] + } ], "responses" : { "204" : { "description" : "Success", @@ -416,11 +398,9 @@ "in" : "path", "description" : "ioFog node id", "required" : true - }, { - "name" : "Authorization", - "in" : "header", - "description" : "User token", - "required" : true + } ], + "security" : [ { + "userToken" : [ ] } ], "responses" : { "200" : { @@ -453,11 +433,9 @@ "in" : "path", "description" : "ioFog node id", "required" : true - }, { - "name" : "Authorization", - "in" : "header", - "description" : "User token", - "required" : true + } ], + "security" : [ { + "userToken" : [ ] } ], "responses" : { "200" : { @@ -485,11 +463,9 @@ "tags" : [ "Application" ], "summary" : "Lists all applications", "operationId" : "listApplication", - "parameters" : [ { - "name" : "Authorization", - "in" : "header", - "description" : "User Token", - "required" : true + "parameters" : [ ], + "security" : [ { + "userToken" : [ ] } ], "responses" : { "200" : { @@ -510,34 +486,6 @@ "description" : "Internal Server Error" } } - }, - "post" : { - "tags" : [ "Application" ], - "summary" : "Creates an application", - "operationId" : "createApplication", - "parameters" : [ { - "name" : "Authorization", - "in" : "header", - "description" : "User Token", - "required" : true - } ], - "deprecated" : true, - "responses" : { - "200" : { - "description" : "Success", - "headers" : { - "X-Timestamp" : { - "description" : "FogController server timestamp" - } - } - }, - "400" : { - "description" : "Bad Request" - }, - "500" : { - "description" : "Internal Server Error" - } - } } }, "/application/yaml" : { @@ -545,11 +493,9 @@ "tags" : [ "Application" ], "summary" : "Creates an application using a YAML file", "operationId" : "createApplicationYAML", - "parameters" : [ { - "name" : "Authorization", - "in" : "header", - "description" : "User Token", - "required" : true + "parameters" : [ ], + "security" : [ { + "userToken" : [ ] } ], "responses" : { "200" : { @@ -575,54 +521,16 @@ "summary" : "Gets an application details", "operationId" : "getApplication", "parameters" : [ { - "name" : "Authorization", - "in" : "header", - "description" : "User Token", - "required" : true - }, { "name" : "name", "in" : "path", "description" : "Application name", "required" : true } ], - "responses" : { - "200" : { - "description" : "Success", - "headers" : { - "X-Timestamp" : { - "description" : "FogController server timestamp" - } - } - }, - "400" : { - "description" : "Bad Request" - }, - "404" : { - "description" : "Not Found" - }, - "500" : { - "description" : "Internal Server Error" - } - } - }, - "put" : { - "tags" : [ "Application" ], - "summary" : "Updates an application", - "operationId" : "updateApplication", - "parameters" : [ { - "name" : "Authorization", - "in" : "header", - "description" : "User Token", - "required" : true - }, { - "name" : "name", - "in" : "path", - "description" : "Application name", - "required" : true + "security" : [ { + "userToken" : [ ] } ], - "deprecated" : true, "responses" : { - "204" : { + "200" : { "description" : "Success", "headers" : { "X-Timestamp" : { @@ -646,16 +554,14 @@ "summary" : "Deletes an application", "operationId" : "deleteApplication", "parameters" : [ { - "name" : "Authorization", - "in" : "header", - "description" : "User Token", - "required" : true - }, { "name" : "name", "in" : "path", "description" : "Application name", "required" : true } ], + "security" : [ { + "userToken" : [ ] + } ], "responses" : { "204" : { "description" : "Success", @@ -681,16 +587,14 @@ "summary" : "Updates an application metadata", "operationId" : "patchApplication", "parameters" : [ { - "name" : "Authorization", - "in" : "header", - "description" : "User Token", - "required" : true - }, { "name" : "name", "in" : "path", "description" : "Application name", "required" : true } ], + "security" : [ { + "userToken" : [ ] + } ], "responses" : { "204" : { "description" : "Success", @@ -718,16 +622,14 @@ "summary" : "Updates an application using a YAML file", "operationId" : "updateApplicationYAML", "parameters" : [ { - "name" : "Authorization", - "in" : "header", - "description" : "User Token", - "required" : true - }, { "name" : "name", "in" : "path", "description" : "Application name", "required" : true } ], + "security" : [ { + "userToken" : [ ] + } ], "responses" : { "204" : { "description" : "Success", @@ -754,11 +656,9 @@ "tags" : [ "Application Template" ], "summary" : "Lists all application templates", "operationId" : "listApplicationTemplates", - "parameters" : [ { - "name" : "Authorization", - "in" : "header", - "description" : "User Token", - "required" : true + "parameters" : [ ], + "security" : [ { + "userToken" : [ ] } ], "responses" : { "200" : { @@ -781,46 +681,14 @@ } } }, - "/applicationTemplate" : { - "post" : { - "tags" : [ "Application Template" ], - "summary" : "Creates an application template", - "operationId" : "createApplicationTemplate", - "parameters" : [ { - "name" : "Authorization", - "in" : "header", - "description" : "User Token", - "required" : true - } ], - "deprecated" : true, - "responses" : { - "200" : { - "description" : "Success", - "headers" : { - "X-Timestamp" : { - "description" : "FogController server timestamp" - } - } - }, - "400" : { - "description" : "Bad Request" - }, - "500" : { - "description" : "Internal Server Error" - } - } - } - }, "/applicationTemplate/yaml" : { "post" : { "tags" : [ "Application Template" ], "summary" : "Creates an application template using a YAML file", "operationId" : "createApplicationTemplateYAML", - "parameters" : [ { - "name" : "Authorization", - "in" : "header", - "description" : "User Token", - "required" : true + "parameters" : [ ], + "security" : [ { + "userToken" : [ ] } ], "responses" : { "200" : { @@ -846,16 +714,14 @@ "summary" : "Gets an application template", "operationId" : "getApplicationTemplate", "parameters" : [ { - "name" : "Authorization", - "in" : "header", - "description" : "User Token", - "required" : true - }, { "name" : "name", "in" : "path", "description" : "Application template name", "required" : true } ], + "security" : [ { + "userToken" : [ ] + } ], "responses" : { "200" : { "description" : "Success", @@ -876,54 +742,19 @@ } } }, - "put" : { - "tags" : [ "Application Template" ], - "summary" : "Updates or creates an application template", - "operationId" : "updateOrCreateApplicationTemplate", - "parameters" : [ { - "name" : "Authorization", - "in" : "header", - "description" : "User Token", - "required" : true - }, { - "name" : "name", - "in" : "path", - "description" : "Application template name", - "required" : true - } ], - "deprecated" : true, - "responses" : { - "200" : { - "description" : "Success", - "headers" : { - "X-Timestamp" : { - "description" : "FogController server timestamp" - } - } - }, - "400" : { - "description" : "Bad Request" - }, - "500" : { - "description" : "Internal Server Error" - } - } - }, "delete" : { "tags" : [ "Application Template" ], "summary" : "Deletes an application template", "operationId" : "deleteApplicationTemplate", "parameters" : [ { - "name" : "Authorization", - "in" : "header", - "description" : "User Token", - "required" : true - }, { "name" : "name", "in" : "path", "description" : "Application template name", "required" : true } ], + "security" : [ { + "userToken" : [ ] + } ], "responses" : { "200" : { "description" : "Success", @@ -949,16 +780,14 @@ "summary" : "Patches an application template", "operationId" : "patchApplicationTemplate", "parameters" : [ { - "name" : "Authorization", - "in" : "header", - "description" : "User Token", - "required" : true - }, { "name" : "name", "in" : "path", "description" : "Application template name", "required" : true } ], + "security" : [ { + "userToken" : [ ] + } ], "responses" : { "204" : { "description" : "Success", @@ -986,16 +815,14 @@ "summary" : "Updates or creates an application template", "operationId" : "updateOrCreateApplicationTemplateFromYaml", "parameters" : [ { - "name" : "Authorization", - "in" : "header", - "description" : "User Token", - "required" : true - }, { "name" : "name", "in" : "path", "description" : "Application template name", "required" : true } ], + "security" : [ { + "userToken" : [ ] + } ], "responses" : { "200" : { "description" : "Success", @@ -1076,11 +903,9 @@ "tags" : [ "Agent" ], "summary" : "Get an ioFog node configuration", "operationId" : "getIOFogNodeConfig", - "parameters" : [ { - "name" : "Authorization", - "in" : "header", - "description" : "Agent Token", - "required" : true + "parameters" : [ ], + "security" : [ { + "agentToken" : [ ] } ], "responses" : { "200" : { @@ -1103,11 +928,9 @@ "tags" : [ "Agent" ], "summary" : "Updates an ioFog node configuration", "operationId" : "updateIOFogNodeConfig", - "parameters" : [ { - "name" : "Authorization", - "in" : "header", - "description" : "Agent Token", - "required" : true + "parameters" : [ ], + "security" : [ { + "agentToken" : [ ] } ], "responses" : { "204" : { @@ -1135,11 +958,9 @@ "tags" : [ "Agent" ], "summary" : "Gets ioFog node changes", "operationId" : "getIOFogNodeChanges", - "parameters" : [ { - "name" : "Authorization", - "in" : "header", - "description" : "Agent Token", - "required" : true + "parameters" : [ ], + "security" : [ { + "agentToken" : [ ] } ], "responses" : { "200" : { @@ -1165,11 +986,9 @@ "tags" : [ "Agent" ], "summary" : "Resets ioFog node changes list", "operationId" : "resetIOFogNodeChanges", - "parameters" : [ { - "name" : "Authorization", - "in" : "header", - "description" : "Agent Token", - "required" : true + "parameters" : [ ], + "security" : [ { + "agentToken" : [ ] } ], "responses" : { "200" : { @@ -1197,11 +1016,9 @@ "tags" : [ "Agent" ], "summary" : "Posts agent status to ioFog node", "operationId" : "postAgentStatus", - "parameters" : [ { - "name" : "Authorization", - "in" : "header", - "description" : "Agent Token", - "required" : true + "parameters" : [ ], + "security" : [ { + "agentToken" : [ ] } ], "responses" : { "204" : { @@ -1229,11 +1046,9 @@ "tags" : [ "Agent" ], "summary" : "Gets microservices running on an ioFog node", "operationId" : "getAgentMicroservicesList", - "parameters" : [ { - "name" : "Authorization", - "in" : "header", - "description" : "Agent Token", - "required" : true + "parameters" : [ ], + "security" : [ { + "agentToken" : [ ] } ], "responses" : { "200" : { @@ -1263,11 +1078,9 @@ "in" : "path", "description" : "Microservice UUID", "required" : true - }, { - "name" : "Authorization", - "in" : "header", - "description" : "Agent Token", - "required" : true + } ], + "security" : [ { + "agentToken" : [ ] } ], "responses" : { "200" : { @@ -1295,11 +1108,9 @@ "tags" : [ "Agent" ], "summary" : "Gets list of Docker registries", "operationId" : "getRegistriesList", - "parameters" : [ { - "name" : "Authorization", - "in" : "header", - "description" : "Agent Token", - "required" : true + "parameters" : [ ], + "security" : [ { + "agentToken" : [ ] } ], "responses" : { "200" : { @@ -1324,11 +1135,9 @@ "tags" : [ "Agent" ], "summary" : "Get an ioFog node tunnel configuration", "operationId" : "getIOFogNodeTunnelConfig", - "parameters" : [ { - "name" : "Authorization", - "in" : "header", - "description" : "Agent Token", - "required" : true + "parameters" : [ ], + "security" : [ { + "agentToken" : [ ] } ], "responses" : { "200" : { @@ -1356,11 +1165,9 @@ "tags" : [ "Agent" ], "summary" : "Get an ioFog node strace info", "operationId" : "getIOFogNodeStraceInfo", - "parameters" : [ { - "name" : "Authorization", - "in" : "header", - "description" : "Agent Token", - "required" : true + "parameters" : [ ], + "security" : [ { + "agentToken" : [ ] } ], "responses" : { "200" : { @@ -1386,11 +1193,9 @@ "tags" : [ "Agent" ], "summary" : "Posts agent strace to ioFog node", "operationId" : "postIOFogNodeStraceBuffer", - "parameters" : [ { - "name" : "Authorization", - "in" : "header", - "description" : "Agent Token", - "required" : true + "parameters" : [ ], + "security" : [ { + "agentToken" : [ ] } ], "responses" : { "204" : { @@ -1421,11 +1226,9 @@ "tags" : [ "Agent" ], "summary" : "Get change version command", "operationId" : "getChangeVersion", - "parameters" : [ { - "name" : "Authorization", - "in" : "header", - "description" : "Agent Token", - "required" : true + "parameters" : [ ], + "security" : [ { + "agentToken" : [ ] } ], "responses" : { "200" : { @@ -1453,11 +1256,9 @@ "tags" : [ "Agent" ], "summary" : "Updates HAL hardware info", "operationId" : "putHalHardwareInfo", - "parameters" : [ { - "name" : "Authorization", - "in" : "header", - "description" : "Agent Token", - "required" : true + "parameters" : [ ], + "security" : [ { + "agentToken" : [ ] } ], "responses" : { "204" : { @@ -1485,11 +1286,9 @@ "tags" : [ "ioFog" ], "summary" : "Retrieves HAL USB info", "operationId" : "getAgentHalUsbInfo", - "parameters" : [ { - "name" : "Authorization", - "in" : "header", - "description" : "User token", - "required" : true + "parameters" : [ ], + "security" : [ { + "userToken" : [ ] } ], "responses" : { "200" : { @@ -1515,11 +1314,9 @@ "tags" : [ "Agent" ], "summary" : "Updates HAL USB info", "operationId" : "putHalUsbInfo", - "parameters" : [ { - "name" : "Authorization", - "in" : "header", - "description" : "Agent Token", - "required" : true + "parameters" : [ ], + "security" : [ { + "agentToken" : [ ] } ], "responses" : { "204" : { @@ -1547,11 +1344,9 @@ "tags" : [ "Agent" ], "summary" : "Deletes an ioFog node", "operationId" : "deleteAgentNode", - "parameters" : [ { - "name" : "Authorization", - "in" : "header", - "description" : "Agent token", - "required" : true + "parameters" : [ ], + "security" : [ { + "agentToken" : [ ] } ], "responses" : { "204" : { @@ -1576,11 +1371,9 @@ "tags" : [ "Agent" ], "summary" : "Get image snapshot info", "operationId" : "getImageSnapshot", - "parameters" : [ { - "name" : "Authorization", - "in" : "header", - "description" : "Agent Token", - "required" : true + "parameters" : [ ], + "security" : [ { + "agentToken" : [ ] } ], "responses" : { "200" : { @@ -1606,11 +1399,9 @@ "tags" : [ "Agent" ], "summary" : "Put image snapshot info on controller", "operationId" : "putImageSnapshot", - "parameters" : [ { - "name" : "Authorization", - "in" : "header", - "description" : "Agent Token", - "required" : true + "parameters" : [ ], + "security" : [ { + "agentToken" : [ ] } ], "responses" : { "204" : { @@ -1638,11 +1429,9 @@ "tags" : [ "Agent" ], "summary" : "Post tracking info", "operationId" : "postTracking", - "parameters" : [ { - "name" : "Authorization", - "in" : "header", - "description" : "Agent Token", - "required" : true + "parameters" : [ ], + "security" : [ { + "agentToken" : [ ] } ], "responses" : { "204" : { @@ -1662,11 +1451,9 @@ "tags" : [ "Catalog" ], "summary" : "Gets microservices catalog", "operationId" : "getMicroservicesCatalog", - "parameters" : [ { - "name" : "Authorization", - "in" : "header", - "description" : "User Token", - "required" : true + "parameters" : [ ], + "security" : [ { + "userToken" : [ ] } ], "responses" : { "200" : { @@ -1689,11 +1476,9 @@ "tags" : [ "Catalog" ], "summary" : "Creates a new microservice catalog item", "operationId" : "createMicroserviceCatalogItem", - "parameters" : [ { - "name" : "Authorization", - "in" : "header", - "description" : "User Token", - "required" : true + "parameters" : [ ], + "security" : [ { + "userToken" : [ ] } ], "responses" : { "201" : { @@ -1725,16 +1510,14 @@ "summary" : "Gets microservice catalog item info", "operationId" : "getMicroserviceCatalogItem", "parameters" : [ { - "name" : "Authorization", - "in" : "header", - "description" : "User Token", - "required" : true - }, { "name" : "id", "in" : "path", "description" : "Catalog Item Id", "required" : true } ], + "security" : [ { + "userToken" : [ ] + } ], "responses" : { "200" : { "description" : "Catalog Item Info", @@ -1760,16 +1543,14 @@ "summary" : "Deletes a microservice catalog item", "operationId" : "deleteMicroserviceCatalogItem", "parameters" : [ { - "name" : "Authorization", - "in" : "header", - "description" : "User Token", - "required" : true - }, { "name" : "id", "in" : "path", "description" : "Catalog Item Id", "required" : true } ], + "security" : [ { + "userToken" : [ ] + } ], "responses" : { "204" : { "description" : "Success", @@ -1795,16 +1576,14 @@ "summary" : "Updates a microservice catalog item", "operationId" : "updateMicroserviceCatalogItem", "parameters" : [ { - "name" : "Authorization", - "in" : "header", - "description" : "User Token", - "required" : true - }, { "name" : "id", "in" : "path", "description" : "Catalog Item Id", "required" : true } ], + "security" : [ { + "userToken" : [ ] + } ], "responses" : { "204" : { "description" : "Success", @@ -1832,191 +1611,12 @@ } } }, - "/flow" : { + "/microservices" : { "get" : { - "tags" : [ "Flow" ], - "summary" : "Gets list of flows", - "operationId" : "getFlowsList", + "tags" : [ "Microservices" ], + "summary" : "Gets list of microservices", + "operationId" : "getMicroservicesList", "parameters" : [ { - "name" : "Authorization", - "in" : "header", - "description" : "User Token", - "required" : true - } ], - "deprecated" : true, - "responses" : { - "200" : { - "description" : "Success", - "headers" : { - "X-Timestamp" : { - "description" : "FogController server timestamp" - } - } - }, - "401" : { - "description" : "Not Authorized" - }, - "500" : { - "description" : "Internal Server Error" - } - } - }, - "post" : { - "tags" : [ "Flow" ], - "summary" : "Creates a new flow", - "operationId" : "createFlow", - "parameters" : [ { - "name" : "Authorization", - "in" : "header", - "description" : "User Token", - "required" : true - } ], - "deprecated" : true, - "responses" : { - "201" : { - "description" : "Created", - "headers" : { - "X-Timestamp" : { - "description" : "FogController server timestamp" - } - } - }, - "400" : { - "description" : "Bad Request" - }, - "401" : { - "description" : "Not Authorized" - }, - "500" : { - "description" : "Internal Server Error" - } - } - } - }, - "/flow/{id}" : { - "get" : { - "tags" : [ "Flow" ], - "summary" : "Gets flow info", - "operationId" : "getFlowInfo", - "parameters" : [ { - "name" : "Authorization", - "in" : "header", - "description" : "User Token", - "required" : true - }, { - "name" : "id", - "in" : "path", - "description" : "Flow Id", - "required" : true - } ], - "deprecated" : true, - "responses" : { - "200" : { - "description" : "Success", - "headers" : { - "X-Timestamp" : { - "description" : "FogController server timestamp" - } - } - }, - "401" : { - "description" : "Not Authorized" - }, - "404" : { - "description" : "Invalid Flow Id" - }, - "500" : { - "description" : "Internal Server Error" - } - } - }, - "delete" : { - "tags" : [ "Flow" ], - "summary" : "Deletes a flow", - "operationId" : "deleteFlow", - "parameters" : [ { - "name" : "Authorization", - "in" : "header", - "description" : "User Token", - "required" : true - }, { - "name" : "id", - "in" : "path", - "description" : "Flow Id", - "required" : true - } ], - "deprecated" : true, - "responses" : { - "204" : { - "description" : "Success", - "headers" : { - "X-Timestamp" : { - "description" : "FogController server timestamp" - } - } - }, - "401" : { - "description" : "Not Authorized" - }, - "404" : { - "description" : "Invalid Flow Id" - }, - "500" : { - "description" : "Internal Server Error" - } - } - }, - "patch" : { - "tags" : [ "Flow" ], - "summary" : "Updates a flow", - "operationId" : "updateFlow", - "parameters" : [ { - "name" : "Authorization", - "in" : "header", - "description" : "User Token", - "required" : true - }, { - "name" : "id", - "in" : "path", - "description" : "Flow Id", - "required" : true - } ], - "deprecated" : true, - "responses" : { - "204" : { - "description" : "Success", - "headers" : { - "X-Timestamp" : { - "description" : "FogController server timestamp" - } - } - }, - "400" : { - "description" : "Bad Request" - }, - "401" : { - "description" : "Not Authorized" - }, - "404" : { - "description" : "Invalid Flow Id" - }, - "500" : { - "description" : "Internal Server Error" - } - } - } - }, - "/microservices" : { - "get" : { - "tags" : [ "Microservices" ], - "summary" : "Gets list of microservices", - "operationId" : "getMicroservicesList", - "parameters" : [ { - "name" : "Authorization", - "in" : "header", - "description" : "User Token", - "required" : true - }, { "name" : "flowId", "in" : "query", "description" : "Flow Id", @@ -2027,6 +1627,9 @@ "description" : "Application name", "required" : false } ], + "security" : [ { + "userToken" : [ ] + } ], "responses" : { "200" : { "description" : "Success", @@ -2043,40 +1646,6 @@ "description" : "Internal Server Error" } } - }, - "post" : { - "tags" : [ "Microservices" ], - "summary" : "Creates a new microservice on an ioFog node", - "operationId" : "createMicroservice", - "parameters" : [ { - "name" : "Authorization", - "in" : "header", - "description" : "User Token", - "required" : true - } ], - "deprecated" : true, - "responses" : { - "201" : { - "description" : "Created", - "headers" : { - "X-Timestamp" : { - "description" : "FogController server timestamp" - } - } - }, - "400" : { - "description" : "Bad Request" - }, - "401" : { - "description" : "Not Authorized" - }, - "409" : { - "description" : "Duplicate Name" - }, - "500" : { - "description" : "Internal Server Error" - } - } } }, "/microservices/yaml" : { @@ -2084,11 +1653,9 @@ "tags" : [ "Microservices" ], "summary" : "Creates a new microservice in an Application", "operationId" : "createMicroserviceYAML", - "parameters" : [ { - "name" : "Authorization", - "in" : "header", - "description" : "User Token", - "required" : true + "parameters" : [ ], + "security" : [ { + "userToken" : [ ] } ], "responses" : { "201" : { @@ -2120,16 +1687,14 @@ "summary" : "Gets a microservice info", "operationId" : "getMicroserviceInfo", "parameters" : [ { - "name" : "Authorization", - "in" : "header", - "description" : "User Token", - "required" : true - }, { "name" : "uuid", "in" : "path", "description" : "Microservice Uuid", "required" : true } ], + "security" : [ { + "userToken" : [ ] + } ], "responses" : { "200" : { "description" : "Success", @@ -2155,55 +1720,14 @@ "summary" : "Deletes a microservice", "operationId" : "deleteMicroservice", "parameters" : [ { - "name" : "Authorization", - "in" : "header", - "description" : "User Token", - "required" : true - }, { "name" : "uuid", "in" : "path", "description" : "Microservice Uuid", "required" : true } ], - "responses" : { - "204" : { - "description" : "Success", - "headers" : { - "X-Timestamp" : { - "description" : "FogController server timestamp" - } - } - }, - "400" : { - "description" : "Bad Request" - }, - "401" : { - "description" : "Not Authorized" - }, - "404" : { - "description" : "Not Found" - }, - "500" : { - "description" : "Internal Server Error" - } - } - }, - "patch" : { - "tags" : [ "Microservices" ], - "summary" : "Updates a microservice", - "operationId" : "updateMicroservice", - "parameters" : [ { - "name" : "Authorization", - "in" : "header", - "description" : "User Token", - "required" : true - }, { - "name" : "uuid", - "in" : "path", - "description" : "Microservice Uuid", - "required" : true + "security" : [ { + "userToken" : [ ] } ], - "deprecated" : true, "responses" : { "204" : { "description" : "Success", @@ -2222,9 +1746,6 @@ "404" : { "description" : "Not Found" }, - "409" : { - "description" : "Duplicate Name" - }, "500" : { "description" : "Internal Server Error" } @@ -2237,16 +1758,14 @@ "summary" : "Updates a microservice", "operationId" : "updateMicroserviceYAML", "parameters" : [ { - "name" : "Authorization", - "in" : "header", - "description" : "User Token", - "required" : true - }, { "name" : "uuid", "in" : "path", "description" : "Microservice Uuid", "required" : true } ], + "security" : [ { + "userToken" : [ ] + } ], "responses" : { "204" : { "description" : "Success", @@ -2274,112 +1793,20 @@ } } }, - "/microservices/{uuid}/routes/{receiverUuid}" : { - "post" : { - "tags" : [ "Microservices" ], - "summary" : "Creates a route from microservice to receiver", - "operationId" : "createMicroserviceRoute", - "parameters" : [ { - "name" : "Authorization", - "in" : "header", - "description" : "User Token", - "required" : true - }, { - "name" : "uuid", - "in" : "path", - "description" : "Microservice Uuid", - "required" : true - }, { - "name" : "receiverUuid", - "in" : "path", - "description" : "Receiver Microservice Uuid", - "required" : true - } ], - "deprecated" : true, - "responses" : { - "204" : { - "description" : "Created", - "headers" : { - "X-Timestamp" : { - "description" : "FogController server timestamp" - } - } - }, - "400" : { - "description" : "Not Valid" - }, - "401" : { - "description" : "Not Authorized" - }, - "404" : { - "description" : "Not Found" - }, - "500" : { - "description" : "Internal Server Error" - } - } - }, - "delete" : { - "tags" : [ "Microservices" ], - "summary" : "Deletes a route microservice", - "operationId" : "deleteMicroserviceRoute", - "parameters" : [ { - "name" : "Authorization", - "in" : "header", - "description" : "User Token", - "required" : true - }, { - "name" : "uuid", - "in" : "path", - "description" : "Microservice Uuid", - "required" : true - }, { - "name" : "receiverUuid", - "in" : "path", - "description" : "Receiver Microservice Uuid", - "required" : true - } ], - "deprecated" : true, - "responses" : { - "204" : { - "description" : "Success", - "headers" : { - "X-Timestamp" : { - "description" : "FogController server timestamp" - } - } - }, - "400" : { - "description" : "Not Valid" - }, - "401" : { - "description" : "Not Authorized" - }, - "404" : { - "description" : "Not Found" - }, - "500" : { - "description" : "Internal Server Error" - } - } - } - }, "/microservices/{uuid}/port-mapping" : { "get" : { "tags" : [ "Microservices" ], "summary" : "Get a port mapping list for microservice", "operationId" : "getMicroservicePortMapping", "parameters" : [ { - "name" : "Authorization", - "in" : "header", - "description" : "User Token", - "required" : true - }, { "name" : "uuid", "in" : "path", "description" : "Microservice Uuid", "required" : true } ], + "security" : [ { + "userToken" : [ ] + } ], "responses" : { "200" : { "description" : "Created", @@ -2405,16 +1832,14 @@ "summary" : "Creates a port mapping for microservice", "operationId" : "createMicroservicePortMapping", "parameters" : [ { - "name" : "Authorization", - "in" : "header", - "description" : "User Token", - "required" : true - }, { "name" : "uuid", "in" : "path", "description" : "Microservice Uuid", "required" : true } ], + "security" : [ { + "userToken" : [ ] + } ], "responses" : { "201" : { "description" : "Created", @@ -2445,11 +1870,6 @@ "summary" : "Deletes a port mapping for microservice", "operationId" : "deleteMicroservicePortMapping", "parameters" : [ { - "name" : "Authorization", - "in" : "header", - "description" : "User Token", - "required" : true - }, { "name" : "uuid", "in" : "path", "description" : "Microservice Uuid", @@ -2460,6 +1880,9 @@ "description" : "Internal Port", "required" : true } ], + "security" : [ { + "userToken" : [ ] + } ], "responses" : { "204" : { "description" : "Success", @@ -2487,16 +1910,14 @@ "summary" : "Get a volume mapping list for microservice", "operationId" : "getMicroserviceVolumeMapping", "parameters" : [ { - "name" : "Authorization", - "in" : "header", - "description" : "User Token", - "required" : true - }, { "name" : "uuid", "in" : "path", "description" : "Microservice Uuid", "required" : true } ], + "security" : [ { + "userToken" : [ ] + } ], "responses" : { "200" : { "description" : "Success", @@ -2522,16 +1943,14 @@ "summary" : "Creates a volume mapping for microservice", "operationId" : "createMicroserviceVolumeMapping", "parameters" : [ { - "name" : "Authorization", - "in" : "header", - "description" : "User Token", - "required" : true - }, { "name" : "uuid", "in" : "path", "description" : "Microservice Uuid", "required" : true } ], + "security" : [ { + "userToken" : [ ] + } ], "responses" : { "201" : { "description" : "Created", @@ -2562,11 +1981,6 @@ "summary" : "Deletes a volume mapping for microservice", "operationId" : "deleteMicroserviceVolumeMapping", "parameters" : [ { - "name" : "Authorization", - "in" : "header", - "description" : "User Token", - "required" : true - }, { "name" : "uuid", "in" : "path", "description" : "Microservice Uuid", @@ -2577,6 +1991,9 @@ "description" : "Volume id", "required" : true } ], + "security" : [ { + "userToken" : [ ] + } ], "responses" : { "204" : { "description" : "Success", @@ -2607,16 +2024,14 @@ "summary" : "Download image snapshot", "operationId" : "downloadImageSnapshot", "parameters" : [ { - "name" : "Authorization", - "in" : "header", - "description" : "User Token", - "required" : true - }, { "name" : "uuid", "in" : "path", "description" : "Microservice UUID", "required" : true } ], + "security" : [ { + "userToken" : [ ] + } ], "responses" : { "200" : { "description" : "Success", @@ -2642,16 +2057,14 @@ "summary" : "Send request to create image snapshot", "operationId" : "createImageSnapshot", "parameters" : [ { - "name" : "Authorization", - "in" : "header", - "description" : "User Token", - "required" : true - }, { "name" : "uuid", "in" : "path", "description" : "Microservice UUID", "required" : true } ], + "security" : [ { + "userToken" : [ ] + } ], "responses" : { "201" : { "description" : "Created", @@ -2679,11 +2092,6 @@ "summary" : "Gets Strace Data for Microservice", "operationId" : "getMicroserviceStrace", "parameters" : [ { - "name" : "Authorization", - "in" : "header", - "description" : "User Token", - "required" : true - }, { "name" : "uuid", "in" : "path", "description" : "Microservice UUID", @@ -2693,6 +2101,9 @@ "in" : "query", "required" : true } ], + "security" : [ { + "userToken" : [ ] + } ], "responses" : { "200" : { "description" : "Success", @@ -2722,11 +2133,9 @@ "in" : "path", "description" : "Microservice UUID", "required" : true - }, { - "name" : "Authorization", - "in" : "header", - "description" : "User Token", - "required" : true + } ], + "security" : [ { + "userToken" : [ ] } ], "responses" : { "204" : { @@ -2756,16 +2165,14 @@ "summary" : "Enables Microservice Strace Option", "operationId" : "enableMicroserviceStrace", "parameters" : [ { - "name" : "Authorization", - "in" : "header", - "description" : "User Token", - "required" : true - }, { "name" : "uuid", "in" : "path", "description" : "Microservice UUID", "required" : true } ], + "security" : [ { + "userToken" : [ ] + } ], "responses" : { "204" : { "description" : "Success", @@ -2800,11 +2207,9 @@ "in" : "path", "description" : "ioFog node id", "required" : true - }, { - "name" : "Authorization", - "in" : "header", - "description" : "User token", - "required" : true + } ], + "security" : [ { + "userToken" : [ ] } ], "responses" : { "200" : { @@ -2835,11 +2240,9 @@ "in" : "path", "description" : "ioFog node id", "required" : true - }, { - "name" : "Authorization", - "in" : "header", - "description" : "User Token", - "required" : true + } ], + "security" : [ { + "userToken" : [ ] } ], "responses" : { "204" : { @@ -2870,11 +2273,9 @@ "tags" : [ "Registries" ], "summary" : "Gets list of registries", "operationId" : "getRegistryList", - "parameters" : [ { - "name" : "Authorization", - "in" : "header", - "description" : "User token", - "required" : true + "parameters" : [ ], + "security" : [ { + "userToken" : [ ] } ], "responses" : { "200" : { @@ -2897,11 +2298,9 @@ "tags" : [ "Registries" ], "summary" : "Creates new registry", "operationId" : "createRegistry", - "parameters" : [ { - "name" : "Authorization", - "in" : "header", - "description" : "User Token", - "required" : true + "parameters" : [ ], + "security" : [ { + "userToken" : [ ] } ], "responses" : { "201" : { @@ -2934,11 +2333,9 @@ "in" : "path", "description" : "Registry id", "required" : true - }, { - "name" : "Authorization", - "in" : "header", - "description" : "User token", - "required" : true + } ], + "security" : [ { + "userToken" : [ ] } ], "responses" : { "204" : { @@ -2969,11 +2366,9 @@ "in" : "path", "description" : "Registry id", "required" : true - }, { - "name" : "Authorization", - "in" : "header", - "description" : "User token", - "required" : true + } ], + "security" : [ { + "userToken" : [ ] } ], "responses" : { "204" : { @@ -3023,16 +2418,41 @@ } } }, + "/user/profile" : { + "get" : { + "tags" : [ "User" ], + "summary" : "Get current user profile data", + "operationId" : "getUserProfile", + "parameters" : [ ], + "security" : [ { + "userToken" : [ ] + } ], + "responses" : { + "200" : { + "description" : "Success", + "headers" : { + "X-Timestamp" : { + "description" : "FogController server timestamp" + } + } + }, + "401" : { + "description" : "Not Authorized" + }, + "500" : { + "description" : "Internal Server Error" + } + } + } + }, "/routes" : { "get" : { "tags" : [ "Routing" ], "summary" : "Get routes", "operationId" : "getRoutes", - "parameters" : [ { - "name" : "Authorization", - "in" : "header", - "description" : "User Token", - "required" : true + "parameters" : [ ], + "security" : [ { + "userToken" : [ ] } ], "responses" : { "200" : { @@ -3055,11 +2475,9 @@ "tags" : [ "Routing" ], "summary" : "Creates a new route", "operationId" : "createRoute", - "parameters" : [ { - "name" : "Authorization", - "in" : "header", - "description" : "User Token", - "required" : true + "parameters" : [ ], + "security" : [ { + "userToken" : [ ] } ], "responses" : { "201" : { @@ -3091,16 +2509,14 @@ "summary" : "Gets a route info", "operationId" : "getRoute", "parameters" : [ { - "name" : "Authorization", - "in" : "header", - "description" : "User Token", - "required" : true - }, { "name" : "name", "in" : "path", "description" : "Route name", "required" : true } ], + "security" : [ { + "userToken" : [ ] + } ], "responses" : { "200" : { "description" : "Route Info", @@ -3126,16 +2542,14 @@ "summary" : "Deletes a route", "operationId" : "deleteRoute", "parameters" : [ { - "name" : "Authorization", - "in" : "header", - "description" : "User Token", - "required" : true - }, { "name" : "name", "in" : "path", "description" : "Route name", "required" : true } ], + "security" : [ { + "userToken" : [ ] + } ], "responses" : { "204" : { "description" : "Success", @@ -3161,16 +2575,14 @@ "summary" : "Updates a route", "operationId" : "updateRoute", "parameters" : [ { - "name" : "Authorization", - "in" : "header", - "description" : "User Token", - "required" : true - }, { "name" : "name", "in" : "path", "description" : "Route name", "required" : true } ], + "security" : [ { + "userToken" : [ ] + } ], "responses" : { "204" : { "description" : "Success", @@ -3203,11 +2615,9 @@ "tags" : [ "Edge Resource" ], "summary" : "Get Edge Resources", "operationId" : "getEdgeResources", - "parameters" : [ { - "name" : "Authorization", - "in" : "header", - "description" : "User Token", - "required" : true + "parameters" : [ ], + "security" : [ { + "userToken" : [ ] } ], "responses" : { "200" : { @@ -3233,11 +2643,6 @@ "summary" : "Get Specific Edge Resource", "operationId" : "getEdgeResourceDetail", "parameters" : [ { - "name" : "Authorization", - "in" : "header", - "description" : "User Token", - "required" : true - }, { "name" : "name", "in" : "path", "description" : "Edge Resource name", @@ -3248,6 +2653,9 @@ "description" : "Edge Resource version", "required" : true } ], + "security" : [ { + "userToken" : [ ] + } ], "responses" : { "200" : { "description" : "Success", @@ -3270,11 +2678,6 @@ "summary" : "Update/Create Specific Edge Resource", "operationId" : "putEdgeResource", "parameters" : [ { - "name" : "Authorization", - "in" : "header", - "description" : "User Token", - "required" : true - }, { "name" : "name", "in" : "path", "description" : "Edge Resource name", @@ -3285,6 +2688,9 @@ "description" : "Edge Resource version", "required" : true } ], + "security" : [ { + "userToken" : [ ] + } ], "responses" : { "200" : { "description" : "Success", @@ -3307,11 +2713,6 @@ "summary" : "Deletes an Edge Resource", "operationId" : "deleteEdgeResource", "parameters" : [ { - "name" : "Authorization", - "in" : "header", - "description" : "User Token", - "required" : true - }, { "name" : "name", "in" : "path", "description" : "Edge Resource name", @@ -3322,6 +2723,9 @@ "description" : "Edge Resource version", "required" : true } ], + "security" : [ { + "userToken" : [ ] + } ], "responses" : { "204" : { "description" : "Success", @@ -3349,16 +2753,14 @@ "summary" : "Get Specific Edge Resource versions", "operationId" : "getEdgeResourceVersions", "parameters" : [ { - "name" : "Authorization", - "in" : "header", - "description" : "User Token", - "required" : true - }, { "name" : "name", "in" : "path", "description" : "Edge Resource name", "required" : true } ], + "security" : [ { + "userToken" : [ ] + } ], "responses" : { "200" : { "description" : "Success", @@ -3382,11 +2784,9 @@ "tags" : [ "Edge Resource" ], "summary" : "Create Specific Edge Resource", "operationId" : "postEdgeResource", - "parameters" : [ { - "name" : "Authorization", - "in" : "header", - "description" : "User Token", - "required" : true + "parameters" : [ ], + "security" : [ { + "userToken" : [ ] } ], "responses" : { "200" : { @@ -3412,11 +2812,6 @@ "summary" : "Attach Edge Resource to Agent", "operationId" : "postEdgeResourceLink", "parameters" : [ { - "name" : "Authorization", - "in" : "header", - "description" : "User Token", - "required" : true - }, { "name" : "name", "in" : "path", "description" : "Edge Resource Name", @@ -3427,6 +2822,9 @@ "description" : "Edge Resource Version", "required" : true } ], + "security" : [ { + "userToken" : [ ] + } ], "responses" : { "204" : { "description" : "Success", @@ -3452,11 +2850,6 @@ "summary" : "Detach Edge Resource from Agent", "operationId" : "deleteEdgeResourceLink", "parameters" : [ { - "name" : "Authorization", - "in" : "header", - "description" : "User Token", - "required" : true - }, { "name" : "name", "in" : "path", "description" : "Edge Resource Name", @@ -3467,6 +2860,9 @@ "description" : "Edge Resource Version", "required" : true } ], + "security" : [ { + "userToken" : [ ] + } ], "responses" : { "204" : { "description" : "Success", diff --git a/docs/swagger.yaml b/docs/swagger.yaml index 81dcc1117..88a0f083d 100755 --- a/docs/swagger.yaml +++ b/docs/swagger.yaml @@ -1,4 +1,4 @@ -openapi: "3.0.0" +openapi : "3.0.0" info: version: 1.0.0 title: Datasance PoT-ioFog Controller @@ -409,38 +409,6 @@ paths: description: Not Found "500": description: Internal Server Error - post: - tags: - - Application - summary: Creates an application - operationId: createApplication - deprecated: true - security: - - userToken: [] - requestBody: - content: - application/json: - schema: - oneOf: - - $ref: "#/components/schemas/ApplicationCreateRequest" - - $ref: "#/components/schemas/ApplicationCreateFromTemplateRequest" - required: true - responses: - "200": - description: Success - headers: - X-Timestamp: - description: FogController server timestamp - schema: - type: number - content: - application/json: - schema: - $ref: "#/components/schemas/ApplicationCreateResponse" - "400": - description: Bad Request - "500": - description: Internal Server Error /application/yaml: post: tags: @@ -475,43 +443,7 @@ paths: description: Bad Request "500": description: Internal Server Error - "/application/{name}": - put: - tags: - - Application - summary: Updates an application - deprecated: true - operationId: updateApplication - parameters: - - in: path - name: name - description: Application name - required: true - schema: - type: string - security: - - userToken: [] - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/ApplicationCreateRequest" - required: true - responses: - "204": - description: Success - headers: - X-Timestamp: - description: FogController server timestamp - schema: - type: number - "400": - description: Bad Request - "404": - description: Not Found - "500": - description: Internal Server Error patch: tags: - Application @@ -678,33 +610,6 @@ paths: description: Not Found "500": description: Internal Server Error - /applicationTemplate: - post: - tags: - - Application Template - summary: Creates an application template - operationId: createApplicationTemplate - deprecated: true - security: - - userToken: [] - requestBody: - $ref: "#/components/requestBodies/ApplicationTemplateCreateRequest" - responses: - "200": - description: Success - headers: - X-Timestamp: - description: FogController server timestamp - schema: - type: number - content: - application/json: - schema: - $ref: "#/components/schemas/ApplicationTemplateCreateResponse" - "400": - description: Bad Request - "500": - description: Internal Server Error /applicationTemplate/yaml: post: tags: @@ -740,39 +645,6 @@ paths: "500": description: Internal Server Error "/applicationTemplate/{name}": - put: - tags: - - Application Template - summary: Updates or creates an application template - operationId: updateOrCreateApplicationTemplate - deprecated: true - parameters: - - in: path - name: name - description: Application template name - required: true - schema: - type: string - security: - - userToken: [] - requestBody: - $ref: "#/components/requestBodies/ApplicationTemplateCreateRequest" - responses: - "200": - description: Success - headers: - X-Timestamp: - description: FogController server timestamp - schema: - type: number - content: - application/json: - schema: - $ref: "#/components/schemas/ApplicationTemplateCreateResponse" - "400": - description: Bad Request - "500": - description: Internal Server Error patch: tags: - Application Template @@ -1599,158 +1471,6 @@ paths: description: Invalid Catalog Item Id "500": description: Internal Server Error - /flow: - get: - tags: - - Flow - summary: Gets list of flows - deprecated: true - operationId: getFlowsList - security: - - userToken: [] - responses: - "200": - description: Success - headers: - X-Timestamp: - description: FogController server timestamp - schema: - type: number - content: - application/json: - schema: - $ref: "#/components/schemas/GetFlowsResponse" - "401": - description: Not Authorized - "500": - description: Internal Server Error - post: - tags: - - Flow - summary: Creates a new flow - deprecated: true - operationId: createFlow - security: - - userToken: [] - requestBody: - $ref: "#/components/requestBodies/NewFlowRequest" - responses: - "201": - description: Created - headers: - X-Timestamp: - description: FogController server timestamp - schema: - type: number - content: - application/json: - schema: - type: object - properties: - id: - type: string - "400": - description: Bad Request - "401": - description: Not Authorized - "500": - description: Internal Server Error - "/flow/{id}": - get: - tags: - - Flow - summary: Gets flow info - operationId: getFlowInfo - deprecated: true - parameters: - - in: path - name: id - description: Flow Id - required: true - schema: - type: string - security: - - userToken: [] - responses: - "200": - description: Success - headers: - X-Timestamp: - description: FogController server timestamp - schema: - type: number - content: - application/json: - schema: - $ref: "#/components/schemas/FlowInfoResponse" - "401": - description: Not Authorized - "404": - description: Invalid Flow Id - "500": - description: Internal Server Error - patch: - tags: - - Flow - summary: Updates a flow - operationId: updateFlow - deprecated: true - parameters: - - in: path - name: id - description: Flow Id - required: true - schema: - type: string - security: - - userToken: [] - requestBody: - $ref: "#/components/requestBodies/NewFlowRequest" - responses: - "204": - description: Success - headers: - X-Timestamp: - description: FogController server timestamp - schema: - type: number - "400": - description: Bad Request - "401": - description: Not Authorized - "404": - description: Invalid Flow Id - "500": - description: Internal Server Error - delete: - tags: - - Flow - summary: Deletes a flow - operationId: deleteFlow - deprecated: true - parameters: - - in: path - name: id - description: Flow Id - required: true - schema: - type: string - security: - - userToken: [] - responses: - "204": - description: Success - headers: - X-Timestamp: - description: FogController server timestamp - schema: - type: number - "401": - description: Not Authorized - "404": - description: Invalid Flow Id - "500": - description: Internal Server Error /microservices: get: tags: @@ -1789,44 +1509,6 @@ paths: description: Not Authorized "500": description: Internal Server Error - post: - tags: - - Microservices - summary: Creates a new microservice on an ioFog node - operationId: createMicroservice - deprecated: true - security: - - userToken: [] - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/NewMicroserviceRequest" - description: New Microservice Info - required: true - responses: - "201": - description: Created - headers: - X-Timestamp: - description: FogController server timestamp - schema: - type: number - content: - application/json: - schema: - type: object - properties: - uuid: - type: string - "400": - description: Bad Request - "401": - description: Not Authorized - "409": - description: Duplicate Name - "500": - description: Internal Server Error /microservices/yaml: post: tags: @@ -1901,46 +1583,6 @@ paths: description: Not Found "500": description: Internal Server Error - patch: - tags: - - Microservices - summary: Updates a microservice - deprecated: true - operationId: updateMicroservice - parameters: - - in: path - name: uuid - description: Microservice Uuid - required: true - schema: - type: string - security: - - userToken: [] - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/UpdateMicroserviceRequest" - description: Microservice Info - required: true - responses: - "204": - description: Success - headers: - X-Timestamp: - description: FogController server timestamp - schema: - type: number - "400": - description: Bad Request - "401": - description: Not Authorized - "404": - description: Not Found - "409": - description: Duplicate Name - "500": - description: Internal Server Error delete: tags: - Microservices @@ -2014,82 +1656,6 @@ paths: description: Duplicate Name "500": description: Internal Server Error - - "/microservices/{uuid}/routes/{receiverUuid}": - post: - tags: - - Microservices - summary: Creates a route from microservice to receiver - operationId: createMicroserviceRoute - deprecated: true - parameters: - - in: path - name: uuid - description: Microservice Uuid - required: true - schema: - type: string - - in: path - name: receiverUuid - description: Receiver Microservice Uuid - required: true - schema: - type: string - security: - - userToken: [] - responses: - "204": - description: Created - headers: - X-Timestamp: - description: FogController server timestamp - schema: - type: number - "400": - description: Not Valid - "401": - description: Not Authorized - "404": - description: Not Found - "500": - description: Internal Server Error - delete: - tags: - - Microservices - summary: Deletes a route microservice - operationId: deleteMicroserviceRoute - deprecated: true - parameters: - - in: path - name: uuid - description: Microservice Uuid - required: true - schema: - type: string - - in: path - name: receiverUuid - description: Receiver Microservice Uuid - required: true - schema: - type: string - security: - - userToken: [] - responses: - "204": - description: Success - headers: - X-Timestamp: - description: FogController server timestamp - schema: - type: number - "400": - description: Not Valid - "401": - description: Not Authorized - "404": - description: Not Found - "500": - description: Internal Server Error "/microservices/{uuid}/port-mapping": post: tags: @@ -2714,6 +2280,30 @@ paths: description: bad request "401": description: incorrect credentials + /user/profile: + get: + tags: + - User + summary: Get current user profile data + operationId: getUserProfile + security: + - userToken: [] + responses: + "200": + description: Success + headers: + X-Timestamp: + description: FogController server timestamp + schema: + type: number + content: + application/json: + schema: + $ref: "#/components/schemas/UserProfileDetailsResponse" + "401": + description: Not Authorized + "500": + description: Internal Server Error /routes: get: tags: @@ -3191,11 +2781,11 @@ servers: components: securitySchemes: userToken: - type: Bearer - in: header - name: Authorization + type: http + scheme: bearer + bearerFormat: JWT agentToken: - type: Bearer + type: apiKey in: header name: Authorization requestBodies: @@ -4622,6 +4212,31 @@ components: properties: accessToken: type: string + UserProfileDetailsResponse: + type: object + properties: + userinfo: + type: array + items: + properties: + sub: + type: string + SubscriptionKey: + type: string + email_verified: + type: string + name: + type: string + preferred_username: + type: string + locale: + type: string + given_name: + type: string + family_name: + type: string + email: + type: string VersionCommandResponse: type: object required: diff --git a/package-lock.json b/package-lock.json index 8948b350b..b012a4d5f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -22,12 +22,15 @@ "daemonize2": "0.4.2", "ejs": "3.1.7", "express": "4.17.3", + "express-session": "1.18.0", "formidable": "1.2.1", "ftp": "0.3.10", "helmet": "3.21.2", + "https": "1.0.0", "is-elevated": "3.0.0", "js-yaml": "3.14.1", "jsonschema": "1.2.5", + "keycloak-connect": "24.0.1", "minimatch": "3.1.2", "moment": "2.29.4", "moment-timezone": "0.5.38", @@ -1489,6 +1492,12 @@ "integrity": "sha512-sXXKG+uL9IrKqViTtao2Ws6dy0znu9sOaP1di/jKGW1M6VssO8vlpXCQcpZ+jisQ1tTFAC5Jo/EOzFbggBagFQ==", "dev": true }, + "node_modules/@testim/chrome-version": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@testim/chrome-version/-/chrome-version-1.1.4.tgz", + "integrity": "sha512-kIhULpw9TrGYnHp/8VfdcneIcxKnLixmADtukQRtJUmsVlMg0niMkwV0xZmi8hqa57xqilIHjWFA0GKvEjVU5g==", + "optional": true + }, "node_modules/@tootallnate/once": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", @@ -1498,6 +1507,12 @@ "node": ">= 6" } }, + "node_modules/@tootallnate/quickjs-emscripten": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz", + "integrity": "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==", + "optional": true + }, "node_modules/@types/chai": { "version": "4.3.12", "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.12.tgz", @@ -1561,6 +1576,15 @@ "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.11.9.tgz", "integrity": "sha512-FCTsikRozryfayPuiI46QzH3fnrOoctTjvOYZkho9BTFLCOZ2rgZJHMOVgCOfttjPJcgOx52EpkY0CMfy87MIw==" }, + "node_modules/@types/yauzl": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz", + "integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==", + "optional": true, + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@ungap/promise-all-settled": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz", @@ -1956,6 +1980,17 @@ "safer-buffer": "~2.1.0" } }, + "node_modules/asn1.js": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", + "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", + "dependencies": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "safer-buffer": "^2.1.0" + } + }, "node_modules/assert-plus": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", @@ -1973,6 +2008,24 @@ "node": "*" } }, + "node_modules/ast-types": { + "version": "0.13.4", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz", + "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==", + "optional": true, + "dependencies": { + "tslib": "^2.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ast-types/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "optional": true + }, "node_modules/astral-regex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", @@ -2150,6 +2203,15 @@ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, + "node_modules/basic-ftp": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.0.5.tgz", + "integrity": "sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==", + "optional": true, + "engines": { + "node": ">=10.0.0" + } + }, "node_modules/bcrypt-pbkdf": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", @@ -2222,6 +2284,11 @@ "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" }, + "node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, "node_modules/body-parser": { "version": "1.20.2", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", @@ -2295,6 +2362,11 @@ "node": ">=8" } }, + "node_modules/brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==" + }, "node_modules/brotli": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/brotli/-/brotli-1.3.3.tgz", @@ -2365,6 +2437,15 @@ "ieee754": "^1.1.13" } }, + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "optional": true, + "engines": { + "node": "*" + } + }, "node_modules/buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", @@ -2747,6 +2828,39 @@ "node": ">=10" } }, + "node_modules/chromedriver": { + "version": "122.0.6", + "resolved": "https://registry.npmjs.org/chromedriver/-/chromedriver-122.0.6.tgz", + "integrity": "sha512-Q0r+QlUtiJWMQ5HdYaFa0CtBmLFq3n5JWfmq9mOC00UMBvWxku09gUkvBt457QnYfTM/XHqY/HTFOxHvATnTmA==", + "hasInstallScript": true, + "optional": true, + "dependencies": { + "@testim/chrome-version": "^1.1.4", + "axios": "^1.6.7", + "compare-versions": "^6.1.0", + "extract-zip": "^2.0.1", + "proxy-agent": "^6.4.0", + "proxy-from-env": "^1.1.0", + "tcp-port-used": "^1.0.2" + }, + "bin": { + "chromedriver": "bin/chromedriver" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/chromedriver/node_modules/axios": { + "version": "1.6.8", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.8.tgz", + "integrity": "sha512-v/ZHtJDU39mDpyBoFVkETcd/uNdxrWRrg3bKpOKzXFA6Bvqopts6ALSMU3y6ijYxbw2B+wPrIv46egTzJXCLGQ==", + "optional": true, + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, "node_modules/circular-json": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", @@ -3054,6 +3168,12 @@ "dot-prop": "^5.1.0" } }, + "node_modules/compare-versions": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-6.1.0.tgz", + "integrity": "sha512-LNZQXhqUvqUTotpZ00qLSaify3b4VFD588aRr8MKFw4CMUr98ytzCW5wDH5qx/DEY5kCDXcbcRuCqL0szEf2tg==", + "optional": true + }, "node_modules/component-emitter": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.1.tgz", @@ -3408,6 +3528,15 @@ "resolved": "https://registry.npmjs.org/dasherize/-/dasherize-2.0.0.tgz", "integrity": "sha512-APql/TZ6FdLEpf2z7/X2a2zyqK8juYtqaSVqxw9mYoQ64CXkfU15AeLh8pUszT8+fnYjgm6t0aIYpWKJbnLkuA==" }, + "node_modules/data-uri-to-buffer": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-6.0.2.tgz", + "integrity": "sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==", + "optional": true, + "engines": { + "node": ">= 14" + } + }, "node_modules/dateformat": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", @@ -3502,7 +3631,7 @@ "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 + "devOptional": true }, "node_modules/default-require-extensions": { "version": "3.0.1", @@ -3560,6 +3689,20 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/degenerator": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-5.0.1.tgz", + "integrity": "sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==", + "optional": true, + "dependencies": { + "ast-types": "^0.13.4", + "escodegen": "^2.1.0", + "esprima": "^4.0.1" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/deglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/deglob/-/deglob-2.1.1.tgz", @@ -3914,6 +4057,20 @@ "integrity": "sha512-vJ+/LmKja/St8Ofq4JGMFVZuwG7ECU6akjNSn2/g6nv8xbIBOWGlEs+WA8/3XaWkU0Nlyu0iFGgOxC4mpgFjgA==", "dev": true }, + "node_modules/elliptic": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.5.tgz", + "integrity": "sha512-7EjbcmUm17NQFu4Pmgmq2olYMj8nwMnpcddByChSUjArp8F5DQWcIcpriwO4ZToLNAJig0yiyjswfyGNje/ixw==", + "dependencies": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + } + }, "node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", @@ -4315,6 +4472,36 @@ "node": ">=0.8.0" } }, + "node_modules/escodegen": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", + "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", + "optional": true, + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=6.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/escodegen/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "optional": true, + "engines": { + "node": ">=4.0" + } + }, "node_modules/eslint": { "version": "5.14.1", "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.14.1.tgz", @@ -4934,7 +5121,7 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, + "devOptional": true, "engines": { "node": ">=0.10.0" } @@ -5054,6 +5241,37 @@ "node": ">= 0.10.0" } }, + "node_modules/express-session": { + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/express-session/-/express-session-1.18.0.tgz", + "integrity": "sha512-m93QLWr0ju+rOwApSsyso838LQwgfs44QtOP/WBiwtAgPIo/SAh1a5c6nn2BR6mFNZehTpqKDESzP+fRHVbxwQ==", + "dependencies": { + "cookie": "0.6.0", + "cookie-signature": "1.0.7", + "debug": "2.6.9", + "depd": "~2.0.0", + "on-headers": "~1.0.2", + "parseurl": "~1.3.3", + "safe-buffer": "5.2.1", + "uid-safe": "~2.1.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/express-session/node_modules/cookie": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/express-session/node_modules/cookie-signature": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.7.tgz", + "integrity": "sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA==" + }, "node_modules/express/node_modules/body-parser": { "version": "1.19.2", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.2.tgz", @@ -5169,6 +5387,64 @@ "node": ">=4" } }, + "node_modules/extract-zip": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", + "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", + "optional": true, + "dependencies": { + "debug": "^4.1.1", + "get-stream": "^5.1.0", + "yauzl": "^2.10.0" + }, + "bin": { + "extract-zip": "cli.js" + }, + "engines": { + "node": ">= 10.17.0" + }, + "optionalDependencies": { + "@types/yauzl": "^2.9.1" + } + }, + "node_modules/extract-zip/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "optional": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/extract-zip/node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "optional": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/extract-zip/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==", + "optional": true + }, "node_modules/extsprintf": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", @@ -5235,6 +5511,15 @@ "reusify": "^1.0.4" } }, + "node_modules/fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", + "optional": true, + "dependencies": { + "pend": "~1.2.0" + } + }, "node_modules/feature-policy": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/feature-policy/-/feature-policy-0.3.0.tgz", @@ -5455,9 +5740,9 @@ "dev": true }, "node_modules/follow-redirects": { - "version": "1.15.5", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz", - "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==", + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", "funding": [ { "type": "individual", @@ -5927,6 +6212,44 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/get-uri": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.3.tgz", + "integrity": "sha512-BzUrJBS9EcUb4cFol8r4W3v1cPsSyajLSthNkz5BxbpDcHN5tIrM10E2eNvfnvBn3DaT3DUgx0OpsBKkaOpanw==", + "optional": true, + "dependencies": { + "basic-ftp": "^5.0.2", + "data-uri-to-buffer": "^6.0.2", + "debug": "^4.3.4", + "fs-extra": "^11.2.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/get-uri/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "optional": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/get-uri/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==", + "optional": true + }, "node_modules/getpass": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", @@ -6293,6 +6616,15 @@ "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", "optional": true }, + "node_modules/hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dependencies": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, "node_modules/hasha": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/hasha/-/hasha-5.2.2.tgz", @@ -6396,6 +6728,16 @@ "node": ">=4.0.0" } }, + "node_modules/hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", + "dependencies": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, "node_modules/hook-std": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/hook-std/-/hook-std-2.0.0.tgz", @@ -6558,6 +6900,11 @@ "node": ">= 6.15.1" } }, + "node_modules/https": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https/-/https-1.0.0.tgz", + "integrity": "sha512-4EC57ddXrkaF0x83Oj8sM6SLQHAWXw90Skqu2M4AEWENZ3F02dFJE/GARA8igO79tcgYqGrD7ae4f5L3um2lgg==" + }, "node_modules/https-proxy-agent": { "version": "7.0.4", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz", @@ -7238,6 +7585,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/is-url": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz", + "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==", + "optional": true + }, "node_modules/is-weakref": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", @@ -7259,6 +7612,29 @@ "node": ">=0.10.0" } }, + "node_modules/is2": { + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/is2/-/is2-2.0.9.tgz", + "integrity": "sha512-rZkHeBn9Zzq52sd9IUIV3a5mfwBY+o2HePMh0wkGBM4z4qjvy2GwVxQ6nNXSfw6MmVP6gf1QIlWjiOavhM3x5g==", + "optional": true, + "dependencies": { + "deep-is": "^0.1.3", + "ip-regex": "^4.1.0", + "is-url": "^1.2.4" + }, + "engines": { + "node": ">=v0.10.0" + } + }, + "node_modules/is2/node_modules/ip-regex": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-4.3.0.tgz", + "integrity": "sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q==", + "optional": true, + "engines": { + "node": ">=8" + } + }, "node_modules/isarray": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", @@ -8000,6 +8376,30 @@ "integrity": "sha512-g3UB796vUFIY90VIv/WX3L2c8CS2MdWUww3CNrYmqza1Fg0DURc2K/O4YrnklBdQarSJ/y8JnJYDGc+1iumQjg==", "dev": true }, + "node_modules/jwk-to-pem": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/jwk-to-pem/-/jwk-to-pem-2.0.5.tgz", + "integrity": "sha512-L90jwellhO8jRKYwbssU9ifaMVqajzj3fpRjDKcsDzrslU9syRbFqfkXtT4B89HYAap+xsxNcxgBSB09ig+a7A==", + "dependencies": { + "asn1.js": "^5.3.0", + "elliptic": "^6.5.4", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/keycloak-connect": { + "version": "24.0.1", + "resolved": "https://registry.npmjs.org/keycloak-connect/-/keycloak-connect-24.0.1.tgz", + "integrity": "sha512-DlXI6fPR+t58pKVECxvOua5S/rws0CU3yz2juxKQor4b8PKoY0sN/QZ2vxBGPHmvMKtH8VodmPJA2k/VoiD5uw==", + "dependencies": { + "jwk-to-pem": "^2.0.0" + }, + "engines": { + "node": ">=14" + }, + "optionalDependencies": { + "chromedriver": "latest" + } + }, "node_modules/kind-of": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", @@ -8721,6 +9121,16 @@ "node": ">=4" } }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" + }, + "node_modules/minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==" + }, "node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -9270,6 +9680,15 @@ "resolved": "https://registry.npmjs.org/nerf-dart/-/nerf-dart-1.0.0.tgz", "integrity": "sha512-EZSPZB70jiVsivaBLYDCyntd5eH8NTSMOn3rB+HxwdmKThGELLdYv8qVIMWvZEFy9w8ZZpW9h9OB32l1rGtj7g==" }, + "node_modules/netmask": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz", + "integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==", + "optional": true, + "engines": { + "node": ">= 0.4.0" + } + }, "node_modules/newman": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/newman/-/newman-5.3.2.tgz", @@ -12620,6 +13039,75 @@ "node": ">=6" } }, + "node_modules/pac-proxy-agent": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-7.0.1.tgz", + "integrity": "sha512-ASV8yU4LLKBAjqIPMbrgtaKIvxQri/yh2OpI+S6hVa9JRkUI3Y3NPFbfngDtY7oFtSMD3w31Xns89mDa3Feo5A==", + "optional": true, + "dependencies": { + "@tootallnate/quickjs-emscripten": "^0.23.0", + "agent-base": "^7.0.2", + "debug": "^4.3.4", + "get-uri": "^6.0.1", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.2", + "pac-resolver": "^7.0.0", + "socks-proxy-agent": "^8.0.2" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/pac-proxy-agent/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "optional": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/pac-proxy-agent/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==", + "optional": true + }, + "node_modules/pac-proxy-agent/node_modules/socks-proxy-agent": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.2.tgz", + "integrity": "sha512-8zuqoLv1aP/66PHF5TqwJ7Czm3Yv32urJQHrVyhD7mmA6d61Zv8cIXQYPTWwmg6qlupnPvs/QKDmfa4P/qct2g==", + "optional": true, + "dependencies": { + "agent-base": "^7.0.2", + "debug": "^4.3.4", + "socks": "^2.7.1" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/pac-resolver": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-7.0.1.tgz", + "integrity": "sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==", + "optional": true, + "dependencies": { + "degenerator": "^5.0.0", + "netmask": "^2.0.2" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/package-hash": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-4.0.0.tgz", @@ -12780,6 +13268,12 @@ "node": "*" } }, + "node_modules/pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", + "optional": true + }, "node_modules/performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", @@ -13478,6 +13972,71 @@ "node": ">= 0.10" } }, + "node_modules/proxy-agent": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.4.0.tgz", + "integrity": "sha512-u0piLU+nCOHMgGjRbimiXmA9kM/L9EHh3zL81xCdp7m+Y2pHIsnmbdDoEDoAz5geaonNR6q6+yOPQs6n4T6sBQ==", + "optional": true, + "dependencies": { + "agent-base": "^7.0.2", + "debug": "^4.3.4", + "http-proxy-agent": "^7.0.1", + "https-proxy-agent": "^7.0.3", + "lru-cache": "^7.14.1", + "pac-proxy-agent": "^7.0.1", + "proxy-from-env": "^1.1.0", + "socks-proxy-agent": "^8.0.2" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/proxy-agent/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "optional": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/proxy-agent/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "optional": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/proxy-agent/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==", + "optional": true + }, + "node_modules/proxy-agent/node_modules/socks-proxy-agent": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.2.tgz", + "integrity": "sha512-8zuqoLv1aP/66PHF5TqwJ7Czm3Yv32urJQHrVyhD7mmA6d61Zv8cIXQYPTWwmg6qlupnPvs/QKDmfa4P/qct2g==", + "optional": true, + "dependencies": { + "agent-base": "^7.0.2", + "debug": "^4.3.4", + "socks": "^2.7.1" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/proxy-from-env": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", @@ -13560,6 +14119,14 @@ "node": ">=8" } }, + "node_modules/random-bytes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz", + "integrity": "sha512-iv7LhNVO047HzYR3InF6pUcUsPQiHTM1Qal51DcGSuZFBil1aBBWG5eHPNek7bvILMaYJ/8RU1e8w1AMdHmLQQ==", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", @@ -16396,6 +16963,39 @@ "node": ">=10" } }, + "node_modules/tcp-port-used": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/tcp-port-used/-/tcp-port-used-1.0.2.tgz", + "integrity": "sha512-l7ar8lLUD3XS1V2lfoJlCBaeoaWo/2xfYt81hM7VlvR4RrMVFqfmzfhLVk40hAb368uitje5gPtBRL1m/DGvLA==", + "optional": true, + "dependencies": { + "debug": "4.3.1", + "is2": "^2.0.6" + } + }, + "node_modules/tcp-port-used/node_modules/debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "optional": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/tcp-port-used/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==", + "optional": true + }, "node_modules/teleport-javascript": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/teleport-javascript/-/teleport-javascript-1.0.0.tgz", @@ -16790,6 +17390,17 @@ "node": ">=0.8.0" } }, + "node_modules/uid-safe": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.5.tgz", + "integrity": "sha512-KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA==", + "dependencies": { + "random-bytes": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/umzug": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/umzug/-/umzug-2.2.0.tgz", @@ -17534,6 +18145,16 @@ "node": ">=8" } }, + "node_modules/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", + "optional": true, + "dependencies": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + }, "node_modules/yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", diff --git a/scripts/cli-tests.js b/scripts/cli-tests.js index a9866bb4e..7f8f1148a 100644 --- a/scripts/cli-tests.js +++ b/scripts/cli-tests.js @@ -92,7 +92,6 @@ function testConfigSection () { // " -h testHomeUrl -a testEmailAddress -w testEmailPassword -s testEmailService -d testLogDir -z 555")); hasSomeResponse(testCommand('config list')) responseEquals(testCommand('config dev-mode -o'), 'Dev mode state updated successfully.') - responseEquals(testCommand('config email-activation -f'), 'Email activation state updated successfully.') } function testTunnelSection () { diff --git a/src/cli/config.js b/src/cli/config.js index 438dd55f0..748acf367 100644 --- a/src/cli/config.js +++ b/src/cli/config.js @@ -59,34 +59,6 @@ class Config extends BaseCLIHandler { description: 'Path to SSL intermediate certificate file', group: constants.CMD_ADD }, - { - name: 'home-url', - alias: 'h', - type: String, - description: 'Home page url for email activation links', - group: constants.CMD_ADD - }, - { - name: 'email-address', - alias: 'a', - type: String, - description: 'Email address to send activations from', - group: constants.CMD_ADD - }, - { - name: 'email-password', - alias: 'w', - type: String, - description: 'Email password to send activations from', - group: constants.CMD_ADD - }, - { - name: 'email-service', - alias: 's', - type: String, - description: 'Email service to send activations', - group: constants.CMD_ADD - }, { name: 'log-dir', alias: 'd', @@ -107,27 +79,12 @@ class Config extends BaseCLIHandler { type: CliDataTypes.Integer, description: 'Log files count', group: constants.CMD_ADD - }, - { - name: 'on', - alias: 'o', - type: Boolean, - description: 'Enable', - group: [constants.CMD_DEV_MODE, constants.CMD_EMAIL_ACTIVATION] - }, - { - name: 'off', - alias: 'f', - type: Boolean, - description: 'Disable', - group: [constants.CMD_DEV_MODE, constants.CMD_EMAIL_ACTIVATION] } ] this.commands = { [constants.CMD_ADD]: 'Add a new config value.', [constants.CMD_LIST]: 'Display current config.', - [constants.CMD_DEV_MODE]: 'Dev mode config.', - [constants.CMD_EMAIL_ACTIVATION]: 'Email activation config.' + [constants.CMD_DEV_MODE]: 'Dev mode config.' } } @@ -212,26 +169,6 @@ const _addConfigOption = async function (options) { onSuccess() }) - await updateConfig(options.homeUrl, 'home-url', 'Email:HomeUrl', (onSuccess) => { - config.set('Email:HomeUrl', options.homeUrl) - onSuccess() - }) - - await updateConfig(options.emailAddress, 'email-address', 'Email:Address', (onSuccess) => { - config.set('Email:Address', options.emailAddress) - onSuccess() - }) - - if (options.emailPassword) { - config.set('Email:Password', AppHelper.encryptText(options.emailPassword, config.get('Email:Address'))) - logger.cliRes('Config option email-password has been updated.') - } - - await updateConfig(options.emailService, 'email-service', 'Email:Service', (onSuccess) => { - config.set('Email:Service', options.emailService) - onSuccess() - }) - await updateConfig(options.logDir, 'log-dir', 'Service:LogsDirectory', (onSuccess) => { config.set('Service:LogsDirectory', options.logDir) onSuccess() diff --git a/src/cli/controller.js b/src/cli/controller.js index c02fece71..d5f98d4f6 100644 --- a/src/cli/controller.js +++ b/src/cli/controller.js @@ -25,13 +25,12 @@ class Controller extends BaseCLIHandler { { name: 'command', defaultOption: true, - description: 'status, email-activation, fog-types, version', + description: 'status, fog-types, version', group: constants.CMD } ] this.commands = { [constants.CMD_STATUS]: 'Display iofog-controller service status.', - [constants.CMD_EMAIL_ACTIVATION]: 'Is email activation.', [constants.CMD_FOG_TYPES]: 'List all Fog-types.', [constants.CMD_VERSION]: 'Display iofog-controller service version.' } diff --git a/src/config/constants.js b/src/config/constants.js index 4f1c01926..0d3d3ae8c 100644 --- a/src/config/constants.js +++ b/src/config/constants.js @@ -18,9 +18,6 @@ module.exports = { 'Server:Port': 51121, 'Server:DevMode': false, - 'Email:ActivationEnabled': false, - 'Email:HomeUrl': 'https://datasance.com', - 'Service:LogsDirectory': '/var/log/iofog-controller', 'Service:LogsFileSize': 10485760, 'Service:LogsFileCount': 10, diff --git a/src/config/default.json b/src/config/default.json index ae08bdbc6..e76bd75b4 100644 --- a/src/config/default.json +++ b/src/config/default.json @@ -9,10 +9,6 @@ "Port": 51121, "DevMode": false }, - "Email": { - "ActivationEnabled": false, - "HomeUrl": "https://google.com" - }, "Service": { "LogsDirectory": "/var/log/iofog-controller", "LogsFileSize": 10485760, diff --git a/src/config/development.json b/src/config/development.json index 3182f2d41..0fb8ec1a5 100644 --- a/src/config/development.json +++ b/src/config/development.json @@ -9,17 +9,13 @@ "Port": 51121, "DevMode": true }, - "Email": { - "ActivationEnabled": false, - "HomeUrl": "https://google.com" - }, "Service": { "LogsDirectory": "/var/log/iofog-controller", "LogsFileSize": 10485760, "LogsFileCount": 10 }, "Settings": { - "FogTokenExpirationIntervalSeconds": 3600000, + "FogTokenExpirationIntervalSeconds": 3600, "FogStatusUpdateIntervalSeconds": 30, "FogStatusUpdateTolerance": 3 }, diff --git a/src/config/production.json b/src/config/production.json index 3f78f2ec9..e8deb45f3 100644 --- a/src/config/production.json +++ b/src/config/production.json @@ -9,9 +9,6 @@ "Port": 51121, "DevMode": true }, - "Email": { - "ActivationEnabled": false - }, "Service": { "LogsDirectory": "/var/log/iofog-controller", "LogsFileSize": 10485760, diff --git a/src/config/test.json b/src/config/test.json index d372cd118..048637511 100644 --- a/src/config/test.json +++ b/src/config/test.json @@ -2,9 +2,6 @@ "Server": { "DevMode": true }, - "Email": { - "ActivationEnabled": false - }, "Database": { "Provider": "sqlite", "Config": { diff --git a/src/controllers/user-controller.js b/src/controllers/user-controller.js index 9011a41a8..4ab3fceb9 100644 --- a/src/controllers/user-controller.js +++ b/src/controllers/user-controller.js @@ -27,6 +27,11 @@ const userLoginEndPoint = async function (req) { return UserService.login(credentials, false) } +const getUserProfileEndPoint = async function (req) { + return UserService.profile(req, false) +} + module.exports = { - userLoginEndPoint: userLoginEndPoint + userLoginEndPoint: userLoginEndPoint, + getUserProfileEndPoint: getUserProfileEndPoint } diff --git a/src/data/migrations/20180930164635-create-flow.js b/src/data/migrations/20180930164635-create-flow.js deleted file mode 100644 index e159ebb40..000000000 --- a/src/data/migrations/20180930164635-create-flow.js +++ /dev/null @@ -1,43 +0,0 @@ -'use strict' -module.exports = { - up: (queryInterface, Sequelize) => { - return queryInterface.createTable('Flows', { - id: { - type: Sequelize.INTEGER, - primaryKey: true, - autoIncrement: true, - allowNull: false, - field: 'id' - - }, - name: { - type: Sequelize.TEXT, - field: 'name', - defaultValue: 'New Application' - }, - description: { - type: Sequelize.TEXT, - field: 'description', - defaultValue: '' - }, - isActivated: { - type: Sequelize.BOOLEAN, - field: 'is_activated', - defaultValue: false - }, - createdAt: { - allowNull: false, - type: Sequelize.DATE, - field: 'created_at' - }, - updatedAt: { - allowNull: false, - type: Sequelize.DATE, - field: 'updated_at' - } - }) - }, - down: (queryInterface, Sequelize) => { - return queryInterface.dropTable('Flows') - } -} diff --git a/src/data/migrations/20180930173823-create-registry.js b/src/data/migrations/20180930173823-create-registry.js deleted file mode 100644 index a6cfd9e41..000000000 --- a/src/data/migrations/20180930173823-create-registry.js +++ /dev/null @@ -1,49 +0,0 @@ -'use strict' -module.exports = { - up: (queryInterface, Sequelize) => { - return queryInterface.createTable('Registries', { - id: { - type: Sequelize.INTEGER, - primaryKey: true, - autoIncrement: true, - allowNull: false, - field: 'id' - }, - url: { - type: Sequelize.TEXT, - field: 'url' - }, - isPublic: { - type: Sequelize.BOOLEAN, - field: 'is_public' - }, - secure: { - type: Sequelize.BOOLEAN, - field: 'secure' - }, - certificate: { - type: Sequelize.TEXT, - field: 'certificate' - }, - requiresCert: { - type: Sequelize.BOOLEAN, - field: 'requires_cert' - }, - username: { - type: Sequelize.TEXT, - field: 'user_name' - }, - password: { - type: Sequelize.TEXT, - field: 'password' - }, - userEmail: { - type: Sequelize.TEXT, - field: 'user_email' - } - }) - }, - down: (queryInterface, Sequelize) => { - return queryInterface.dropTable('Registries') - } -} diff --git a/src/data/migrations/20180930184436-create-catalog-item.js b/src/data/migrations/20180930184436-create-catalog-item.js deleted file mode 100644 index 934fd85f3..000000000 --- a/src/data/migrations/20180930184436-create-catalog-item.js +++ /dev/null @@ -1,77 +0,0 @@ -'use strict' - -const { convertToInt } = require('../../helpers/app-helper') - -module.exports = { - up: (queryInterface, Sequelize) => { - return queryInterface.createTable('CatalogItems', { - id: { - type: Sequelize.INTEGER, - primaryKey: true, - autoIncrement: true, - allowNull: false, - field: 'id' - }, - name: { - type: Sequelize.TEXT, - field: 'name', - defaultValue: 'New Catalog Item' - }, - description: { - type: Sequelize.TEXT, - field: 'description', - defaultValue: '' - }, - category: { - type: Sequelize.TEXT, - field: 'category' - }, - configExample: { - type: Sequelize.TEXT, - field: 'config_example', - defaultValue: '{}' - }, - publisher: { - type: Sequelize.TEXT, - field: 'publisher' - }, - diskRequired: { - type: Sequelize.BIGINT, - get () { - return convertToInt(this.getDataValue('diskRequired')) - }, - field: 'disk_required', - defaultValue: 0 - }, - ramRequired: { - type: Sequelize.BIGINT, - get () { - return convertToInt(this.getDataValue('ramRequired')) - }, - field: 'ram_required', - defaultValue: 0 - }, - picture: { - type: Sequelize.TEXT, - field: 'picture', - defaultValue: 'images/shared/default.png' - }, - isPublic: { - type: Sequelize.BOOLEAN, - field: 'is_public', - defaultValue: false - }, - registryId: { - type: Sequelize.INTEGER, - field: 'registry_id', - as: 'registryId', - references: { model: 'Registries', key: 'id' }, - onDelete: 'set null', - defaultValue: 1 - } - }) - }, - down: (queryInterface, Sequelize) => { - return queryInterface.dropTable('CatalogItems') - } -} diff --git a/src/data/migrations/20180930184703-create-fog-type.js b/src/data/migrations/20180930184703-create-fog-type.js deleted file mode 100644 index 8a9607648..000000000 --- a/src/data/migrations/20180930184703-create-fog-type.js +++ /dev/null @@ -1,47 +0,0 @@ -'use strict' -module.exports = { - up: (queryInterface, Sequelize) => { - return queryInterface.createTable('FogTypes', { - id: { - type: Sequelize.INTEGER, - primaryKey: true, - autoIncrement: true, - allowNull: false, - field: 'id' - }, - name: { - type: Sequelize.TEXT, - field: 'name' - }, - image: { - type: Sequelize.TEXT, - field: 'image' - }, - description: { - type: Sequelize.TEXT, - field: 'description' - }, - networkCatalogItemId: { - type: Sequelize.INTEGER, - field: 'network_catalog_item_id', - references: { model: 'CatalogItems', key: 'id' }, - onDelete: 'cascade' - }, - halCatalogItemId: { - type: Sequelize.INTEGER, - field: 'hal_catalog_item_id', - references: { model: 'CatalogItems', key: 'id' }, - onDelete: 'cascade' - }, - bluetoothCatalogItemId: { - type: Sequelize.INTEGER, - field: 'bluetooth_catalog_item_id', - references: { model: 'CatalogItems', key: 'id' }, - onDelete: 'cascade' - } - }) - }, - down: (queryInterface, Sequelize) => { - return queryInterface.dropTable('FogTypes') - } -} diff --git a/src/data/migrations/20180930184921-create-catalog-item-image.js b/src/data/migrations/20180930184921-create-catalog-item-image.js deleted file mode 100644 index b69109136..000000000 --- a/src/data/migrations/20180930184921-create-catalog-item-image.js +++ /dev/null @@ -1,33 +0,0 @@ -'use strict' -module.exports = { - up: (queryInterface, Sequelize) => { - return queryInterface.createTable('CatalogItemImages', { - id: { - type: Sequelize.INTEGER, - primaryKey: true, - autoIncrement: true, - allowNull: false, - field: 'id' - }, - containerImage: { - type: Sequelize.TEXT, - field: 'container_image' - }, - catalogItemId: { - type: Sequelize.INTEGER, - field: 'catalog_item_id', - references: { model: 'CatalogItems', key: 'id' }, - onDelete: 'cascade' - }, - fogTypeId: { - type: Sequelize.INTEGER, - field: 'fog_type_id', - references: { model: 'FogTypes', key: 'id' }, - onDelete: 'cascade' - } - }) - }, - down: (queryInterface, Sequelize) => { - return queryInterface.dropTable('CatalogItemImages') - } -} diff --git a/src/data/migrations/20180930194506-create-catalog-item-input-type.js b/src/data/migrations/20180930194506-create-catalog-item-input-type.js deleted file mode 100644 index 0606561b2..000000000 --- a/src/data/migrations/20180930194506-create-catalog-item-input-type.js +++ /dev/null @@ -1,31 +0,0 @@ -'use strict' -module.exports = { - up: (queryInterface, Sequelize) => { - return queryInterface.createTable('CatalogItemInputTypes', { - id: { - type: Sequelize.INTEGER, - primaryKey: true, - autoIncrement: true, - allowNull: false, - field: 'id' - }, - infoType: { - type: Sequelize.TEXT, - field: 'info_type' - }, - infoFormat: { - type: Sequelize.TEXT, - field: 'info_format' - }, - catalogItemId: { - type: Sequelize.INTEGER, - field: 'catalog_item_id', - references: { model: 'CatalogItems', key: 'id' }, - onDelete: 'cascade' - } - }) - }, - down: (queryInterface, Sequelize) => { - return queryInterface.dropTable('CatalogItemInputTypes') - } -} diff --git a/src/data/migrations/20180930195746-create-catalog-item-output-type.js b/src/data/migrations/20180930195746-create-catalog-item-output-type.js deleted file mode 100644 index 5b1a8d0ee..000000000 --- a/src/data/migrations/20180930195746-create-catalog-item-output-type.js +++ /dev/null @@ -1,31 +0,0 @@ -'use strict' -module.exports = { - up: (queryInterface, Sequelize) => { - return queryInterface.createTable('CatalogItemOutputTypes', { - id: { - type: Sequelize.INTEGER, - primaryKey: true, - autoIncrement: true, - allowNull: false, - field: 'id' - }, - infoType: { - type: Sequelize.TEXT, - field: 'info_type' - }, - infoFormat: { - type: Sequelize.TEXT, - field: 'info_format' - }, - catalogItemId: { - type: Sequelize.INTEGER, - field: 'catalog_item_id', - references: { model: 'CatalogItems', key: 'id' }, - onDelete: 'cascade' - } - }) - }, - down: (queryInterface, Sequelize) => { - return queryInterface.dropTable('CatalogItemOutputTypes') - } -} diff --git a/src/data/migrations/20180930225403-create-fog.js b/src/data/migrations/20180930225403-create-fog.js deleted file mode 100644 index cb97959e7..000000000 --- a/src/data/migrations/20180930225403-create-fog.js +++ /dev/null @@ -1,271 +0,0 @@ -'use strict' - -const { convertToInt } = require('../../helpers/app-helper') - -module.exports = { - up: (queryInterface, Sequelize) => { - return queryInterface.createTable('Fogs', { - uuid: { - type: Sequelize.STRING(32), - primaryKey: true, - allowNull: false, - field: 'uuid' - }, - name: { - type: Sequelize.TEXT, - defaultValue: 'Unnamed ioFog 1', - field: 'name' - }, - location: { - type: Sequelize.TEXT, - field: 'location' - }, - gpsMode: { - type: Sequelize.TEXT, - field: 'gps_mode' - }, - latitude: { - type: Sequelize.FLOAT, - field: 'latitude' - }, - longitude: { - type: Sequelize.FLOAT, - field: 'longitude' - }, - description: { - type: Sequelize.TEXT, - field: 'description' - }, - lastactive: { - type: Sequelize.BIGINT, - get () { - return convertToInt(this.getDataValue('lastactive')) - }, - field: 'last_active' - }, - daemonStatus: { - type: Sequelize.TEXT, - defaultValue: 'UNKNOWN', - field: 'daemon_status' - }, - daemonOperatingDuration: { - type: Sequelize.BIGINT, - get () { - return convertToInt(this.getDataValue('daemonOperatingDuration')) - }, - defaultValue: 0, - field: 'daemon_operating_duration' - }, - daemonLastStart: { - type: Sequelize.BIGINT, - get () { - return convertToInt(this.getDataValue('daemonLastStart')) - }, - field: 'daemon_last_start' - }, - memoryUsage: { - type: Sequelize.FLOAT, - defaultValue: 0.000, - field: 'memory_usage' - }, - diskUsage: { - type: Sequelize.FLOAT, - defaultValue: 0.000, - field: 'disk_usage' - }, - cpuUsage: { - type: Sequelize.FLOAT, - defaultValue: 0.00, - field: 'cpu_usage' - }, - memoryViolation: { - type: Sequelize.TEXT, - field: 'memory_violation' - }, - diskViolation: { - type: Sequelize.TEXT, - field: 'disk_violation' - }, - cpuViolation: { - type: Sequelize.TEXT, - field: 'cpu_violation' - }, - catalogItemStatus: { - type: Sequelize.TEXT, - field: 'catalog_item_status' - }, - repositoryCount: { - type: Sequelize.BIGINT, - get () { - return convertToInt(this.getDataValue('repositoryCount')) - }, - field: 'repository_count' - }, - repositoryStatus: { - type: Sequelize.TEXT, - field: 'repository_status' - }, - systemTime: { - type: Sequelize.BIGINT, - get () { - return convertToInt(this.getDataValue('systemTime')) - }, - field: 'system_time' - }, - lastStatusTime: { - type: Sequelize.BIGINT, - get () { - return convertToInt(this.getDataValue('lastStatusTime')) - }, - field: 'last_status_time' - }, - ipAddress: { - type: Sequelize.TEXT, - defaultValue: '0.0.0.0', - field: 'ip_address' - }, - processedMessages: { - type: Sequelize.BIGINT, - get () { - return convertToInt(this.getDataValue('processedMessages')) - }, - defaultValue: 0, - field: 'processed_messages' - }, - catalogItemMessageCounts: { - type: Sequelize.TEXT, - field: 'catalog_item_message_counts' - }, - messageSpeed: { - type: Sequelize.BIGINT, - get () { - return convertToInt(this.getDataValue('messageSpeed')) - }, - field: 'message_speed' - }, - lastCommandTime: { - type: Sequelize.BIGINT, - get () { - return convertToInt(this.getDataValue('lastCommandTime')) - }, - field: 'last_command_time' - }, - networkInterface: { - type: Sequelize.TEXT, - defaultValue: 'eth0', - field: 'network_interface' - }, - dockerUrl: { - type: Sequelize.TEXT, - defaultValue: 'unix:///var/run/docker.sock', - field: 'docker_url' - }, - diskLimit: { - type: Sequelize.FLOAT, - defaultValue: 50, - field: 'disk_limit' - }, - diskDirectory: { - type: Sequelize.TEXT, - defaultValue: '/var/lib/iofog/', - field: 'disk_directory' - }, - memoryLimit: { - type: Sequelize.FLOAT, - defaultValue: 4096, - field: 'memory_limit' - }, - cpuLimit: { - type: Sequelize.FLOAT, - defaultValue: 80, - field: 'cpu_limit' - }, - logLimit: { - type: Sequelize.FLOAT, - defaultValue: 10, - field: 'log_limit' - }, - logDirectory: { - type: Sequelize.TEXT, - defaultValue: '/var/log/iofog/', - field: 'log_directory' - }, - bluetoothEnabled: { - type: Sequelize.BOOLEAN, - defaultValue: false, - field: 'bluetooth' - }, - abstractedHardwareEnabled: { - type: Sequelize.BOOLEAN, - defaultValue: false, - field: 'hal' - }, - logFileCount: { - type: Sequelize.BIGINT, - get () { - return convertToInt(this.getDataValue('logFileCount')) - }, - defaultValue: 10, - field: 'log_file_count' - }, - version: { - type: Sequelize.TEXT, - field: 'version' - }, - isReadyToUpgrade: { - type: Sequelize.BOOLEAN, - defaultValue: true, - field: 'is_ready_to_upgrade' - }, - isReadyToRollback: { - type: Sequelize.BOOLEAN, - defaultValue: false, - field: 'is_ready_to_rollback' - }, - statusFrequency: { - type: Sequelize.INTEGER, - defaultValue: 10, - field: 'status_frequency' - }, - changeFrequency: { - type: Sequelize.INTEGER, - defaultValue: 20, - field: 'change_frequency' - }, - deviceScanFrequency: { - type: Sequelize.INTEGER, - defaultValue: 20, - field: 'device_scan_frequency' - }, - tunnel: { - type: Sequelize.TEXT, - defaultValue: '', - field: 'tunnel' - }, - watchdogEnabled: { - type: Sequelize.BOOLEAN, - defaultValue: true, - field: 'isolated_docker_container' - }, - createdAt: { - allowNull: false, - type: Sequelize.DATE, - field: 'created_at' - }, - updatedAt: { - allowNull: false, - type: Sequelize.DATE, - field: 'updated_at' - }, - fogTypeId: { - type: Sequelize.INTEGER, - field: 'fog_type_id', - references: { model: 'FogTypes', key: 'id' }, - onDelete: 'set null' - } - }) - }, - down: (queryInterface, Sequelize) => { - return queryInterface.dropTable('Fogs') - } -} diff --git a/src/data/migrations/20180930225846-create-change-tracking.js b/src/data/migrations/20180930225846-create-change-tracking.js deleted file mode 100644 index 052254c93..000000000 --- a/src/data/migrations/20180930225846-create-change-tracking.js +++ /dev/null @@ -1,67 +0,0 @@ -'use strict' -module.exports = { - up: (queryInterface, Sequelize) => { - return queryInterface.createTable('ChangeTrackings', { - id: { - type: Sequelize.INTEGER, - primaryKey: true, - autoIncrement: true, - allowNull: false, - field: 'id' - }, - containerConfig: { - type: Sequelize.BOOLEAN, - field: 'container_config' - }, - reboot: { - type: Sequelize.BOOLEAN, - field: 'reboot' - }, - deletenode: { - type: Sequelize.BOOLEAN, - field: 'deletenode' - }, - version: { - type: Sequelize.BOOLEAN, - field: 'version' - }, - containerList: { - type: Sequelize.BOOLEAN, - field: 'container_list' - }, - config: { - type: Sequelize.BOOLEAN, - field: 'config' - }, - routing: { - type: Sequelize.BOOLEAN, - field: 'routing' - }, - registries: { - type: Sequelize.BOOLEAN, - field: 'registries' - }, - tunnel: { - type: Sequelize.BOOLEAN, - field: 'tunnel' - }, - diagnostics: { - type: Sequelize.BOOLEAN, - field: 'diagnostics' - }, - isImageSnapshot: { - type: Sequelize.BOOLEAN, - field: 'image_snapshot' - }, - iofogUuid: { - type: Sequelize.STRING(32), - field: 'iofog_uuid', - references: { model: 'Fogs', key: 'uuid' }, - onDelete: 'cascade' - } - }) - }, - down: (queryInterface, Sequelize) => { - return queryInterface.dropTable('ChangeTrackings') - } -} diff --git a/src/data/migrations/20180930230219-create-fog-access-token.js b/src/data/migrations/20180930230219-create-fog-access-token.js deleted file mode 100644 index dba652e2d..000000000 --- a/src/data/migrations/20180930230219-create-fog-access-token.js +++ /dev/null @@ -1,37 +0,0 @@ -'use strict' - -const { convertToInt } = require('../../helpers/app-helper') - -module.exports = { - up: (queryInterface, Sequelize) => { - return queryInterface.createTable('FogAccessTokens', { - id: { - type: Sequelize.INTEGER, - primaryKey: true, - autoIncrement: true, - allowNull: false, - field: 'id' - }, - expirationTime: { - type: Sequelize.BIGINT, - get () { - return convertToInt(this.getDataValue('expirationTime')) - }, - field: 'expiration_time' - }, - token: { - type: Sequelize.TEXT, - field: 'token' - }, - iofogUuid: { - type: Sequelize.STRING(32), - field: 'iofog_uuid', - references: { model: 'Fogs', key: 'uuid' }, - onDelete: 'cascade' - } - }) - }, - down: (queryInterface, Sequelize) => { - return queryInterface.dropTable('FogAccessTokens') - } -} diff --git a/src/data/migrations/20180930230626-create-fog-provision-key.js b/src/data/migrations/20180930230626-create-fog-provision-key.js deleted file mode 100644 index 56efd0cfc..000000000 --- a/src/data/migrations/20180930230626-create-fog-provision-key.js +++ /dev/null @@ -1,38 +0,0 @@ -'use strict' - -const { convertToInt } = require('../../helpers/app-helper') - -module.exports = { - up: (queryInterface, Sequelize) => { - return queryInterface.createTable('FogProvisionKeys', { - id: { - type: Sequelize.INTEGER, - primaryKey: true, - autoIncrement: true, - allowNull: false, - field: 'id' - }, - provisionKey: { - /* eslint-disable new-cap */ - type: Sequelize.STRING(100), - field: 'provisioning_string' - }, - expirationTime: { - type: Sequelize.BIGINT, - get () { - return convertToInt(this.getDataValue('expirationTime')) - }, - field: 'expiration_time' - }, - iofogUuid: { - type: Sequelize.STRING(32), - field: 'iofog_uuid', - references: { model: 'Fogs', key: 'uuid' }, - onDelete: 'cascade' - } - }) - }, - down: (queryInterface, Sequelize) => { - return queryInterface.dropTable('FogProvisionKeys') - } -} diff --git a/src/data/migrations/20180930231241-create-fog-version-command.js b/src/data/migrations/20180930231241-create-fog-version-command.js deleted file mode 100644 index 0b39564fc..000000000 --- a/src/data/migrations/20180930231241-create-fog-version-command.js +++ /dev/null @@ -1,27 +0,0 @@ -'use strict' -module.exports = { - up: (queryInterface, Sequelize) => { - return queryInterface.createTable('FogVersionCommands', { - id: { - type: Sequelize.INTEGER, - primaryKey: true, - autoIncrement: true, - field: 'id' - }, - versionCommand: { - /* eslint-disable new-cap */ - type: Sequelize.STRING(100), - field: 'version_command' - }, - iofogUuid: { - type: Sequelize.STRING(32), - field: 'iofog_uuid', - references: { model: 'Fogs', key: 'uuid' }, - onDelete: 'cascade' - } - }) - }, - down: (queryInterface, Sequelize) => { - return queryInterface.dropTable('FogVersionCommands') - } -} diff --git a/src/data/migrations/20180930231536-create-hw-info.js b/src/data/migrations/20180930231536-create-hw-info.js deleted file mode 100644 index ed863f076..000000000 --- a/src/data/migrations/20180930231536-create-hw-info.js +++ /dev/null @@ -1,38 +0,0 @@ -'use strict' -module.exports = { - up: (queryInterface, Sequelize) => { - return queryInterface.createTable('HWInfos', { - id: { - type: Sequelize.INTEGER, - primaryKey: true, - autoIncrement: true, - allowNull: false, - field: 'id' - }, - info: { - type: Sequelize.TEXT, - defaultValue: ' ', - field: 'info' - }, - createdAt: { - allowNull: false, - type: Sequelize.DATE, - field: 'created_at' - }, - updatedAt: { - allowNull: false, - type: Sequelize.DATE, - field: 'updated_at' - }, - iofogUuid: { - type: Sequelize.STRING(32), - field: 'iofog_uuid', - references: { model: 'Fogs', key: 'uuid' }, - onDelete: 'cascade' - } - }) - }, - down: (queryInterface, Sequelize) => { - return queryInterface.dropTable('HWInfos') - } -} diff --git a/src/data/migrations/20180930232242-create-usb-info.js b/src/data/migrations/20180930232242-create-usb-info.js deleted file mode 100644 index 354e6fb2d..000000000 --- a/src/data/migrations/20180930232242-create-usb-info.js +++ /dev/null @@ -1,38 +0,0 @@ -'use strict' -module.exports = { - up: (queryInterface, Sequelize) => { - return queryInterface.createTable('USBInfos', { - id: { - type: Sequelize.INTEGER, - primaryKey: true, - autoIncrement: true, - allowNull: false, - field: 'id' - }, - info: { - type: Sequelize.TEXT, - defaultValue: ' ', - field: 'info' - }, - createdAt: { - allowNull: false, - type: Sequelize.DATE, - field: 'created_at' - }, - updatedAt: { - allowNull: false, - type: Sequelize.DATE, - field: 'updated_at' - }, - iofogUuid: { - type: Sequelize.STRING(32), - field: 'iofog_uuid', - references: { model: 'Fogs', key: 'uuid' }, - onDelete: 'cascade' - } - }) - }, - down: (queryInterface, Sequelize) => { - return queryInterface.dropTable('USBInfos') - } -} diff --git a/src/data/migrations/20180930232508-create-tunnel.js b/src/data/migrations/20180930232508-create-tunnel.js deleted file mode 100644 index eda029e25..000000000 --- a/src/data/migrations/20180930232508-create-tunnel.js +++ /dev/null @@ -1,53 +0,0 @@ -'use strict' -module.exports = { - up: (queryInterface, Sequelize) => { - return queryInterface.createTable('Tunnels', { - id: { - type: Sequelize.INTEGER, - primaryKey: true, - autoIncrement: true, - allowNull: false, - field: 'id' - }, - username: { - type: Sequelize.TEXT, - field: 'username' - }, - password: { - type: Sequelize.TEXT, - field: 'password' - }, - host: { - type: Sequelize.TEXT, - field: 'host' - }, - rport: { - type: Sequelize.INTEGER, - field: 'remote_port' - }, - lport: { - type: Sequelize.INTEGER, - defaultValue: 22, - field: 'local_port' - }, - rsakey: { - type: Sequelize.TEXT, - field: 'rsa_key' - }, - closed: { - type: Sequelize.BOOLEAN, - defaultValue: false, - field: 'closed' - }, - iofogUuid: { - type: Sequelize.STRING(32), - field: 'iofog_uuid', - references: { model: 'Fogs', key: 'uuid' }, - onDelete: 'cascade' - } - }) - }, - down: (queryInterface, Sequelize) => { - return queryInterface.dropTable('Tunnels') - } -} diff --git a/src/data/migrations/20181001062956-create-microservice.js b/src/data/migrations/20181001062956-create-microservice.js deleted file mode 100644 index adb1c8238..000000000 --- a/src/data/migrations/20181001062956-create-microservice.js +++ /dev/null @@ -1,100 +0,0 @@ -'use strict' - -const { convertToInt } = require('../../helpers/app-helper') - -module.exports = { - up: (queryInterface, Sequelize) => { - return queryInterface.createTable('Microservices', { - uuid: { - type: Sequelize.STRING(32), - primaryKey: true, - allowNull: false, - field: 'uuid' - }, - config: { - type: Sequelize.TEXT, - field: 'config' - }, - name: { - type: Sequelize.TEXT, - field: 'name' - }, - configLastUpdated: { - type: Sequelize.BIGINT, - get () { - return convertToInt(this.getDataValue('configLastUpdated')) - }, - field: 'config_last_updated' - }, - isNetwork: { - type: Sequelize.BOOLEAN, - field: 'is_network' - }, - needUpdate: { - type: Sequelize.BOOLEAN, - field: 'need_update' - }, - rebuild: { - type: Sequelize.BOOLEAN, - field: 'rebuild' - }, - rootHostAccess: { - type: Sequelize.BOOLEAN, - field: 'root_host_access' - }, - logSize: { - type: Sequelize.BIGINT, - get () { - return convertToInt(this.getDataValue('logSize')) - }, - field: 'log_size' - }, - imageSnapshot: { - type: Sequelize.TEXT, - field: 'image_snapshot' - }, - deleteWithCleanup: { - type: Sequelize.BOOLEAN, - field: 'delete_with_cleanup' - }, - createdAt: { - allowNull: false, - type: Sequelize.DATE, - field: 'created_at' - }, - updatedAt: { - allowNull: false, - type: Sequelize.DATE, - field: 'updated_at' - }, - iofogUuid: { - type: Sequelize.STRING(32), - field: 'iofog_uuid', - references: { model: 'Fogs', key: 'uuid' }, - onDelete: 'set null' - }, - catalogItemId: { - type: Sequelize.INTEGER, - field: 'catalog_item_id', - references: { model: 'CatalogItems', key: 'id' }, - onDelete: 'cascade' - }, - registryId: { - type: Sequelize.INTEGER, - field: 'registry_id', - references: { model: 'Registries', key: 'id' }, - onDelete: 'cascade', - defaultValue: 1 - }, - flowId: { - type: Sequelize.INTEGER, - field: 'flow_id', - references: { model: 'Flows', key: 'id' }, - onDelete: 'cascade' - } - }) - }, - down: (queryInterface, Sequelize) => { - return queryInterface.dropTable('Microservices') - } -} diff --git a/src/data/migrations/20181001070828-create-microservice-port.js b/src/data/migrations/20181001070828-create-microservice-port.js deleted file mode 100644 index c8c65dabd..000000000 --- a/src/data/migrations/20181001070828-create-microservice-port.js +++ /dev/null @@ -1,45 +0,0 @@ -'use strict' -module.exports = { - up: (queryInterface, Sequelize) => { - return queryInterface.createTable('MicroservicePorts', { - id: { - type: Sequelize.INTEGER, - primaryKey: true, - autoIncrement: true, - allowNull: false, - field: 'id' - }, - portInternal: { - type: Sequelize.INTEGER, - field: 'port_internal' - }, - portExternal: { - type: Sequelize.INTEGER, - field: 'port_external' - }, - isPublic: { - type: Sequelize.BOOLEAN, - field: 'is_public' - }, - createdAt: { - allowNull: false, - type: Sequelize.DATE, - field: 'created_at' - }, - updatedAt: { - allowNull: false, - type: Sequelize.DATE, - field: 'updated_at' - }, - microserviceUuid: { - type: Sequelize.STRING(32), - field: 'microservice_uuid', - references: { model: 'Microservices', key: 'uuid' }, - onDelete: 'cascade' - } - }) - }, - down: (queryInterface, Sequelize) => { - return queryInterface.dropTable('MicroservicePorts') - } -} diff --git a/src/data/migrations/20181001071315-create-microservice-status.js b/src/data/migrations/20181001071315-create-microservice-status.js deleted file mode 100644 index 22be3cde8..000000000 --- a/src/data/migrations/20181001071315-create-microservice-status.js +++ /dev/null @@ -1,57 +0,0 @@ -'use strict' - -const { convertToInt } = require('../../helpers/app-helper') - -module.exports = { - up: (queryInterface, Sequelize) => { - return queryInterface.createTable('MicroserviceStatuses', { - id: { - type: Sequelize.INTEGER, - primaryKey: true, - autoIncrement: true, - allowNull: false, - field: 'id' - }, - status: { - type: Sequelize.TEXT, - field: 'status' - }, - cpuUsage: { - type: Sequelize.FLOAT, - defaultValue: 0.000, - field: 'cpu_usage' - }, - memoryUsage: { - type: Sequelize.BIGINT, - get () { - return convertToInt(this.getDataValue('memoryUsage')) - }, - defaultValue: 0, - field: 'memory_usage' - }, - containerId: { - type: Sequelize.TEXT, - field: 'container_id' - }, - createdAt: { - allowNull: false, - type: Sequelize.DATE, - field: 'created_at' - }, - updatedAt: { - allowNull: false, - type: Sequelize.DATE, - field: 'updated_at' - }, - microserviceUuid: { - type: Sequelize.STRING(32), - field: 'microservice_uuid', - references: { model: 'Microservices', key: 'uuid' }, - onDelete: 'cascade' - } - }) - }, - down: (queryInterface, Sequelize) => { - return queryInterface.dropTable('MicroserviceStatuses') - } -} diff --git a/src/data/migrations/20181001071628-create-connector.js b/src/data/migrations/20181001071628-create-connector.js deleted file mode 100644 index 3815516d4..000000000 --- a/src/data/migrations/20181001071628-create-connector.js +++ /dev/null @@ -1,51 +0,0 @@ -'use strict' -module.exports = { - up: (queryInterface, Sequelize) => { - return queryInterface.createTable('Connectors', { - id: { - type: Sequelize.INTEGER, - primaryKey: true, - autoIncrement: true, - allowNull: false, - field: 'id' - }, - name: { - type: Sequelize.TEXT, - field: 'name' - }, - domain: { - type: Sequelize.TEXT, - field: 'domain' - }, - publicIp: { - type: Sequelize.TEXT, - field: 'public_ip' - }, - cert: { - type: Sequelize.TEXT, - field: 'cert' - }, - selfSignedCerts: { - type: Sequelize.BOOLEAN, - field: 'self_signed_certs' - }, - devMode: { - type: Sequelize.BOOLEAN, - field: 'dev_mode' - }, - createdAt: { - allowNull: false, - type: Sequelize.DATE, - field: 'created_at' - }, - updatedAt: { - allowNull: false, - type: Sequelize.DATE, - field: 'updated_at' - } - }) - }, - down: (queryInterface, Sequelize) => { - return queryInterface.dropTable('Connectors') - } -} diff --git a/src/data/migrations/20181001071858-create-connector-port.js b/src/data/migrations/20181001071858-create-connector-port.js deleted file mode 100644 index a3c847bc8..000000000 --- a/src/data/migrations/20181001071858-create-connector-port.js +++ /dev/null @@ -1,69 +0,0 @@ -'use strict' -module.exports = { - up: (queryInterface, Sequelize) => { - return queryInterface.createTable('ConnectorPorts', { - id: { - type: Sequelize.INTEGER, - primaryKey: true, - autoIncrement: true, - allowNull: false, - field: 'id' - }, - port1: { - type: Sequelize.INTEGER, - field: 'port1' - }, - port2: { - type: Sequelize.INTEGER, - field: 'port2' - }, - maxConnectionsPort1: { - type: Sequelize.INTEGER, - field: 'max_connections_port1' - }, - maxConnectionsPort2: { - type: Sequelize.INTEGER, - field: 'max_connection_port2' - }, - passcodePort1: { - type: Sequelize.TEXT, - field: 'passcode_port1' - }, - passcodePort2: { - type: Sequelize.TEXT, - field: 'passcode_port2' - }, - heartBeatAbsenceThresholdPort1: { - type: Sequelize.INTEGER, - field: 'heartbeat_absence_threshold_port1' - }, - heartBeatAbsenceThresholdPort2: { - type: Sequelize.INTEGER, - field: 'heartbeat_absence_threshold_port2' - }, - mappingId: { - type: Sequelize.TEXT, - field: 'mapping_id' - }, - createdAt: { - allowNull: false, - type: Sequelize.DATE, - field: 'created_at' - }, - updatedAt: { - allowNull: false, - type: Sequelize.DATE, - field: 'updated_at' - }, - connectorId: { - type: Sequelize.INTEGER, - field: 'connector_id', - references: { model: 'Connectors', key: 'id' }, - onDelete: 'cascade' - } - }) - }, - down: (queryInterface, Sequelize) => { - return queryInterface.dropTable('ConnectorPorts') - } -} diff --git a/src/data/migrations/20181001073429-create-strace-diagnostics.js b/src/data/migrations/20181001073429-create-strace-diagnostics.js deleted file mode 100644 index 9683f253e..000000000 --- a/src/data/migrations/20181001073429-create-strace-diagnostics.js +++ /dev/null @@ -1,32 +0,0 @@ -'use strict' -module.exports = { - up: (queryInterface, Sequelize) => { - return queryInterface.createTable('StraceDiagnostics', { - id: { - type: Sequelize.INTEGER, - primaryKey: true, - autoIncrement: true, - allowNull: false, - field: 'id' - }, - straceRun: { - type: Sequelize.BOOLEAN, - field: 'strace_run' - }, - buffer: { - type: Sequelize.TEXT, - field: 'buffer', - defaultValue: '' - }, - microserviceUuid: { - type: Sequelize.STRING(32), - field: 'microservice_uuid', - references: { model: 'Microservices', key: 'uuid' }, - onDelete: 'cascade' - } - }) - }, - down: (queryInterface, Sequelize) => { - return queryInterface.dropTable('StraceDiagnostics') - } -} diff --git a/src/data/migrations/20181003102815-create-volume-mapping.js b/src/data/migrations/20181003102815-create-volume-mapping.js deleted file mode 100644 index 2d66e698f..000000000 --- a/src/data/migrations/20181003102815-create-volume-mapping.js +++ /dev/null @@ -1,35 +0,0 @@ -'use strict' -module.exports = { - up: (queryInterface, Sequelize) => { - return queryInterface.createTable('VolumeMappings', { - id: { - type: Sequelize.INTEGER, - primaryKey: true, - autoIncrement: true, - allowNull: false, - field: 'uuid' - }, - hostDestination: { - type: Sequelize.TEXT, - field: 'host_destination' - }, - containerDestination: { - type: Sequelize.TEXT, - field: 'container_destination' - }, - accessMode: { - type: Sequelize.TEXT, - field: 'access_mode' - }, - microserviceUuid: { - type: Sequelize.STRING(32), - field: 'microservice_uuid', - references: { model: 'Microservices', key: 'uuid' }, - onDelete: 'cascade' - } - }) - }, - down: (queryInterface, Sequelize) => { - return queryInterface.dropTable('VolumeMappings') - } -} diff --git a/src/data/migrations/20181022110529-create-routing.js b/src/data/migrations/20181022110529-create-routing.js deleted file mode 100644 index 0c78a27f9..000000000 --- a/src/data/migrations/20181022110529-create-routing.js +++ /dev/null @@ -1,64 +0,0 @@ -'use strict' -module.exports = { - up: (queryInterface, Sequelize) => { - return queryInterface.createTable('Routings', { - id: { - type: Sequelize.INTEGER, - primaryKey: true, - autoIncrement: true, - allowNull: false, - field: 'id' - }, - isNetworkConnection: { - type: Sequelize.BOOLEAN, - defaultValue: false, - field: 'is_network_connection' - }, - sourceMicroserviceUuid: { - type: Sequelize.STRING(32), - field: 'source_microservice_uuid', - references: { model: 'Microservices', key: 'uuid' }, - onDelete: 'cascade' - }, - destMicroserviceUuid: { - type: Sequelize.STRING(32), - field: 'dest_microservice_uuid', - references: { model: 'Microservices', key: 'uuid' }, - onDelete: 'cascade' - }, - sourceNetworkMicroserviceUuid: { - type: Sequelize.STRING(32), - field: 'source_network_microservice_uuid', - references: { model: 'Microservices', key: 'uuid' }, - onDelete: 'set null' - }, - destNetworkMicroserviceUuid: { - type: Sequelize.STRING(32), - field: 'dest_network_microservice_uuid', - references: { model: 'Microservices', key: 'uuid' }, - onDelete: 'set null' - }, - sourceIofogUuid: { - type: Sequelize.STRING(32), - field: 'source_iofog_uuid', - references: { model: 'Fogs', key: 'uuid' }, - onDelete: 'set null' - }, - destIofogUuid: { - type: Sequelize.STRING(32), - field: 'dest_iofog_uuid', - references: { model: 'Fogs', key: 'uuid' }, - onDelete: 'set null' - }, - connectorPortId: { - type: Sequelize.INTEGER, - field: 'connector_port_id', - references: { model: 'ConnectorPorts', key: 'id' }, - onDelete: 'set null' - } - }) - }, - down: (queryInterface, Sequelize) => { - return queryInterface.dropTable('Routings') - } -} diff --git a/src/data/migrations/20181022114905-create-microservice-public-mode.js b/src/data/migrations/20181022114905-create-microservice-public-mode.js deleted file mode 100644 index 2ee2f95d4..000000000 --- a/src/data/migrations/20181022114905-create-microservice-public-mode.js +++ /dev/null @@ -1,47 +0,0 @@ -'use strict' -module.exports = { - up: (queryInterface, Sequelize) => { - return queryInterface.createTable('MicroservicePublicModes', { - id: { - type: Sequelize.INTEGER, - primaryKey: true, - autoIncrement: true, - allowNull: false, - field: 'id' - }, - microserviceUuid: { - type: Sequelize.STRING(32), - field: 'microservice_uuid', - references: { model: 'Microservices', key: 'uuid' }, - onDelete: 'cascade' - }, - networkMicroserviceUuid: { - type: Sequelize.STRING(32), - field: 'network_microservice_uuid', - references: { model: 'Microservices', key: 'uuid' }, - onDelete: 'set null' - }, - iofogUuid: { - type: Sequelize.STRING(32), - field: 'iofog_uuid', - references: { model: 'Fogs', key: 'uuid' }, - onDelete: 'set null' - }, - microservicePortId: { - type: Sequelize.INTEGER, - field: 'microservice_port_id', - references: { model: 'MicroservicePorts', key: 'id' }, - onDelete: 'set null' - }, - connectorPortId: { - type: Sequelize.INTEGER, - field: 'connector_port_id', - references: { model: 'ConnectorPorts', key: 'id' }, - onDelete: 'set null' - } - }) - }, - down: (queryInterface, Sequelize) => { - return queryInterface.dropTable('MicroservicePublicModes') - } -} diff --git a/src/data/migrations/20181031094923-drop-need-update-col-microservices.js b/src/data/migrations/20181031094923-drop-need-update-col-microservices.js deleted file mode 100644 index 5c14f7ab0..000000000 --- a/src/data/migrations/20181031094923-drop-need-update-col-microservices.js +++ /dev/null @@ -1,14 +0,0 @@ -'use strict' - -module.exports = { - up: (queryInterface, Sequelize) => { - return queryInterface.removeColumn('Microservices', 'need_update') - }, - - down: (queryInterface, Sequelize) => { - return queryInterface.addColumn('Microservices', - 'need_update', - Sequelize.BOOLEAN - ) - } -} diff --git a/src/data/migrations/20181102105758-microservice-status-add-missing-time-cols.js b/src/data/migrations/20181102105758-microservice-status-add-missing-time-cols.js deleted file mode 100644 index 2973c2f9b..000000000 --- a/src/data/migrations/20181102105758-microservice-status-add-missing-time-cols.js +++ /dev/null @@ -1,18 +0,0 @@ -'use strict' - -module.exports = { - up: (queryInterface, Sequelize) => { - return queryInterface.addColumn('MicroserviceStatuses', - 'operating_duration', - Sequelize.BIGINT - ) - .then(() => queryInterface.addColumn('MicroserviceStatuses', - 'start_time', - Sequelize.BIGINT)) - }, - - down: (queryInterface, Sequelize) => { - return queryInterface.removeColumn('MicroserviceStatuses', 'operating_duration') - .then(() => queryInterface.removeColumn('MicroserviceStatuses', 'start_time')) - } -} diff --git a/src/data/migrations/20181102163657-microservice-add-col-remove.js b/src/data/migrations/20181102163657-microservice-add-col-remove.js deleted file mode 100644 index 4bf5679e8..000000000 --- a/src/data/migrations/20181102163657-microservice-add-col-remove.js +++ /dev/null @@ -1,14 +0,0 @@ -'use strict' - -module.exports = { - up: (queryInterface, Sequelize) => { - return queryInterface.addColumn('Microservices', - 'delete', - Sequelize.BOOLEAN - ) - }, - - down: (queryInterface, Sequelize) => { - return queryInterface.removeColumn('Microservices', 'delete') - } -} diff --git a/src/data/migrations/20181105120036-change-tracking-container-to-microservice-renaming.js b/src/data/migrations/20181105120036-change-tracking-container-to-microservice-renaming.js deleted file mode 100644 index 285a4caf8..000000000 --- a/src/data/migrations/20181105120036-change-tracking-container-to-microservice-renaming.js +++ /dev/null @@ -1,17 +0,0 @@ -'use strict' - -module.exports = { - up: (queryInterface, Sequelize) => { - return queryInterface.renameColumn('ChangeTrackings', 'container_config', 'microservice_config') - .then(() => { - return queryInterface.renameColumn('ChangeTrackings', 'container_list', 'microservice_list') - }) - }, - - down: (queryInterface, Sequelize) => { - return queryInterface.renameColumn('ChangeTrackings', 'microservice_config', 'container_config') - .then(() => { - return queryInterface.renameColumn('ChangeTrackings', 'microservice_list', 'container_list') - }) - } -} diff --git a/src/data/migrations/20181113094807-add-missing-constraints.js b/src/data/migrations/20181113094807-add-missing-constraints.js deleted file mode 100644 index 36e06acb9..000000000 --- a/src/data/migrations/20181113094807-add-missing-constraints.js +++ /dev/null @@ -1,133 +0,0 @@ -'use strict' - -module.exports = { - up: (queryInterface, Sequelize) => { - return queryInterface.addConstraint('Flows', { - fields: ['user_id'], - type: 'foreign key', - name: 'flows_users_fkey_constraint', - references: { - table: 'Users', - field: 'id' - }, - onDelete: 'cascade' - }) - .then(() => { - return queryInterface.addConstraint('Microservices', { - fields: ['user_id'], - type: 'foreign key', - name: 'mscv_users_fkey_constraint', - references: { - table: 'Users', - field: 'id' - }, - onDelete: 'cascade' - }) - .then(() => { - return queryInterface.addConstraint('Microservices', { - fields: ['iofog_uuid'], - type: 'foreign key', - name: 'msvc_fogs_fkey_constraint', - references: { - table: 'Fogs', - field: 'uuid' - }, - onDelete: 'cascade' - }) - }) - .then(() => { - return queryInterface.addConstraint('Microservices', { - fields: ['catalog_item_id'], - type: 'foreign key', - name: 'msvc_catalogItems_fkey_constraint', - references: { - table: 'CatalogItems', - field: 'id' - }, - onDelete: 'cascade' - }) - }) - .then(() => { - return queryInterface.addConstraint('Microservices', { - fields: ['registry_id'], - type: 'foreign key', - name: 'msvc_registries_fkey_constraint', - references: { - table: 'Registries', - field: 'id' - }, - onDelete: 'cascade' - }) - }) - .then(() => { - return queryInterface.addConstraint('Microservices', { - fields: ['flow_id'], - type: 'foreign key', - name: 'msvc_flows_fkey_constraint', - references: { - table: 'Flows', - field: 'id' - }, - onDelete: 'cascade' - }) - }) - .then(() => { - return queryInterface.addConstraint('ChangeTrackings', { - fields: ['iofog_uuid'], - type: 'foreign key', - name: 'changetracking_fogs_fkey_constraint', - references: { - table: 'Fogs', - field: 'uuid' - }, - onDelete: 'cascade' - }) - }) - }) - .then(() => { - return queryInterface.addConstraint('MicroservicePorts', { - fields: ['user_id'], - type: 'foreign key', - name: 'msvcports_users_fkey_constraint', - references: { - table: 'Users', - field: 'id' - }, - onDelete: 'cascade' - }) - }) - .then(() => { - return queryInterface.addConstraint('MicroservicePorts', { - fields: ['microservice_uuid'], - type: 'foreign key', - name: 'mcsvcports_msvc_fkey_constraint', - references: { - table: 'Microservices', - field: 'uuid' - }, - onDelete: 'cascade' - }) - }) - }, - - down: - (queryInterface, Sequelize) => { - // for SQLite - return queryInterface.renameColumn('Flows', 'user_id', 'user_id1') - .then(() => { - return queryInterface.renameColumn('Flows', 'user_id1', 'user_id') - }).then(() => { - return queryInterface.renameColumn('Microservices', 'user_id', 'user_id1') - }).then(() => { - return queryInterface.renameColumn('Microservices', 'user_id1', 'user_id') - }).then(() => { - return queryInterface.renameColumn('ChangeTrackings', 'iofog_uuid', 'iofog_uuid1') - }).then(() => { - return queryInterface.renameColumn('ChangeTrackings', 'iofog_uuid1', 'iofog_uuid') - }).then(() => { - return queryInterface.renameColumn('MicroservicePorts', 'user_id', 'user_id1') - }).then(() => { - return queryInterface.renameColumn('MicroservicePorts', 'user_id1', 'user_id') - }) - } -} diff --git a/src/data/migrations/20190117110458-create-tracking-event.js b/src/data/migrations/20190117110458-create-tracking-event.js deleted file mode 100644 index 88d69bf42..000000000 --- a/src/data/migrations/20190117110458-create-tracking-event.js +++ /dev/null @@ -1,44 +0,0 @@ -'use strict' - -const { convertToInt } = require('../../helpers/app-helper') - -module.exports = { - up: (queryInterface, Sequelize) => { - return queryInterface.createTable('TrackingEvents', { - id: { - type: Sequelize.INTEGER, - primaryKey: true, - autoIncrement: true, - allowNull: false, - field: 'id' - }, - uuid: { - type: Sequelize.TEXT, - allowNull: false, - field: 'uuid' - }, - sourceType: { - type: Sequelize.TEXT, - field: 'source_type' - }, - timestamp: { - type: Sequelize.BIGINT, - get () { - return convertToInt(this.getDataValue('timestamp')) - }, - field: 'timestamp' - }, - type: { - type: Sequelize.TEXT, - field: 'type' - }, - data: { - type: Sequelize.TEXT, - field: 'data' - } - }) - }, - down: (queryInterface, Sequelize) => { - return queryInterface.dropTable('TrackingEvents') - } -} diff --git a/src/data/migrations/20190226111416-add-system-metrics-to-fog.js b/src/data/migrations/20190226111416-add-system-metrics-to-fog.js deleted file mode 100644 index f160f9142..000000000 --- a/src/data/migrations/20190226111416-add-system-metrics-to-fog.js +++ /dev/null @@ -1,50 +0,0 @@ -'use strict' - -module.exports = { - up: (queryInterface, Sequelize) => { - return queryInterface.addColumn('Fogs', - 'system-available-memory', Sequelize.BIGINT - ).then(() => { - return queryInterface.addColumn('Fogs', - 'system-available-disk', Sequelize.BIGINT - ) - }).then(() => { - return queryInterface.addColumn('Fogs', - 'system-total-cpu', Sequelize.FLOAT - ) - }) - }, - - down: (queryInterface, Sequelize) => { - return queryInterface.removeColumn('Fogs', 'system-available-memory') - .then(() => { - return queryInterface.removeColumn('Fogs', 'system-available-disk') - }).then(() => { - return queryInterface.removeColumn('Fogs', 'system-total-cpu') - }) - // restore constraints. Because Sequelize has problem with Sqlite constraints - .then(() => { - return queryInterface.addConstraint('Fogs', { - fields: ['user_id'], - type: 'foreign key', - name: 'fogs_users_fkey_constraint', - references: { - table: 'Users', - field: 'id' - }, - onDelete: 'cascade' - }) - }).then(() => { - return queryInterface.addConstraint('Fogs', { - fields: ['fog_type_id'], - type: 'foreign key', - name: 'fogs_types_fkey_constraint', - references: { - table: 'FogTypes', - field: 'id' - }, - onDelete: 'set null' - }) - }) - } -} diff --git a/src/data/migrations/20190305142715-add-security-status-fields.js b/src/data/migrations/20190305142715-add-security-status-fields.js deleted file mode 100644 index 66c1262f0..000000000 --- a/src/data/migrations/20190305142715-add-security-status-fields.js +++ /dev/null @@ -1,44 +0,0 @@ -'use strict' - -module.exports = { - up: (queryInterface, Sequelize) => { - return queryInterface.addColumn('Fogs', - 'security_status', Sequelize.TEXT - ).then(() => { - return queryInterface.addColumn('Fogs', - 'security_violation_info', Sequelize.TEXT - ) - }) - }, - - down: (queryInterface, Sequelize) => { - return queryInterface.removeColumn('Fogs', 'security_status') - .then(() => { - return queryInterface.removeColumn('Fogs', 'security_violation_info') - }) - // restore constraints. Because Sequelize has problem with Sqlite constraints - .then(() => { - return queryInterface.addConstraint('Fogs', { - fields: ['user_id'], - type: 'foreign key', - name: 'fogs_users_fkey_constraint', - references: { - table: 'Users', - field: 'id' - }, - onDelete: 'cascade' - }) - }).then(() => { - return queryInterface.addConstraint('Fogs', { - fields: ['fog_type_id'], - type: 'foreign key', - name: 'fogs_types_fkey_constraint', - references: { - table: 'FogTypes', - field: 'id' - }, - onDelete: 'set null' - }) - }) - } -} diff --git a/src/data/migrations/20190409055710-add-microservices-env.js b/src/data/migrations/20190409055710-add-microservices-env.js deleted file mode 100644 index 121e18949..000000000 --- a/src/data/migrations/20190409055710-add-microservices-env.js +++ /dev/null @@ -1,31 +0,0 @@ -'use strict' -module.exports = { - up: (queryInterface, Sequelize) => { - return queryInterface.createTable('MicroserviceEnvs', { - id: { - type: Sequelize.INTEGER, - primaryKey: true, - autoIncrement: true, - allowNull: false, - field: 'id' - }, - key: { - type: Sequelize.TEXT, - field: 'key' - }, - value: { - type: Sequelize.TEXT, - field: 'value' - }, - microserviceUuid: { - type: Sequelize.STRING(32), - field: 'microservice_uuid', - references: { model: 'Microservices', key: 'uuid' }, - onDelete: 'cascade' - } - }) - }, - down: (queryInterface, Sequelize) => { - return queryInterface.dropTable('MicroserviceEnvs') - } -} diff --git a/src/data/migrations/20190410055710-add-microservices-arg.js b/src/data/migrations/20190410055710-add-microservices-arg.js deleted file mode 100644 index 37b1b2c47..000000000 --- a/src/data/migrations/20190410055710-add-microservices-arg.js +++ /dev/null @@ -1,27 +0,0 @@ -'use strict' -module.exports = { - up: (queryInterface, Sequelize) => { - return queryInterface.createTable('MicroserviceArgs', { - id: { - type: Sequelize.INTEGER, - primaryKey: true, - autoIncrement: true, - allowNull: false, - field: 'id' - }, - cmd: { - type: Sequelize.TEXT, - field: 'cmd' - }, - microserviceUuid: { - type: Sequelize.STRING(32), - field: 'microservice_uuid', - references: { model: 'Microservices', key: 'uuid' }, - onDelete: 'cascade' - } - }) - }, - down: (queryInterface, Sequelize) => { - return queryInterface.dropTable('MicroserviceArgs') - } -} diff --git a/src/data/migrations/20190704043715-agent-external-ip.js b/src/data/migrations/20190704043715-agent-external-ip.js deleted file mode 100644 index 2f6e4fc17..000000000 --- a/src/data/migrations/20190704043715-agent-external-ip.js +++ /dev/null @@ -1,37 +0,0 @@ -'use strict' - -module.exports = { - up: (queryInterface, Sequelize) => { - return queryInterface.addColumn('Fogs', - 'ip_address_external', Sequelize.TEXT - ) - }, - - down: (queryInterface, Sequelize) => { - return queryInterface.removeColumn('Fogs', 'ip_address_external') - // restore constraints. Because Sequelize has problem with Sqlite constraints - .then(() => { - return queryInterface.addConstraint('Fogs', { - feilds: ['user_id'], - type: 'foreign key', - name: 'fogs_users_fkey_constraint', - references: { - table: 'Users', - field: 'id' - }, - onDelete: 'cascade' - }) - }).then(() => { - return queryInterface.addConstraint('Fogs', { - feilds: ['fog_type_id'], - type: 'foreign key', - name: 'fogs_types_fkey_constraint', - references: { - table: 'FogTypes', - field: 'id' - }, - onDelete: 'set null' - }) - }) - } -} diff --git a/src/data/migrations/20190830071324-update catalog item images to be linked to microservice.js b/src/data/migrations/20190830071324-update catalog item images to be linked to microservice.js deleted file mode 100644 index d73c3515b..000000000 --- a/src/data/migrations/20190830071324-update catalog item images to be linked to microservice.js +++ /dev/null @@ -1,16 +0,0 @@ -'use strict' - -module.exports = { - up: (queryInterface, Sequelize) => { - return queryInterface.addColumn('CatalogItemImages', 'microservice_uuid', { - type: Sequelize.STRING(32), - field: 'microservice_uuid', - references: { model: 'Microservices', key: 'uuid' }, - onDelete: 'cascade' - }) - }, - - down: (queryInterface, Sequelize) => { - return queryInterface.removeColumn('CatalogItemImages', 'microservice_uuid') - } -} diff --git a/src/data/migrations/20190916030304-connector-health.js b/src/data/migrations/20190916030304-connector-health.js deleted file mode 100644 index a551c67e5..000000000 --- a/src/data/migrations/20190916030304-connector-health.js +++ /dev/null @@ -1,15 +0,0 @@ -'use strict' - -module.exports = { - up: (queryInterface, Sequelize) => { - return queryInterface.addColumn('Connectors', 'healthy', { - type: Sequelize.BOOLEAN, - field: 'healthy', - defaultValue: true - }) - }, - - down: (queryInterface, Sequelize) => { - return queryInterface.removeColumn('Connectors', 'healthy') - } -} diff --git a/src/data/migrations/20190916030532-connector-port-deletion.js b/src/data/migrations/20190916030532-connector-port-deletion.js deleted file mode 100644 index 9c9567fb7..000000000 --- a/src/data/migrations/20190916030532-connector-port-deletion.js +++ /dev/null @@ -1,15 +0,0 @@ -'use strict' - -module.exports = { - up: (queryInterface, Sequelize) => { - return queryInterface.addColumn('ConnectorPorts', 'moved', { - type: Sequelize.BOOLEAN, - field: 'moved', - defaultValue: false - }) - }, - - down: (queryInterface, Sequelize) => { - return queryInterface.removeColumn('ConnectorPorts', 'moved') - } -} diff --git a/src/data/migrations/20200123000302-system-fog-and-flow.js b/src/data/migrations/20200123000302-system-fog-and-flow.js deleted file mode 100644 index 1f51ff416..000000000 --- a/src/data/migrations/20200123000302-system-fog-and-flow.js +++ /dev/null @@ -1,39 +0,0 @@ -'use strict' - -module.exports = { - up: (queryInterface, Sequelize) => { - /* - Add altering commands here. - Return a promise to correctly handle asynchronicity. - - Example: - return queryInterface.createTable('users', { id: Sequelize.INTEGER }); - */ - return Promise.all([ - queryInterface.addColumn('Fogs', 'is_system', { - type: Sequelize.BOOLEAN, - defaultValue: false, - field: 'is_system' - }), - queryInterface.addColumn('Flows', 'is_system', { - type: Sequelize.BOOLEAN, - defaultValue: false, - field: 'is_system' - }) - ]) - }, - - down: (queryInterface, Sequelize) => { - /* - Add reverting commands here. - Return a promise to correctly handle asynchronicity. - - Example: - return queryInterface.dropTable('users'); - */ - return Promise.all([ - queryInterface.removeColumn('Fogs', 'is_system'), - queryInterface.removeColumn('Flows', 'is_system') - ]) - } -} diff --git a/src/data/migrations/20200123045032-fog-and-change-tracking.js b/src/data/migrations/20200123045032-fog-and-change-tracking.js deleted file mode 100644 index 0c38b5745..000000000 --- a/src/data/migrations/20200123045032-fog-and-change-tracking.js +++ /dev/null @@ -1,50 +0,0 @@ -'use strict' -//deleted -module.exports = { - up: (queryInterface, Sequelize) => { - /* - Add altering commands here. - Return a promise to correctly handle asynchronicity. - - Example: - return queryInterface.createTable('users', { id: Sequelize.INTEGER }); - */ - return Promise.all([ - queryInterface.addColumn('Fogs', 'docker_pruning_freq', { - type: Sequelize.INTEGER, - defaultValue: 1, - field: 'docker_pruning_freq' - }), - queryInterface.addColumn('Fogs', 'available_disk_threshold', { - type: Sequelize.FLOAT, - defaultValue: 20, - field: 'available_disk_threshold' - }), - queryInterface.addColumn('Fogs', 'log_level', { - type: Sequelize.TEXT, - defaultValue: 'INFO', - field: 'log_level' - }), - queryInterface.addColumn('ChangeTrackings', 'prune', { - type: Sequelize.BOOLEAN, - field: 'prune' - }) - ]) - }, - - down: (queryInterface, Sequelize) => { - /* - Add reverting commands here. - Return a promise to correctly handle asynchronicity. - - Example: - return queryInterface.dropTable('users'); - */ - return Promise.all([ - queryInterface.removeColumn('Fogs', 'docker_pruning_freq'), - queryInterface.removeColumn('Fogs', 'available_disk_threshold'), - queryInterface.removeColumn('Fogs', 'log_level'), - queryInterface.removeColumn('ChangeTrackings', 'prune') - ]) - } -} diff --git a/src/data/migrations/20200123163412-create-router.js b/src/data/migrations/20200123163412-create-router.js deleted file mode 100644 index 267655178..000000000 --- a/src/data/migrations/20200123163412-create-router.js +++ /dev/null @@ -1,91 +0,0 @@ -'use strict' - -module.exports = { - up: async (queryInterface, Sequelize) => { - await queryInterface.createTable('Routers', { - id: { - type: Sequelize.INTEGER, - primaryKey: true, - autoIncrement: true, - allowNull: false, - field: 'id' - }, - isEdge: { - type: Sequelize.BOOLEAN, - field: 'is_edge' - }, - messagingPort: { - type: Sequelize.INTEGER, - field: 'messaging_port' - }, - edgeRouterPort: { - type: Sequelize.INTEGER, - field: 'edge_router_port' - }, - interRouterPort: { - type: Sequelize.INTEGER, - field: 'inter_router_port' - }, - host: { - type: Sequelize.TEXT, - field: 'host' - }, - isDefault: { - type: Sequelize.BOOLEAN, - field: 'is_default' - }, - iofogUuid: { - type: Sequelize.STRING(32), - field: 'iofog_uuid', - references: { model: 'Fogs', key: 'uuid' }, - onDelete: 'cascade' - }, - createdAt: { - type: Sequelize.DATE, - allowNull: false, - field: 'created_at' - }, - updatedAt: { - type: Sequelize.DATE, - allowNull: false, - field: 'updated_at' - } - }) - - await queryInterface.createTable('RouterConnections', { - id: { - type: Sequelize.INTEGER, - primaryKey: true, - autoIncrement: true, - allowNull: false, - field: 'id' - }, - sourceRouter: { - type: Sequelize.INTEGER, - field: 'source_router', - references: { model: 'Routers', key: 'id' }, - onDelete: 'cascade' - }, - destRouter: { - type: Sequelize.INTEGER, - field: 'dest_router', - references: { model: 'Routers', key: 'id' }, - onDelete: 'cascade' - }, - createdAt: { - type: Sequelize.DATE, - allowNull: false, - field: 'created_at' - }, - updatedAt: { - type: Sequelize.DATE, - allowNull: false, - field: 'updated_at' - } - }) - }, - down: async (queryInterface, Sequelize) => { - await queryInterface.dropTable('Routers') - await queryInterface.dropTable('RouterConnections') - } -} diff --git a/src/data/migrations/20200123205245-router-port-host-agent-config.js b/src/data/migrations/20200123205245-router-port-host-agent-config.js deleted file mode 100644 index 9f1e02d81..000000000 --- a/src/data/migrations/20200123205245-router-port-host-agent-config.js +++ /dev/null @@ -1,18 +0,0 @@ -'use strict' - -module.exports = { - up: (queryInterface, Sequelize) => { - return Promise.all([ - queryInterface.addColumn('Fogs', 'router_id', { - type: Sequelize.INTEGER, - field: 'router_id' - }) - ]) - }, - - down: (queryInterface, Sequelize) => { - return Promise.all([ - queryInterface.removeColumn('Fogs', 'router_id') - ]) - } -} diff --git a/src/data/migrations/20200124040224-router-changed-flag.js b/src/data/migrations/20200124040224-router-changed-flag.js deleted file mode 100644 index 689696bd4..000000000 --- a/src/data/migrations/20200124040224-router-changed-flag.js +++ /dev/null @@ -1,29 +0,0 @@ -'use strict' - -module.exports = { - up: (queryInterface, Sequelize) => { - /* - Add altering commands here. - Return a promise to correctly handle asynchronicity. - - Example: - return queryInterface.createTable('users', { id: Sequelize.INTEGER }); - */ - return queryInterface.addColumn('ChangeTrackings', 'router_changed', { - type: Sequelize.BOOLEAN, - defaultValue: false, - field: 'router_changed' - }) - }, - - down: (queryInterface, Sequelize) => { - /* - Add reverting commands here. - Return a promise to correctly handle asynchronicity. - - Example: - return queryInterface.dropTable('users'); - */ - return queryInterface.removeColumn('ChangeTrackings', 'router_changed') - } -} diff --git a/src/data/migrations/20200202113124-create-public-ports.js b/src/data/migrations/20200202113124-create-public-ports.js deleted file mode 100644 index 89a51de95..000000000 --- a/src/data/migrations/20200202113124-create-public-ports.js +++ /dev/null @@ -1,65 +0,0 @@ -'use strict' - -module.exports = { - up: async (queryInterface, Sequelize) => { - await queryInterface.createTable('MicroservicePublicPorts', { - id: { - type: Sequelize.INTEGER, - primaryKey: true, - autoIncrement: true, - allowNull: false, - field: 'id' - }, - portId: { - type: Sequelize.INTEGER, - field: 'port_id', - references: { model: 'MicroservicePorts', key: 'id' }, - onDelete: 'cascade' - }, - hostId: { - type: Sequelize.STRING(32), - field: 'host_id', - references: { model: 'Fogs', key: 'uuid' }, - onDelete: 'cascade' - }, - localProxyId: { - type: Sequelize.STRING(32), - field: 'local_proxy_id', - references: { model: 'Microservices', key: 'uuid' }, - onDelete: 'cascade' - }, - remoteProxyId: { - type: Sequelize.STRING(32), - field: 'remote_proxy_id', - references: { model: 'Microservices', key: 'uuid' }, - onDelete: 'cascade' - }, - publicPort: { - type: Sequelize.INTEGER, - field: 'public_port' - }, - queueName: { - type: Sequelize.STRING(32), - field: 'queue_name' - }, - isTcp: { - type: Sequelize.BOOLEAN, - defaultValue: false, - field: 'is_tcp' - }, - createdAt: { - type: Sequelize.DATE, - allowNull: false, - field: 'created_at' - }, - updatedAt: { - type: Sequelize.DATE, - allowNull: false, - field: 'updated_at' - } - }) - }, - down: async (queryInterface, Sequelize) => { - await queryInterface.dropTable('MicroservicePublicPorts') - } -} diff --git a/src/data/migrations/20200213033350-create-config.js b/src/data/migrations/20200213033350-create-config.js deleted file mode 100644 index e23337929..000000000 --- a/src/data/migrations/20200213033350-create-config.js +++ /dev/null @@ -1,39 +0,0 @@ -'use strict' - -module.exports = { - up: (queryInterface, Sequelize) => { - return queryInterface.createTable('Config', { - id: { - type: Sequelize.INTEGER, - primaryKey: true, - autoIncrement: true, - allowNull: false, - field: 'id' - }, - key: { - type: Sequelize.STRING(255), - field: 'key', - unique: true, - allowNull: false - }, - value: { - type: Sequelize.TEXT, - field: 'value', - allowNull: false - }, - createdAt: { - type: Sequelize.DATE, - allowNull: false, - field: 'created_at' - }, - updatedAt: { - type: Sequelize.DATE, - allowNull: false, - field: 'updated_at' - } - }).then(() => queryInterface.addIndex('Config', ['key'], { indicesType: 'UNIQUE' })) - }, - down: (queryInterface, Sequelize) => { - return queryInterface.dropTable('Config') - } -} diff --git a/src/data/migrations/20200220210224-change-tracking-timestamp.js b/src/data/migrations/20200220210224-change-tracking-timestamp.js deleted file mode 100644 index c76c84f55..000000000 --- a/src/data/migrations/20200220210224-change-tracking-timestamp.js +++ /dev/null @@ -1,15 +0,0 @@ -'use strict' - -module.exports = { - up: async (queryInterface, Sequelize) => { - await queryInterface.addColumn('ChangeTrackings', 'last_updated', { - type: Sequelize.STRING, - defaultValue: false, - field: 'last_updated' - }) - }, - - down: async (queryInterface, Sequelize) => { - await queryInterface.removeColumn('ChangeTrackings', 'last_updated') - } -} diff --git a/src/data/migrations/20200316011904-microservice-extra-host.js b/src/data/migrations/20200316011904-microservice-extra-host.js deleted file mode 100644 index d907a7ed8..000000000 --- a/src/data/migrations/20200316011904-microservice-extra-host.js +++ /dev/null @@ -1,52 +0,0 @@ -'use strict' -module.exports = { - up: (queryInterface, Sequelize) => { - return queryInterface.createTable('MicroserviceExtraHost', { - id: { - type: Sequelize.INTEGER, - primaryKey: true, - autoIncrement: true, - allowNull: false, - field: 'id' - }, - name: { - type: Sequelize.TEXT - }, - templateType: { - type: Sequelize.TEXT, - field: 'template_type' - }, - publicPort: { - type: Sequelize.INTEGER, - field: 'public_port' - }, // Only if type is Apps - template: { - type: Sequelize.TEXT - }, // Contains the template string - value: { - type: Sequelize.TEXT - }, - microserviceUuid: { - type: Sequelize.STRING(32), - field: 'microservice_uuid', - references: { model: 'Microservices', key: 'uuid' }, - onDelete: 'cascade' - }, - targetMicroserviceUuid: { - type: Sequelize.STRING(32), - field: 'target_microservice_uuid', - references: { model: 'Microservices', key: 'uuid' }, - onDelete: 'cascade' - }, - targetFogUuid: { - type: Sequelize.STRING(32), - field: 'target_fog_uuid', - references: { model: 'Fogs', key: 'uuid' }, - onDelete: 'cascade' - } - }) - }, - down: (queryInterface, Sequelize) => { - return queryInterface.dropTable('MicroserviceExtraHost') - } -} diff --git a/src/data/migrations/20200316032240-add-fog-host.js b/src/data/migrations/20200316032240-add-fog-host.js deleted file mode 100644 index 005fb1691..000000000 --- a/src/data/migrations/20200316032240-add-fog-host.js +++ /dev/null @@ -1,27 +0,0 @@ -'use strict' - -module.exports = { - up: (queryInterface, Sequelize) => { - /* - Add altering commands here. - Return a promise to correctly handle asynchronicity. - - Example: - return queryInterface.createTable('users', { id: Sequelize.INTEGER }); - */ - return queryInterface.addColumn('Fogs', 'host', { - type: Sequelize.TEXT - }) - }, - - down: (queryInterface, Sequelize) => { - /* - Add reverting commands here. - Return a promise to correctly handle asynchronicity. - - Example: - return queryInterface.dropTable('users'); - */ - return queryInterface.removeColumn('Fogs', 'host') - } -} diff --git a/src/data/migrations/20200323050813-fog-update-messagespeed.js b/src/data/migrations/20200323050813-fog-update-messagespeed.js deleted file mode 100644 index 36d922d7b..000000000 --- a/src/data/migrations/20200323050813-fog-update-messagespeed.js +++ /dev/null @@ -1,22 +0,0 @@ -'use strict' - -const { convertToInt } = require('../../helpers/app-helper') - -module.exports = { - up: async (queryInterface, Sequelize) => { - await queryInterface.changeColumn('Fogs', 'message_speed', { - type: Sequelize.FLOAT, - field: 'message_speed' - }) - }, - - down: async (queryInterface, Sequelize) => { - await queryInterface.changeColumn('Fogs', 'message_speed', { - type: Sequelize.BIGINT, - get () { - return convertToInt(this.getDataValue('messageSpeed')) - }, - field: 'message_speed' - }) - } -} diff --git a/src/data/migrations/20200420020250-remove-connector.js b/src/data/migrations/20200420020250-remove-connector.js deleted file mode 100644 index 14452825a..000000000 --- a/src/data/migrations/20200420020250-remove-connector.js +++ /dev/null @@ -1,136 +0,0 @@ -'use strict' - -module.exports = { - up: (queryInterface, Sequelize) => { - return queryInterface.removeColumn('Routings', 'connector_port_id') - .then(() => queryInterface.removeColumn('MicroservicePublicModes', 'connector_port_id')) - .then(() => queryInterface.dropTable('ConnectorPorts')) - .then(() => queryInterface.dropTable('Connectors')) - }, - - down: (queryInterface, Sequelize) => { - const connectorTable = queryInterface.createTable('Connectors', { - id: { - type: Sequelize.INTEGER, - primaryKey: true, - autoIncrement: true, - allowNull: false, - field: 'id' - }, - name: { - type: Sequelize.TEXT, - field: 'name' - }, - domain: { - type: Sequelize.TEXT, - field: 'domain' - }, - publicIp: { - type: Sequelize.TEXT, - field: 'public_ip' - }, - cert: { - type: Sequelize.TEXT, - field: 'cert' - }, - selfSignedCerts: { - type: Sequelize.BOOLEAN, - field: 'self_signed_certs' - }, - devMode: { - type: Sequelize.BOOLEAN, - field: 'dev_mode' - }, - createdAt: { - allowNull: false, - type: Sequelize.DATE, - field: 'created_at' - }, - updatedAt: { - allowNull: false, - type: Sequelize.DATE, - field: 'updated_at' - } - }) - const connectorPortTable = queryInterface.createTable('ConnectorPorts', { - id: { - type: Sequelize.INTEGER, - primaryKey: true, - autoIncrement: true, - allowNull: false, - field: 'id' - }, - port1: { - type: Sequelize.INTEGER, - field: 'port1' - }, - port2: { - type: Sequelize.INTEGER, - field: 'port2' - }, - maxConnectionsPort1: { - type: Sequelize.INTEGER, - field: 'max_connections_port1' - }, - maxConnectionsPort2: { - type: Sequelize.INTEGER, - field: 'max_connection_port2' - }, - passcodePort1: { - type: Sequelize.TEXT, - field: 'passcode_port1' - }, - passcodePort2: { - type: Sequelize.TEXT, - field: 'passcode_port2' - }, - heartBeatAbsenceThresholdPort1: { - type: Sequelize.INTEGER, - field: 'heartbeat_absence_threshold_port1' - }, - heartBeatAbsenceThresholdPort2: { - type: Sequelize.INTEGER, - field: 'heartbeat_absence_threshold_port2' - }, - mappingId: { - type: Sequelize.TEXT, - field: 'mapping_id' - }, - createdAt: { - allowNull: false, - type: Sequelize.DATE, - field: 'created_at' - }, - updatedAt: { - allowNull: false, - type: Sequelize.DATE, - field: 'updated_at' - }, - connectorId: { - type: Sequelize.INTEGER, - field: 'connector_id', - references: { model: 'Connectors', key: 'id' }, - onDelete: 'cascade' - } - }) - - const connectorPortIdColumn = queryInterface.addColumn('Routings', 'connectorPortId', { - type: Sequelize.INTEGER, - field: 'connector_port_id', - references: { model: 'ConnectorPorts', key: 'id' }, - onDelete: 'set null' - }) - - const msvcConnectorPortIdColumn = queryInterface.addColumn('MicroservicePublicModes', 'connectorPortId', { - type: Sequelize.INTEGER, - field: 'connector_port_id', - references: { model: 'ConnectorPorts', key: 'id' }, - onDelete: 'set null' - }) - - return connectorTable - .then(() => connectorPortTable) - .then(() => connectorPortIdColumn) - .then(() => msvcConnectorPortIdColumn) - } -} diff --git a/src/data/migrations/20200423201804-add-volume-mapping-type.js b/src/data/migrations/20200423201804-add-volume-mapping-type.js deleted file mode 100644 index d6d0cc5e7..000000000 --- a/src/data/migrations/20200423201804-add-volume-mapping-type.js +++ /dev/null @@ -1,13 +0,0 @@ -'use strict' - -module.exports = { - up: (queryInterface, Sequelize) => { - return queryInterface.addColumn('VolumeMappings', 'type', { - type: Sequelize.TEXT - }) - }, - - down: (queryInterface, Sequelize) => { - return queryInterface.removeColumn('VolumeMappings', 'type') - } -} diff --git a/src/data/migrations/20200506004924-add-route-name.js b/src/data/migrations/20200506004924-add-route-name.js deleted file mode 100644 index 91d5e2de9..000000000 --- a/src/data/migrations/20200506004924-add-route-name.js +++ /dev/null @@ -1,17 +0,0 @@ -'use strict' -//deleted -module.exports = { - up: (queryInterface, Sequelize) => { - return queryInterface.addColumn('Routings', 'name', { - type: Sequelize.STRING(255), - allowNull: false, - defaultValue: 'route' - }).then(() => queryInterface.addIndex('Routings', ['name'], { - indicesType: 'UNIQUE' - })) - }, - - down: (queryInterface, Sequelize) => { - return queryInterface.removeColumn('Routings', 'name') - } -} diff --git a/src/data/migrations/20200512044934-rename-flow.js b/src/data/migrations/20200512044934-rename-flow.js deleted file mode 100644 index 0f9403888..000000000 --- a/src/data/migrations/20200512044934-rename-flow.js +++ /dev/null @@ -1,11 +0,0 @@ -'use strict' - -module.exports = { - up: (queryInterface, Sequelize) => { - return queryInterface.renameColumn('Microservices', 'flow_id', 'application_id') - }, - - down: (queryInterface, Sequelize) => { - return queryInterface.renameColumn('Microservices', 'application_id', 'flow_id') - } -} diff --git a/src/data/migrations/20200512214530-add-application-to-routing.js b/src/data/migrations/20200512214530-add-application-to-routing.js deleted file mode 100644 index 88a263c7a..000000000 --- a/src/data/migrations/20200512214530-add-application-to-routing.js +++ /dev/null @@ -1,25 +0,0 @@ -'use strict' - -module.exports = { - up: (queryInterface, Sequelize) => { - return queryInterface.addColumn('Routings', 'application_id', - { - type: Sequelize.INTEGER, - field: 'application_id', - references: { model: 'Flows', key: 'id' }, - onDelete: 'cascade' - } - ) - }, - - down: (queryInterface, Sequelize) => { - /* - Add reverting commands here. - Return a promise to correctly handle asynchronicity. - - Example: - return queryInterface.dropTable('users'); - */ - return queryInterface.removeColumn('Routings', 'application_id') - } -} diff --git a/src/data/migrations/20200901053246-add-percentage-msvc-status.js b/src/data/migrations/20200901053246-add-percentage-msvc-status.js deleted file mode 100644 index 9cd03a291..000000000 --- a/src/data/migrations/20200901053246-add-percentage-msvc-status.js +++ /dev/null @@ -1,14 +0,0 @@ -'use strict' - -module.exports = { - up: (queryInterface, Sequelize) => { - return queryInterface.addColumn('MicroserviceStatuses', 'percentage', { - type: Sequelize.FLOAT, - defaultValue: 0.00 - }) - }, - - down: (queryInterface, Sequelize) => { - return queryInterface.removeColumn('MicroserviceStatuses', 'percentage') - } -} diff --git a/src/data/migrations/20201001230303-add-tags-fogs.js b/src/data/migrations/20201001230303-add-tags-fogs.js deleted file mode 100644 index 54a13d3ef..000000000 --- a/src/data/migrations/20201001230303-add-tags-fogs.js +++ /dev/null @@ -1,46 +0,0 @@ -'use strict' - -module.exports = { - up: async (queryInterface, Sequelize) => { - await queryInterface.createTable('Tags', { - id: { - type: Sequelize.INTEGER, - primaryKey: true, - autoIncrement: true, - allowNull: false, - field: 'id' - }, - value: { - type: Sequelize.STRING(255), - field: 'value', - unique: true, - allowNull: false - } - }) - await queryInterface.createTable('IofogTags', { - id: { - type: Sequelize.INTEGER, - primaryKey: true, - autoIncrement: true, - allowNull: false, - field: 'id' - }, - TagId: { - type: Sequelize.INTEGER, - field: 'tag_id', - references: { model: 'Tags', key: 'id' }, - onDelete: 'cascade' - }, - FogUuid: { - type: Sequelize.STRING(255), - field: 'fog_uuid', - references: { model: 'Fogs', key: 'uuid' }, - onDelete: 'cascade' - } - }) - }, - down: async (queryInterface, Sequelize) => { - await queryInterface.dropTable('Tags') - await queryInterface.dropTable('IofogTags') - } -} diff --git a/src/data/migrations/20201028005645-create-edge-resources.js b/src/data/migrations/20201028005645-create-edge-resources.js deleted file mode 100644 index 63c02dc46..000000000 --- a/src/data/migrations/20201028005645-create-edge-resources.js +++ /dev/null @@ -1,113 +0,0 @@ -'use strict' - -module.exports = { - up: async (queryInterface, Sequelize) => { - await queryInterface.createTable('EdgeResources', { - id: { - type: Sequelize.INTEGER, - primaryKey: true, - autoIncrement: true, - allowNull: false - }, - name: { - type: Sequelize.TEXT, - allowNull: false - }, - version: { - type: Sequelize.TEXT, - allowNull: false - }, - description: Sequelize.TEXT, - displayName: { type: Sequelize.TEXT, field: 'display_name' }, - displayIcon: { type: Sequelize.TEXT, field: 'display_icon' }, - displayColor: { type: Sequelize.TEXT, field: 'display_color' }, - interfaceProtocol: { type: Sequelize.TEXT, field: 'interface_protocol' }, - interfaceId: { type: Sequelize.INTEGER, field: 'interface_id' } - }) - await queryInterface.createTable('AgentEdgeResources', { - id: { - type: Sequelize.INTEGER, - primaryKey: true, - autoIncrement: true, - allowNull: false, - field: 'id' - }, - EdgeResourceId: { - type: Sequelize.INTEGER, - field: 'edge_resource_id', - references: { model: 'EdgeResources', key: 'id' }, - onDelete: 'cascade' - }, - FogUuid: { - type: Sequelize.STRING(255), - field: 'fog_uuid', - references: { model: 'Fogs', key: 'uuid' }, - onDelete: 'cascade' - } - }) - await queryInterface.createTable('EdgeResourceOrchestrationTags', { - id: { - type: Sequelize.INTEGER, - primaryKey: true, - autoIncrement: true, - allowNull: false, - field: 'id' - }, - EdgeResourceId: { - type: Sequelize.INTEGER, - field: 'edge_resource_id', - references: { model: 'EdgeResources', key: 'id' }, - onDelete: 'cascade' - }, - TagId: { - type: Sequelize.INTEGER, - field: 'tag_id', - references: { model: 'Tags', key: 'id' }, - onDelete: 'cascade' - } - }) - await queryInterface.createTable('HTTPBasedResourceInterfaces', { - id: { - type: Sequelize.INTEGER, - primaryKey: true, - autoIncrement: true, - allowNull: false - }, - edgeResourceId: { - type: Sequelize.INTEGER, - field: 'edge_resource_id', - references: { model: 'EdgeResources', key: 'id' }, - onDelete: 'cascade' - } - }) - await queryInterface.createTable('HTTPBasedResourceInterfaceEndpoints', { - id: { - type: Sequelize.INTEGER, - primaryKey: true, - autoIncrement: true, - allowNull: false - }, - name: Sequelize.TEXT, - description: Sequelize.TEXT, - method: Sequelize.TEXT, - url: Sequelize.TEXT, - requestType: { type: Sequelize.TEXT, field: 'request_type' }, - responseType: { type: Sequelize.TEXT, field: 'response_type' }, - requestPayloadExample: { type: Sequelize.TEXT, field: 'request_payload_example' }, - responsePayloadExample: { type: Sequelize.TEXT, field: 'response_payload_example' }, - interfaceId: { - type: Sequelize.INTEGER, - field: 'interface_id', - references: { model: 'HTTPBasedResourceInterfaces', key: 'id' }, - onDelete: 'cascade' - } - }) - }, - down: async (queryInterface, Sequelize) => { - await queryInterface.dropTable('EdgeResources') - await queryInterface.dropTable('AgentEdgeResources') - await queryInterface.dropTable('EdgeResourceOrchestrationTags') - await queryInterface.dropTable('HTTPBasedResourceInterfaces') - await queryInterface.dropTable('HTTPBasedResourceInterfaceEndpoints') - } -} diff --git a/src/data/migrations/20201105003849-create-edge-resources-agent-flag.js b/src/data/migrations/20201105003849-create-edge-resources-agent-flag.js deleted file mode 100644 index 8c0a56763..000000000 --- a/src/data/migrations/20201105003849-create-edge-resources-agent-flag.js +++ /dev/null @@ -1,15 +0,0 @@ -'use strict' - -module.exports = { - up: async (queryInterface, Sequelize) => { - await queryInterface.addColumn('ChangeTrackings', 'linked_edge_resources', { - type: Sequelize.BOOLEAN, - defaultValue: false, - field: 'linked_edge_resources' - }) - }, - - down: async (queryInterface, Sequelize) => { - await queryInterface.removeColumn('ChangeTrackings', 'linked_edge_resources') - } -} diff --git a/src/data/migrations/20201203011708-microservice-status-error-msg.js b/src/data/migrations/20201203011708-microservice-status-error-msg.js deleted file mode 100644 index e2871c672..000000000 --- a/src/data/migrations/20201203011708-microservice-status-error-msg.js +++ /dev/null @@ -1,14 +0,0 @@ -'use strict' - -module.exports = { - up: (queryInterface, Sequelize) => { - return queryInterface.addColumn('MicroserviceStatuses', 'error_message', { - type: Sequelize.TEXT, - defaultValue: '' - }) - }, - - down: (queryInterface, Sequelize) => { - return queryInterface.removeColumn('MicroserviceStatuses', 'error_message') - } -} diff --git a/src/data/migrations/20201204003312-create_application_templates.js b/src/data/migrations/20201204003312-create_application_templates.js deleted file mode 100644 index d8550c43c..000000000 --- a/src/data/migrations/20201204003312-create_application_templates.js +++ /dev/null @@ -1,87 +0,0 @@ -'use strict' - -module.exports = { - up: async (queryInterface, Sequelize) => { - await queryInterface.createTable('ApplicationTemplates', { - id: { - type: Sequelize.INTEGER, - primaryKey: true, - autoIncrement: true, - allowNull: false - }, - name: { - type: Sequelize.STRING(255), - field: 'name', - defaultValue: 'new-application-template', - unique: true - }, - description: { - type: Sequelize.TEXT, - field: 'description', - defaultValue: '' - }, - schemaVersion: { - type: Sequelize.TEXT, - field: 'schema_version', - defaultValue: '' - }, - applicationJSON: { - type: Sequelize.TEXT, - field: 'application_json', - defaultValue: '{}' - }, - createdAt: { - allowNull: false, - type: Sequelize.DATE, - field: 'created_at' - }, - updatedAt: { - allowNull: false, - type: Sequelize.DATE, - field: 'updated_at' - } - }) - await queryInterface.createTable('ApplicationTemplateVariables', { - id: { - type: Sequelize.INTEGER, - primaryKey: true, - autoIncrement: true, - allowNull: false, - field: 'id' - }, - key: { - type: Sequelize.TEXT, - field: 'key' - }, - description: { - type: Sequelize.TEXT, - field: 'description', - defaultValue: '' - }, - defaultValue: { - type: Sequelize.TEXT, - field: 'default_value' - }, - applicationTemplateId: { - type: Sequelize.INTEGER, - field: 'application_template_id', - references: { model: 'ApplicationTemplates', key: 'id' }, - onDelete: 'cascade' - }, - createdAt: { - allowNull: false, - type: Sequelize.DATE, - field: 'created_at' - }, - updatedAt: { - allowNull: false, - type: Sequelize.DATE, - field: 'updated_at' - } - }) - }, - down: async (queryInterface, Sequelize) => { - await queryInterface.dropTable('ApplicationTemplates') - await queryInterface.dropTable('ApplicationTemplateVariables') - } -} diff --git a/src/data/migrations/20210104191500-add_custom_to_edge_resources.js b/src/data/migrations/20210104191500-add_custom_to_edge_resources.js deleted file mode 100644 index 407225bc1..000000000 --- a/src/data/migrations/20210104191500-add_custom_to_edge_resources.js +++ /dev/null @@ -1,22 +0,0 @@ -'use strict' - -module.exports = { - up: (queryInterface, Sequelize) => { - return queryInterface.addColumn('EdgeResources', 'custom', - { - type: Sequelize.TEXT - } - ) - }, - - down: (queryInterface, Sequelize) => { - /* - Add reverting commands here. - Return a promise to correctly handle asynchronicity. - - Example: - return queryInterface.dropTable('users'); - */ - return queryInterface.removeColumn('EdgeResources', 'custom') - } -} diff --git a/src/data/migrations/20210118012712-add_is_udp_to_port.js b/src/data/migrations/20210118012712-add_is_udp_to_port.js deleted file mode 100644 index b2039618d..000000000 --- a/src/data/migrations/20210118012712-add_is_udp_to_port.js +++ /dev/null @@ -1,21 +0,0 @@ -'use strict' - -module.exports = { - up: async (queryInterface, Sequelize) => { - return queryInterface.addColumn('MicroservicePorts', 'is_udp', - { - type: Sequelize.BOOLEAN - } - ) - }, - - down: async (queryInterface, Sequelize) => { - /** - * Add reverting commands here. - * - * Example: - * await queryInterface.dropTable('users'); - */ - return queryInterface.removeColumn('MicroservicePorts', 'is_udp') - } -} diff --git a/src/data/migrations/20211019214923-add-schemes-to-public-ports.js b/src/data/migrations/20211019214923-add-schemes-to-public-ports.js deleted file mode 100644 index 29d3d7be8..000000000 --- a/src/data/migrations/20211019214923-add-schemes-to-public-ports.js +++ /dev/null @@ -1,22 +0,0 @@ -'use strict' - -module.exports = { - up: async (queryInterface, Sequelize) => { - return queryInterface.addColumn('MicroservicePublicPorts', 'schemes', - { - type: Sequelize.TEXT, - defaultValue: JSON.stringify(['https']) - } - ) - }, - - down: async (queryInterface, Sequelize) => { - /** - * Add reverting commands here. - * - * Example: - * await queryInterface.dropTable('users'); - */ - return queryInterface.removeColumn('MicroservicePublicPorts', 'schemes') - } -} diff --git a/src/data/migrations/20211020014715-add-index-to-public-ports.js b/src/data/migrations/20211020014715-add-index-to-public-ports.js deleted file mode 100644 index 70af9276c..000000000 --- a/src/data/migrations/20211020014715-add-index-to-public-ports.js +++ /dev/null @@ -1,17 +0,0 @@ -'use strict' - -module.exports = { - up: (queryInterface, Sequelize) => { - return queryInterface.addConstraint('MicroservicePublicPorts', - { - fields: ['public_port', 'host_id'], - type: 'unique', - name: 'port_host_unique_constraint' - } - ) - }, - - down: (queryInterface, Sequelize) => { - return queryInterface.removeConstraint('MicroservicePublicPorts', 'port_host_unique_constraint') - } -} diff --git a/src/data/migrations/20211022010318-add-unique-constraint-msvc.js b/src/data/migrations/20211022010318-add-unique-constraint-msvc.js deleted file mode 100644 index 3e5b504aa..000000000 --- a/src/data/migrations/20211022010318-add-unique-constraint-msvc.js +++ /dev/null @@ -1,30 +0,0 @@ -'use strict' -//deleted -module.exports = { - up: (queryInterface, Sequelize) => { - /* - Add altering commands here. - Return a promise to correctly handle asynchronicity. - - Example: - return queryInterface.createTable('users', { id: Sequelize.INTEGER }); - */ - return queryInterface.addConstraint('Microservices', - { - fields: ['application_id', 'name'], - type: 'unique', - name: 'app_name_unique_constraint' - }) - }, - - down: (queryInterface, Sequelize) => { - /* - Add reverting commands here. - Return a promise to correctly handle asynchronicity. - - Example: - return queryInterface.dropTable('users'); - */ - return queryInterface.removeConstraint('Microservices', 'app_name_unique_constraint') - } -} diff --git a/src/data/migrations/20211022013326-add-unique-constraint-route.js b/src/data/migrations/20211022013326-add-unique-constraint-route.js deleted file mode 100644 index 2761f083a..000000000 --- a/src/data/migrations/20211022013326-add-unique-constraint-route.js +++ /dev/null @@ -1,30 +0,0 @@ -'use strict' -// deleted -module.exports = { - up: (queryInterface, Sequelize) => { - /* - Add altering commands here. - Return a promise to correctly handle asynchronicity. - - Example: - return queryInterface.createTable('users', { id: Sequelize.INTEGER }); - */ - return queryInterface.addConstraint('Routings', - { - fields: ['application_id', 'name'], - type: 'unique', - name: 'routings_app_name_unique_constraint' - }) - }, - - down: (queryInterface, Sequelize) => { - /* - Add reverting commands here. - Return a promise to correctly handle asynchronicity. - - Example: - return queryInterface.dropTable('users'); - */ - return queryInterface.removeConstraint('Routings', 'routings_app_name_unique_constraint') - } -} diff --git a/src/data/migrations/20220405053419-add-time-zone-agent-config.js b/src/data/migrations/20220405053419-add-time-zone-agent-config.js deleted file mode 100644 index 9cb59e0f5..000000000 --- a/src/data/migrations/20220405053419-add-time-zone-agent-config.js +++ /dev/null @@ -1,27 +0,0 @@ -'use strict' - -module.exports = { - up: (queryInterface, Sequelize) => { - /* - Add altering commands here. - Return a promise to correctly handle asynchronicity. - - Example: - return queryInterface.createTable('users', { id: Sequelize.INTEGER }); - */ - return queryInterface.addColumn('Fogs', 'time_zone', { - type: Sequelize.TEXT - }) - }, - - down: (queryInterface, Sequelize) => { - /* - Add reverting commands here. - Return a promise to correctly handle asynchronicity. - - Example: - return queryInterface.dropTable('users'); - */ - return queryInterface.removeColumn('Fogs', 'time_zone') - } -} diff --git a/src/data/migrations/20220409021708-drop-table-tracking.js b/src/data/migrations/20220409021708-drop-table-tracking.js deleted file mode 100644 index 6d6f2e322..000000000 --- a/src/data/migrations/20220409021708-drop-table-tracking.js +++ /dev/null @@ -1,25 +0,0 @@ -'use strict' - -module.exports = { - up: (queryInterface, Sequelize) => { - /* - Add altering commands here. - Return a promise to correctly handle asynchronicity. - - Example: - return queryInterface.createTable('users', { id: Sequelize.INTEGER }); - */ - return queryInterface.dropTable('TrackingEvent') - }, - - down: (queryInterface, Sequelize) => { - /* - Add reverting commands here. - Return a promise to correctly handle asynchronicity. - - Example: - return queryInterface.dropTable('users'); - */ - return queryInterface.createTable('TrackingEvent') - } -} diff --git a/src/data/migrations/20221021102712-add_is_proxy_to_port.js b/src/data/migrations/20221021102712-add_is_proxy_to_port.js deleted file mode 100644 index d5ccfa8e9..000000000 --- a/src/data/migrations/20221021102712-add_is_proxy_to_port.js +++ /dev/null @@ -1,21 +0,0 @@ -'use strict' - -module.exports = { - up: async (queryInterface, Sequelize) => { - return queryInterface.addColumn('MicroservicePorts', 'is_proxy', - { - type: Sequelize.BOOLEAN - } - ) - }, - - down: async (queryInterface, Sequelize) => { - /** - * Add reverting commands here. - * - * Example: - * await queryInterface.dropTable('users'); - */ - return queryInterface.removeColumn('MicroservicePorts', 'is_proxy') - } -} diff --git a/src/data/migrations/20221021132000-create-proxy-ports.js b/src/data/migrations/20221021132000-create-proxy-ports.js deleted file mode 100644 index 5788e7665..000000000 --- a/src/data/migrations/20221021132000-create-proxy-ports.js +++ /dev/null @@ -1,52 +0,0 @@ -'use strict' - -module.exports = { - up: async (queryInterface, Sequelize) => { - await queryInterface.createTable('MicroserviceProxyPorts', { - id: { - type: Sequelize.INTEGER, - primaryKey: true, - autoIncrement: true, - allowNull: false, - field: 'id' - }, - portId: { - type: Sequelize.INTEGER, - field: 'port_id', - references: { model: 'MicroservicePorts', key: 'id' }, - onDelete: 'cascade' - }, - host: { - type: Sequelize.STRING(128), - field: 'host' - }, - localProxyId: { - type: Sequelize.STRING(32), - field: 'local_proxy_id', - references: { model: 'Microservices', key: 'uuid' }, - onDelete: 'cascade' - }, - publicPort: { - type: Sequelize.INTEGER, - field: 'public_port' - }, - protocol: { - type: Sequelize.STRING(3), - field: 'protocol' - }, - createdAt: { - type: Sequelize.DATE, - allowNull: false, - field: 'created_at' - }, - updatedAt: { - type: Sequelize.DATE, - allowNull: false, - field: 'updated_at' - } - }) - }, - down: async (queryInterface, Sequelize) => { - await queryInterface.dropTable('MicroserviceProxyPorts') - } -} diff --git a/src/data/migrations/20221021152712-add_admin_port_to_proxy_ports.js b/src/data/migrations/20221021152712-add_admin_port_to_proxy_ports.js deleted file mode 100644 index 605ba2dc7..000000000 --- a/src/data/migrations/20221021152712-add_admin_port_to_proxy_ports.js +++ /dev/null @@ -1,21 +0,0 @@ -'use strict' - -module.exports = { - up: async (queryInterface, Sequelize) => { - return queryInterface.addColumn('MicroserviceProxyPorts', 'admin_port', - { - type: Sequelize.BOOLEAN - } - ) - }, - - down: async (queryInterface, Sequelize) => { - /** - * Add reverting commands here. - * - * Example: - * await queryInterface.dropTable('users'); - */ - return queryInterface.removeColumn('MicroserviceProxyPorts', 'admin_port') - } -} diff --git a/src/data/migrations/20221031162712-add_tokens_to_proxy_ports.js b/src/data/migrations/20221031162712-add_tokens_to_proxy_ports.js deleted file mode 100644 index 97f593c70..000000000 --- a/src/data/migrations/20221031162712-add_tokens_to_proxy_ports.js +++ /dev/null @@ -1,21 +0,0 @@ -'use strict' - -module.exports = { - up: async (queryInterface, Sequelize) => { - return queryInterface.addColumn('MicroserviceProxyPorts', 'proxy_token', - { - type: Sequelize.TEXT - } - ) - }, - - down: async (queryInterface, Sequelize) => { - /** - * Add reverting commands here. - * - * Example: - * await queryInterface.dropTable('users'); - */ - return queryInterface.removeColumn('MicroserviceProxyPorts', 'proxy_token') - } -} diff --git a/src/data/migrations/20221110151246-add_port_uuid_to_proxy_ports copy.js b/src/data/migrations/20221110151246-add_port_uuid_to_proxy_ports copy.js deleted file mode 100644 index 2199670b3..000000000 --- a/src/data/migrations/20221110151246-add_port_uuid_to_proxy_ports copy.js +++ /dev/null @@ -1,27 +0,0 @@ -'use strict' - -module.exports = { - up: async (queryInterface, Sequelize) => { - await queryInterface.addColumn('MicroserviceProxyPorts', 'port_uuid', - { - type: Sequelize.TEXT - } - ) - await queryInterface.addColumn('MicroserviceProxyPorts', 'server_token', - { - type: Sequelize.TEXT - } - ) - }, - - down: async (queryInterface, Sequelize) => { - /** - * Add reverting commands here. - * - * Example: - * await queryInterface.dropTable('users'); - */ - await queryInterface.removeColumn('MicroserviceProxyPorts', 'port_uuid') - await queryInterface.removeColumn('MicroserviceProxyPorts', 'server_token') - } -} diff --git a/src/data/seeders/20180928110125-insert-registry.js b/src/data/seeders/20180928110125-insert-registry.js deleted file mode 100644 index 87b33f0f8..000000000 --- a/src/data/seeders/20180928110125-insert-registry.js +++ /dev/null @@ -1,34 +0,0 @@ -'use strict' - -module.exports = { - up: (queryInterface, Sequelize) => { - return queryInterface.bulkInsert('Registries', [ - { - url: 'registry.hub.docker.com', - is_public: true, - secure: true, - certificate: '', - requires_cert: false, - user_name: '', - password: '', - user_email: '', - user_id: null - }, - { - url: 'from_cache', - is_public: true, - secure: true, - certificate: '', - requires_cert: false, - user_name: '', - password: '', - user_email: '', - user_id: null - } - ]) - }, - - down: (queryInterface, Sequelize) => { - return queryInterface.bulkDelete('Registries', null, {}) - } -} diff --git a/src/data/seeders/20180928111532-insert-catalog-item.js b/src/data/seeders/20180928111532-insert-catalog-item.js deleted file mode 100644 index 8e0c8e157..000000000 --- a/src/data/seeders/20180928111532-insert-catalog-item.js +++ /dev/null @@ -1,168 +0,0 @@ -'use strict' - -module.exports = { - up: (queryInterface, Sequelize) => { - return queryInterface.bulkInsert('CatalogItems', [ - { - name: 'Networking Tool', - description: 'The built-in networking tool for Eclipse ioFog.', - category: 'SYSTEM', - publisher: 'Eclipse ioFog', - disk_required: 0, - ram_required: 0, - picture: 'none.png', - config_example: null, - is_public: false, - registry_id: 1, - user_id: null - }, - { - name: 'RESTBlue', - description: 'REST API for Bluetooth Low Energy layer.', - category: 'SYSTEM', - publisher: 'Eclipse ioFog', - disk_required: 0, - ram_required: 0, - picture: 'none.png', - config_example: null, - is_public: false, - registry_id: 1, - user_id: null - }, - { - name: 'HAL', - description: 'REST API for Hardware Abstraction layer.', - category: 'SYSTEM', - publisher: 'Eclipse ioFog', - disk_required: 0, - ram_required: 0, - picture: 'none.png', - config_example: null, - is_public: false, - registry_id: 1, - user_id: null - }, - { - name: 'Diagnostics', - description: '0', - category: 'UTILITIES', - publisher: 'Eclipse ioFog', - disk_required: 0, - ram_required: 0, - picture: 'images/build/580.png', - config_example: null, - is_public: true, - registry_id: 1, - user_id: null - }, - { - name: 'Hello Web Demo', - description: 'A simple web server to test Eclipse ioFog.', - category: 'UTILITIES', - publisher: 'Eclipse ioFog', - disk_required: 0, - ram_required: 0, - picture: 'images/build/4.png', - config_example: null, - is_public: true, - registry_id: 1, - user_id: null - }, - { - name: 'Open Weather Map Data', - description: 'A stream of data from the Open Weather Map API in JSON format', - category: 'SENSORS', - publisher: 'Eclipse ioFog', - disk_required: 0, - ram_required: 0, - picture: 'images/build/8.png', - config_example: null, - is_public: true, - registry_id: 1, - user_id: null - }, - { - name: 'JSON REST API', - description: 'A configurable REST API that gives JSON output', - category: 'UTILITIES', - publisher: 'Eclipse ioFog', - disk_required: 0, - ram_required: 0, - picture: 'images/build/49.png', - config_example: null, - is_public: true, - registry_id: 1, - user_id: null - }, - { - name: 'Temperature Converter', - description: 'A simple temperature format converter', - category: 'UTILITIES', - publisher: 'Eclipse ioFog', - disk_required: 0, - ram_required: 0, - picture: 'images/build/58.png', - config_example: null, - is_public: true, - registry_id: 1, - user_id: null - }, - { - name: 'JSON Sub-Select', - description: 'Performs sub-selection and transform operations on any JSON messages', - category: 'UTILITIES', - publisher: 'Eclipse ioFog', - disk_required: 0, - ram_required: 0, - picture: 'images/build/59.png', - config_example: null, - is_public: true, - registry_id: 1, - user_id: null - }, - { - name: 'Humidity Sensor Simulator', - description: 'Humidity Sensor Simulator for Eclipse ioFog', - category: 'SIMULATOR', - publisher: 'Eclipse ioFog', - disk_required: 0, - ram_required: 0, - picture: 'images/build/simulator.png', - config_example: null, - is_public: true, - registry_id: 1, - user_id: null - }, - { - name: 'Seismic Sensor Simulator', - description: 'Seismic Sensor Simulator for Eclipse ioFog', - category: 'SIMULATOR', - publisher: 'Eclipse ioFog', - disk_required: 0, - ram_required: 0, - picture: 'images/build/simulator.png', - config_example: null, - is_public: true, - registry_id: 1, - user_id: null - }, - { - name: 'Temperature Sensor Simulator', - description: 'Temperature Sensor Simulator for Eclipse ioFog', - category: 'SIMULATOR', - publisher: 'Eclipse ioFog', - disk_required: 0, - ram_required: 0, - picture: 'images/build/simulator.png', - config_example: null, - is_public: true, - registry_id: 1, - user_id: null - } - ]) - }, - - down: (queryInterface, Sequelize) => { - return queryInterface.bulkDelete('CatalogItems', null, {}) - } -} diff --git a/src/data/seeders/20180928112152-insert-iofog-type.js b/src/data/seeders/20180928112152-insert-iofog-type.js deleted file mode 100644 index df1f994cd..000000000 --- a/src/data/seeders/20180928112152-insert-iofog-type.js +++ /dev/null @@ -1,50 +0,0 @@ -'use strict' - -module.exports = { - up: (queryInterface, Sequelize) => { - return queryInterface.bulkInsert('FogTypes', [ - { - id: 0, - name: 'Unspecified', - image: 'iointegrator0.png', - description: 'Unspecified device. Fog Type will be selected on provision', - network_catalog_item_id: 1, - hal_catalog_item_id: 3, - bluetooth_catalog_item_id: 2 - }, - { - id: 1, - name: 'Standard Linux (x86)', - image: 'iointegrator1.png', - description: 'A standard Linux server of at least moderate processing power and capacity. ' + - 'Compatible with common Linux types such as Ubuntu, Red Hat, and CentOS.', - network_catalog_item_id: 1, - hal_catalog_item_id: 3, - bluetooth_catalog_item_id: 2 - }, - { - id: 2, - name: 'ARM Linux', - image: 'iointegrator2.png', - description: 'A version of ioFog meant to run on Linux systems with ARM processors. ' + - 'Microservices for this ioFog type will be tailored to ARM systems.', - network_catalog_item_id: 1, - hal_catalog_item_id: 3, - bluetooth_catalog_item_id: 2 - } - ]).then(() => { - return queryInterface.bulkUpdate('Fogs', - { - fog_type_id: 0 - }, - { - fog_type_id: null - } - ) - }) - }, - - down: (queryInterface, Sequelize) => { - return queryInterface.bulkDelete('FogTypes', null, {}) - } -} diff --git a/src/data/seeders/20180928121334-insert-catalog-item-image.js b/src/data/seeders/20180928121334-insert-catalog-item-image.js deleted file mode 100644 index 682876fa3..000000000 --- a/src/data/seeders/20180928121334-insert-catalog-item-image.js +++ /dev/null @@ -1,132 +0,0 @@ -'use strict' - -module.exports = { - up: (queryInterface, Sequelize) => { - return queryInterface.bulkInsert('CatalogItemImages', [ - { - catalog_item_id: 1, - fog_type_id: 1, - container_image: 'iofog/core-networking' - }, - { - catalog_item_id: 1, - fog_type_id: 2, - container_image: 'iofog/core-networking-arm' - }, - { - catalog_item_id: 2, - fog_type_id: 1, - container_image: 'iofog/restblue' - }, - { - catalog_item_id: 2, - fog_type_id: 2, - container_image: 'iofog/restblue-arm' - }, - { - catalog_item_id: 3, - fog_type_id: 1, - container_image: 'ghcr.io/datasance/hal' - }, - { - catalog_item_id: 3, - fog_type_id: 2, - container_image: 'ghcr.io/datasance/hal-arm' - }, - { - catalog_item_id: 4, - fog_type_id: 1, - container_image: 'iofog/diagnostics' - }, - { - catalog_item_id: 4, - fog_type_id: 2, - container_image: 'iofog/diagnostics-arm' - }, - { - catalog_item_id: 5, - fog_type_id: 1, - container_image: 'iofog/hello-web' - }, - { - catalog_item_id: 5, - fog_type_id: 2, - container_image: 'iofog/hello-web-arm' - }, - { - catalog_item_id: 6, - fog_type_id: 1, - container_image: 'iofog/open-weather-map' - }, - { - catalog_item_id: 6, - fog_type_id: 2, - container_image: 'iofog/open-weather-map-arm' - }, - { - catalog_item_id: 7, - fog_type_id: 1, - container_image: 'iofog/json-rest-api' - }, - { - catalog_item_id: 7, - fog_type_id: 2, - container_image: 'iofog/json-rest-api-arm' - }, - { - catalog_item_id: 8, - fog_type_id: 1, - container_image: 'iofog/temperature-conversion' - }, - { - catalog_item_id: 8, - fog_type_id: 2, - container_image: 'iofog/temperature-conversion-arm' - }, - { - catalog_item_id: 9, - fog_type_id: 1, - container_image: 'iofog/json-subselect' - }, - { - catalog_item_id: 9, - fog_type_id: 2, - container_image: 'iofog/json-subselect-arm' - }, - { - catalog_item_id: 10, - fog_type_id: 1, - container_image: 'iofog/humidity-sensor-simulator' - }, - { - catalog_item_id: 10, - fog_type_id: 2, - container_image: 'iofog/humidity-sensor-simulator-arm' - }, - { - catalog_item_id: 11, - fog_type_id: 1, - container_image: 'iofog/seismic-sensor-simulator' - }, - { - catalog_item_id: 11, - fog_type_id: 2, - container_image: 'iofog/seismic-sensor-simulator-arm' - }, - { - catalog_item_id: 12, - fog_type_id: 1, - container_image: 'iofog/temperature-sensor-simulator' - }, - { - catalog_item_id: 12, - fog_type_id: 2, - container_image: 'iofog/temperature-sensor-simulator-arm' - } - ]) - }, - - down: (queryInterface, Sequelize) => { - return queryInterface.bulkDelete('CatalogItemImages', null, {}) - } -} diff --git a/src/data/seeders/20190130112616-insert-logging-catalog-item.js b/src/data/seeders/20190130112616-insert-logging-catalog-item.js deleted file mode 100644 index 4a2d97769..000000000 --- a/src/data/seeders/20190130112616-insert-logging-catalog-item.js +++ /dev/null @@ -1,42 +0,0 @@ -'use strict' - -module.exports = { - up: (queryInterface, Sequelize) => { - return queryInterface.bulkInsert('CatalogItems', [ - { - name: 'Common Logging', - description: 'Container which gathers logs and provides REST API' + - ' for adding and querying logs from containers', - category: 'UTILITIES', - publisher: 'Eclipse ioFog', - disk_required: 0, - ram_required: 0, - picture: 'none.png', - config_example: '{"access_tokens": ["Some_Access_Token"], "cleanfrequency": "1h40m", "ttl": "24h"}', - is_public: false, - registry_id: 1, - user_id: null - }] - ).then(() => { - return queryInterface.bulkInsert('CatalogItemImages', [ - { - catalog_item_id: 13, - fog_type_id: 1, - container_image: 'iofog/common-logging' - }, - { - catalog_item_id: 13, - fog_type_id: 2, - container_image: 'iofog/common-logging-arm' - } - ] - ) - }) - }, - - down: (queryInterface, Sequelize) => { - return queryInterface.bulkDelete('CatalogItems', { ID: 13 }, {}).then(() => { - return queryInterface.bulkDelete('CatalogItemImages', { catalog_item_id: 13 }) - }) - } -} diff --git a/src/data/seeders/20190131111441-insert-json-generator-catalog-item.js b/src/data/seeders/20190131111441-insert-json-generator-catalog-item.js deleted file mode 100644 index ae454d2bf..000000000 --- a/src/data/seeders/20190131111441-insert-json-generator-catalog-item.js +++ /dev/null @@ -1,38 +0,0 @@ -module.exports = { - up: (queryInterface, Sequelize) => { - return queryInterface.bulkInsert('CatalogItems', [ - { - name: 'JSON Generator', - description: 'Container generates ioMessages with contentdata as complex JSON object.', - category: 'UTILITIES', - publisher: 'Eclipse ioFog', - disk_required: 0, - ram_required: 0, - picture: 'none.png', - config_example: '{}', - is_public: true, - registry_id: 1, - user_id: null - }] - ).then(() => { - return queryInterface.bulkInsert('CatalogItemImages', [ - { - catalog_item_id: 14, - fog_type_id: 1, - container_image: 'iofog/json-generator' - }, - { - catalog_item_id: 14, - fog_type_id: 2, - container_image: 'iofog/json-generator-arm' - } - ]) - }) - }, - - down: (queryInterface, Sequelize) => { - return queryInterface.bulkDelete('CatalogItems', { ID: 14 }, {}).then(() => { - return queryInterface.bulkDelete('CatalogItemImages', { catalog_item_id: 14 }) - }) - } -} diff --git a/src/data/seeders/20190218103641-adding-default-configs.js b/src/data/seeders/20190218103641-adding-default-configs.js deleted file mode 100644 index 824d8b8db..000000000 --- a/src/data/seeders/20190218103641-adding-default-configs.js +++ /dev/null @@ -1,80 +0,0 @@ -'use strict' - -module.exports = { - up: (queryInterface, Sequelize) => { - return queryInterface.bulkUpdate('CatalogItems', - { - config_example: '{"citycode":"5391997","apikey":"6141811a6136148a00133488eadff0fb","frequency":1000}' - }, - { - name: 'Open Weather Map Data' - } - ).then(() => { - return queryInterface.bulkUpdate('CatalogItems', - { - config_example: '{"buffersize":3,"contentdataencoding":"utf8","contextdataencoding":"utf8",' + - 'outputfields":{"publisher":"source","contentdata":"temperature","timestamp":"time"}}' - }, - { - name: 'JSON REST API' - } - ) - }).then(() => { - return queryInterface.bulkUpdate('CatalogItems', - { - config_example: '{}' - }, - { - name: 'JSON Sub-Select' - } - ) - }).then(() => { - return queryInterface.bulkUpdate('CatalogItems', - { - is_public: true - }, - { - name: 'Common Logging' - } - ) - }) - }, - - down: (queryInterface, Sequelize) => { - return queryInterface.bulkUpdate('CatalogItems', - { - config_example: '{}' - }, - { - name: 'Open Weather Map Data' - } - ).then(() => { - return queryInterface.bulkUpdate('CatalogItems', - { - config_example: '{}' - }, - { - name: 'JSON REST API' - } - ) - }).then(() => { - return queryInterface.bulkUpdate('CatalogItems', - { - config_example: '{}' - }, - { - name: 'JSON Sub-Select' - } - ) - }).then(() => { - return queryInterface.bulkUpdate('CatalogItems', - { - is_public: false - }, - { - name: 'Common Logging' - } - ) - }) - } -} diff --git a/src/data/seeders/20200122200231-insert-router-catalog-item.js b/src/data/seeders/20200122200231-insert-router-catalog-item.js deleted file mode 100644 index df6353ece..000000000 --- a/src/data/seeders/20200122200231-insert-router-catalog-item.js +++ /dev/null @@ -1,87 +0,0 @@ -const constants = require('../constants') -const CatalogItemManager = require('../managers/catalog-item-manager') - -module.exports = { - up: async (queryInterface, Sequelize) => { - await queryInterface.bulkInsert('CatalogItems', [ - { - name: constants.ROUTER_CATALOG_NAME, - description: 'The built-in router for Eclipse ioFog.', - category: 'SYSTEM', - publisher: 'Eclipse ioFog', - disk_required: 0, - ram_required: 0, - picture: 'none.png', - config_example: null, - is_public: false, - registry_id: 1, - user_id: null - }, - { - name: constants.PROXY_CATALOG_NAME, - description: 'The built-in proxy for Eclipse ioFog.', - category: 'SYSTEM', - publisher: 'Eclipse ioFog', - disk_required: 0, - ram_required: 0, - picture: 'none.png', - config_example: null, - is_public: false, - registry_id: 1, - user_id: null - }] - ) - - // const sequelize = queryInterface.sequelize - // const transaction = await sequelize.transaction() - const transaction = { fakeTransaction: true } - - const router = await CatalogItemManager.findOne({ name: constants.ROUTER_CATALOG_NAME, isPublic: false }, transaction) - const proxy = await CatalogItemManager.findOne({ name: constants.PROXY_CATALOG_NAME, isPublic: false }, transaction) - - if (!router || !proxy) { - throw new Error('Unable to update the database. Could not find proxy or router catalog item') - } - - await queryInterface.bulkInsert('CatalogItemImages', [ - { - catalog_item_id: router.id, - fog_type_id: 1, - container_image: 'quay.io/interconnectedcloud/qdrouterd:latest' - }, - { - catalog_item_id: router.id, - fog_type_id: 2, - container_image: 'iofog/qdrouterd-arm:latest' - }, - { - catalog_item_id: proxy.id, - fog_type_id: 1, - container_image: 'iofog/proxy:latest' - }, - { - catalog_item_id: proxy.id, - fog_type_id: 2, - container_image: 'iofog/proxy-arm:latest' - }]) - }, - - down: async (queryInterface, Sequelize) => { - // const sequelize = queryInterface.sequelize - - // const transaction = await sequelize.transaction() - const transaction = { fakeTransaction: true } - - const router = await CatalogItemManager.findOne({ name: constants.ROUTER_CATALOG_NAME, isPublic: false }, transaction) - const proxy = await CatalogItemManager.findOne({ name: constants.PROXY_CATALOG_NAME, isPublic: false }, transaction) - if (router) { - await queryInterface.bulkDelete('CatalogItems', { id: router.id }, {}) - await queryInterface.bulkDelete('CatalogItemImages', { catalog_item_id: router.id }) - } - - if (proxy) { - await queryInterface.bulkDelete('CatalogItems', { id: proxy.id }, {}) - await queryInterface.bulkDelete('CatalogItemImages', { catalog_item_id: proxy.id }) - } - } -} diff --git a/src/data/seeders/20200313163114-update-router-catalog-item.js b/src/data/seeders/20200313163114-update-router-catalog-item.js deleted file mode 100644 index e1d9d0e72..000000000 --- a/src/data/seeders/20200313163114-update-router-catalog-item.js +++ /dev/null @@ -1,58 +0,0 @@ -const constants = require('../constants') -const CatalogItemManager = require('../managers/catalog-item-manager') - -module.exports = { - up: async (queryInterface, Sequelize) => { - const transaction = { fakeTransaction: true } - - const router = await CatalogItemManager.findOne({ name: constants.ROUTER_CATALOG_NAME, isPublic: false }, transaction) - - if (!router) { - throw new Error('Unable to update the database. Could not find router catalog item') - } - - await queryInterface.bulkUpdate('CatalogItemImages', - { - container_image: 'iofog/router:latest' - }, - { - catalog_item_id: router.id, - fog_type_id: 1 - }) - await queryInterface.bulkUpdate('CatalogItemImages', - { - container_image: 'iofog/router-arm:latest' - }, - { - catalog_item_id: router.id, - fog_type_id: 2 - }) - }, - - down: async (queryInterface, Sequelize) => { - const transaction = { fakeTransaction: true } - - const router = await CatalogItemManager.findOne({ name: constants.ROUTER_CATALOG_NAME, isPublic: false }, transaction) - - if (!router) { - throw new Error('Unable to update the database. Could not find router catalog item') - } - - await queryInterface.bulkUpdate('CatalogItemImages', - { - container_image: 'quay.io/interconnectedcloud/qdrouterd:latest' - }, - { - catalog_item_id: router.id, - fog_type_id: 1 - }) - await queryInterface.bulkUpdate('CatalogItemImages', - { - container_image: 'iofog/qdrouterd-arm:latest' - }, - { - catalog_item_id: router.id, - fog_type_id: 2 - }) - } -} diff --git a/src/data/seeders/20221019163114-insert-port-router-catalog-item.js b/src/data/seeders/20221019163114-insert-port-router-catalog-item.js deleted file mode 100644 index bfa750cc1..000000000 --- a/src/data/seeders/20221019163114-insert-port-router-catalog-item.js +++ /dev/null @@ -1,57 +0,0 @@ -const constants = require('../constants') -const CatalogItemManager = require('../managers/catalog-item-manager') - -module.exports = { - up: async (queryInterface, Sequelize) => { - await queryInterface.bulkInsert('CatalogItems', [ - { - name: constants.PORT_ROUTER_CATALOG_NAME, - description: 'The built-in port-router for Eclipse ioFog.', - category: 'SYSTEM', - publisher: 'Eclipse ioFog', - disk_required: 0, - ram_required: 0, - picture: 'none.png', - config_example: null, - is_public: false, - registry_id: 1, - user_id: null - }] - ) - - // const sequelize = queryInterface.sequelize - // const transaction = await sequelize.transaction() - const transaction = { fakeTransaction: true } - - const portRouter = await CatalogItemManager.findOne({ name: constants.PORT_ROUTER_CATALOG_NAME, isPublic: false }, transaction) - - if (!portRouter) { - throw new Error('Unable to update the database. Could not find port-router catalog item') - } - - await queryInterface.bulkInsert('CatalogItemImages', [ - { - catalog_item_id: portRouter.id, - fog_type_id: 1, - container_image: 'iofog/port-router:latest' - }, - { - catalog_item_id: portRouter.id, - fog_type_id: 2, - container_image: 'iofog/port-router:latest' - }]) - }, - - down: async (queryInterface, Sequelize) => { - // const sequelize = queryInterface.sequelize - - // const transaction = await sequelize.transaction() - const transaction = { fakeTransaction: true } - - const portRouter = await CatalogItemManager.findOne({ name: constants.PORT_ROUTER_CATALOG_NAME, isPublic: false }, transaction) - if (portRouter) { - await queryInterface.bulkDelete('CatalogItems', { id: portRouter.id }, {}) - await queryInterface.bulkDelete('CatalogItemImages', { catalog_item_id: portRouter.id }) - } - } -} diff --git a/src/config/keycloak.json b/src/keycloak.json similarity index 100% rename from src/config/keycloak.json rename to src/keycloak.json diff --git a/src/routes/application.js b/src/routes/application.js index 18cfe4608..7d6a800ad 100644 --- a/src/routes/application.js +++ b/src/routes/application.js @@ -15,6 +15,7 @@ const ApplicationController = require('../controllers/application-controller') const ResponseDecorator = require('../decorators/response-decorator') const Errors = require('../helpers/errors') const logger = require('../logger') +const keycloak = require('../config/keycloak.js').initKeycloak() module.exports = [ { @@ -32,13 +33,17 @@ module.exports = [ ] const getApplicationsByUserEndPoint = ResponseDecorator.handleErrors(ApplicationController.getApplicationsByUserEndPoint, successCode, errorCodes) - const responseObject = await getApplicationsByUserEndPoint(req) - res - .status(responseObject.code) - .send(responseObject.body) + // Add keycloak.protect() middleware to protect the route + await keycloak.protect(['SRE', 'Developer', 'Viewer'])(req, res, async () => { + const responseObject = await getApplicationsByUserEndPoint(req) - logger.apiRes({ req: req, res: responseObject }) + res + .status(responseObject.code) + .send(responseObject.body) + + logger.apiRes({ req: req, res: responseObject }) + }) } }, { @@ -61,13 +66,17 @@ module.exports = [ ] const createApplicationEndPoint = ResponseDecorator.handleErrors(ApplicationController.createApplicationEndPoint, successCode, errorCodes) - const responseObject = await createApplicationEndPoint(req) - res - .status(responseObject.code) - .send(responseObject.body) + // Add keycloak.protect() middleware to protect the route + await keycloak.protect(['SRE', 'Developer'])(req, res, async () => { + const responseObject = await createApplicationEndPoint(req) + + res + .status(responseObject.code) + .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, res: responseObject }) + }) } }, { @@ -90,13 +99,17 @@ module.exports = [ ] const createApplicationEndPoint = ResponseDecorator.handleErrors(ApplicationController.createApplicationYAMLEndPoint, successCode, errorCodes) - const responseObject = await createApplicationEndPoint(req) - res - .status(responseObject.code) - .send(responseObject.body) + // Add keycloak.protect() middleware to protect the route + await keycloak.protect(['SRE', 'Developer'])(req, res, async () => { + const responseObject = await createApplicationEndPoint(req) - logger.apiRes({ req: req, res: responseObject }) + res + .status(responseObject.code) + .send(responseObject.body) + + logger.apiRes({ req: req, res: responseObject }) + }) } }, { @@ -118,14 +131,18 @@ module.exports = [ ] const getApplicationEndPoint = ResponseDecorator.handleErrors(ApplicationController.getApplicationEndPoint, successCode, errorCodes) - const responseObject = await getApplicationEndPoint(req) - res - .status(responseObject.code) - .send(responseObject.body) + // Add keycloak.protect() middleware to protect the route + await keycloak.protect(['SRE', 'Developer', 'Viewer'])(req, res, async () => { + const responseObject = await getApplicationEndPoint(req) + + res + .status(responseObject.code) + .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) - return null + logger.apiRes({ req: req, res: responseObject }) + return null + }) } }, { @@ -152,13 +169,17 @@ module.exports = [ ] const updateApplicationEndPoint = ResponseDecorator.handleErrors(ApplicationController.patchApplicationEndPoint, successCode, errorCodes) - const responseObject = await updateApplicationEndPoint(req) - res - .status(responseObject.code) - .send(responseObject.body) + // Add keycloak.protect() middleware to protect the route + await keycloak.protect(['SRE', 'Developer'])(req, res, async () => { + const responseObject = await updateApplicationEndPoint(req) - logger.apiRes({ req: req, res: responseObject }) + res + .status(responseObject.code) + .send(responseObject.body) + + logger.apiRes({ req: req, res: responseObject }) + }) } }, { @@ -185,13 +206,17 @@ module.exports = [ ] const updateApplicationEndPoint = ResponseDecorator.handleErrors(ApplicationController.updateApplicationYAMLEndPoint, successCode, errorCodes) - const responseObject = await updateApplicationEndPoint(req) - res - .status(responseObject.code) - .send(responseObject.body) + // Add keycloak.protect() middleware to protect the route + await keycloak.protect(['SRE', 'Developer'])(req, res, async () => { + const responseObject = await updateApplicationEndPoint(req) + + res + .status(responseObject.code) + .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, res: responseObject }) + }) } }, { @@ -218,13 +243,17 @@ module.exports = [ ] const updateApplicationEndPoint = ResponseDecorator.handleErrors(ApplicationController.updateApplicationEndPoint, successCode, errorCodes) - const responseObject = await updateApplicationEndPoint(req) - res - .status(responseObject.code) - .send(responseObject.body) + // Add keycloak.protect() middleware to protect the route + await keycloak.protect(['SRE', 'Developer'])(req, res, async () => { + const responseObject = await updateApplicationEndPoint(req) - logger.apiRes({ req: req, res: responseObject }) + res + .status(responseObject.code) + .send(responseObject.body) + + logger.apiRes({ req: req, res: responseObject }) + }) } }, { @@ -246,13 +275,17 @@ module.exports = [ ] const deleteApplicationEndPoint = ResponseDecorator.handleErrors(ApplicationController.deleteApplicationEndPoint, successCode, errorCodes) - const responseObject = await deleteApplicationEndPoint(req) - res - .status(responseObject.code) - .send(responseObject.body) + // Add keycloak.protect() middleware to protect the route + await keycloak.protect(['SRE', 'Developer'])(req, res, async () => { + const responseObject = await deleteApplicationEndPoint(req) + + res + .status(responseObject.code) + .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, res: responseObject }) + }) } } ] diff --git a/src/routes/applicationTemplate.js b/src/routes/applicationTemplate.js index c25958b58..830b9074a 100644 --- a/src/routes/applicationTemplate.js +++ b/src/routes/applicationTemplate.js @@ -15,6 +15,7 @@ const ApplicationTemplateController = require('../controllers/application-templa const ResponseDecorator = require('../decorators/response-decorator') const Errors = require('../helpers/errors') const logger = require('../logger') +const keycloak = require('../config/keycloak.js').initKeycloak() module.exports = [ { @@ -32,13 +33,17 @@ module.exports = [ ] const getApplicationTemplatesByUserEndPoint = ResponseDecorator.handleErrors(ApplicationTemplateController.getApplicationTemplatesByUserEndPoint, successCode, errorCodes) - const responseObject = await getApplicationTemplatesByUserEndPoint(req) - res - .status(responseObject.code) - .send(responseObject.body) + // Add keycloak.protect() middleware to protect the route + await keycloak.protect(['SRE', 'Developer', 'Viewer'])(req, res, async () => { + const responseObject = await getApplicationTemplatesByUserEndPoint(req) - logger.apiRes({ req: req, res: responseObject }) + res + .status(responseObject.code) + .send(responseObject.body) + + logger.apiRes({ req: req, res: responseObject }) + }) } }, { @@ -60,13 +65,17 @@ module.exports = [ ] const createApplicationTemplateEndPoint = ResponseDecorator.handleErrors(ApplicationTemplateController.createApplicationTemplateEndPoint, successCode, errorCodes) - const responseObject = await createApplicationTemplateEndPoint(req) - res - .status(responseObject.code) - .send(responseObject.body) + // Add keycloak.protect() middleware to protect the route + await keycloak.protect(['SRE', 'Developer'])(req, res, async () => { + const responseObject = await createApplicationTemplateEndPoint(req) + + res + .status(responseObject.code) + .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, res: responseObject }) + }) } }, { @@ -89,13 +98,17 @@ module.exports = [ ] const createApplicationTemplateEndPoint = ResponseDecorator.handleErrors(ApplicationTemplateController.createApplicationTemplateYAMLEndPoint, successCode, errorCodes) - const responseObject = await createApplicationTemplateEndPoint(req) - res - .status(responseObject.code) - .send(responseObject.body) + // Add keycloak.protect() middleware to protect the route + await keycloak.protect(['SRE', 'Developer'])(req, res, async () => { + const responseObject = await createApplicationTemplateEndPoint(req) - logger.apiRes({ req: req, res: responseObject }) + res + .status(responseObject.code) + .send(responseObject.body) + + logger.apiRes({ req: req, res: responseObject }) + }) } }, { @@ -117,13 +130,17 @@ module.exports = [ ] const getApplicationTemplateEndPoint = ResponseDecorator.handleErrors(ApplicationTemplateController.getApplicationTemplateEndPoint, successCode, errorCodes) - const responseObject = await getApplicationTemplateEndPoint(req) - res - .status(responseObject.code) - .send(responseObject.body) + // Add keycloak.protect() middleware to protect the route + await keycloak.protect(['SRE', 'Developer', 'Viewer'])(req, res, async () => { + const responseObject = await getApplicationTemplateEndPoint(req) + + res + .status(responseObject.code) + .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, res: responseObject }) + }) } }, { @@ -149,13 +166,17 @@ module.exports = [ ] const patchApplicationTemplateEndPoint = ResponseDecorator.handleErrors(ApplicationTemplateController.patchApplicationTemplateEndPoint, successCode, errorCodes) - const responseObject = await patchApplicationTemplateEndPoint(req) - res - .status(responseObject.code) - .send(responseObject.body) + // Add keycloak.protect() middleware to protect the route + await keycloak.protect(['SRE', 'Developer'])(req, res, async () => { + const responseObject = await patchApplicationTemplateEndPoint(req) - logger.apiRes({ req: req, res: responseObject }) + res + .status(responseObject.code) + .send(responseObject.body) + + logger.apiRes({ req: req, res: responseObject }) + }) } }, { @@ -182,13 +203,17 @@ module.exports = [ ] const updateApplicationTemplateEndPoint = ResponseDecorator.handleErrors(ApplicationTemplateController.updateApplicationTemplateYAMLEndPoint, successCode, errorCodes) - const responseObject = await updateApplicationTemplateEndPoint(req) - res - .status(responseObject.code) - .send(responseObject.body) + // Add keycloak.protect() middleware to protect the route + await keycloak.protect(['SRE', 'Developer'])(req, res, async () => { + const responseObject = await updateApplicationTemplateEndPoint(req) + + res + .status(responseObject.code) + .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, res: responseObject }) + }) } }, { @@ -214,13 +239,17 @@ module.exports = [ ] const updateApplicationTemplateEndPoint = ResponseDecorator.handleErrors(ApplicationTemplateController.updateApplicationTemplateEndPoint, successCode, errorCodes) - const responseObject = await updateApplicationTemplateEndPoint(req) - res - .status(responseObject.code) - .send(responseObject.body) + // Add keycloak.protect() middleware to protect the route + await keycloak.protect(['SRE', 'Developer'])(req, res, async () => { + const responseObject = await updateApplicationTemplateEndPoint(req) - logger.apiRes({ req: req, res: responseObject }) + res + .status(responseObject.code) + .send(responseObject.body) + + logger.apiRes({ req: req, res: responseObject }) + }) } }, { @@ -242,13 +271,17 @@ module.exports = [ ] const deleteApplicationTemplateEndPoint = ResponseDecorator.handleErrors(ApplicationTemplateController.deleteApplicationTemplateEndPoint, successCode, errorCodes) - const responseObject = await deleteApplicationTemplateEndPoint(req) - res - .status(responseObject.code) - .send(responseObject.body) + // Add keycloak.protect() middleware to protect the route + await keycloak.protect(['SRE', 'Developer'])(req, res, async () => { + const responseObject = await deleteApplicationTemplateEndPoint(req) + + res + .status(responseObject.code) + .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, res: responseObject }) + }) } } ] diff --git a/src/routes/capabilities.js b/src/routes/capabilities.js index a4f684f6d..54eaa2b1c 100644 --- a/src/routes/capabilities.js +++ b/src/routes/capabilities.js @@ -11,6 +11,7 @@ * */ const logger = require('../logger') +const keycloak = require('../config/keycloak.js').initKeycloak() module.exports = [ { @@ -18,7 +19,11 @@ module.exports = [ path: '/api/v1/capabilities/edgeResources', middleware: async (req, res) => { logger.apiReq(req) - res.sendStatus(204) + + // Add keycloak.protect() middleware to protect the route + await keycloak.protect(['SRE', 'Developer', 'Viewer'])(req, res, async () => { + res.sendStatus(204) + }) } }, { @@ -26,7 +31,11 @@ module.exports = [ path: '/api/v1/capabilities/applicationTemplates', middleware: async (req, res) => { logger.apiReq(req) - res.sendStatus(204) + + // Add keycloak.protect() middleware to protect the route + await keycloak.protect(['SRE', 'Developer', 'Viewer'])(req, res, async () => { + res.sendStatus(204) + }) } } ] diff --git a/src/routes/catalog.js b/src/routes/catalog.js index 583b5a82f..ce39b0329 100644 --- a/src/routes/catalog.js +++ b/src/routes/catalog.js @@ -39,7 +39,7 @@ module.exports = [ ) // Add keycloak.protect() middleware to protect the route - await keycloak.protect('SRE')(req, res, async () => { + await keycloak.protect(['SRE', 'Developer', 'Viewer'])(req, res, async () => { const responseObject = await listCatalogItemsEndPoint(req) res @@ -78,13 +78,17 @@ module.exports = [ successCode, errorCodes ) - const responseObject = await createCatalogItemEndpoint(req) - res - .status(responseObject.code) - .send(responseObject.body) + // Add keycloak.protect() middleware to protect the route + await keycloak.protect(['SRE', 'Developer'])(req, res, async () => { + const responseObject = await createCatalogItemEndpoint(req) + + res + .status(responseObject.code) + .send(responseObject.body) - logger.apiRes({ req, res: responseObject }) + logger.apiRes({ req, res: responseObject }) + }) } }, { @@ -110,13 +114,17 @@ module.exports = [ successCode, errorCodes ) - const responseObject = await listCatalogItemEndPoint(req) - res - .status(responseObject.code) - .send(responseObject.body) + // Add keycloak.protect() middleware to protect the route + await keycloak.protect(['SRE', 'Developer', 'Viewer'])(req, res, async () => { + const responseObject = await listCatalogItemEndPoint(req) + + res + .status(responseObject.code) + .send(responseObject.body) - logger.apiRes({ req, res: responseObject }) + logger.apiRes({ req, res: responseObject }) + }) } }, { @@ -151,13 +159,17 @@ module.exports = [ successCode, errorCodes ) - const responseObject = await updateCatalogItemEndpoint(req) - res - .status(responseObject.code) - .send(responseObject.body) + // Add keycloak.protect() middleware to protect the route for SRE and Developer + await keycloak.protect(['SRE', 'Developer'])(req, res, async () => { + const responseObject = await updateCatalogItemEndpoint(req) - logger.apiRes({ req, res: responseObject }) + res + .status(responseObject.code) + .send(responseObject.body) + + logger.apiRes({ req, res: responseObject }) + }) } }, { @@ -183,13 +195,18 @@ module.exports = [ successCode, errorCodes ) - const responseObject = await deleteCatalogItemEndPoint(req) - res - .status(responseObject.code) - .send(responseObject.body) + // Add keycloak.protect() middleware to protect the route + await keycloak.protect(['SRE', 'Developer'])(req, res, async () => { + const responseObject = await deleteCatalogItemEndPoint(req) + + res + .status(responseObject.code) + .send(responseObject.body) - logger.apiRes({ req, res: responseObject }) + logger.apiRes({ req, res: responseObject }) + }) } } + ] diff --git a/src/routes/config.js b/src/routes/config.js index 1cf961afe..b0a249d60 100644 --- a/src/routes/config.js +++ b/src/routes/config.js @@ -15,6 +15,7 @@ const ConfigController = require('../controllers/config-controller') const ResponseDecorator = require('../decorators/response-decorator') const logger = require('../logger') const Errors = require('../helpers/errors') +const keycloak = require('../config/keycloak.js').initKeycloak() module.exports = [ { @@ -30,14 +31,18 @@ module.exports = [ errors: [Errors.AuthenticationError] } ] - const getConfigEndpoint = ResponseDecorator.handleErrors(ConfigController.listConfigEndpoint, successCode, errorCodes) - const responseObject = await getConfigEndpoint(req) - res - .status(responseObject.code) - .send(responseObject.body) + // Add keycloak.protect() middleware to protect the route + await keycloak.protect(['SRE', 'Developer', 'Viewer'])(req, res, async () => { + const getConfigEndpoint = ResponseDecorator.handleErrors(ConfigController.listConfigEndpoint, successCode, errorCodes) + const responseObject = await getConfigEndpoint(req) - logger.apiRes({ req: req, res: responseObject }) + res + .status(responseObject.code) + .send(responseObject.body) + + logger.apiRes({ req: req, res: responseObject }) + }) } }, { @@ -58,14 +63,17 @@ module.exports = [ } ] - const getConfigEndpoint = ResponseDecorator.handleErrors(ConfigController.getConfigEndpoint, successCode, errorCodes) - const responseObject = await getConfigEndpoint(req) + // Add keycloak.protect() middleware to protect the route + await keycloak.protect(['SRE', 'Developer', 'Viewer'])(req, res, async () => { + const getConfigEndpoint = ResponseDecorator.handleErrors(ConfigController.getConfigEndpoint, successCode, errorCodes) + const responseObject = await getConfigEndpoint(req) - res - .status(responseObject.code) - .send(responseObject.body) + res + .status(responseObject.code) + .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, res: responseObject }) + }) } }, { @@ -86,14 +94,18 @@ module.exports = [ errors: [Errors.ValidationError] } ] - const upsertConfigElementEndpoint = ResponseDecorator.handleErrors(ConfigController.upsertConfigElementEndpoint, successCode, errorCodes) - const responseObject = await upsertConfigElementEndpoint(req) - res - .status(responseObject.code) - .send(responseObject.body) + // Add keycloak.protect() middleware to protect the route + await keycloak.protect(['SRE', 'Developer'])(req, res, async () => { + const upsertConfigElementEndpoint = ResponseDecorator.handleErrors(ConfigController.upsertConfigElementEndpoint, successCode, errorCodes) + const responseObject = await upsertConfigElementEndpoint(req) + + res + .status(responseObject.code) + .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, res: responseObject }) + }) } } ] diff --git a/src/routes/diagnostics.js b/src/routes/diagnostics.js index 5df090b4c..8dab3ffaf 100644 --- a/src/routes/diagnostics.js +++ b/src/routes/diagnostics.js @@ -16,6 +16,7 @@ const ResponseDecorator = require('../decorators/response-decorator') const Errors = require('../helpers/errors') const fs = require('fs') const logger = require('../logger') +const keycloak = require('../config/keycloak.js').initKeycloak() module.exports = [ { @@ -36,18 +37,21 @@ module.exports = [ } ] - const createMicroserviceImageSnapshotEndPoint = ResponseDecorator.handleErrors( - DiagnosticController.createMicroserviceImageSnapshotEndPoint, - successCode, - errorCodes - ) - const responseObject = await createMicroserviceImageSnapshotEndPoint(req) + // Add keycloak.protect() middleware to protect the route + await keycloak.protect(['SRE', 'Developer'])(req, res, async () => { + const createMicroserviceImageSnapshotEndPoint = ResponseDecorator.handleErrors( + DiagnosticController.createMicroserviceImageSnapshotEndPoint, + successCode, + errorCodes + ) + const responseObject = await createMicroserviceImageSnapshotEndPoint(req) - res - .status(responseObject.code) - .send(responseObject.body) + res + .status(responseObject.code) + .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, res: responseObject }) + }) } }, { @@ -68,26 +72,29 @@ module.exports = [ } ] - const getMicroserviceImageSnapshotEndPoint = ResponseDecorator.handleErrors( - DiagnosticController.getMicroserviceImageSnapshotEndPoint, - successCode, - errorCodes - ) - const responseObject = await getMicroserviceImageSnapshotEndPoint(req) - if (responseObject.code !== successCode) { - res - .status(responseObject.code) - .send(responseObject.body) - - logger.apiRes({ req: req, res: responseObject }) - } else { - res.writeHead(successCode, { - 'Content-Length': responseObject.body['Content-Length'], - 'Content-Type': responseObject.body['Content-Type'], - 'Content-Disposition': 'attachment; filename=' + responseObject.body.fileName - }) - fs.createReadStream(responseObject.body.filePath).pipe(res) - } + // Add keycloak.protect() middleware to protect the route + await keycloak.protect(['SRE', 'Developer'])(req, res, async () => { + const getMicroserviceImageSnapshotEndPoint = ResponseDecorator.handleErrors( + DiagnosticController.getMicroserviceImageSnapshotEndPoint, + successCode, + errorCodes + ) + const responseObject = await getMicroserviceImageSnapshotEndPoint(req) + if (responseObject.code !== successCode) { + res + .status(responseObject.code) + .send(responseObject.body) + + logger.apiRes({ req: req, res: responseObject }) + } else { + res.writeHead(successCode, { + 'Content-Length': responseObject.body['Content-Length'], + 'Content-Type': responseObject.body['Content-Type'], + 'Content-Disposition': 'attachment; filename=' + responseObject.body.fileName + }) + fs.createReadStream(responseObject.body.filePath).pipe(res) + } + }) } }, { @@ -112,18 +119,21 @@ module.exports = [ } ] - const changeMicroserviceStraceStateEndPoint = ResponseDecorator.handleErrors( - DiagnosticController.changeMicroserviceStraceStateEndPoint, - successCode, - errorCodes - ) - const responseObject = await changeMicroserviceStraceStateEndPoint(req) + // Add keycloak.protect() middleware to protect the route + await keycloak.protect(['SRE', 'Developer'])(req, res, async () => { + const changeMicroserviceStraceStateEndPoint = ResponseDecorator.handleErrors( + DiagnosticController.changeMicroserviceStraceStateEndPoint, + successCode, + errorCodes + ) + const responseObject = await changeMicroserviceStraceStateEndPoint(req) - res - .status(responseObject.code) - .send(responseObject.body) + res + .status(responseObject.code) + .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, res: responseObject }) + }) } }, { @@ -144,18 +154,21 @@ module.exports = [ } ] - const getMicroserviceStraceDataEndPoint = ResponseDecorator.handleErrors( - DiagnosticController.getMicroserviceStraceDataEndPoint, - successCode, - errorCodes - ) - const responseObject = await getMicroserviceStraceDataEndPoint(req) + // Add keycloak.protect() middleware to protect the route + await keycloak.protect(['SRE', 'Developer'])(req, res, async () => { + const getMicroserviceStraceDataEndPoint = ResponseDecorator.handleErrors( + DiagnosticController.getMicroserviceStraceDataEndPoint, + successCode, + errorCodes + ) + const responseObject = await getMicroserviceStraceDataEndPoint(req) - res - .status(responseObject.code) - .send(responseObject.body) + res + .status(responseObject.code) + .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, res: responseObject }) + }) } }, { @@ -184,18 +197,21 @@ module.exports = [ } ] - const postMicroserviceStraceDataToFtpEndPoint = ResponseDecorator.handleErrors( - DiagnosticController.postMicroserviceStraceDataToFtpEndPoint, - successCode, - errorCodes - ) - const responseObject = await postMicroserviceStraceDataToFtpEndPoint(req) + // Add keycloak.protect() middleware to protect the route + await keycloak.protect(['SRE', 'Developer'])(req, res, async () => { + const postMicroserviceStraceDataToFtpEndPoint = ResponseDecorator.handleErrors( + DiagnosticController.postMicroserviceStraceDataToFtpEndPoint, + successCode, + errorCodes + ) + const responseObject = await postMicroserviceStraceDataToFtpEndPoint(req) - res - .status(responseObject.code) - .send(responseObject.body) + res + .status(responseObject.code) + .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, res: responseObject }) + }) } } ] diff --git a/src/routes/edgeResource.js b/src/routes/edgeResource.js index 3a972adcb..ebdc65cbf 100644 --- a/src/routes/edgeResource.js +++ b/src/routes/edgeResource.js @@ -15,6 +15,7 @@ const EdgeResourceController = require('../controllers/edge-resource-controller' const ResponseDecorator = require('../decorators/response-decorator') const logger = require('../logger') const Errors = require('../helpers/errors') +const keycloak = require('../config/keycloak.js').initKeycloak() module.exports = [ { @@ -30,14 +31,18 @@ module.exports = [ errors: [Errors.AuthenticationError] } ] - const getEdgeResourcesEndpoint = ResponseDecorator.handleErrors(EdgeResourceController.listEdgeResourcesEndpoint, successCode, errorCodes) - const responseObject = await getEdgeResourcesEndpoint(req) - res - .status(responseObject.code) - .send(responseObject.body) + // Add keycloak.protect() middleware to protect the route for SRE role + await keycloak.protect(['SRE', 'Developer', 'Viewer'])(req, res, async () => { + const getEdgeResourcesEndpoint = ResponseDecorator.handleErrors(EdgeResourceController.listEdgeResourcesEndpoint, successCode, errorCodes) + const responseObject = await getEdgeResourcesEndpoint(req) - logger.apiRes({ req: req, res: responseObject }) + res + .status(responseObject.code) + .send(responseObject.body) + + logger.apiRes({ req: req, res: responseObject }) + }) } }, { @@ -58,14 +63,17 @@ module.exports = [ } ] - const getEdgeResourceEndpoint = ResponseDecorator.handleErrors(EdgeResourceController.getEdgeResourceEndpoint, successCode, errorCodes) - const responseObject = await getEdgeResourceEndpoint(req) + // Add keycloak.protect() middleware to protect the route for SRE role + await keycloak.protect(['SRE', 'Developer', 'Viewer'])(req, res, async () => { + const getEdgeResourceEndpoint = ResponseDecorator.handleErrors(EdgeResourceController.getEdgeResourceEndpoint, successCode, errorCodes) + const responseObject = await getEdgeResourceEndpoint(req) - res - .status(responseObject.code) - .send(responseObject.body) + res + .status(responseObject.code) + .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, res: responseObject }) + }) } }, { @@ -86,14 +94,17 @@ module.exports = [ } ] - const getEdgeResourceAllVersionsEndpoint = ResponseDecorator.handleErrors(EdgeResourceController.getEdgeResourceAllVersionsEndpoint, successCode, errorCodes) - const responseObject = await getEdgeResourceAllVersionsEndpoint(req) + // Add keycloak.protect() middleware to protect the route for SRE role + await keycloak.protect(['SRE', 'Developer', 'Viewer'])(req, res, async () => { + const getEdgeResourceAllVersionsEndpoint = ResponseDecorator.handleErrors(EdgeResourceController.getEdgeResourceAllVersionsEndpoint, successCode, errorCodes) + const responseObject = await getEdgeResourceAllVersionsEndpoint(req) - res - .status(responseObject.code) - .send(responseObject.body) + res + .status(responseObject.code) + .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, res: responseObject }) + }) } }, { @@ -118,14 +129,18 @@ module.exports = [ errors: [Errors.ValidationError] } ] - const updateEdgeResourceEndpoint = ResponseDecorator.handleErrors(EdgeResourceController.updateEdgeResourceEndpoint, successCode, errorCodes) - const responseObject = await updateEdgeResourceEndpoint(req) - res - .status(responseObject.code) - .send(responseObject.body) + // Add keycloak.protect() middleware to protect the route for SRE role + await keycloak.protect(['SRE'])(req, res, async () => { + const updateEdgeResourceEndpoint = ResponseDecorator.handleErrors(EdgeResourceController.updateEdgeResourceEndpoint, successCode, errorCodes) + const responseObject = await updateEdgeResourceEndpoint(req) + + res + .status(responseObject.code) + .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, res: responseObject }) + }) } }, { @@ -149,14 +164,18 @@ module.exports = [ errors: [Errors.ValidationError] } ] - const deleteEdgeResourceEndpoint = ResponseDecorator.handleErrors(EdgeResourceController.deleteEdgeResourceEndpoint, successCode, errorCodes) - const responseObject = await deleteEdgeResourceEndpoint(req) - res - .status(responseObject.code) - .send(responseObject.body) + // Add keycloak.protect() middleware to protect the route for SRE role + await keycloak.protect(['SRE'])(req, res, async () => { + const deleteEdgeResourceEndpoint = ResponseDecorator.handleErrors(EdgeResourceController.deleteEdgeResourceEndpoint, successCode, errorCodes) + const responseObject = await deleteEdgeResourceEndpoint(req) + + res + .status(responseObject.code) + .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, res: responseObject }) + }) } }, { @@ -177,14 +196,18 @@ module.exports = [ errors: [Errors.ValidationError] } ] - const createEdgeResourceEndpoint = ResponseDecorator.handleErrors(EdgeResourceController.createEdgeResourceEndpoint, successCode, errorCodes) - const responseObject = await createEdgeResourceEndpoint(req) - res - .status(responseObject.code) - .send(responseObject.body) + // Add keycloak.protect() middleware to protect the route for SRE role + await keycloak.protect(['SRE'])(req, res, async () => { + const createEdgeResourceEndpoint = ResponseDecorator.handleErrors(EdgeResourceController.createEdgeResourceEndpoint, successCode, errorCodes) + const responseObject = await createEdgeResourceEndpoint(req) - logger.apiRes({ req: req, res: responseObject }) + res + .status(responseObject.code) + .send(responseObject.body) + + logger.apiRes({ req: req, res: responseObject }) + }) } }, { @@ -204,14 +227,18 @@ module.exports = [ errors: [Errors.ValidationError] } ] - const linkEdgeResourceEndpoint = ResponseDecorator.handleErrors(EdgeResourceController.linkEdgeResourceEndpoint, successCode, errorCodes) - const responseObject = await linkEdgeResourceEndpoint(req) - res - .status(responseObject.code) - .send(responseObject.body) + // Add keycloak.protect() middleware to protect the route for SRE role + await keycloak.protect(['SRE'])(req, res, async () => { + const linkEdgeResourceEndpoint = ResponseDecorator.handleErrors(EdgeResourceController.linkEdgeResourceEndpoint, successCode, errorCodes) + const responseObject = await linkEdgeResourceEndpoint(req) + + res + .status(responseObject.code) + .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, res: responseObject }) + }) } }, { @@ -231,14 +258,18 @@ module.exports = [ errors: [Errors.ValidationError] } ] - const unlinkEdgeResourceEndpoint = ResponseDecorator.handleErrors(EdgeResourceController.unlinkEdgeResourceEndpoint, successCode, errorCodes) - const responseObject = await unlinkEdgeResourceEndpoint(req) - res - .status(responseObject.code) - .send(responseObject.body) + // Add keycloak.protect() middleware to protect the route for SRE role + await keycloak.protect(['SRE'])(req, res, async () => { + const unlinkEdgeResourceEndpoint = ResponseDecorator.handleErrors(EdgeResourceController.unlinkEdgeResourceEndpoint, successCode, errorCodes) + const responseObject = await unlinkEdgeResourceEndpoint(req) + + res + .status(responseObject.code) + .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, res: responseObject }) + }) } } ] diff --git a/src/routes/flow.js b/src/routes/flow.js index 16b8616cf..928cec737 100644 --- a/src/routes/flow.js +++ b/src/routes/flow.js @@ -15,6 +15,7 @@ const FlowController = require('../controllers/application-controller') const ResponseDecorator = require('../decorators/response-decorator') const Errors = require('../helpers/errors') const logger = require('../logger') +const keycloak = require('../config/keycloak.js').initKeycloak() module.exports = [ { @@ -31,14 +32,17 @@ module.exports = [ } ] - const getFlowsByUserEndPoint = ResponseDecorator.handleErrors(FlowController.getApplicationsByUserEndPoint, successCode, errorCodes) - const responseObject = await getFlowsByUserEndPoint(req) + // Add keycloak.protect() middleware to protect the route for both SRE and Developer roles + await keycloak.protect(['SRE', 'Developer', 'Viewer'])(req, res, async () => { + const getFlowsByUserEndPoint = ResponseDecorator.handleErrors(FlowController.getApplicationsByUserEndPoint, successCode, errorCodes) + const responseObject = await getFlowsByUserEndPoint(req) - res - .status(responseObject.code) - .send({ flows: responseObject.body.applications }) + res + .status(responseObject.code) + .send({ flows: responseObject.body.applications }) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, res: responseObject }) + }) } }, { @@ -59,14 +63,17 @@ module.exports = [ } ] - const createFlowEndPoint = ResponseDecorator.handleErrors(FlowController.createApplicationEndPoint, successCode, errorCodes) - const responseObject = await createFlowEndPoint(req) + // Add keycloak.protect() middleware to protect the route for both SRE and Developer roles + await keycloak.protect(['SRE', 'Developer'])(req, res, async () => { + const createFlowEndPoint = ResponseDecorator.handleErrors(FlowController.createApplicationEndPoint, successCode, errorCodes) + const responseObject = await createFlowEndPoint(req) - res - .status(responseObject.code) - .send(responseObject.body) + res + .status(responseObject.code) + .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, res: responseObject }) + }) } }, { @@ -87,14 +94,17 @@ module.exports = [ } ] - const getFlowEndPoint = ResponseDecorator.handleErrors(FlowController.getApplicationByIdEndPoint, successCode, errorCodes) - const responseObject = await getFlowEndPoint(req) + // Add keycloak.protect() middleware to protect the route for both SRE and Developer roles + await keycloak.protect(['SRE', 'Developer', 'Viewer'])(req, res, async () => { + const getFlowEndPoint = ResponseDecorator.handleErrors(FlowController.getApplicationByIdEndPoint, successCode, errorCodes) + const responseObject = await getFlowEndPoint(req) - res - .status(responseObject.code) - .send(responseObject.body) + res + .status(responseObject.code) + .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, res: responseObject }) + }) } }, { @@ -119,14 +129,17 @@ module.exports = [ } ] - const updateFlowEndPoint = ResponseDecorator.handleErrors(FlowController.patchApplicationByIdEndPoint, successCode, errorCodes) - const responseObject = await updateFlowEndPoint(req) + // Add keycloak.protect() middleware to protect the route for both SRE and Developer roles + await keycloak.protect(['SRE', 'Developer'])(req, res, async () => { + const updateFlowEndPoint = ResponseDecorator.handleErrors(FlowController.patchApplicationByIdEndPoint, successCode, errorCodes) + const responseObject = await updateFlowEndPoint(req) - res - .status(responseObject.code) - .send(responseObject.body) + res + .status(responseObject.code) + .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, res: responseObject }) + }) } }, { @@ -147,14 +160,17 @@ module.exports = [ } ] - const deleteFlowEndPoint = ResponseDecorator.handleErrors(FlowController.deleteApplicationByIdEndPoint, successCode, errorCodes) - const responseObject = await deleteFlowEndPoint(req) + // Add keycloak.protect() middleware to protect the route for both SRE and Developer roles + await keycloak.protect(['SRE', 'Developer'])(req, res, async () => { + const deleteFlowEndPoint = ResponseDecorator.handleErrors(FlowController.deleteApplicationByIdEndPoint, successCode, errorCodes) + const responseObject = await deleteFlowEndPoint(req) - res - .status(responseObject.code) - .send(responseObject.body) + res + .status(responseObject.code) + .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, res: responseObject }) + }) } } ] diff --git a/src/routes/iofog.js b/src/routes/iofog.js index a38e14124..3271101d3 100644 --- a/src/routes/iofog.js +++ b/src/routes/iofog.js @@ -15,6 +15,7 @@ const FogController = require('../controllers/iofog-controller') const ResponseDecorator = require('../decorators/response-decorator') const Errors = require('../helpers/errors') const logger = require('../logger') +const keycloak = require('../config/keycloak.js').initKeycloak() module.exports = [ { @@ -35,14 +36,17 @@ module.exports = [ } ] - const getFogList = ResponseDecorator.handleErrors(FogController.getFogListEndPoint, successCode, errCodes) - const responseObject = await getFogList(req) + // Add keycloak.protect() middleware to protect the route for SRE, Developer, and Viewer roles + await keycloak.protect(['SRE', 'Developer', 'Viewer'])(req, res, async () => { + const getFogList = ResponseDecorator.handleErrors(FogController.getFogListEndPoint, successCode, errCodes) + const responseObject = await getFogList(req) - res - .status(responseObject.code) - .send(responseObject.body) + res + .status(responseObject.code) + .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, res: responseObject }) + }) } }, { @@ -64,14 +68,17 @@ module.exports = [ } ] - const createFog = ResponseDecorator.handleErrors(FogController.createFogEndPoint, successCode, errCodes) - const responseObject = await createFog(req) + // Protect the route with SRE access control + await keycloak.protect('SRE')(req, res, async () => { + const createFog = ResponseDecorator.handleErrors(FogController.createFogEndPoint, successCode, errCodes) + const responseObject = await createFog(req) - res - .status(responseObject.code) - .send(responseObject.body) + res + .status(responseObject.code) + .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, res: responseObject }) + }) } }, { @@ -97,14 +104,17 @@ module.exports = [ } ] - const updateFog = ResponseDecorator.handleErrors(FogController.updateFogEndPoint, successCode, errCodes) - const responseObject = await updateFog(req) + // Protect the route with SRE access control + await keycloak.protect('SRE')(req, res, async () => { + const updateFog = ResponseDecorator.handleErrors(FogController.updateFogEndPoint, successCode, errCodes) + const responseObject = await updateFog(req) - res - .status(responseObject.code) - .send(responseObject.body) + res + .status(responseObject.code) + .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, res: responseObject }) + }) } }, { @@ -125,14 +135,17 @@ module.exports = [ } ] - const deleteFog = ResponseDecorator.handleErrors(FogController.deleteFogEndPoint, successCode, errCodes) - const responseObject = await deleteFog(req) + // Protect the route with SRE access control + await keycloak.protect('SRE')(req, res, async () => { + const deleteFog = ResponseDecorator.handleErrors(FogController.deleteFogEndPoint, successCode, errCodes) + const responseObject = await deleteFog(req) - res - .status(responseObject.code) - .send(responseObject.body) + res + .status(responseObject.code) + .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, res: responseObject }) + }) } }, { @@ -153,14 +166,17 @@ module.exports = [ } ] - const getFog = ResponseDecorator.handleErrors(FogController.getFogEndPoint, successCode, errCodes) - const responseObject = await getFog(req) + // Protect the route with SRE, Developer, and Viewer access control + await keycloak.protect(['SRE', 'Developer', 'Viewer'])(req, res, async () => { + const getFog = ResponseDecorator.handleErrors(FogController.getFogEndPoint, successCode, errCodes) + const responseObject = await getFog(req) - res - .status(responseObject.code) - .send(responseObject.body) + res + .status(responseObject.code) + .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, res: responseObject }) + }) } }, { @@ -181,15 +197,17 @@ module.exports = [ } ] - const generateFogProvisioningKey = ResponseDecorator.handleErrors(FogController.generateProvisioningKeyEndPoint, - successCode, errCodes) - const responseObject = await generateFogProvisioningKey(req) + await keycloak.protect(['SRE'])(req, res, async () => { + const generateFogProvisioningKey = ResponseDecorator.handleErrors(FogController.generateProvisioningKeyEndPoint, + successCode, errCodes) + const responseObject = await generateFogProvisioningKey(req) - res - .status(responseObject.code) - .send(responseObject.body) + res + .status(responseObject.code) + .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, res: responseObject }) + }) } }, { @@ -214,15 +232,17 @@ module.exports = [ } ] - const setFogVersionCommand = ResponseDecorator.handleErrors(FogController.setFogVersionCommandEndPoint, - successCode, errCodes) - const responseObject = await setFogVersionCommand(req) + await keycloak.protect(['SRE'])(req, res, async () => { + const setFogVersionCommand = ResponseDecorator.handleErrors(FogController.setFogVersionCommandEndPoint, + successCode, errCodes) + const responseObject = await setFogVersionCommand(req) - res - .status(responseObject.code) - .send(responseObject.body) + res + .status(responseObject.code) + .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, res: responseObject }) + }) } }, { @@ -247,15 +267,17 @@ module.exports = [ } ] - const setFogRebootCommand = ResponseDecorator.handleErrors(FogController.setFogRebootCommandEndPoint, - successCode, errCodes) - const responseObject = await setFogRebootCommand(req) + await keycloak.protect(['SRE'])(req, res, async () => { + const setFogRebootCommand = ResponseDecorator.handleErrors(FogController.setFogRebootCommandEndPoint, + successCode, errCodes) + const responseObject = await setFogRebootCommand(req) - res - .status(responseObject.code) - .send(responseObject.body) + res + .status(responseObject.code) + .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, res: responseObject }) + }) } }, { @@ -276,15 +298,17 @@ module.exports = [ } ] - const getHalHardwareInfo = ResponseDecorator.handleErrors(FogController.getHalHardwareInfoEndPoint, - successCode, errCodes) - const responseObject = await getHalHardwareInfo(req) + await keycloak.protect(['SRE', 'Developer', 'Viewer'])(req, res, async () => { + const getHalHardwareInfo = ResponseDecorator.handleErrors(FogController.getHalHardwareInfoEndPoint, + successCode, errCodes) + const responseObject = await getHalHardwareInfo(req) - res - .status(responseObject.code) - .send(responseObject.body) + res + .status(responseObject.code) + .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, res: responseObject }) + }) } }, { @@ -305,14 +329,16 @@ module.exports = [ } ] - const getHalUsbInfo = ResponseDecorator.handleErrors(FogController.getHalUsbInfoEndPoint, successCode, errCodes) - const responseObject = await getHalUsbInfo(req) + await keycloak.protect(['SRE', 'Developer', 'Viewer'])(req, res, async () => { + const getHalUsbInfo = ResponseDecorator.handleErrors(FogController.getHalUsbInfoEndPoint, successCode, errCodes) + const responseObject = await getHalUsbInfo(req) - res - .status(responseObject.code) - .send(responseObject.body) + res + .status(responseObject.code) + .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, res: responseObject }) + }) } }, { @@ -337,15 +363,17 @@ module.exports = [ } ] - const setFogPruneCommand = ResponseDecorator.handleErrors(FogController.setFogPruneCommandEndPoint, - successCode, errCodes) - const responseObject = await setFogPruneCommand(req) + await keycloak.protect(['SRE'])(req, res, async () => { + const setFogPruneCommand = ResponseDecorator.handleErrors(FogController.setFogPruneCommandEndPoint, + successCode, errCodes) + const responseObject = await setFogPruneCommand(req) - res - .status(responseObject.code) - .send(responseObject.body) + res + .status(responseObject.code) + .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, res: responseObject }) + }) } } ] diff --git a/src/routes/microservices.js b/src/routes/microservices.js index a005c5048..8a15a7438 100644 --- a/src/routes/microservices.js +++ b/src/routes/microservices.js @@ -15,6 +15,7 @@ const MicroservicesController = require('../controllers/microservices-controller const ResponseDecorator = require('../decorators/response-decorator') const Errors = require('../helpers/errors') const logger = require('../logger') +const keycloak = require('../config/keycloak.js').initKeycloak() module.exports = [ { @@ -31,18 +32,20 @@ module.exports = [ } ] - const listAllPublicPortsEndPoint = ResponseDecorator.handleErrors( - MicroservicesController.listAllPublicPortsEndPoint, - successCode, - errorCodes - ) - const responseObject = await listAllPublicPortsEndPoint(req) + await keycloak.protect(['SRE', 'Developer', 'Viewer'])(req, res, async () => { + const listAllPublicPortsEndPoint = ResponseDecorator.handleErrors( + MicroservicesController.listAllPublicPortsEndPoint, + successCode, + errorCodes + ) + const responseObject = await listAllPublicPortsEndPoint(req) - res - .status(responseObject.code) - .send(responseObject.body) + res + .status(responseObject.code) + .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, res: responseObject }) + }) } }, { @@ -59,15 +62,17 @@ module.exports = [ } ] - const getMicroservicesByApplicationEndPoint = ResponseDecorator.handleErrors(MicroservicesController.getMicroservicesByApplicationEndPoint, - successCode, errorCodes) - const responseObject = await getMicroservicesByApplicationEndPoint(req) + await keycloak.protect(['SRE', 'Developer', 'Viewer'])(req, res, async () => { + const getMicroservicesByApplicationEndPoint = ResponseDecorator.handleErrors(MicroservicesController.getMicroservicesByApplicationEndPoint, + successCode, errorCodes) + const responseObject = await getMicroservicesByApplicationEndPoint(req) - res - .status(responseObject.code) - .send(responseObject.body) + res + .status(responseObject.code) + .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, res: responseObject }) + }) } }, { @@ -89,15 +94,17 @@ module.exports = [ } ] - const createMicroservicesOnFogEndPoint = ResponseDecorator.handleErrors( - MicroservicesController.createMicroserviceOnFogEndPoint, successCode, errorCodes) - const responseObject = await createMicroservicesOnFogEndPoint(req) + await keycloak.protect(['SRE', 'Developer'])(req, res, async () => { + const createMicroservicesOnFogEndPoint = ResponseDecorator.handleErrors( + MicroservicesController.createMicroserviceOnFogEndPoint, successCode, errorCodes) + const responseObject = await createMicroservicesOnFogEndPoint(req) - res - .status(responseObject.code) - .send(responseObject.body) + res + .status(responseObject.code) + .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, res: responseObject }) + }) } }, { @@ -120,15 +127,17 @@ module.exports = [ } ] - const createMicroservicesYAMLEndPoint = ResponseDecorator.handleErrors( - MicroservicesController.createMicroserviceYAMLEndPoint, successCode, errorCodes) - const responseObject = await createMicroservicesYAMLEndPoint(req) + await keycloak.protect(['SRE', 'Developer'])(req, res, async () => { + const createMicroservicesYAMLEndPoint = ResponseDecorator.handleErrors( + MicroservicesController.createMicroserviceYAMLEndPoint, successCode, errorCodes) + const responseObject = await createMicroservicesYAMLEndPoint(req) - res - .status(responseObject.code) - .send(responseObject.body) + res + .status(responseObject.code) + .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, res: responseObject }) + }) } }, { @@ -149,18 +158,19 @@ module.exports = [ } ] - const getMicroserviceEndPoint = ResponseDecorator.handleErrors(MicroservicesController.getMicroserviceEndPoint, - successCode, errorCodes) - const responseObject = await getMicroserviceEndPoint(req) + await keycloak.protect(['SRE', 'Developer', 'Viewer'])(req, res, async () => { + const getMicroserviceEndPoint = ResponseDecorator.handleErrors(MicroservicesController.getMicroserviceEndPoint, + successCode, errorCodes) + const responseObject = await getMicroserviceEndPoint(req) - res - .status(responseObject.code) - .send(responseObject.body) + res + .status(responseObject.code) + .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, res: responseObject }) + }) } }, - { method: 'patch', path: '/api/v1/microservices/:uuid', @@ -184,15 +194,17 @@ module.exports = [ } ] - const updateMicroserviceEndPoint = ResponseDecorator.handleErrors(MicroservicesController.updateMicroserviceEndPoint, - successCode, errorCodes) - const responseObject = await updateMicroserviceEndPoint(req) + await keycloak.protect(['SRE', 'Developer'])(req, res, async () => { + const updateMicroserviceEndPoint = ResponseDecorator.handleErrors(MicroservicesController.updateMicroserviceEndPoint, + successCode, errorCodes) + const responseObject = await updateMicroserviceEndPoint(req) - res - .status(responseObject.code) - .send(responseObject.body) + res + .status(responseObject.code) + .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, res: responseObject }) + }) } }, @@ -220,15 +232,17 @@ module.exports = [ } ] - const updateMicroserviceYAMLEndPoint = ResponseDecorator.handleErrors(MicroservicesController.updateMicroserviceYAMLEndPoint, - successCode, errorCodes) - const responseObject = await updateMicroserviceYAMLEndPoint(req) + await keycloak.protect(['SRE', 'Developer'])(req, res, async () => { + const updateMicroserviceYAMLEndPoint = ResponseDecorator.handleErrors(MicroservicesController.updateMicroserviceYAMLEndPoint, + successCode, errorCodes) + const responseObject = await updateMicroserviceYAMLEndPoint(req) - res - .status(responseObject.code) - .send(responseObject.body) + res + .status(responseObject.code) + .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, res: responseObject }) + }) } }, { @@ -249,15 +263,17 @@ module.exports = [ } ] - const deleteMicroserviceEndPoint = ResponseDecorator.handleErrors(MicroservicesController.deleteMicroserviceEndPoint, - successCode, errorCodes) - const responseObject = await deleteMicroserviceEndPoint(req) + await keycloak.protect(['SRE', 'Developer'])(req, res, async () => { + const deleteMicroserviceEndPoint = ResponseDecorator.handleErrors(MicroservicesController.deleteMicroserviceEndPoint, + successCode, errorCodes) + const responseObject = await deleteMicroserviceEndPoint(req) - res - .status(responseObject.code) - .send(responseObject.body) + res + .status(responseObject.code) + .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, res: responseObject }) + }) } }, { @@ -282,15 +298,17 @@ module.exports = [ } ] - const createMicroserviceRouteEndPoint = ResponseDecorator.handleErrors( - MicroservicesController.createMicroserviceRouteEndPoint, successCode, errorCodes) - const responseObject = await createMicroserviceRouteEndPoint(req) + await keycloak.protect(['SRE', 'Developer'])(req, res, async () => { + const createMicroserviceRouteEndPoint = ResponseDecorator.handleErrors( + MicroservicesController.createMicroserviceRouteEndPoint, successCode, errorCodes) + const responseObject = await createMicroserviceRouteEndPoint(req) - res - .status(responseObject.code) - .send(responseObject.body) + res + .status(responseObject.code) + .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, res: responseObject }) + }) } }, { @@ -315,15 +333,17 @@ module.exports = [ } ] - const deleteMicroserviceRouteEndPoint = ResponseDecorator.handleErrors( - MicroservicesController.deleteMicroserviceRouteEndPoint, successCode, errorCodes) - const responseObject = await deleteMicroserviceRouteEndPoint(req) + await keycloak.protect(['SRE', 'Developer'])(req, res, async () => { + const deleteMicroserviceRouteEndPoint = ResponseDecorator.handleErrors( + MicroservicesController.deleteMicroserviceRouteEndPoint, successCode, errorCodes) + const responseObject = await deleteMicroserviceRouteEndPoint(req) - res - .status(responseObject.code) - .send(responseObject.body) + res + .status(responseObject.code) + .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, res: responseObject }) + }) } }, { @@ -348,15 +368,17 @@ module.exports = [ } ] - const createMicroservicePortMappingEndPoint = ResponseDecorator.handleErrors( - MicroservicesController.createMicroservicePortMappingEndPoint, successCode, errorCodes) - const responseObject = await createMicroservicePortMappingEndPoint(req) + await keycloak.protect(['SRE', 'Developer'])(req, res, async () => { + const createMicroservicePortMappingEndPoint = ResponseDecorator.handleErrors( + MicroservicesController.createMicroservicePortMappingEndPoint, successCode, errorCodes) + const responseObject = await createMicroservicePortMappingEndPoint(req) - res - .status(responseObject.code) - .send(responseObject.body) + res + .status(responseObject.code) + .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, res: responseObject }) + }) } }, { @@ -377,15 +399,17 @@ module.exports = [ } ] - const deleteMicroservicePortMapping = ResponseDecorator.handleErrors( - MicroservicesController.deleteMicroservicePortMappingEndPoint, successCode, errorCodes) - const responseObject = await deleteMicroservicePortMapping(req) + await keycloak.protect(['SRE', 'Developer'])(req, res, async () => { + const deleteMicroservicePortMapping = ResponseDecorator.handleErrors( + MicroservicesController.deleteMicroservicePortMappingEndPoint, successCode, errorCodes) + const responseObject = await deleteMicroservicePortMapping(req) - res - .status(responseObject.code) - .send(responseObject.body) + res + .status(responseObject.code) + .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, res: responseObject }) + }) } }, { @@ -406,15 +430,17 @@ module.exports = [ } ] - const getMicroservicePortMapping = ResponseDecorator.handleErrors( - MicroservicesController.getMicroservicePortMappingListEndPoint, successCode, errorCodes) - const responseObject = await getMicroservicePortMapping(req) + await keycloak.protect(['SRE', 'Developer', 'Viewer'])(req, res, async () => { + const getMicroservicePortMapping = ResponseDecorator.handleErrors( + MicroservicesController.getMicroservicePortMappingListEndPoint, successCode, errorCodes) + const responseObject = await getMicroservicePortMapping(req) - res - .status(responseObject.code) - .send(responseObject.body) + res + .status(responseObject.code) + .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, res: responseObject }) + }) } }, { @@ -435,18 +461,20 @@ module.exports = [ } ] - const listMicroserviceVolumeMappingEndPoint = ResponseDecorator.handleErrors( - MicroservicesController.listMicroserviceVolumeMappingsEndPoint, - successCode, - errorCodes - ) - const responseObject = await listMicroserviceVolumeMappingEndPoint(req) + await keycloak.protect(['SRE', 'Developer', 'Viewer'])(req, res, async () => { + const listMicroserviceVolumeMappingEndPoint = ResponseDecorator.handleErrors( + MicroservicesController.listMicroserviceVolumeMappingsEndPoint, + successCode, + errorCodes + ) + const responseObject = await listMicroserviceVolumeMappingEndPoint(req) - res - .status(responseObject.code) - .send(responseObject.body) + res + .status(responseObject.code) + .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, res: responseObject }) + }) } }, { @@ -471,18 +499,20 @@ module.exports = [ } ] - const createMicroserviceVolumeMappingEndPoint = ResponseDecorator.handleErrors( - MicroservicesController.createMicroserviceVolumeMappingEndPoint, - successCode, - errorCodes - ) - const responseObject = await createMicroserviceVolumeMappingEndPoint(req) + await keycloak.protect(['SRE', 'Developer'])(req, res, async () => { + const createMicroserviceVolumeMappingEndPoint = ResponseDecorator.handleErrors( + MicroservicesController.createMicroserviceVolumeMappingEndPoint, + successCode, + errorCodes + ) + const responseObject = await createMicroserviceVolumeMappingEndPoint(req) - res - .status(responseObject.code) - .send(responseObject.body) + res + .status(responseObject.code) + .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, res: responseObject }) + }) } }, { @@ -507,18 +537,20 @@ module.exports = [ } ] - const deleteMicroserviceVolumeMappingEndPoint = ResponseDecorator.handleErrors( - MicroservicesController.deleteMicroserviceVolumeMappingEndPoint, - successCode, - errorCodes - ) - const responseObject = await deleteMicroserviceVolumeMappingEndPoint(req) + await keycloak.protect(['SRE', 'Developer'])(req, res, async () => { + const deleteMicroserviceVolumeMappingEndPoint = ResponseDecorator.handleErrors( + MicroservicesController.deleteMicroserviceVolumeMappingEndPoint, + successCode, + errorCodes + ) + const responseObject = await deleteMicroserviceVolumeMappingEndPoint(req) - res - .status(responseObject.code) - .send(responseObject.body) + res + .status(responseObject.code) + .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, res: responseObject }) + }) } } ] diff --git a/src/routes/registries.js b/src/routes/registries.js index 8d327d588..e1369082c 100644 --- a/src/routes/registries.js +++ b/src/routes/registries.js @@ -15,6 +15,7 @@ const RegistryController = require('../controllers/registry-controller') const ResponseDecorator = require('../decorators/response-decorator') const Errors = require('../helpers/errors') const logger = require('../logger') +const keycloak = require('../config/keycloak.js').initKeycloak() module.exports = [ { @@ -35,13 +36,16 @@ module.exports = [ errors: [Errors.AuthenticationError] } ] - const registriesEndPoint = ResponseDecorator.handleErrors(RegistryController.createRegistryEndPoint, successCode, errorCodes) - const responseObject = await registriesEndPoint(req) - res - .status(responseObject.code) - .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + await keycloak.protect(['SRE', 'Developer'])(req, res, async () => { + const registriesEndPoint = ResponseDecorator.handleErrors(RegistryController.createRegistryEndPoint, successCode, errorCodes) + const responseObject = await registriesEndPoint(req) + res + .status(responseObject.code) + .send(responseObject.body) + + logger.apiRes({ req: req, res: responseObject }) + }) } }, { @@ -61,13 +65,16 @@ module.exports = [ errors: [Errors.AuthenticationError] } ] - const registriesEndPoint = ResponseDecorator.handleErrors(RegistryController.getRegistriesEndPoint, successCode, errorCodes) - const responseObject = await registriesEndPoint(req) - res - .status(responseObject.code) - .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + await keycloak.protect(['SRE', 'Developer', 'Viewer'])(req, res, async () => { + const registriesEndPoint = ResponseDecorator.handleErrors(RegistryController.getRegistriesEndPoint, successCode, errorCodes) + const responseObject = await registriesEndPoint(req) + res + .status(responseObject.code) + .send(responseObject.body) + + logger.apiRes({ req: req, res: responseObject }) + }) } }, { @@ -91,13 +98,16 @@ module.exports = [ errors: [Errors.NotFoundError] } ] - const registriesEndPoint = ResponseDecorator.handleErrors(RegistryController.deleteRegistryEndPoint, successCode, errorCodes) - const responseObject = await registriesEndPoint(req) - res - .status(responseObject.code) - .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + await keycloak.protect('SRE', 'Developer')(req, res, async () => { + const registriesEndPoint = ResponseDecorator.handleErrors(RegistryController.deleteRegistryEndPoint, successCode, errorCodes) + const responseObject = await registriesEndPoint(req) + res + .status(responseObject.code) + .send(responseObject.body) + + logger.apiRes({ req: req, res: responseObject }) + }) } }, { @@ -122,14 +132,17 @@ module.exports = [ errors: [Errors.NotFoundError] } ] - const updateRegistryEndPoint = ResponseDecorator.handleErrors(RegistryController.updateRegistryEndPoint, - successCode, errorCodes) - const responseObject = await updateRegistryEndPoint(req) - res - .status(responseObject.code) - .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + // Protecting for both SRE and Developer roles + await keycloak.protect(['SRE', 'Developer'])(req, res, async () => { + const updateRegistryEndPoint = ResponseDecorator.handleErrors(RegistryController.updateRegistryEndPoint, successCode, errorCodes) + const responseObject = await updateRegistryEndPoint(req) + res + .status(responseObject.code) + .send(responseObject.body) + + logger.apiRes({ req: req, res: responseObject }) + }) } } ] diff --git a/src/routes/router.js b/src/routes/router.js index 0dbc5e8df..88d42e43d 100644 --- a/src/routes/router.js +++ b/src/routes/router.js @@ -15,6 +15,7 @@ const Router = require('../controllers/router-controller') const ResponseDecorator = require('../decorators/response-decorator') const logger = require('../logger') const Errors = require('../helpers/errors') +const keycloak = require('../config/keycloak.js').initKeycloak() module.exports = [ { @@ -34,14 +35,22 @@ module.exports = [ errors: [Errors.NotFoundError] } ] - const getRouterEndpoint = ResponseDecorator.handleErrors(Router.getRouterEndPoint, successCode, errorCodes) - const responseObject = await getRouterEndpoint(req) - res - .status(responseObject.code) - .send(responseObject.body) + // Protecting for SRE, Developer, and Viewer roles + await keycloak.protect(['SRE', 'Developer', 'Viewer'])(req, res, async () => { + const getRouterEndpoint = ResponseDecorator.handleErrors( + Router.getRouterEndPoint, + successCode, + errorCodes + ) + const responseObject = await getRouterEndpoint(req) - logger.apiRes({ req: req, res: responseObject }) + res + .status(responseObject.code) + .send(responseObject.body) + + logger.apiRes({ req: req, res: responseObject }) + }) } }, { @@ -62,14 +71,22 @@ module.exports = [ errors: [Errors.ValidationError] } ] - const upsertDefaultRouter = ResponseDecorator.handleErrors(Router.upsertDefaultRouter, successCode, errorCodes) - const responseObject = await upsertDefaultRouter(req) - res - .status(responseObject.code) - .send(responseObject.body) + // Protecting for SRE role + await keycloak.protect('SRE')(req, res, async () => { + const upsertDefaultRouter = ResponseDecorator.handleErrors( + Router.upsertDefaultRouter, + successCode, + errorCodes + ) + const responseObject = await upsertDefaultRouter(req) + + res + .status(responseObject.code) + .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, res: responseObject }) + }) } } ] diff --git a/src/routes/routing.js b/src/routes/routing.js index ac54028d2..a850e685b 100644 --- a/src/routes/routing.js +++ b/src/routes/routing.js @@ -15,6 +15,7 @@ const Routing = require('../controllers/routing-controller') const ResponseDecorator = require('../decorators/response-decorator') const logger = require('../logger') const Errors = require('../helpers/errors') +const keycloak = require('../config/keycloak.js').initKeycloak() module.exports = [ { @@ -34,14 +35,22 @@ module.exports = [ errors: [Errors.NotFoundError] } ] - const getRouterEndpoint = ResponseDecorator.handleErrors(Routing.getRoutingsEndPoint, successCode, errorCodes) - const responseObject = await getRouterEndpoint(req) - res - .status(responseObject.code) - .send(responseObject.body) - - logger.apiRes({ req: req, res: responseObject }) + // Protecting for SRE , Developer and Viewer roles + await keycloak.protect(['SRE', 'Developer', 'Viewer'])(req, res, async () => { + const getRouterEndpoint = ResponseDecorator.handleErrors( + Routing.getRoutingsEndPoint, + successCode, + errorCodes + ) + const responseObject = await getRouterEndpoint(req) + + res + .status(responseObject.code) + .send(responseObject.body) + + logger.apiRes({ req: req, res: responseObject }) + }) } }, { @@ -61,14 +70,22 @@ module.exports = [ errors: [Errors.NotFoundError] } ] - const getRouterEndpoint = ResponseDecorator.handleErrors(Routing.getRoutingEndPoint, successCode, errorCodes) - const responseObject = await getRouterEndpoint(req) - - res - .status(responseObject.code) - .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + // Protecting for SRE, Developer, and Viewer roles + await keycloak.protect(['SRE', 'Developer', 'Viewer'])(req, res, async () => { + const getRouterEndpoint = ResponseDecorator.handleErrors( + Routing.getRoutingEndPoint, + successCode, + errorCodes + ) + const responseObject = await getRouterEndpoint(req) + + res + .status(responseObject.code) + .send(responseObject.body) + + logger.apiRes({ req: req, res: responseObject }) + }) } }, { @@ -97,14 +114,22 @@ module.exports = [ errors: [Errors.NotFoundError] } ] - const createRoutingEndpoint = ResponseDecorator.handleErrors(Routing.createRoutingEndpoint, successCode, errorCodes) - const responseObject = await createRoutingEndpoint(req) - res - .status(responseObject.code) - .send(responseObject.body) - - logger.apiRes({ req: req, res: responseObject }) + // Protecting for SRE and Developer roles + await keycloak.protect(['SRE', 'Developer'])(req, res, async () => { + const createRoutingEndpoint = ResponseDecorator.handleErrors( + Routing.createRoutingEndpoint, + successCode, + errorCodes + ) + const responseObject = await createRoutingEndpoint(req) + + res + .status(responseObject.code) + .send(responseObject.body) + + logger.apiRes({ req: req, res: responseObject }) + }) } }, { @@ -130,15 +155,21 @@ module.exports = [ } ] - const updateRoutingEndpoint = ResponseDecorator.handleErrors(Routing.updateRoutingEndpoint, - successCode, errorCodes) - const responseObject = await updateRoutingEndpoint(req) - - res - .status(responseObject.code) - .send(responseObject.body) - - logger.apiRes({ req: req, res: responseObject }) + // Protecting for SRE and Developer roles + await keycloak.protect(['SRE', 'Developer'])(req, res, async () => { + const updateRoutingEndpoint = ResponseDecorator.handleErrors( + Routing.updateRoutingEndpoint, + successCode, + errorCodes + ) + const responseObject = await updateRoutingEndpoint(req) + + res + .status(responseObject.code) + .send(responseObject.body) + + logger.apiRes({ req: req, res: responseObject }) + }) } }, { @@ -159,15 +190,21 @@ module.exports = [ } ] - const deleteRoutingEndpoint = ResponseDecorator.handleErrors(Routing.deleteRoutingEndpoint, - successCode, errorCodes) - const responseObject = await deleteRoutingEndpoint(req) - - res - .status(responseObject.code) - .send(responseObject.body) - - logger.apiRes({ req: req, res: responseObject }) + // Protecting for SRE and Developer roles + await keycloak.protect(['SRE', 'Developer'])(req, res, async () => { + const deleteRoutingEndpoint = ResponseDecorator.handleErrors( + Routing.deleteRoutingEndpoint, + successCode, + errorCodes + ) + const responseObject = await deleteRoutingEndpoint(req) + + res + .status(responseObject.code) + .send(responseObject.body) + + logger.apiRes({ req: req, res: responseObject }) + }) } } ] diff --git a/src/routes/tunnel.js b/src/routes/tunnel.js index ed0d369fc..823e630f8 100644 --- a/src/routes/tunnel.js +++ b/src/routes/tunnel.js @@ -15,6 +15,7 @@ const TunnelController = require('../controllers/tunnel-controller') const ResponseDecorator = require('../decorators/response-decorator') const Errors = require('../helpers/errors') const logger = require('../logger') +const keycloak = require('../config/keycloak.js').initKeycloak() module.exports = [ { @@ -38,13 +39,21 @@ module.exports = [ errors: [Errors.NotFoundError] } ] - const tunnelEndPoint = ResponseDecorator.handleErrors(TunnelController.manageTunnelEndPoint, successCode, errorCodes) - const responseObject = await tunnelEndPoint(req) - res - .status(responseObject.code) - .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + // Protecting for SRE and Developer roles + await keycloak.protect(['SRE'])(req, res, async () => { + const tunnelEndPoint = ResponseDecorator.handleErrors( + TunnelController.manageTunnelEndPoint, + successCode, + errorCodes + ) + const responseObject = await tunnelEndPoint(req) + res + .status(responseObject.code) + .send(responseObject.body) + + logger.apiRes({ req: req, res: responseObject }) + }) } }, { @@ -64,13 +73,21 @@ module.exports = [ errors: [Errors.NotFoundError] } ] - const tunnelEndPoint = ResponseDecorator.handleErrors(TunnelController.getTunnelEndPoint, successCode, errorCodes) - const responseObject = await tunnelEndPoint(req) - res - .status(responseObject.code) - .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + // Protecting for SRE and Developer roles + await keycloak.protect(['SRE'])(req, res, async () => { + const tunnelEndPoint = ResponseDecorator.handleErrors( + TunnelController.getTunnelEndPoint, + successCode, + errorCodes + ) + const responseObject = await tunnelEndPoint(req) + res + .status(responseObject.code) + .send(responseObject.body) + + logger.apiRes({ req: req, res: responseObject }) + }) } } ] diff --git a/src/routes/user.js b/src/routes/user.js index df98f9317..333e2a417 100644 --- a/src/routes/user.js +++ b/src/routes/user.js @@ -11,12 +11,11 @@ * */ const constants = require('../helpers/constants') - const UserController = require('../controllers/user-controller') const ResponseDecorator = require('../decorators/response-decorator') const Errors = require('../helpers/errors') - const logger = require('../logger') +const keycloak = require('../config/keycloak.js').initKeycloak() module.exports = [ { @@ -47,5 +46,36 @@ module.exports = [ logger.apiRes('POST /api/v1/user/login', { args: { statusCode: responseObject.code } }) // don't use req and responseObject as args, because they have password and token } + }, + { + method: 'get', + path: '/api/v1/user/profile', + middleware: async (req, res) => { + logger.apiReq(req) + + const successCode = constants.HTTP_CODE_SUCCESS + const errorCodes = [ + { + code: constants.HTTP_CODE_UNAUTHORIZED, + errors: [Errors.AuthenticationError] + } + ] + + // Protecting for SRE, Developer, and Viewer roles + await keycloak.protect(['SRE', 'Developer', 'Viewer'])(req, res, async () => { + const getUserProfileEndPoint = ResponseDecorator.handleErrors( + UserController.getUserProfileEndPoint, + successCode, + errorCodes + ) + const responseObject = await getUserProfileEndPoint(req) + + res + .status(responseObject.code) + .send(responseObject.body) + + logger.apiRes({ req: req, res: responseObject }) + }) + } } ] diff --git a/src/services/user-service.js b/src/services/user-service.js index 2e9f4f4dc..a2ea2402b 100644 --- a/src/services/user-service.js +++ b/src/services/user-service.js @@ -39,7 +39,7 @@ const login = async function (credentials, isCLI, transaction) { 'Cache-Control': 'no-cache', 'Content-Type': 'application/x-www-form-urlencoded' }, - data: data, + data, httpsAgent: agent } @@ -49,7 +49,7 @@ const login = async function (credentials, isCLI, transaction) { // Extract the access token from the response const accessToken = response.data.access_token return { - accessToken: accessToken + accessToken } } catch (error) { console.error('Error during login:', error) @@ -57,6 +57,38 @@ const login = async function (credentials, isCLI, transaction) { } } +const profile = async function (req, isCLI, transaction) { + try { + const data = {} + const agent = new https.Agent({ + // Ignore SSL certificate errors + rejectUnauthorized: false + }) + + const profileconfig = { + method: 'get', + maxBodyLength: Infinity, + url: `${process.env.KC_URL}realms/${process.env.KC_REALM}/protocol/openid-connect/userinfo`, + headers: { + 'Content-Type': 'application/x-www-form-urlencoded', + Cookie: 'KEYCLOAK_LOCALE=en' + }, + data: data, + httpsAgent: agent + } + + // Make the request using async/await + const response = await axios.request(profileconfig) + + // Return the userinfo data + return response.data + } catch (error) { + console.error('Error during profile retrieval:', error) + throw new Errors.InvalidCredentialsError() + } +} + module.exports = { - login: TransactionDecorator.generateTransaction(login) + login: TransactionDecorator.generateTransaction(login), + profile: TransactionDecorator.generateTransaction(profile) } diff --git a/src/views/email-activation-temp.js b/src/views/email-activation-temp.js deleted file mode 100644 index a4538c6c7..000000000 --- a/src/views/email-activation-temp.js +++ /dev/null @@ -1,140 +0,0 @@ -/* - * ******************************************************************************* - * * Copyright (c) 2023 Datasance Teknoloji A.S. - * * - * * This program and the accompanying materials are made available under the - * * terms of the Eclipse Public License v. 2.0 which is available at - * * http://www.eclipse.org/legal/epl-2.0 - * * - * * SPDX-License-Identifier: EPL-2.0 - * ******************************************************************************* - * - */ - -const emailActivationTemplate = { - p1: ` -
- - - - - - - - -
-
- - - - - - - - - -
- Welcome to Eclipse ioFog! -
- - - - - - - - - - - - - - - - -
- Before we can get started, you need to click this button to activate your account. - If clicking the button doesn't work, copy and paste copy and paste this link into your web browser - address bar.
-
- ', - - p4: '/account/activate/code/', - - p5: ' -
- - Confirm Email Address - -
- — the IOFOG team -
-
-
- - - - - - -
- Follow - - @EclipseioFog - - on Twitter. -
-
-
-
-
-
` -} - -module.exports = emailActivationTemplate diff --git a/src/views/email-temp.js b/src/views/email-temp.js deleted file mode 100644 index ae0caed5b..000000000 --- a/src/views/email-temp.js +++ /dev/null @@ -1,76 +0,0 @@ -/* - * ******************************************************************************* - * * Copyright (c) 2023 Datasance Teknoloji A.S. - * * - * * This program and the accompanying materials are made available under the - * * terms of the Eclipse Public License v. 2.0 which is available at - * * http://www.eclipse.org/legal/epl-2.0 - * * - * * SPDX-License-Identifier: EPL-2.0 - * ******************************************************************************* - * - */ - -const emailRecoveryTemplate = { - p1: `
- - - - - - -
-
- - - - - - - - - -
- Hi, ', - - p2: '
- - - - - - - - - - - - -
- We sent you this email just to tell you that your password was changed. - Did you do that? If so, then we are all good. If not, then please contact us - so we can help you avoid any potential problems. -
- You can just reply directly to this email if you need to contact us. -
- — the IOFOG team -
-
-
- - - - - - -
- Follow @EclipseioFog on Twitter. -
-
-
-
` -} - -module.exports = emailRecoveryTemplate diff --git a/src/views/reset-password-temp.js b/src/views/reset-password-temp.js deleted file mode 100644 index 2f3885913..000000000 --- a/src/views/reset-password-temp.js +++ /dev/null @@ -1,126 +0,0 @@ -/* - * ******************************************************************************* - * * Copyright (c) 2023 Datasance Teknoloji A.S. - * * - * * This program and the accompanying materials are made available under the - * * terms of the Eclipse Public License v. 2.0 which is available at - * * http://www.eclipse.org/legal/epl-2.0 - * * - * * SPDX-License-Identifier: EPL-2.0 - * ******************************************************************************* - * - */ - -const emailResetTemplate = { - p1: `
- - - - - - - -
-
- - - - - - - - - -
- Hi ', - - p2: '
- - - - - - - - - - - - - - - - -
- It took like you were having some trouble with your password? -
- You can use the temporary password ', - - p3: ' to log in. -
- - Go To Login - -
- — the IOFOG team -
-
-
- - - - - - -
- Follow - - @EclipseioFog - - on Twitter. -
-
-
-
-
-
` -} - -module.exports = emailResetTemplate From 1e9b7aa3acfefda6332eb53897ea2761b7bd4823 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Tue, 19 Mar 2024 18:10:18 +0300 Subject: [PATCH 064/146] user service for profile endpoint edited --- src/services/user-service.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/services/user-service.js b/src/services/user-service.js index a2ea2402b..67e04d384 100644 --- a/src/services/user-service.js +++ b/src/services/user-service.js @@ -59,7 +59,6 @@ const login = async function (credentials, isCLI, transaction) { const profile = async function (req, isCLI, transaction) { try { - const data = {} const agent = new https.Agent({ // Ignore SSL certificate errors rejectUnauthorized: false @@ -73,7 +72,6 @@ const profile = async function (req, isCLI, transaction) { 'Content-Type': 'application/x-www-form-urlencoded', Cookie: 'KEYCLOAK_LOCALE=en' }, - data: data, httpsAgent: agent } From 4e2930a15565194558e73cab295ec013d09c271d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Tue, 19 Mar 2024 18:26:18 +0300 Subject: [PATCH 065/146] user profile route edited --- src/routes/user.js | 23 ++++++++++------------- 1 file changed, 10 insertions(+), 13 deletions(-) diff --git a/src/routes/user.js b/src/routes/user.js index 333e2a417..aac4bd49e 100644 --- a/src/routes/user.js +++ b/src/routes/user.js @@ -61,21 +61,18 @@ module.exports = [ } ] - // Protecting for SRE, Developer, and Viewer roles - await keycloak.protect(['SRE', 'Developer', 'Viewer'])(req, res, async () => { - const getUserProfileEndPoint = ResponseDecorator.handleErrors( - UserController.getUserProfileEndPoint, - successCode, - errorCodes - ) - const responseObject = await getUserProfileEndPoint(req) + const getUserProfileEndPoint = ResponseDecorator.handleErrors( + UserController.getUserProfileEndPoint, + successCode, + errorCodes + ) + const responseObject = await getUserProfileEndPoint(req) - res - .status(responseObject.code) - .send(responseObject.body) + res + .status(responseObject.code) + .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) - }) + logger.apiRes({ req: req, res: responseObject }) } } ] From fe69c331435a72bf33a64b0e24f1b3c051046f86 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Tue, 19 Mar 2024 18:33:04 +0300 Subject: [PATCH 066/146] user routes updated --- src/routes/user.js | 1 - 1 file changed, 1 deletion(-) diff --git a/src/routes/user.js b/src/routes/user.js index aac4bd49e..dfa8c0d1b 100644 --- a/src/routes/user.js +++ b/src/routes/user.js @@ -15,7 +15,6 @@ const UserController = require('../controllers/user-controller') const ResponseDecorator = require('../decorators/response-decorator') const Errors = require('../helpers/errors') const logger = require('../logger') -const keycloak = require('../config/keycloak.js').initKeycloak() module.exports = [ { From 735424886636086ef858fac2b7d0749f9df826c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Tue, 19 Mar 2024 19:06:56 +0300 Subject: [PATCH 067/146] user profile service edited for extracting token from endpoint request --- src/services/user-service.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/services/user-service.js b/src/services/user-service.js index 67e04d384..cb50b5c8c 100644 --- a/src/services/user-service.js +++ b/src/services/user-service.js @@ -59,6 +59,7 @@ const login = async function (credentials, isCLI, transaction) { const profile = async function (req, isCLI, transaction) { try { + const accessToken = req.headers.authorization.replace('Bearer ', '') const agent = new https.Agent({ // Ignore SSL certificate errors rejectUnauthorized: false @@ -70,7 +71,7 @@ const profile = async function (req, isCLI, transaction) { url: `${process.env.KC_URL}realms/${process.env.KC_REALM}/protocol/openid-connect/userinfo`, headers: { 'Content-Type': 'application/x-www-form-urlencoded', - Cookie: 'KEYCLOAK_LOCALE=en' + 'Authorization': `Bearer ${accessToken}` }, httpsAgent: agent } From 0bd03ccae8fe06f3ccdf2fa8cc3b5e142bf0acdb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Fri, 22 Mar 2024 17:02:46 +0300 Subject: [PATCH 068/146] user login kc totp and user logout added --- docs/swagger.json | 22 ++++++++++++++++++ docs/swagger.yaml | 15 +++++++++++++ scripts/util.js | 2 +- src/controllers/user-controller.js | 10 +++++++-- src/routes/user.js | 22 ++++++++++++++++++ src/schemas/user.js | 5 +++-- src/services/user-service.js | 36 ++++++++++++++++++++++++++++-- 7 files changed, 105 insertions(+), 7 deletions(-) diff --git a/docs/swagger.json b/docs/swagger.json index 7a8c89f01..bcf2f19d2 100644 --- a/docs/swagger.json +++ b/docs/swagger.json @@ -2418,6 +2418,28 @@ } } }, + "/user/logout" : { + "post" : { + "tags" : [ "User" ], + "summary" : "Logout", + "operationId" : "logout", + "parameters" : [ ], + "security" : [ { + "userToken" : [ ] + } ], + "responses" : { + "204" : { + "description" : "Success" + }, + "401" : { + "description" : "Not Authorized" + }, + "500" : { + "description" : "Internal Server Error" + } + } + } + }, "/user/profile" : { "get" : { "tags" : [ "User" ], diff --git a/docs/swagger.yaml b/docs/swagger.yaml index 88a0f083d..6b37a59ae 100755 --- a/docs/swagger.yaml +++ b/docs/swagger.yaml @@ -2280,6 +2280,21 @@ paths: description: bad request "401": description: incorrect credentials + /user/logout: + post: + tags: + - User + summary: Logout + operationId: logout + security: + - userToken: [] + responses: + "204": + description: Success + "401": + description: Not Authorized + "500": + description: Internal Server Error /user/profile: get: tags: diff --git a/scripts/util.js b/scripts/util.js index 19d342820..0245dd7d3 100644 --- a/scripts/util.js +++ b/scripts/util.js @@ -22,7 +22,7 @@ const DEV_DB_BACKUP = `${TEMP_DIR}/dev_database.sqlite` const PROD_DB = `${ROOT_DIR}/src/data/sqlite_files/prod_database.sqlite` const PROD_DB_BACKUP = `${TEMP_DIR}/prod_database.sqlite` -let dbName = process.env.DB_NAME || 'iofogcontroller' +let dbName = process.env.DB_NAME || 'pot-controller' if (!dbName.endsWith('.sqlite')) { dbName += '.sqlite' } diff --git a/src/controllers/user-controller.js b/src/controllers/user-controller.js index 4ab3fceb9..64fd4322c 100644 --- a/src/controllers/user-controller.js +++ b/src/controllers/user-controller.js @@ -21,7 +21,8 @@ const userLoginEndPoint = async function (req) { const credentials = { email: user.email, - password: user.password + password: user.password, + totp: user.totp } return UserService.login(credentials, false) @@ -31,7 +32,12 @@ const getUserProfileEndPoint = async function (req) { return UserService.profile(req, false) } +const userLogoutEndPoint = async function (req, user) { + return UserService.logout(user, false) +} + module.exports = { userLoginEndPoint: userLoginEndPoint, - getUserProfileEndPoint: getUserProfileEndPoint + getUserProfileEndPoint: getUserProfileEndPoint, + userLogoutEndPoint: userLogoutEndPoint } diff --git a/src/routes/user.js b/src/routes/user.js index dfa8c0d1b..39d9dab86 100644 --- a/src/routes/user.js +++ b/src/routes/user.js @@ -73,5 +73,27 @@ module.exports = [ logger.apiRes({ req: req, res: responseObject }) } + }, + { + method: 'post', + path: '/api/v1/user/logout', + middleware: async (req, res) => { + logger.apiReq(req) + + const successCode = constants.HTTP_CODE_NO_CONTENT + const errorCodes = [ + { + code: constants.HTTP_CODE_UNAUTHORIZED, + errors: [Errors.AuthenticationError] + } + ] + + const userLogoutEndPoint = ResponseDecorator.handleErrors(UserController.userLogoutEndPoint, successCode, errorCodes) + const responseObject = await userLogoutEndPoint(req) + + res + .status(responseObject.code) + .send() + } } ] diff --git a/src/schemas/user.js b/src/schemas/user.js index eae5bd6db..ac3e99bcc 100644 --- a/src/schemas/user.js +++ b/src/schemas/user.js @@ -20,9 +20,10 @@ const login = { pattern: '^(([^<>()\\[\\]\\\\.,;:\\s@"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@"]+)*)|(".+"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}' + '\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$' }, - password: { type: 'string' } + password: { type: 'string' }, + totp: { type: 'string' } }, - required: ['email', 'password'], + required: ['email', 'password', 'totp'], additionalProperties: true } diff --git a/src/services/user-service.js b/src/services/user-service.js index cb50b5c8c..50638b1a1 100644 --- a/src/services/user-service.js +++ b/src/services/user-service.js @@ -23,6 +23,7 @@ const login = async function (credentials, isCLI, transaction) { grant_type: 'password', username: credentials.email, password: credentials.password, + totp: credentials.totp, client_id: process.env.KC_CLIENT, client_secret: process.env.KC_CLIENT_SECRET }) @@ -71,7 +72,7 @@ const profile = async function (req, isCLI, transaction) { url: `${process.env.KC_URL}realms/${process.env.KC_REALM}/protocol/openid-connect/userinfo`, headers: { 'Content-Type': 'application/x-www-form-urlencoded', - 'Authorization': `Bearer ${accessToken}` + Authorization: `Bearer ${accessToken}` }, httpsAgent: agent } @@ -87,7 +88,38 @@ const profile = async function (req, isCLI, transaction) { } } +const logout = async function (req, isCLI, transaction) { + try { + const accessToken = req.headers.authorization.replace('Bearer ', '') + const agent = new https.Agent({ + // Ignore SSL certificate errors + rejectUnauthorized: false + }) + + const logoutconfig = { + method: 'post', + maxBodyLength: Infinity, + url: `${process.env.KC_URL}realms/${process.env.KC_REALM}/protocol/openid-connect/logout`, + headers: { + 'Content-Type': 'application/x-www-form-urlencoded', + Authorization: `Bearer ${accessToken}` + }, + httpsAgent: agent + } + + // Make the request using async/await + const response = await axios.request(logoutconfig) + + // Return the userinfo data + return response.data + } catch (error) { + console.error('Error during logout:', error) + throw new Errors.InvalidCredentialsError() + } +} + module.exports = { login: TransactionDecorator.generateTransaction(login), - profile: TransactionDecorator.generateTransaction(profile) + profile: TransactionDecorator.generateTransaction(profile), + logout: TransactionDecorator.generateTransaction(logout) } From 84157f7235c4fdc026a52ffb5b21914ce24a0447 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Fri, 22 Mar 2024 18:59:12 +0300 Subject: [PATCH 069/146] user logout fixed --- Dockerfile.dev | 9 +-------- docs/swagger.yaml | 1 + src/controllers/user-controller.js | 4 ++-- 3 files changed, 4 insertions(+), 10 deletions(-) diff --git a/Dockerfile.dev b/Dockerfile.dev index 93120cfd2..1d2b52a27 100644 --- a/Dockerfile.dev +++ b/Dockerfile.dev @@ -37,18 +37,11 @@ RUN python3 -m ensurepip RUN pip3 install --no-cache --upgrade pip setuptools COPY --from=builder /tmp/datasance-iofogcontroller-*.tgz /tmp/iofog-controller.tgz -#ARG GITHUB_TOKEN - -#COPY --from=builder /tmp/.npmrc . -# Set GitHub npm registry with authentication token -#RUN echo "//npm.pkg.github.com/:_authToken=${GITHUB_TOKEN}" > ~/.npmrc - -#RUN npm config set @datasance:registry https://npm.pkg.github.com/ RUN npm i -g /tmp/iofog-controller.tgz && \ rm -rf /tmp/iofog-controller.tgz && \ iofog-controller config dev-mode --on -# RUN sudo rm -rf /usr/local/lib/node_modules/@datasance/iofogcontroller/src/data/sqlite_files + LABEL org.opencontainers.image.description controller LABEL org.opencontainers.image.source=https://github.com/datasance/controller LABEL org.opencontainers.image.licenses=EPL2.0 diff --git a/docs/swagger.yaml b/docs/swagger.yaml index 6b37a59ae..671979f38 100755 --- a/docs/swagger.yaml +++ b/docs/swagger.yaml @@ -4215,6 +4215,7 @@ components: required: - email - password + - totp properties: email: type: string diff --git a/src/controllers/user-controller.js b/src/controllers/user-controller.js index 64fd4322c..5291dc5ec 100644 --- a/src/controllers/user-controller.js +++ b/src/controllers/user-controller.js @@ -32,8 +32,8 @@ const getUserProfileEndPoint = async function (req) { return UserService.profile(req, false) } -const userLogoutEndPoint = async function (req, user) { - return UserService.logout(user, false) +const userLogoutEndPoint = async function (req) { + return UserService.logout(req, false) } module.exports = { From c5f25034ffddacb859b1ad8debb6d6685e389ab5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Mon, 25 Mar 2024 17:57:22 +0300 Subject: [PATCH 070/146] ecn viewer version updated --- docs/swagger.yaml | 2 ++ package.json | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/swagger.yaml b/docs/swagger.yaml index 671979f38..1cd9a0005 100755 --- a/docs/swagger.yaml +++ b/docs/swagger.yaml @@ -4221,6 +4221,8 @@ components: type: string password: type: string + totp: + type: string LoginSuccessResponse: type: object required: diff --git a/package.json b/package.json index a98aa80a9..c09a6a6b4 100644 --- a/package.json +++ b/package.json @@ -57,7 +57,7 @@ "iofog-controller": "src/main.js" }, "dependencies": { - "@datasance/ecn-viewer": "0.0.1", + "@datasance/ecn-viewer": "0.1.0", "axios": "1.0.0-alpha.1", "body-parser": "^1.20.1", "child_process": "1.0.2", From cf88aebbadcf5a6474bc407b09708348c0a95d05 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Mon, 25 Mar 2024 21:58:36 +0300 Subject: [PATCH 071/146] viewer keycloak variables and version updated --- package.json | 2 +- src/server.js | 8 +++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index c09a6a6b4..d9a37331b 100644 --- a/package.json +++ b/package.json @@ -57,7 +57,7 @@ "iofog-controller": "src/main.js" }, "dependencies": { - "@datasance/ecn-viewer": "0.1.0", + "@datasance/ecn-viewer": "0.1.3", "axios": "1.0.0-alpha.1", "body-parser": "^1.20.1", "child_process": "1.0.2", diff --git a/src/server.js b/src/server.js index 92dcac4be..15a12acd3 100755 --- a/src/server.js +++ b/src/server.js @@ -182,6 +182,9 @@ const viewerURL = process.env.VIEWER_URL || config.get('Viewer:Url') const sslKey = config.get('Server:SslKey') const sslCert = config.get('Server:SslCert') const intermedKey = config.get('Server:IntermediateCert') +const kcRealm = process.env.KC_REALM +const kcURL = `${process.env.KC_URL}` +const kcClient = process.env.KC_VIEWER_CLIENT viewerApp.use('/', ecnViewer.middleware(express)) @@ -210,7 +213,10 @@ const initState = async () => { const ecnViewerControllerConfigFilePath = path.join(__dirname, '..', 'node_modules', '@datasance', 'ecn-viewer', 'build', 'controller-config.js') const ecnViewerControllerConfig = { port: apiPort, - user: {} + user: {}, + keycloakURL: kcURL, + keycloakRealm: kcRealm, + keycloakClientid: kcClient } if (viewerURL) { ecnViewerControllerConfig.url = viewerURL From 628894847adbf299d4b0d38ded528f0e2b159a16 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Wed, 27 Mar 2024 18:53:58 +0300 Subject: [PATCH 072/146] edgeresource service fixed --- package.json | 2 -- src/schemas/user.js | 2 +- src/services/edge-resource-service.js | 4 ++-- 3 files changed, 3 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index d9a37331b..23e892fe5 100644 --- a/package.json +++ b/package.json @@ -85,8 +85,6 @@ "multer": "1.4.5-lts.1", "mysql2": "3.2.2", "nconf": "0.12.0", - "nodemailer": "6.7.3", - "nodemailer-smtp-transport": "2.4.2", "os": "0.1.1", "path": "0.12.7", "pino": "6.6.1", diff --git a/src/schemas/user.js b/src/schemas/user.js index ac3e99bcc..304068b66 100644 --- a/src/schemas/user.js +++ b/src/schemas/user.js @@ -23,7 +23,7 @@ const login = { password: { type: 'string' }, totp: { type: 'string' } }, - required: ['email', 'password', 'totp'], + required: ['email', 'password'], additionalProperties: true } diff --git a/src/services/edge-resource-service.js b/src/services/edge-resource-service.js index ba231b567..750e040a7 100644 --- a/src/services/edge-resource-service.js +++ b/src/services/edge-resource-service.js @@ -23,12 +23,12 @@ const TransactionDecorator = require('../decorators/transaction-decorator') const Validator = require('../schemas') const ChangeTrackingService = require('./change-tracking-service') -async function listEdgeResources (user, transaction) { +async function listEdgeResources (transaction) { const edgeResources = await EdgeResourceManager.findAllWithOrchestrationTags(transaction) return edgeResources.map(buildGetObject) } -async function getEdgeResource ({ name, version }, user, transaction) { +async function getEdgeResource ({ name, version }, transaction) { if (version) { const resource = await EdgeResourceManager.findOneWithOrchestrationTags({ name, version }, transaction) if (!resource) { From e0fa248e8902409dbbe4735ae8722b3fa4942315 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Thu, 28 Mar 2024 13:42:10 +0300 Subject: [PATCH 073/146] user removed from endpoint's controller and service --- src/controllers/application-controller.js | 48 ++++---- .../application-template-controller.js | 36 +++--- src/controllers/catalog-controller.js | 20 ++-- src/controllers/config-controller.js | 6 +- src/controllers/diagnostic-controller.js | 20 ++-- src/controllers/edge-resource-controller.js | 32 +++--- src/controllers/iofog-controller.js | 44 ++++---- src/controllers/microservices-controller.js | 68 +++++------ src/controllers/registry-controller.js | 16 +-- src/controllers/routing-controller.js | 20 ++-- src/controllers/tunnel-controller.js | 10 +- src/services/application-service.js | 44 ++++---- src/services/application-template-service.js | 28 ++--- src/services/catalog-service.js | 18 +-- src/services/diagnostic-service.js | 12 +- src/services/edge-resource-service.js | 12 +- src/services/iofog-service.js | 42 +++---- src/services/microservice-ports/default.js | 42 ++++--- src/services/microservice-ports/proxy.js | 10 +- src/services/microservices-service.js | 106 +++++++++--------- src/services/registry-service.js | 16 +-- src/services/routing-service.js | 20 ++-- src/services/tunnel-service.js | 8 +- 23 files changed, 337 insertions(+), 341 deletions(-) diff --git a/src/controllers/application-controller.js b/src/controllers/application-controller.js index da06cfe8b..15676b7da 100644 --- a/src/controllers/application-controller.js +++ b/src/controllers/application-controller.js @@ -17,85 +17,85 @@ const errors = require('../helpers/errors') const ErrorMessages = require('../helpers/error-messages') const { rvaluesVarSubstition } = require('../helpers/template-helper') -const createApplicationEndPoint = async function (req, user) { +const createApplicationEndPoint = async function (req) { const application = req.body - return ApplicationService.createApplicationEndPoint(application, user, false) + return ApplicationService.createApplicationEndPoint(application, false) } -const createApplicationYAMLEndPoint = async function (req, user) { +const createApplicationYAMLEndPoint = async function (req) { if (!req.file) { throw new errors.ValidationError(ErrorMessages.APPLICATION_FILE_NOT_FOUND) } const fileContent = req.file.buffer.toString() const application = await YAMLParserService.parseAppFile(fileContent) - await rvaluesVarSubstition(application, { self: application }, user) + await rvaluesVarSubstition(application, { self: application }) - return ApplicationService.createApplicationEndPoint(application, user, false) + return ApplicationService.createApplicationEndPoint(application, false) } -const getApplicationsByUserEndPoint = async function (req, user) { - return ApplicationService.getUserApplicationsEndPoint(user, false) +const getApplicationsByUserEndPoint = async function (req) { + return ApplicationService.getUserApplicationsEndPoint(false) } -const getApplicationEndPoint = async function (req, user) { +const getApplicationEndPoint = async function (req) { const name = req.params.name - const application = await ApplicationService.getApplicationEndPoint({ name }, user, false) + const application = await ApplicationService.getApplicationEndPoint({ name }, false) return application } -const patchApplicationEndPoint = async function (req, user) { +const patchApplicationEndPoint = async function (req) { const application = req.body const name = req.params.name - return ApplicationService.patchApplicationEndPoint(application, { name }, user, false) + return ApplicationService.patchApplicationEndPoint(application, { name }, false) } -const updateApplicationEndPoint = async function (req, user) { +const updateApplicationEndPoint = async function (req) { const application = req.body const name = req.params.name - return ApplicationService.updateApplicationEndPoint(application, name, user, false) + return ApplicationService.updateApplicationEndPoint(application, name, false) } -const updateApplicationYAMLEndPoint = async function (req, user) { +const updateApplicationYAMLEndPoint = async function (req) { if (!req.file) { throw new errors.ValidationError(ErrorMessages.APPLICATION_FILE_NOT_FOUND) } const name = req.params.name const fileContent = req.file.buffer.toString() const application = await YAMLParserService.parseAppFile(fileContent) - await rvaluesVarSubstition(application, { self: application }, user) + await rvaluesVarSubstition(application, { self: application }) - return ApplicationService.updateApplicationEndPoint(application, name, user, false) + return ApplicationService.updateApplicationEndPoint(application, name, false) } -const deleteApplicationEndPoint = async function (req, user) { +const deleteApplicationEndPoint = async function (req) { const name = req.params.name - return ApplicationService.deleteApplicationEndPoint({ name }, user, false) + return ApplicationService.deleteApplicationEndPoint({ name }, false) } // Legacy -const deleteApplicationByIdEndPoint = async function (req, user) { +const deleteApplicationByIdEndPoint = async function (req) { const id = req.params.id - return ApplicationService.deleteApplicationEndPoint({ id }, user, false) + return ApplicationService.deleteApplicationEndPoint({ id }, false) } -const patchApplicationByIdEndPoint = async function (req, user) { +const patchApplicationByIdEndPoint = async function (req) { const application = req.body const id = req.params.id - return ApplicationService.patchApplicationEndPoint(application, { id }, user, false) + return ApplicationService.patchApplicationEndPoint(application, { id }, false) } -const getApplicationByIdEndPoint = async function (req, user) { +const getApplicationByIdEndPoint = async function (req) { const id = req.params.id - const application = await ApplicationService.getApplicationEndPoint({ id }, user, false) + const application = await ApplicationService.getApplicationEndPoint({ id }, false) return application } diff --git a/src/controllers/application-template-controller.js b/src/controllers/application-template-controller.js index 7a9e85d0a..61f281112 100644 --- a/src/controllers/application-template-controller.js +++ b/src/controllers/application-template-controller.js @@ -17,63 +17,63 @@ const errors = require('../helpers/errors') const ErrorMessages = require('../helpers/error-messages') const { rvaluesVarSubstition } = require('../helpers/template-helper') -const createApplicationTemplateEndPoint = async function (req, user) { +const createApplicationTemplateEndPoint = async function (req) { const application = req.body - return ApplicationTemplateService.createApplicationTemplateEndPoint(application, user, false) + return ApplicationTemplateService.createApplicationTemplateEndPoint(application, false) } -const createApplicationTemplateYAMLEndPoint = async function (req, user) { +const createApplicationTemplateYAMLEndPoint = async function (req) { if (!req.file) { throw new errors.ValidationError(ErrorMessages.APPLICATION_FILE_NOT_FOUND) } const fileContent = req.file.buffer.toString() const application = await YAMLParserService.parseAppTemplateFile(fileContent) - await rvaluesVarSubstition(application.variables, { self: application.variables }, user) + await rvaluesVarSubstition(application.variables, { self: application.variables }) - return ApplicationTemplateService.createApplicationTemplateEndPoint(application, user, false) + return ApplicationTemplateService.createApplicationTemplateEndPoint(application, false) } -const getApplicationTemplatesByUserEndPoint = async function (req, user) { - return ApplicationTemplateService.getUserApplicationTemplatesEndPoint(user, false) +const getApplicationTemplatesByUserEndPoint = async function (req) { + return ApplicationTemplateService.getUserApplicationTemplatesEndPoint(false) } -const getApplicationTemplateEndPoint = async function (req, user) { +const getApplicationTemplateEndPoint = async function (req) { const name = req.params.name - return ApplicationTemplateService.getApplicationTemplateEndPoint({ name }, user, false) + return ApplicationTemplateService.getApplicationTemplateEndPoint({ name }, false) } -const patchApplicationTemplateEndPoint = async function (req, user) { +const patchApplicationTemplateEndPoint = async function (req) { const application = req.body const name = req.params.name - return ApplicationTemplateService.patchApplicationTemplateEndPoint(application, { name }, user, false) + return ApplicationTemplateService.patchApplicationTemplateEndPoint(application, { name }, false) } -const updateApplicationTemplateEndPoint = async function (req, user) { +const updateApplicationTemplateEndPoint = async function (req) { const application = req.body const name = req.params.name - return ApplicationTemplateService.updateApplicationTemplateEndPoint(application, name, user, false) + return ApplicationTemplateService.updateApplicationTemplateEndPoint(application, name, false) } -const updateApplicationTemplateYAMLEndPoint = async function (req, user) { +const updateApplicationTemplateYAMLEndPoint = async function (req) { if (!req.file) { throw new errors.ValidationError(ErrorMessages.APPLICATION_FILE_NOT_FOUND) } const name = req.params.name const fileContent = req.file.buffer.toString() const application = await YAMLParserService.parseAppTemplateFile(fileContent) - await rvaluesVarSubstition(application.variables, { self: application.variables }, user) + await rvaluesVarSubstition(application.variables, { self: application.variables }) - return ApplicationTemplateService.updateApplicationTemplateEndPoint(application, name, user, false) + return ApplicationTemplateService.updateApplicationTemplateEndPoint(application, name, false) } -const deleteApplicationTemplateEndPoint = async function (req, user) { +const deleteApplicationTemplateEndPoint = async function (req) { const name = req.params.name - return ApplicationTemplateService.deleteApplicationTemplateEndPoint({ name }, user, false) + return ApplicationTemplateService.deleteApplicationTemplateEndPoint({ name }, false) } module.exports = { diff --git a/src/controllers/catalog-controller.js b/src/controllers/catalog-controller.js index afed875af..dcd35cd57 100644 --- a/src/controllers/catalog-controller.js +++ b/src/controllers/catalog-controller.js @@ -13,24 +13,24 @@ const CatalogService = require('../services/catalog-service') -const createCatalogItemEndPoint = async function (req, user) { - return CatalogService.createCatalogItemEndPoint(req.body, user) +const createCatalogItemEndPoint = async function (req) { + return CatalogService.createCatalogItemEndPoint(req.body) } -const listCatalogItemsEndPoint = async function (req, user) { - return CatalogService.listCatalogItemsEndPoint(user, false) +const listCatalogItemsEndPoint = async function (req) { + return CatalogService.listCatalogItemsEndPoint(false) } -const listCatalogItemEndPoint = async function (req, user) { - return CatalogService.getCatalogItemEndPoint(req.params.id, user, false) +const listCatalogItemEndPoint = async function (req) { + return CatalogService.getCatalogItemEndPoint(req.params.id, false) } -const deleteCatalogItemEndPoint = async function (req, user) { - await CatalogService.deleteCatalogItemEndPoint(req.params.id, user, false) +const deleteCatalogItemEndPoint = async function (req) { + await CatalogService.deleteCatalogItemEndPoint(req.params.id, false) } -const updateCatalogItemEndPoint = async function (req, user) { - await CatalogService.updateCatalogItemEndPoint(req.params.id, req.body, user, false) +const updateCatalogItemEndPoint = async function (req) { + await CatalogService.updateCatalogItemEndPoint(req.params.id, req.body, false) } module.exports = { diff --git a/src/controllers/config-controller.js b/src/controllers/config-controller.js index 0b57a14fc..2b5efd729 100644 --- a/src/controllers/config-controller.js +++ b/src/controllers/config-controller.js @@ -13,16 +13,16 @@ const ConfigService = require('../services/config-service') -const upsertConfigElementEndpoint = async function (req, user) { +const upsertConfigElementEndpoint = async function (req) { const configData = req.body return ConfigService.upsertConfigElement(configData) } -const listConfigEndpoint = async function (user) { +const listConfigEndpoint = async function () { return ConfigService.listConfig() } -const getConfigEndpoint = async function (req, user) { +const getConfigEndpoint = async function (req) { const key = req.params.key return ConfigService.getConfigElement(key) } diff --git a/src/controllers/diagnostic-controller.js b/src/controllers/diagnostic-controller.js index 640ae6642..35d053beb 100644 --- a/src/controllers/diagnostic-controller.js +++ b/src/controllers/diagnostic-controller.js @@ -13,24 +13,24 @@ const DiagnosticService = require('../services/diagnostic-service') -const changeMicroserviceStraceStateEndPoint = async function (req, user) { - return DiagnosticService.changeMicroserviceStraceState(req.params.uuid, req.body, user, false) +const changeMicroserviceStraceStateEndPoint = async function (req) { + return DiagnosticService.changeMicroserviceStraceState(req.params.uuid, req.body, false) } -const getMicroserviceStraceDataEndPoint = async function (req, user) { - return DiagnosticService.getMicroserviceStraceData(req.params.uuid, req.query, user, false) +const getMicroserviceStraceDataEndPoint = async function (req) { + return DiagnosticService.getMicroserviceStraceData(req.params.uuid, req.query, false) } -const postMicroserviceStraceDataToFtpEndPoint = async function (req, user) { - return DiagnosticService.postMicroserviceStraceDatatoFtp(req.params.uuid, req.body, user, false) +const postMicroserviceStraceDataToFtpEndPoint = async function (req) { + return DiagnosticService.postMicroserviceStraceDatatoFtp(req.params.uuid, req.body, false) } -const createMicroserviceImageSnapshotEndPoint = async function (req, user) { - return DiagnosticService.postMicroserviceImageSnapshotCreate(req.params.uuid, user, false) +const createMicroserviceImageSnapshotEndPoint = async function (req) { + return DiagnosticService.postMicroserviceImageSnapshotCreate(req.params.uuid, false) } -const getMicroserviceImageSnapshotEndPoint = async function (req, user) { - return DiagnosticService.getMicroserviceImageSnapshot(req.params.uuid, user, false) +const getMicroserviceImageSnapshotEndPoint = async function (req) { + return DiagnosticService.getMicroserviceImageSnapshot(req.params.uuid, false) } module.exports = { diff --git a/src/controllers/edge-resource-controller.js b/src/controllers/edge-resource-controller.js index f6ca86473..e4ec39658 100644 --- a/src/controllers/edge-resource-controller.js +++ b/src/controllers/edge-resource-controller.js @@ -13,24 +13,24 @@ const EdgeResourceService = require('../services/edge-resource-service') -const createEdgeResourceEndpoint = async function (req, user) { +const createEdgeResourceEndpoint = async function (req) { const edgeResourceData = req.body - return EdgeResourceService.createEdgeResource(edgeResourceData, user) + return EdgeResourceService.createEdgeResource(edgeResourceData) } -const updateEdgeResourceEndpoint = async function (req, user) { +const updateEdgeResourceEndpoint = async function (req) { const edgeResourceData = req.body const { version, name } = req.params - return EdgeResourceService.updateEdgeResourceEndpoint(edgeResourceData, { name, version }, user) + return EdgeResourceService.updateEdgeResourceEndpoint(edgeResourceData, { name, version }) } -const listEdgeResourcesEndpoint = async function (req, user) { - return { edgeResources: await EdgeResourceService.listEdgeResources(user) } +const listEdgeResourcesEndpoint = async function (req) { + return { edgeResources: await EdgeResourceService.listEdgeResources() } } -const getEdgeResourceEndpoint = async function (req, user) { +const getEdgeResourceEndpoint = async function (req) { const { version, name } = req.params - const result = await EdgeResourceService.getEdgeResource({ name, version }, user) + const result = await EdgeResourceService.getEdgeResource({ name, version }) if (version) { return result } else { @@ -38,27 +38,27 @@ const getEdgeResourceEndpoint = async function (req, user) { } } -const getEdgeResourceAllVersionsEndpoint = async function (req, user) { +const getEdgeResourceAllVersionsEndpoint = async function (req) { const { name } = req.params - const result = await EdgeResourceService.getEdgeResource({ name }, user) + const result = await EdgeResourceService.getEdgeResource({ name }) return { edgeResources: result } } -const deleteEdgeResourceEndpoint = async function (req, user) { +const deleteEdgeResourceEndpoint = async function (req) { const { version, name } = req.params - return EdgeResourceService.deleteEdgeResource({ name, version }, user) + return EdgeResourceService.deleteEdgeResource({ name, version }) } -const linkEdgeResourceEndpoint = async function (req, user) { +const linkEdgeResourceEndpoint = async function (req) { const { name, version } = req.params const { uuid } = req.body - return EdgeResourceService.linkEdgeResource({ name, version }, uuid, user) + return EdgeResourceService.linkEdgeResource({ name, version }, uuid) } -const unlinkEdgeResourceEndpoint = async function (req, user) { +const unlinkEdgeResourceEndpoint = async function (req) { const { name, version } = req.params const { uuid } = req.body - return EdgeResourceService.unlinkEdgeResource({ name, version }, uuid, user) + return EdgeResourceService.unlinkEdgeResource({ name, version }, uuid) } module.exports = { diff --git a/src/controllers/iofog-controller.js b/src/controllers/iofog-controller.js index 2a6c793c7..3d2f86ccb 100644 --- a/src/controllers/iofog-controller.js +++ b/src/controllers/iofog-controller.js @@ -14,83 +14,83 @@ const FogService = require('../services/iofog-service') const qs = require('qs') -async function createFogEndPoint (req, user) { +async function createFogEndPoint (req) { const newFog = req.body - return FogService.createFogEndPoint(newFog, user, false) + return FogService.createFogEndPoint(newFog, false) } -async function updateFogEndPoint (req, user) { +async function updateFogEndPoint (req) { const updateFog = req.body updateFog.uuid = req.params.uuid - return FogService.updateFogEndPoint(updateFog, user, false) + return FogService.updateFogEndPoint(updateFog, false) } -async function deleteFogEndPoint (req, user) { +async function deleteFogEndPoint (req) { const deleteFog = { uuid: req.params.uuid } - return FogService.deleteFogEndPoint(deleteFog, user, false) + return FogService.deleteFogEndPoint(deleteFog, false) } -async function getFogEndPoint (req, user) { +async function getFogEndPoint (req) { const getFog = { uuid: req.params.uuid } - return FogService.getFogEndPoint(getFog, user, false) + return FogService.getFogEndPoint(getFog, false) } -async function getFogListEndPoint (req, user) { +async function getFogListEndPoint (req) { const isSystem = req.query && req.query.system ? req.query.system === 'true' : false const query = qs.parse(req.query) - return FogService.getFogListEndPoint(query.filters, user, false, isSystem) + return FogService.getFogListEndPoint(query.filters, false, isSystem) } -async function generateProvisionKeyEndPoint (req, user) { +async function generateProvisionKeyEndPoint (req) { const fog = { uuid: req.params.uuid } - return FogService.generateProvisioningKeyEndPoint(fog, user, false) + return FogService.generateProvisioningKeyEndPoint(fog, false) } -async function setFogVersionCommandEndPoint (req, user) { +async function setFogVersionCommandEndPoint (req) { const fogVersionCommand = { uuid: req.params.uuid, versionCommand: req.params.versionCommand } - return FogService.setFogVersionCommandEndPoint(fogVersionCommand, user, false) + return FogService.setFogVersionCommandEndPoint(fogVersionCommand, false) } -async function setFogRebootCommandEndPoint (req, user) { +async function setFogRebootCommandEndPoint (req) { const fog = { uuid: req.params.uuid } - return FogService.setFogRebootCommandEndPoint(fog, user, false) + return FogService.setFogRebootCommandEndPoint(fog, false) } -async function getHalHardwareInfoEndPoint (req, user) { +async function getHalHardwareInfoEndPoint (req) { const uuidObj = { uuid: req.params.uuid } - return FogService.getHalHardwareInfoEndPoint(uuidObj, user, false) + return FogService.getHalHardwareInfoEndPoint(uuidObj, false) } -async function getHalUsbInfoEndPoint (req, user) { +async function getHalUsbInfoEndPoint (req) { const uuidObj = { uuid: req.params.uuid } - return FogService.getHalUsbInfoEndPoint(uuidObj, user, false) + return FogService.getHalUsbInfoEndPoint(uuidObj, false) } -async function setFogPruneCommandEndPoint (req, user) { +async function setFogPruneCommandEndPoint (req) { const fog = { uuid: req.params.uuid } - return FogService.setFogPruneCommandEndPoint(fog, user, false) + return FogService.setFogPruneCommandEndPoint(fog, false) } module.exports = { diff --git a/src/controllers/microservices-controller.js b/src/controllers/microservices-controller.js index f2ff25531..367c3003e 100644 --- a/src/controllers/microservices-controller.js +++ b/src/controllers/microservices-controller.js @@ -15,108 +15,108 @@ const MicroservicesService = require('../services/microservices-service') const YAMLParserService = require('../services/yaml-parser-service') const { rvaluesVarSubstition } = require('../helpers/template-helper') -const createMicroserviceOnFogEndPoint = async function (req, user) { +const createMicroserviceOnFogEndPoint = async function (req) { const microservice = req.body - return MicroservicesService.createMicroserviceEndPoint(microservice, user, false) + return MicroservicesService.createMicroserviceEndPoint(microservice, false) } -const createMicroserviceYAMLEndPoint = async function (req, user) { +const createMicroserviceYAMLEndPoint = async function (req) { const fileContent = req.file.buffer.toString() const microservice = await YAMLParserService.parseMicroserviceFile(fileContent) - await rvaluesVarSubstition(microservice, { self: microservice }, user) - return MicroservicesService.createMicroserviceEndPoint(microservice, user, false) + await rvaluesVarSubstition(microservice, { self: microservice }) + return MicroservicesService.createMicroserviceEndPoint(microservice, false) } -const getMicroserviceEndPoint = async function (req, user) { +const getMicroserviceEndPoint = async function (req) { const microserviceUuid = req.params.uuid - return MicroservicesService.getMicroserviceEndPoint(microserviceUuid, user, false) + return MicroservicesService.getMicroserviceEndPoint(microserviceUuid, false) } -const updateMicroserviceEndPoint = async function (req, user) { +const updateMicroserviceEndPoint = async function (req) { const microservice = req.body const microserviceUuid = req.params.uuid - return MicroservicesService.updateMicroserviceEndPoint(microserviceUuid, microservice, user, false) + return MicroservicesService.updateMicroserviceEndPoint(microserviceUuid, microservice, false) } -const updateMicroserviceYAMLEndPoint = async function (req, user) { +const updateMicroserviceYAMLEndPoint = async function (req) { const microserviceUuid = req.params.uuid const fileContent = req.file.buffer.toString() const microservice = await YAMLParserService.parseMicroserviceFile(fileContent) - await rvaluesVarSubstition(microservice, { self: microservice }, user) - return MicroservicesService.updateMicroserviceEndPoint(microserviceUuid, microservice, user, false) + await rvaluesVarSubstition(microservice, { self: microservice }) + return MicroservicesService.updateMicroserviceEndPoint(microserviceUuid, microservice, false) } -const deleteMicroserviceEndPoint = async function (req, user) { +const deleteMicroserviceEndPoint = async function (req) { const microserviceUuid = req.params.uuid const microserviceData = req.body || {} - return MicroservicesService.deleteMicroserviceEndPoint(microserviceUuid, microserviceData, user, false) + return MicroservicesService.deleteMicroserviceEndPoint(microserviceUuid, microserviceData, false) } -const getMicroservicesByApplicationEndPoint = async function (req, user) { +const getMicroservicesByApplicationEndPoint = async function (req) { // API Retro compatibility const flowId = req.query.flowId const applicationName = req.query.application - return MicroservicesService.listMicroservicesEndPoint({ applicationName, flowId }, user, false) + return MicroservicesService.listMicroservicesEndPoint({ applicationName, flowId }, false) } -const createMicroserviceRouteEndPoint = async function (req, user) { +const createMicroserviceRouteEndPoint = async function (req) { const sourceUuid = req.params.uuid const destUuid = req.params.receiverUuid - return MicroservicesService.createRouteEndPoint(sourceUuid, destUuid, user, false) + return MicroservicesService.createRouteEndPoint(sourceUuid, destUuid, false) } -const deleteMicroserviceRouteEndPoint = async function (req, user) { +const deleteMicroserviceRouteEndPoint = async function (req) { const sourceUuid = req.params.uuid const destUuid = req.params.receiverUuid - return MicroservicesService.deleteRouteEndPoint(sourceUuid, destUuid, user, false) + return MicroservicesService.deleteRouteEndPoint(sourceUuid, destUuid, false) } -const createMicroservicePortMappingEndPoint = async function (req, user) { +const createMicroservicePortMappingEndPoint = async function (req) { const uuid = req.params.uuid const portMappingData = req.body - return MicroservicesService.createPortMappingEndPoint(uuid, portMappingData, user, false) + return MicroservicesService.createPortMappingEndPoint(uuid, portMappingData, false) } -const deleteMicroservicePortMappingEndPoint = async function (req, user) { +const deleteMicroservicePortMappingEndPoint = async function (req) { const uuid = req.params.uuid const internalPort = req.params.internalPort - return MicroservicesService.deletePortMappingEndPoint(uuid, internalPort, user, false) + return MicroservicesService.deletePortMappingEndPoint(uuid, internalPort, false) } -const listMicroservicePortMappingsEndPoint = async function (req, user) { +const listMicroservicePortMappingsEndPoint = async function (req) { const uuid = req.params.uuid - const ports = await MicroservicesService.listMicroservicePortMappingsEndPoint(uuid, user, false) + const ports = await MicroservicesService.listMicroservicePortMappingsEndPoint(uuid, false) return { ports: ports } } -const createMicroserviceVolumeMappingEndPoint = async function (req, user) { +const createMicroserviceVolumeMappingEndPoint = async function (req) { const microserviceUuid = req.params.uuid const volumeMappingData = req.body - const volumeMapping = await MicroservicesService.createVolumeMappingEndPoint(microserviceUuid, volumeMappingData, user, false) + const volumeMapping = await MicroservicesService.createVolumeMappingEndPoint(microserviceUuid, volumeMappingData, false) return { id: volumeMapping.id } } -const listMicroserviceVolumeMappingsEndPoint = async function (req, user) { +const listMicroserviceVolumeMappingsEndPoint = async function (req) { const uuid = req.params.uuid - const volumeMappings = await MicroservicesService.listVolumeMappingsEndPoint(uuid, user, false) + const volumeMappings = await MicroservicesService.listVolumeMappingsEndPoint(uuid, false) return { volumeMappings: volumeMappings } } -const deleteMicroserviceVolumeMappingEndPoint = async function (req, user) { +const deleteMicroserviceVolumeMappingEndPoint = async function (req) { const uuid = req.params.uuid const id = req.params.id - return MicroservicesService.deleteVolumeMappingEndPoint(uuid, id, user, false) + return MicroservicesService.deleteVolumeMappingEndPoint(uuid, id, false) } -const listAllPublicPortsEndPoint = async function (req, user) { - return MicroservicesService.listAllPublicPortsEndPoint(user) +const listAllPublicPortsEndPoint = async function (req) { + return MicroservicesService.listAllPublicPortsEndPoint() } module.exports = { diff --git a/src/controllers/registry-controller.js b/src/controllers/registry-controller.js index 906db93cf..ab633cb0e 100644 --- a/src/controllers/registry-controller.js +++ b/src/controllers/registry-controller.js @@ -13,26 +13,26 @@ const RegistryService = require('../services/registry-service') -const createRegistryEndPoint = async function (req, user) { +const createRegistryEndPoint = async function (req) { const registry = req.body - return RegistryService.createRegistry(registry, user) + return RegistryService.createRegistry(registry) } -const getRegistriesEndPoint = async function (req, user) { - return RegistryService.findRegistries(user, false) +const getRegistriesEndPoint = async function (req) { + return RegistryService.findRegistries(false) } -const deleteRegistryEndPoint = async function (req, user) { +const deleteRegistryEndPoint = async function (req) { const deleteRegistry = { id: parseInt(req.params.id) } - return RegistryService.deleteRegistry(deleteRegistry, user, false) + return RegistryService.deleteRegistry(deleteRegistry, false) } -const updateRegistryEndPoint = async function (req, user) { +const updateRegistryEndPoint = async function (req) { const registry = req.body const registryId = req.params.id - return RegistryService.updateRegistry(registry, registryId, user, false) + return RegistryService.updateRegistry(registry, registryId, false) } module.exports = { diff --git a/src/controllers/routing-controller.js b/src/controllers/routing-controller.js index 01b5f8ec8..8d6df8bc4 100644 --- a/src/controllers/routing-controller.js +++ b/src/controllers/routing-controller.js @@ -13,32 +13,32 @@ const RoutingService = require('../services/routing-service') -const createRoutingEndpoint = async function (req, user) { +const createRoutingEndpoint = async function (req) { const routerData = req.body - return RoutingService.createRouting(routerData, user, false) + return RoutingService.createRouting(routerData, false) } -const getRoutingsEndPoint = async function (req, user) { - return RoutingService.getRoutings(user, false) +const getRoutingsEndPoint = async function (req) { + return RoutingService.getRoutings(false) } -const getRoutingEndPoint = async function (req, user) { +const getRoutingEndPoint = async function (req) { const routeName = req.params.name const appName = req.params.appName - return RoutingService.getRouting(appName, routeName, user, false) + return RoutingService.getRouting(appName, routeName, false) } -const updateRoutingEndpoint = async function (req, user) { +const updateRoutingEndpoint = async function (req) { const routeName = req.params.name const appName = req.params.appName const routeData = req.body - return RoutingService.updateRouting(appName, routeName, routeData, user, false) + return RoutingService.updateRouting(appName, routeName, routeData, false) } -const deleteRoutingEndpoint = async function (req, user) { +const deleteRoutingEndpoint = async function (req) { const routeName = req.params.name const appName = req.params.appName - return RoutingService.deleteRouting(appName, routeName, user, false) + return RoutingService.deleteRouting(appName, routeName, false) } module.exports = { diff --git a/src/controllers/tunnel-controller.js b/src/controllers/tunnel-controller.js index 7bc0ac9be..fb3ea34c9 100644 --- a/src/controllers/tunnel-controller.js +++ b/src/controllers/tunnel-controller.js @@ -15,7 +15,7 @@ const TunnelService = require('../services/tunnel-service') const Errors = require('../helpers/errors') const ErrorMessages = require('../helpers/error-messages') -const manageTunnelEndPoint = async function (req, user) { +const manageTunnelEndPoint = async function (req) { const action = req.body.action const tunnelData = { iofogUuid: req.params.id @@ -23,21 +23,21 @@ const manageTunnelEndPoint = async function (req, user) { switch (action) { case 'open': - await TunnelService.openTunnel(tunnelData, user, false) + await TunnelService.openTunnel(tunnelData, false) break case 'close': - await TunnelService.closeTunnel(tunnelData, user) + await TunnelService.closeTunnel(tunnelData) break default: throw new Errors.ValidationError(ErrorMessages.INVALID_ACTION_PROPERTY) } } -const getTunnelEndPoint = async function (req, user) { +const getTunnelEndPoint = async function (req) { const tunnelData = { iofogUuid: req.params.id } - return TunnelService.findTunnel(tunnelData, user) + return TunnelService.findTunnel(tunnelData) } module.exports = { diff --git a/src/services/application-service.js b/src/services/application-service.js index a823588f4..c337b9ec2 100644 --- a/src/services/application-service.js +++ b/src/services/application-service.js @@ -28,11 +28,11 @@ const remove = require('lodash/remove') const onlyUnique = (value, index, self) => self.indexOf(value) === index -const createApplicationEndPoint = async function (applicationData, user, isCLI, transaction) { +const createApplicationEndPoint = async function (applicationData, isCLI, transaction) { // if template is provided, use template data if (applicationData.template && applicationData.template.name) { applicationData = { - ...await ApplicationTemplateService.getApplicationDataFromTemplate(applicationData.template, user, isCLI, transaction), + ...await ApplicationTemplateService.getApplicationDataFromTemplate(applicationData.template, isCLI, transaction), isSystem: applicationData.isSystem, name: applicationData.name, description: applicationData.description, @@ -72,13 +72,13 @@ const createApplicationEndPoint = async function (applicationData, user, isCLI, try { if (applicationData.microservices) { for (const msvcData of applicationData.microservices) { - await MicroserviceService.createMicroserviceEndPoint(msvcData, user, isCLI, transaction) + await MicroserviceService.createMicroserviceEndPoint(msvcData, isCLI, transaction) } } if (applicationData.routes) { for (const routeData of applicationData.routes) { - await RoutingService.createRouting(routeData, user, isCLI, transaction) + await RoutingService.createRouting(routeData, isCLI, transaction) } } @@ -88,12 +88,12 @@ const createApplicationEndPoint = async function (applicationData, user, isCLI, } } catch (e) { // If anything failed during creating the application, delete all that was created - await deleteApplicationEndPoint({ name: application.name }, user, isCLI, transaction) + await deleteApplicationEndPoint({ name: application.name }, isCLI, transaction) throw e } } -const deleteApplicationEndPoint = async function (conditions, user, isCLI, transaction) { +const deleteApplicationEndPoint = async function (conditions, isCLI, transaction) { const whereObj = { ...conditions } @@ -105,7 +105,7 @@ const deleteApplicationEndPoint = async function (conditions, user, isCLI, trans } // Only patches the metadata (running, name, description, etc.) -const patchApplicationEndPoint = async function (applicationData, conditions, user, isCLI, transaction) { +const patchApplicationEndPoint = async function (applicationData, conditions, isCLI, transaction) { await Validator.validate(applicationData, Validator.schemas.applicationPatch) const oldApplication = await ApplicationManager.findOne({ ...conditions }, transaction) @@ -137,11 +137,11 @@ const patchApplicationEndPoint = async function (applicationData, conditions, us } // Updates the state (microservices, routes, etc.) -const updateApplicationEndPoint = async function (applicationData, name, user, isCLI, transaction) { +const updateApplicationEndPoint = async function (applicationData, name, isCLI, transaction) { // if template is provided, use template data if (applicationData.template && applicationData.template.name) { applicationData = { - ...await ApplicationTemplateService.getApplicationDataFromTemplate(applicationData.template, user, isCLI, transaction), + ...await ApplicationTemplateService.getApplicationDataFromTemplate(applicationData.template, isCLI, transaction), isSystem: applicationData.isSystem, name: applicationData.name || name, description: applicationData.description, @@ -188,10 +188,10 @@ const updateApplicationEndPoint = async function (applicationData, name, user, i await ApplicationManager.update(where, updateApplicationData, transaction) if (applicationData.microservices) { - await _updateMicroservices(application.name, applicationData.microservices, user, isCLI, transaction) + await _updateMicroservices(application.name, applicationData.microservices, isCLI, transaction) } if (applicationData.routes) { - await _updateRoutes(application.name, applicationData.routes, user, isCLI, transaction) + await _updateRoutes(application.name, applicationData.routes, isCLI, transaction) } if (oldApplication.isActivated !== applicationData.isActivated) { @@ -199,7 +199,7 @@ const updateApplicationEndPoint = async function (applicationData, name, user, i } } -const _updateRoutes = async function (application, routes, user, isCLI, transaction) { +const _updateRoutes = async function (application, routes, isCLI, transaction) { // Update routes const updatedRoutes = [...routes] const oldRoutes = await ApplicationManager.findApplicationRoutes({ name: application }, transaction) @@ -209,19 +209,19 @@ const _updateRoutes = async function (application, routes, user, isCLI, transact for (const oldRoute of oldRoutes) { const removed = remove(updatedRoutes, (n) => oldRoute.name === n.name) if (!removed.length) { - await RoutingService.deleteRouting(oldRoute.name, user, isCLI, transaction) + await RoutingService.deleteRouting(oldRoute.name, isCLI, transaction) } else { const updatedRoute = removed[0] - await RoutingService.updateRouting(application, updatedRoute.name, updatedRoute, user, isCLI, transaction) + await RoutingService.updateRouting(application, updatedRoute.name, updatedRoute, isCLI, transaction) } } // Create missing routes for (const route of updatedRoutes) { - await RoutingService.createRouting(route, user, isCLI, transaction) + await RoutingService.createRouting(route, isCLI, transaction) } } -const _updateMicroservices = async function (application, microservices, user, isCLI, transaction) { +const _updateMicroservices = async function (application, microservices, isCLI, transaction) { const updatedMicroservices = [...microservices] // Update microservices const oldMicroservices = await ApplicationManager.findApplicationMicroservices({ name: application }, transaction) @@ -238,14 +238,14 @@ const _updateMicroservices = async function (application, microservices, user, i iofogUuids.push(oldMsvc.iofogUuid) } else { const updatedMsvc = removed[0] - const updatedMicroservices = await MicroserviceService.updateMicroserviceEndPoint(oldMsvc.uuid, updatedMsvc, user, isCLI, transaction, false) + const updatedMicroservices = await MicroserviceService.updateMicroserviceEndPoint(oldMsvc.uuid, updatedMsvc, isCLI, transaction, false) oldMsvcsIofogUuids.push(updatedMicroservices.microserviceIofogUuid) updatedMsvcsUuid.push(updatedMicroservices.updatedMicroserviceIofogUuid) } } // Create missing microservices for (const microservice of updatedMicroservices) { - await MicroserviceService.createMicroserviceEndPoint(microservice, user, isCLI, transaction) + await MicroserviceService.createMicroserviceEndPoint(microservice, isCLI, transaction) } iofogUuids .filter(onlyUnique) @@ -270,7 +270,7 @@ const _updateMicroservices = async function (application, microservices, user, i }) } -const getUserApplicationsEndPoint = async function (user, isCLI, transaction) { +const getUserApplicationsEndPoint = async function (isCLI, transaction) { const application = { isSystem: false } @@ -300,7 +300,7 @@ async function _buildApplicationObject (application, transaction) { return application } -async function getApplication (conditions, user, isCLI, transaction) { +async function getApplication (conditions, isCLI, transaction) { const where = isCLI ? { ...conditions } : { ...conditions } @@ -314,8 +314,8 @@ async function getApplication (conditions, user, isCLI, transaction) { return application } -const getApplicationEndPoint = async function (conditions, user, isCLI, transaction) { - const application = await getApplication(conditions, user, isCLI, transaction) +const getApplicationEndPoint = async function (conditions, isCLI, transaction) { + const application = await getApplication(conditions, isCLI, transaction) return application } diff --git a/src/services/application-template-service.js b/src/services/application-template-service.js index 8fa309cb2..df68d89c2 100644 --- a/src/services/application-template-service.js +++ b/src/services/application-template-service.js @@ -24,7 +24,7 @@ const ApplicationTemplateVariableManager = require('../data/managers/application const TransactionDecorator = require('../decorators/transaction-decorator') const Validator = require('../schemas') -const createApplicationTemplateEndPoint = async function (applicationTemplateData, user, isCLI, transaction) { +const createApplicationTemplateEndPoint = async function (applicationTemplateData, isCLI, transaction) { // Add a name field to pass schema validation using the applicationCreate schema applicationTemplateData.application = { ...applicationTemplateData.application, name: 'validation' } await Validator.validate(applicationTemplateData, Validator.schemas.applicationTemplateCreate) @@ -56,12 +56,12 @@ const createApplicationTemplateEndPoint = async function (applicationTemplateDat } } catch (e) { // If anything failed during creating the application, delete all that was created - await deleteApplicationTemplateEndPoint({ name: applicationTemplate.name }, user, isCLI, transaction) + await deleteApplicationTemplateEndPoint({ name: applicationTemplate.name }, isCLI, transaction) throw e } } -const deleteApplicationTemplateEndPoint = async function (conditions, user, isCLI, transaction) { +const deleteApplicationTemplateEndPoint = async function (conditions, isCLI, transaction) { const whereObj = { ...conditions } @@ -70,7 +70,7 @@ const deleteApplicationTemplateEndPoint = async function (conditions, user, isCL await ApplicationTemplateManager.delete(where, transaction) } -const patchApplicationTemplateEndPoint = async function (applicationTemplateData, conditions, user, isCLI, transaction) { +const patchApplicationTemplateEndPoint = async function (applicationTemplateData, conditions, isCLI, transaction) { await Validator.validate(applicationTemplateData, Validator.schemas.applicationTemplatePatch) const oldApplicationTemplate = await ApplicationTemplateManager.findOne({ ...conditions }, transaction) @@ -95,7 +95,7 @@ const patchApplicationTemplateEndPoint = async function (applicationTemplateData await ApplicationTemplateManager.update(where, updateApplicationTemplateData, transaction) } -const updateApplicationTemplateEndPoint = async function (applicationTemplateData, name, user, isCLI, transaction) { +const updateApplicationTemplateEndPoint = async function (applicationTemplateData, name, isCLI, transaction) { // Add a name field to pass schema validation using the applicationCreate schema applicationTemplateData.application = { ...applicationTemplateData.application, name: 'validation' } await Validator.validate(applicationTemplateData, Validator.schemas.applicationTemplateUpdate) @@ -105,7 +105,7 @@ const updateApplicationTemplateEndPoint = async function (applicationTemplateDat const oldApplicationTemplate = await ApplicationTemplateManager.findOne({ name }, transaction) if (!oldApplicationTemplate) { - return createApplicationTemplateEndPoint({ ...applicationTemplateData, name }, user, isCLI, transaction) + return createApplicationTemplateEndPoint({ ...applicationTemplateData, name }, isCLI, transaction) } if (applicationTemplateData.name) { await _checkForDuplicateName(applicationTemplateData.name, oldApplicationTemplate.id, transaction) @@ -124,7 +124,7 @@ const updateApplicationTemplateEndPoint = async function (applicationTemplateDat await ApplicationTemplateManager.update(where, updateApplicationTemplateData, transaction) if (applicationTemplateData.variables) { - await _updateVariables(oldApplicationTemplate.id, applicationTemplateData.variables, user, isCLI, transaction) + await _updateVariables(oldApplicationTemplate.id, applicationTemplateData.variables, isCLI, transaction) } return { @@ -146,14 +146,14 @@ const _createVariable = async function (applicationTemplateId, variableData, tra return ApplicationTemplateVariableManager.create({ ...newVariable, applicationTemplateId }, transaction) } -const _updateVariables = async function (applicationTemplateId, variables, user, isCLI, transaction) { +const _updateVariables = async function (applicationTemplateId, variables, isCLI, transaction) { await ApplicationTemplateVariableManager.delete({ applicationTemplateId }, transaction) for (const variableData of variables) { await _createVariable(applicationTemplateId, variableData, transaction) } } -const getUserApplicationTemplatesEndPoint = async function (user, isCLI, transaction) { +const getUserApplicationTemplatesEndPoint = async function (isCLI, transaction) { const application = { } @@ -187,7 +187,7 @@ const getAllApplicationTemplatesEndPoint = async function (isCLI, transaction) { } } -async function getApplicationTemplate (conditions, user, isCLI, transaction) { +async function getApplicationTemplate (conditions, isCLI, transaction) { const where = isCLI ? { ...conditions } : { ...conditions } @@ -200,11 +200,11 @@ async function getApplicationTemplate (conditions, user, isCLI, transaction) { return _buildGetApplicationObj(application) } -const getApplicationTemplateEndPoint = async function (name, user, isCLI, transaction) { - return getApplicationTemplate(name, user, isCLI, transaction) +const getApplicationTemplateEndPoint = async function (name, isCLI, transaction) { + return getApplicationTemplate(name, isCLI, transaction) } -const getApplicationDataFromTemplate = async function (deploymentData, user, isCLI, transaction) { +const getApplicationDataFromTemplate = async function (deploymentData, isCLI, transaction) { await Validator.validate(deploymentData, Validator.schemas.applicationTemplateDeploy) const applicationTemplateDBObject = await ApplicationTemplateManager.findOnePopulated({ name: deploymentData.name }, transaction) @@ -236,7 +236,7 @@ const getApplicationDataFromTemplate = async function (deploymentData, user, isC } // default values are overwritten by user defined values, and self is always overwritten to the current object - await rvaluesVarSubstition(newApplication, { ...defaultVariablesValues, ...userProvidedVariables, self: newApplication }, user) + await rvaluesVarSubstition(newApplication, { ...defaultVariablesValues, ...userProvidedVariables, self: newApplication }) for (const msvc of newApplication.microservices) { // Send it back as a string for application creation and validation diff --git a/src/services/catalog-service.js b/src/services/catalog-service.js index 9b7a07a77..a6c0da298 100644 --- a/src/services/catalog-service.js +++ b/src/services/catalog-service.js @@ -26,11 +26,11 @@ const RegistryManager = require('../data/managers/registry-manager') const MicroserviceManager = require('../data/managers/microservice-manager') const MicroseriveStates = require('../enums/microservice-state') -const createCatalogItemEndPoint = async function (data, user, transaction) { +const createCatalogItemEndPoint = async function (data, transaction) { await Validator.validate(data, Validator.schemas.catalogItemCreate) await _checkForDuplicateName(data.name, transaction) await _checkForRestrictedPublisher(data.publisher) - const catalogItem = await _createCatalogItem(data, user, transaction) + const catalogItem = await _createCatalogItem(data, transaction) await _createCatalogImages(data, catalogItem, transaction) await _createCatalogItemInputType(data, catalogItem, transaction) await _createCatalogItemOutputType(data, catalogItem, transaction) @@ -40,7 +40,7 @@ const createCatalogItemEndPoint = async function (data, user, transaction) { } } -const updateCatalogItemEndPoint = async function (id, data, user, isCLI, transaction) { +const updateCatalogItemEndPoint = async function (id, data, isCLI, transaction) { await Validator.validate(data, Validator.schemas.catalogItemUpdate) const where = isCLI @@ -57,7 +57,7 @@ const updateCatalogItemEndPoint = async function (id, data, user, isCLI, transac await _updateCatalogItemIOTypes(data, where, transaction) } -const listCatalogItemsEndPoint = async function (user, isCLI, transaction) { +const listCatalogItemsEndPoint = async function (isCLI, transaction) { const where = isCLI ? {} : { @@ -74,7 +74,7 @@ const listCatalogItemsEndPoint = async function (user, isCLI, transaction) { } } -async function getCatalogItem (id, user, isCLI, transaction) { +async function getCatalogItem (id, isCLI, transaction) { const where = isCLI ? { id: id } : { @@ -93,11 +93,11 @@ async function getCatalogItem (id, user, isCLI, transaction) { return item } -const getCatalogItemEndPoint = async function (id, user, isCLI, transaction) { - return getCatalogItem(id, user, isCLI, transaction) +const getCatalogItemEndPoint = async function (id, isCLI, transaction) { + return getCatalogItem(id, isCLI, transaction) } -const deleteCatalogItemEndPoint = async function (id, user, isCLI, transaction) { +const deleteCatalogItemEndPoint = async function (id, isCLI, transaction) { const where = isCLI ? { id: id @@ -200,7 +200,7 @@ const _checkIfItemExists = async function (where, transaction) { return item } -const _createCatalogItem = async function (data, user, transaction) { +const _createCatalogItem = async function (data, transaction) { let catalogItem = { name: data.name, description: data.description, diff --git a/src/services/diagnostic-service.js b/src/services/diagnostic-service.js index 0b8502a12..f138683cc 100644 --- a/src/services/diagnostic-service.js +++ b/src/services/diagnostic-service.js @@ -26,9 +26,9 @@ const logger = require('../logger') const FtpClient = require('ftp') const mime = require('mime') -const changeMicroserviceStraceState = async function (uuid, data, user, isCLI, transaction) { +const changeMicroserviceStraceState = async function (uuid, data, isCLI, transaction) { await Validator.validate(data, Validator.schemas.straceStateUpdate) - const microservice = await MicroserviceService.getMicroserviceEndPoint(uuid, user, isCLI, transaction) + const microservice = await MicroserviceService.getMicroserviceEndPoint(uuid, isCLI, transaction) if (microservice.iofogUuid === null) { throw new Errors.ValidationError(ErrorMessages.STRACE_WITHOUT_FOG) } @@ -42,7 +42,7 @@ const changeMicroserviceStraceState = async function (uuid, data, user, isCLI, t await ChangeTrackingService.update(microservice.iofogUuid, ChangeTrackingService.events.diagnostics, transaction) } -const getMicroserviceStraceData = async function (uuid, data, user, isCLI, transaction) { +const getMicroserviceStraceData = async function (uuid, data, isCLI, transaction) { await Validator.validate(data, Validator.schemas.straceGetData) const microserviceWhere = isCLI @@ -75,7 +75,7 @@ const getMicroserviceStraceData = async function (uuid, data, user, isCLI, trans } } -const postMicroserviceStraceDatatoFtp = async function (uuid, data, user, isCLI, transaction) { +const postMicroserviceStraceDatatoFtp = async function (uuid, data, isCLI, transaction) { await Validator.validate(data, Validator.schemas.stracePostToFtp) const microserviceWhere = isCLI @@ -100,7 +100,7 @@ const postMicroserviceStraceDatatoFtp = async function (uuid, data, user, isCLI, _deleteFile(filePath) } -const postMicroserviceImageSnapshotCreate = async function (microserviceUuid, user, isCLI, transaction) { +const postMicroserviceImageSnapshotCreate = async function (microserviceUuid, isCLI, transaction) { const where = isCLI ? { uuid: microserviceUuid @@ -126,7 +126,7 @@ const postMicroserviceImageSnapshotCreate = async function (microserviceUuid, us await ChangeTrackingService.update(microservice.iofogUuid, ChangeTrackingService.events.imageSnapshot, transaction) } -const getMicroserviceImageSnapshot = async function (microserviceUuid, user, isCLI, transaction) { +const getMicroserviceImageSnapshot = async function (microserviceUuid, isCLI, transaction) { const where = isCLI ? { uuid: microserviceUuid diff --git a/src/services/edge-resource-service.js b/src/services/edge-resource-service.js index 750e040a7..dfa5052d5 100644 --- a/src/services/edge-resource-service.js +++ b/src/services/edge-resource-service.js @@ -155,7 +155,7 @@ async function _updateOrchestrationTags (tagArray, edgeResourceModel, transactio } } -async function createEdgeResource (edgeResourceData, user, transaction) { +async function createEdgeResource (edgeResourceData, transaction) { await Validator.validate(edgeResourceData, Validator.schemas.edgeResourceCreate) const { name, description, version, orchestrationTags, interfaceProtocol, display, custom } = edgeResourceData const existingResource = await EdgeResourceManager.findOne({ name, version }, transaction) @@ -192,7 +192,7 @@ async function createEdgeResource (edgeResourceData, user, transaction) { return buildGetObject(resource) } -async function updateEdgeResourceEndpoint (edgeResourceData, { name: oldName, version }, user, transaction) { +async function updateEdgeResourceEndpoint (edgeResourceData, { name: oldName, version }, transaction) { await Validator.validate(edgeResourceData, Validator.schemas.edgeResourceUpdate) const oldData = await EdgeResourceManager.findOne({ name: oldName, version }, transaction) if (!oldData) { @@ -202,7 +202,7 @@ async function updateEdgeResourceEndpoint (edgeResourceData, { name: oldName, ve if (!edgeResourceData.version) { edgeResourceData.version = version } - return createEdgeResource(edgeResourceData, user, transaction) + return createEdgeResource(edgeResourceData, transaction) } if (edgeResourceData.version && oldData.version !== edgeResourceData.version) { throw new Errors.ValidationError(AppHelper.formatMessage(ErrorMessages.RESOURCE_UPDATE_VERSION_MISMATCH)) @@ -244,7 +244,7 @@ async function updateEdgeResourceEndpoint (edgeResourceData, { name: oldName, ve } } -async function deleteEdgeResource ({ name, version }, user, transaction) { +async function deleteEdgeResource ({ name, version }, transaction) { const resource = await EdgeResourceManager.findOne({ name, version }, transaction) if (!resource) { throw new Errors.NotFoundError(AppHelper.formatMessage(ErrorMessages.NOT_FOUND_RESOURCE_NAME_VERSION, name, version)) @@ -258,7 +258,7 @@ async function deleteEdgeResource ({ name, version }, user, transaction) { await EdgeResourceManager.delete({ name, version }, transaction) } -async function linkEdgeResource ({ name, version }, uuid, user, transaction) { +async function linkEdgeResource ({ name, version }, uuid, transaction) { const resource = await EdgeResourceManager.findOne({ name, version }, transaction) if (!resource) { throw new Errors.NotFoundError(AppHelper.formatMessage(ErrorMessages.NOT_FOUND_RESOURCE_NAME_VERSION, name, version)) @@ -274,7 +274,7 @@ async function linkEdgeResource ({ name, version }, uuid, user, transaction) { await ChangeTrackingService.update(agent.uuid, ChangeTrackingService.events.edgeResources, transaction) } -async function unlinkEdgeResource ({ name, version }, uuid, user, transaction) { +async function unlinkEdgeResource ({ name, version }, uuid, transaction) { const resource = await EdgeResourceManager.findOne({ name, version }, transaction) if (!resource) { throw new Errors.NotFoundError(AppHelper.formatMessage(ErrorMessages.NOT_FOUND_RESOURCE_NAME_VERSION, name, version)) diff --git a/src/services/iofog-service.js b/src/services/iofog-service.js index 06b1fce95..a162b3e8e 100644 --- a/src/services/iofog-service.js +++ b/src/services/iofog-service.js @@ -35,7 +35,7 @@ const Constants = require('../helpers/constants') const Op = require('sequelize').Op const lget = require('lodash/get') -async function createFogEndPoint (fogData, user, isCLI, transaction) { +async function createFogEndPoint (fogData, isCLI, transaction) { await Validator.validate(fogData, Validator.schemas.iofogCreate) let createFogData = { @@ -119,11 +119,11 @@ async function createFogEndPoint (fogData, user, isCLI, transaction) { await ChangeTrackingService.create(fog.uuid, transaction) if (fogData.abstractedHardwareEnabled) { - await _createHalMicroserviceForFog(fog, null, user, transaction) + await _createHalMicroserviceForFog(fog, null, transaction) } if (fogData.bluetoothEnabled) { - await _createBluetoothMicroserviceForFog(fog, null, user, transaction) + await _createBluetoothMicroserviceForFog(fog, null, transaction) } await ChangeTrackingService.update(createFogData.uuid, ChangeTrackingService.events.microserviceCommon, transaction) @@ -145,7 +145,7 @@ async function _setTags (fogModel, tagsArray, transaction) { } } -async function updateFogEndPoint (fogData, user, isCLI, transaction) { +async function updateFogEndPoint (fogData, isCLI, transaction) { await Validator.validate(fogData, Validator.schemas.iofogUpdate) const queryFogData = { uuid: fogData.uuid } @@ -268,7 +268,7 @@ async function updateFogEndPoint (fogData, user, isCLI, transaction) { msChanged = true } if (oldFog.abstractedHardwareEnabled === false && fogData.abstractedHardwareEnabled === true) { - await _createHalMicroserviceForFog(fogData, oldFog, user, transaction) + await _createHalMicroserviceForFog(fogData, oldFog, transaction) msChanged = true } @@ -277,7 +277,7 @@ async function updateFogEndPoint (fogData, user, isCLI, transaction) { msChanged = true } if (oldFog.bluetoothEnabled === false && fogData.bluetoothEnabled === true) { - await _createBluetoothMicroserviceForFog(fogData, oldFog, user, transaction) + await _createBluetoothMicroserviceForFog(fogData, oldFog, transaction) msChanged = true } @@ -359,7 +359,7 @@ async function _deleteFogRouter (fogData, transaction) { await MicroserviceManager.delete({ catalogItemId: routerCatalog.id, iofogUuid: fogData.uuid }, transaction) } -async function deleteFogEndPoint (fogData, user, isCLI, transaction) { +async function deleteFogEndPoint (fogData, isCLI, transaction) { await Validator.validate(fogData, Validator.schemas.iofogDelete) const queryFogData = { uuid: fogData.uuid } @@ -442,7 +442,7 @@ function _mapTags (fog) { return fog.tags ? fog.tags.map(t => t.value) : [] } -async function getFog (fogData, user, isCLI, transaction) { +async function getFog (fogData, isCLI, transaction) { await Validator.validate(fogData, Validator.schemas.iofogGet) const queryFogData = fogData.uuid ? { uuid: fogData.uuid } : { name: fogData.name } @@ -460,15 +460,15 @@ async function getFog (fogData, user, isCLI, transaction) { return _getFogExtraInformation(fog, transaction) } -async function getFogEndPoint (fogData, user, isCLI, transaction) { - return getFog(fogData, user, isCLI, transaction) +async function getFogEndPoint (fogData, isCLI, transaction) { + return getFog(fogData, isCLI, transaction) } -async function getFogListEndPoint (filters, user, isCLI, isSystem, transaction) { +async function getFogListEndPoint (filters, isCLI, isSystem, transaction) { await Validator.validate(filters, Validator.schemas.iofogFilters) // If listing system agent through REST API, make sure user is authenticated - if (isSystem && !isCLI && !lget(user, 'id')) { + if (isSystem && !isCLI && !lget('id')) { throw new Errors.AuthenticationError('Unauthorized') } @@ -485,7 +485,7 @@ async function getFogListEndPoint (filters, user, isCLI, isSystem, transaction) } } -async function generateProvisioningKeyEndPoint (fogData, user, isCLI, transaction) { +async function generateProvisioningKeyEndPoint (fogData, isCLI, transaction) { await Validator.validate(fogData, Validator.schemas.iofogGenerateProvision) const queryFogData = { uuid: fogData.uuid } @@ -514,7 +514,7 @@ async function generateProvisioningKeyEndPoint (fogData, user, isCLI, transactio } } -async function setFogVersionCommandEndPoint (fogVersionData, user, isCLI, transaction) { +async function setFogVersionCommandEndPoint (fogVersionData, isCLI, transaction) { await Validator.validate(fogVersionData, Validator.schemas.iofogSetVersionCommand) const queryFogData = { uuid: fogVersionData.uuid } @@ -541,12 +541,12 @@ async function setFogVersionCommandEndPoint (fogVersionData, user, isCLI, transa throw new Errors.ValidationError(ErrorMessages.INVALID_VERSION_COMMAND_UPGRADE) } - await generateProvisioningKeyEndPoint({ uuid: fogVersionData.uuid }, user, isCLI, transaction) + await generateProvisioningKeyEndPoint({ uuid: fogVersionData.uuid }, isCLI, transaction) await FogVersionCommandManager.updateOrCreate({ iofogUuid: fogVersionData.uuid }, newVersionCommand, transaction) await ChangeTrackingService.update(fogVersionData.uuid, ChangeTrackingService.events.version, transaction) } -async function setFogRebootCommandEndPoint (fogData, user, isCLI, transaction) { +async function setFogRebootCommandEndPoint (fogData, isCLI, transaction) { await Validator.validate(fogData, Validator.schemas.iofogReboot) const queryFogData = { uuid: fogData.uuid } @@ -564,7 +564,7 @@ async function setFogRebootCommandEndPoint (fogData, user, isCLI, transaction) { await ChangeTrackingService.update(fogData.uuid, ChangeTrackingService.events.reboot, transaction) } -async function getHalHardwareInfoEndPoint (uuidObj, user, isCLI, transaction) { +async function getHalHardwareInfoEndPoint (uuidObj, isCLI, transaction) { await Validator.validate(uuidObj, Validator.schemas.halGet) const fog = await FogManager.findOne({ @@ -584,7 +584,7 @@ async function getHalHardwareInfoEndPoint (uuidObj, user, isCLI, transaction) { }, transaction) } -async function getHalUsbInfoEndPoint (uuidObj, user, isCLI, transaction) { +async function getHalUsbInfoEndPoint (uuidObj, isCLI, transaction) { await Validator.validate(uuidObj, Validator.schemas.halGet) const fog = await FogManager.findOne({ @@ -640,7 +640,7 @@ async function _processDeleteCommand (fog, transaction) { await FogManager.delete({ uuid: fog.uuid }, transaction) } -async function _createHalMicroserviceForFog (fogData, oldFog, user, transaction) { +async function _createHalMicroserviceForFog (fogData, oldFog, transaction) { const halItem = await CatalogService.getHalCatalogItem(transaction) const halMicroserviceData = { @@ -667,7 +667,7 @@ async function _deleteHalMicroserviceByFog (fogData, transaction) { await MicroserviceManager.delete(deleteHalMicroserviceData, transaction) } -async function _createBluetoothMicroserviceForFog (fogData, oldFog, user, transaction) { +async function _createBluetoothMicroserviceForFog (fogData, oldFog, transaction) { const bluetoothItem = await CatalogService.getBluetoothCatalogItem(transaction) const bluetoothMicroserviceData = { @@ -694,7 +694,7 @@ async function _deleteBluetoothMicroserviceByFog (fogData, transaction) { await MicroserviceManager.delete(deleteBluetoothMicroserviceData, transaction) } -async function setFogPruneCommandEndPoint (fogData, user, isCLI, transaction) { +async function setFogPruneCommandEndPoint (fogData, isCLI, transaction) { await Validator.validate(fogData, Validator.schemas.iofogPrune) const queryFogData = { uuid: fogData.uuid } diff --git a/src/services/microservice-ports/default.js b/src/services/microservice-ports/default.js index 8ca6ac690..07b504909 100644 --- a/src/services/microservice-ports/default.js +++ b/src/services/microservice-ports/default.js @@ -180,11 +180,11 @@ async function validatePublicPortAppHostTemplate (extraHost, templateArgs, msvc, throw new Errors.ValidationError(AppHelper.formatMessage(ErrorMessages.NOT_FOUND_HOST_TEMPLATE, templateArgs[4])) } -async function movePublicPortsToNewFog (updatedMicroservice, user, transaction) { +async function movePublicPortsToNewFog (updatedMicroservice, transaction) { const portMappings = await updatedMicroservice.getPorts() for (const portMapping of portMappings) { if (portMapping.isProxy) { - Proxy.moveProxyPortsToNewFog(updatedMicroservice, portMapping, user, transaction) + Proxy.moveProxyPortsToNewFog(updatedMicroservice, portMapping, transaction) continue } else if (!portMapping.isPublic) { continue @@ -201,13 +201,13 @@ async function movePublicPortsToNewFog (updatedMicroservice, user, transaction) host: destAgentsRouter.host, port: destAgentsRouter.messagingPort } - const newProxy = await _createOrUpdateProxyMicroservice(localMapping, networkRouter, updatedMicroservice.iofogUuid, localProxy.catalogItemId, user, transaction) + const newProxy = await _createOrUpdateProxyMicroservice(localMapping, networkRouter, updatedMicroservice.iofogUuid, localProxy.catalogItemId, transaction) publicPort.localProxyId = newProxy.uuid await MicroservicePublicPortManager.updateOrCreate({ id: publicPort.id }, publicPort.toJSON(), transaction) } } -async function createPortMapping (microservice, portMappingData, user, transaction) { +async function createPortMapping (microservice, portMappingData, transaction) { if (!microservice.iofogUuid) { throw new Errors.ValidationError(AppHelper.formatMessage(ErrorMessages.REQUIRED_FOG_NODE)) } @@ -231,15 +231,15 @@ async function createPortMapping (microservice, portMappingData, user, transacti portMappingData.protocol = portMappingData.protocol || '' if (portMappingData.public) { - return _createPublicPortMapping(microservice, portMappingData, user, transaction) + return _createPublicPortMapping(microservice, portMappingData, transaction) } else if (portMappingData.proxy) { - return Proxy.createProxyPortMapping(microservice, portMappingData, user, transaction) + return Proxy.createProxyPortMapping(microservice, portMappingData, transaction) } else { - return _createSimplePortMapping(microservice, portMappingData, user, transaction) + return _createSimplePortMapping(microservice, portMappingData, transaction) } } -async function _createOrUpdateProxyMicroservice (mapping, networkRouter, hostUuid, proxyCatalogId, user, transaction) { +async function _createOrUpdateProxyMicroservice (mapping, networkRouter, hostUuid, proxyCatalogId, transaction) { const existingProxy = await MicroserviceManager.findOne({ catalogItemId: proxyCatalogId, iofogUuid: hostUuid }, transaction) if (existingProxy) { const config = JSON.parse(existingProxy.config || '{}') @@ -267,7 +267,7 @@ async function _createOrUpdateProxyMicroservice (mapping, networkRouter, hostUui return res } -async function _createPublicPortMapping (microservice, portMappingData, user, transaction) { +async function _createPublicPortMapping (microservice, portMappingData, transaction) { const isTcp = portMappingData.public.protocol ? portMappingData.public.protocol.toLowerCase() === 'tcp' : false const isUdp = portMappingData.protocol.toLowerCase() === 'udp' const localAgent = portMappingData.localAgent // This is populated by validating the ports @@ -289,7 +289,6 @@ async function _createPublicPortMapping (microservice, portMappingData, user, tr localNetworkRouter, microservice.iofogUuid, proxyCatalog.id, - user, transaction) : null @@ -307,7 +306,6 @@ async function _createPublicPortMapping (microservice, portMappingData, user, tr remoteNetworkRouter, portMappingData.publicHost.uuid, proxyCatalog.id, - user, transaction) : null } @@ -345,13 +343,13 @@ async function _createPublicPortMapping (microservice, portMappingData, user, tr } } -async function _deletePortMapping (microservice, portMapping, user, transaction) { +async function _deletePortMapping (microservice, portMapping, transaction) { if (portMapping.isPublic) { await _deletePublicPortMapping(microservice, portMapping, transaction) } else if (portMapping.isProxy) { - return Proxy.deleteProxyPortMapping(microservice, portMapping, user, transaction) + return Proxy.deleteProxyPortMapping(microservice, portMapping, transaction) } else { - await _deleteSimplePortMapping(microservice, portMapping, user, transaction) + await _deleteSimplePortMapping(microservice, portMapping, transaction) } } @@ -386,7 +384,7 @@ async function _deletePublicPortMapping (microservice, portMapping, transaction) await MicroservicePortManager.delete({ id: portMapping.id }, transaction) } -async function _createSimplePortMapping (microservice, portMappingData, user, transaction) { +async function _createSimplePortMapping (microservice, portMappingData, transaction) { // create port mapping const mappingData = { isPublic: false, @@ -401,7 +399,7 @@ async function _createSimplePortMapping (microservice, portMappingData, user, tr await switchOnUpdateFlagsForMicroservicesForPortMapping(microservice, false, transaction) } -async function _deleteSimplePortMapping (microservice, msPorts, user, transaction) { +async function _deleteSimplePortMapping (microservice, msPorts, transaction) { await MicroservicePortManager.delete({ id: msPorts.id }, transaction) const updateRebuildMs = { @@ -470,7 +468,7 @@ async function switchOnUpdateFlagsForMicroservicesForPortMapping (microservice, } } -async function listPortMappings (microserviceUuid, user, isCLI, transaction) { +async function listPortMappings (microserviceUuid, isCLI, transaction) { const where = isCLI ? { uuid: microserviceUuid } : { uuid: microserviceUuid } @@ -483,7 +481,7 @@ async function listPortMappings (microserviceUuid, user, isCLI, transaction) { return _buildPortsList(portsPairs, transaction) } -async function deletePortMapping (microserviceUuid, internalPort, user, isCLI, transaction) { +async function deletePortMapping (microserviceUuid, internalPort, isCLI, transaction) { const where = isCLI ? { uuid: microserviceUuid } : { uuid: microserviceUuid } @@ -505,13 +503,13 @@ async function deletePortMapping (microserviceUuid, internalPort, user, isCLI, t throw new Errors.NotFoundError('port mapping not exists') } - await _deletePortMapping(microservice, msPorts, user, transaction) + await _deletePortMapping(microservice, msPorts, transaction) } -async function deletePortMappings (microservice, user, transaction) { +async function deletePortMappings (microservice, transaction) { const portMappings = await MicroservicePortManager.findAll({ microserviceUuid: microservice.uuid }, transaction) for (const ports of portMappings) { - await _deletePortMapping(microservice, ports, user, transaction) + await _deletePortMapping(microservice, ports, transaction) } } @@ -519,7 +517,7 @@ async function getPortMappings (microserviceUuid, transaction) { return MicroservicePortManager.findAll({ microserviceUuid }, transaction) } -function listAllPublicPorts (user, transaction) { +function listAllPublicPorts (transaction) { return MicroservicePortManager.findAllPublicPorts(transaction) } diff --git a/src/services/microservice-ports/proxy.js b/src/services/microservice-ports/proxy.js index 0a7e2dab2..d16a31f63 100644 --- a/src/services/microservice-ports/proxy.js +++ b/src/services/microservice-ports/proxy.js @@ -20,7 +20,7 @@ const MicroservicePortManager = require('../../data/managers/microservice-port-m const MicroserviceProxyPortManager = require('../../data/managers/microservice-proxy-port-manager') const ProxyBrokerClient = require('../../helpers/proxy-broker-client') -async function _createOrUpdatePortRouterMicroservice (existingProxy, localPort, protocol, portRouterServerConfig, hostUuid, portRouterCatalogId, microserviceUuid, user, transaction) { +async function _createOrUpdatePortRouterMicroservice (existingProxy, localPort, protocol, portRouterServerConfig, hostUuid, portRouterCatalogId, microserviceUuid, transaction) { const proxyConfig = { name: `${microserviceUuid}_${localPort}`, server_addr: portRouterServerConfig.host, @@ -59,7 +59,7 @@ async function _createOrUpdatePortRouterMicroservice (existingProxy, localPort, return res } -async function createProxyPortMapping (microservice, portMappingData, user, transaction) { +async function createProxyPortMapping (microservice, portMappingData, transaction) { const protocol = portMappingData.protocol || 'tcp' // create proxy microservices @@ -82,7 +82,6 @@ async function createProxyPortMapping (microservice, portMappingData, user, tran microservice.iofogUuid, portRouterCatalog.id, microservice.uuid, - user, transaction) const mappingData = { @@ -130,7 +129,7 @@ async function buildProxyPortMapping (pm, mapping, transaction) { } } -async function deleteProxyPortMapping (microservice, portMapping, user, transaction) { +async function deleteProxyPortMapping (microservice, portMapping, transaction) { const proxyPort = await portMapping.getProxyPort() if (proxyPort) { await _updateOrDeleteProxyMicroservice(proxyPort, false, transaction) @@ -165,7 +164,7 @@ async function _updateOrDeleteProxyMicroservice (proxyPort, isMove, transaction) } } -async function moveProxyPortsToNewFog (updatedMicroservice, portMapping, user, transaction) { +async function moveProxyPortsToNewFog (updatedMicroservice, portMapping, transaction) { const proxyPort = await portMapping.getProxyPort() const localProxy = await MicroserviceManager.findOne({ uuid: proxyPort.localProxyId }, transaction) await _updateOrDeleteProxyMicroservice(proxyPort, true, transaction) @@ -194,7 +193,6 @@ async function moveProxyPortsToNewFog (updatedMicroservice, portMapping, user, t updatedMicroservice.iofogUuid, localProxy.catalogItemId, updatedMicroservice.uuid, - user, transaction) proxyPort.localProxyId = newProxy.uuid diff --git a/src/services/microservices-service.js b/src/services/microservices-service.js index 4c90f7185..55156d1ce 100644 --- a/src/services/microservices-service.js +++ b/src/services/microservices-service.js @@ -37,14 +37,14 @@ const { VOLUME_MAPPING_DEFAULT } = require('../helpers/constants') const constants = require('../helpers/constants') const isEqual = require('lodash/isEqual') -async function listMicroservicesEndPoint (opt, user, isCLI, transaction) { +async function listMicroservicesEndPoint (opt, isCLI, transaction) { // API retro compatibility const { applicationName, flowId } = opt - let application = await _validateApplication(applicationName, user, isCLI, transaction) + let application = await _validateApplication(applicationName, isCLI, transaction) if (flowId) { // _validateApplication wil try by ID if it fails finding by name - application = await _validateApplication(flowId, user, isCLI, transaction) + application = await _validateApplication(flowId, isCLI, transaction) } const where = application ? { applicationId: application.id, delete: false } : { delete: false, applicationId: { [Op.ne]: null } } @@ -60,7 +60,7 @@ async function listMicroservicesEndPoint (opt, user, isCLI, transaction) { } } -async function getMicroserviceEndPoint (microserviceUuid, user, isCLI, transaction) { +async function getMicroserviceEndPoint (microserviceUuid, isCLI, transaction) { if (!isCLI) { await _validateMicroserviceOnGet(microserviceUuid, transaction) } @@ -150,7 +150,7 @@ async function _validateAgentHostTemplate (extraHost, templateArgs, transaction) return extraHost } -async function _validateExtraHost (extraHostData, user, transaction) { +async function _validateExtraHost (extraHostData, transaction) { const extraHost = { templateType: 'Litteral', name: extraHostData.name, @@ -171,13 +171,13 @@ async function _validateExtraHost (extraHostData, user, transaction) { throw new Errors.ValidationError(AppHelper.formatMessage(ErrorMessages.INVALID_HOST_TEMPLATE, template)) } -async function _validateExtraHosts (microserviceData, user, transaction) { +async function _validateExtraHosts (microserviceData, transaction) { if (!microserviceData.extraHosts || microserviceData.extraHosts.length === 0) { return [] } const extraHosts = [] for (const extraHost of microserviceData.extraHosts) { - extraHosts.push(await _validateExtraHost(extraHost, user, transaction)) + extraHosts.push(await _validateExtraHost(extraHost, transaction)) } return extraHosts } @@ -195,7 +195,7 @@ function _validateImageFogType (microserviceData, fog, images) { } } -async function _findFog (microserviceData, user, isCLI, transaction) { +async function _findFog (microserviceData, isCLI, transaction) { const fogConditions = {} if (microserviceData.iofogUuid) { fogConditions.uuid = microserviceData.iofogUuid @@ -205,7 +205,7 @@ async function _findFog (microserviceData, user, isCLI, transaction) { return FogManager.findOne(fogConditions, transaction) } -async function createMicroserviceEndPoint (microserviceData, user, isCLI, transaction) { +async function createMicroserviceEndPoint (microserviceData, isCLI, transaction) { // API Retro compatibility if (!microserviceData.application) { microserviceData.application = microserviceData.flowId @@ -213,7 +213,7 @@ async function createMicroserviceEndPoint (microserviceData, user, isCLI, transa await Validator.validate(microserviceData, Validator.schemas.microserviceCreate) // find fog - const fog = await _findFog(microserviceData, user, isCLI, transaction) + const fog = await _findFog(microserviceData, isCLI, transaction) if (!fog) { throw new Errors.ValidationError(AppHelper.formatMessage(ErrorMessages.INVALID_IOFOG_UUID, microserviceData.iofogUuid || microserviceData.agentName)) } @@ -224,7 +224,7 @@ async function createMicroserviceEndPoint (microserviceData, user, isCLI, transa // validate images if (microserviceData.catalogItemId) { // validate catalog item - const catalogItem = await CatalogService.getCatalogItem(microserviceData.catalogItemId, user, isCLI, transaction) + const catalogItem = await CatalogService.getCatalogItem(microserviceData.catalogItemId, isCLI, transaction) _validateImagesAgainstCatalog(catalogItem, microserviceData.images || []) microserviceData.images = catalogItem.images _validateImageFogType(microserviceData, fog, catalogItem.images) @@ -237,13 +237,13 @@ async function createMicroserviceEndPoint (microserviceData, user, isCLI, transa } // validate extraHosts - const extraHosts = await _validateExtraHosts(microserviceData, user, transaction) + const extraHosts = await _validateExtraHosts(microserviceData, transaction) await MicroservicePortService.validatePortMappings(microserviceData, transaction) _validateVolumeMappings(microserviceData.volumeMappings) - const microservice = await _createMicroservice({ ...microserviceData, iofogUuid: fog.uuid }, user, isCLI, transaction) + const microservice = await _createMicroservice({ ...microserviceData, iofogUuid: fog.uuid }, isCLI, transaction) if (!microserviceData.catalogItemId) { await _createMicroserviceImages(microservice, microserviceData.images, transaction) @@ -253,7 +253,7 @@ async function createMicroserviceEndPoint (microserviceData, user, isCLI, transa const proxyPorts = [] if (microserviceData.ports) { for (const mapping of microserviceData.ports) { - const res = await MicroservicePortService.createPortMapping(microservice, mapping, user, transaction) + const res = await MicroservicePortService.createPortMapping(microservice, mapping, transaction) if (res) { if (res.publicLinks) { publicPorts.push({ @@ -273,17 +273,17 @@ async function createMicroserviceEndPoint (microserviceData, user, isCLI, transa } for (const extraHost of extraHosts) { - await _createExtraHost(microservice, extraHost, user, transaction) + await _createExtraHost(microservice, extraHost, transaction) } if (microserviceData.env) { for (const env of microserviceData.env) { - await _createEnv(microservice, env, user, transaction) + await _createEnv(microservice, env, transaction) } } if (microserviceData.cmd) { for (const arg of microserviceData.cmd) { - await _createArg(microservice, arg, user, transaction) + await _createArg(microservice, arg, transaction) } } if (microserviceData.volumeMappings) { @@ -346,7 +346,7 @@ async function _updateRelatedExtraHosts (updatedMicroservice, transaction) { } } -async function updateMicroserviceEndPoint (microserviceUuid, microserviceData, user, isCLI, transaction, changeTrackingEnabled = true) { +async function updateMicroserviceEndPoint (microserviceUuid, microserviceData, isCLI, transaction, changeTrackingEnabled = true) { await Validator.validate(microserviceData, Validator.schemas.microserviceUpdate) let needStatusReset = false const query = isCLI @@ -358,11 +358,11 @@ async function updateMicroserviceEndPoint (microserviceUuid, microserviceData, u } // validate extraHosts - const extraHosts = microserviceData.extraHosts ? await _validateExtraHosts(microserviceData, user, transaction) : null + const extraHosts = microserviceData.extraHosts ? await _validateExtraHosts(microserviceData, transaction) : null const config = _validateMicroserviceConfig(microserviceData.config) - const newFog = await _findFog(microserviceData, user, isCLI, transaction) || {} + const newFog = await _findFog(microserviceData, isCLI, transaction) || {} const microserviceToUpdate = { name: microserviceData.name, config: config, @@ -400,7 +400,7 @@ async function updateMicroserviceEndPoint (microserviceUuid, microserviceData, u } if (microserviceDataUpdate.ports) { - await _updatePorts(microserviceDataUpdate.ports, microservice, user, transaction) + await _updatePorts(microserviceDataUpdate.ports, microservice, transaction) } if (microserviceDataUpdate.iofogUuid && microservice.iofogUuid !== microserviceDataUpdate.iofogUuid) { @@ -433,7 +433,7 @@ async function updateMicroserviceEndPoint (microserviceUuid, microserviceData, u const iofogUuid = microserviceDataUpdate.iofogUuid || microservice.iofogUuid if (microserviceDataUpdate.catalogItemId) { - const catalogItem = await CatalogService.getCatalogItem(microserviceDataUpdate.catalogItemId, user, isCLI, transaction) + const catalogItem = await CatalogService.getCatalogItem(microserviceDataUpdate.catalogItemId, isCLI, transaction) _validateImagesAgainstCatalog(catalogItem, microserviceDataUpdate.images || []) if (microserviceDataUpdate.catalogItemId !== undefined && microserviceDataUpdate.catalogItemId !== microservice.catalogItemId) { // Catalog item changed or removed, set rebuild flag @@ -468,12 +468,12 @@ async function updateMicroserviceEndPoint (microserviceUuid, microserviceData, u // Validate image type let images = [] if (microserviceDataUpdate.catalogItemId) { - const catalogItem = await CatalogService.getCatalogItem(microserviceDataUpdate.catalogItemId, user, isCLI, transaction) + const catalogItem = await CatalogService.getCatalogItem(microserviceDataUpdate.catalogItemId, isCLI, transaction) images = catalogItem.images } else if (microserviceDataUpdate.images) { images = microserviceDataUpdate.images } else if (microservice.catalogItemId) { - const catalogItem = await CatalogService.getCatalogItem(microservice.catalogItemId, user, isCLI, transaction) + const catalogItem = await CatalogService.getCatalogItem(microservice.catalogItemId, isCLI, transaction) images = catalogItem.images } else { images = await microservice.getImages() @@ -493,7 +493,7 @@ async function updateMicroserviceEndPoint (microserviceUuid, microserviceData, u const updatedMicroservice = await MicroserviceManager.updateAndFind(query, microserviceDataUpdate, transaction) if (extraHosts) { - await _updateExtraHosts(extraHosts, microserviceUuid, user, transaction) + await _updateExtraHosts(extraHosts, microserviceUuid, transaction) } // Update extra hosts that reference this microservice @@ -512,7 +512,7 @@ async function updateMicroserviceEndPoint (microserviceUuid, microserviceData, u } if (microserviceDataUpdate.iofogUuid && microserviceDataUpdate.iofogUuid !== microservice.iofogUuid) { - await MicroservicePortService.movePublicPortsToNewFog(updatedMicroservice, user, transaction) + await MicroservicePortService.movePublicPortsToNewFog(updatedMicroservice, transaction) } if (needStatusReset) { @@ -561,7 +561,7 @@ const _checkIfMicroserviceImagesAreEqual = (microserviceDataUpdateImages, catalo return isEqual(newMicroserviceImages, oldMicroservicesImages) } -async function deleteMicroserviceEndPoint (microserviceUuid, microserviceData, user, isCLI, transaction) { +async function deleteMicroserviceEndPoint (microserviceUuid, microserviceData, isCLI, transaction) { const where = isCLI ? { uuid: microserviceUuid @@ -594,7 +594,7 @@ async function deleteNotRunningMicroservices (fog, transaction) { .forEach(async (microservice) => { await deleteMicroserviceWithRoutesAndPortMappings(microservice, transaction) }) } -async function createRouteEndPoint (sourceMicroserviceUuid, destMicroserviceUuid, user, isCLI, transaction) { +async function createRouteEndPoint (sourceMicroserviceUuid, destMicroserviceUuid, isCLI, transaction) { // Print deprecated warning const sourceMsvc = await MicroserviceManager.findOne({ uuid: sourceMicroserviceUuid }, transaction) if (!sourceMsvc) { @@ -610,10 +610,10 @@ async function createRouteEndPoint (sourceMicroserviceUuid, destMicroserviceUuid throw new Errors.NotFoundError(AppHelper.formatMessage(ErrorMessages.INVALID_FLOW_ID, sourceMsvc.applicationId)) } - return RoutingService.createRouting({ application: application.name, from: sourceMsvc.name, to: destMsvc.name, name: `r-${sourceMsvc.name}-${destMsvc.name}` }, user, isCLI, transaction) + return RoutingService.createRouting({ application: application.name, from: sourceMsvc.name, to: destMsvc.name, name: `r-${sourceMsvc.name}-${destMsvc.name}` }, isCLI, transaction) } -async function deleteRouteEndPoint (sourceMicroserviceUuid, destMicroserviceUuid, user, isCLI, transaction) { +async function deleteRouteEndPoint (sourceMicroserviceUuid, destMicroserviceUuid, isCLI, transaction) { // Print deprecated warning const route = await RoutingManager.findOnePopulated({ @@ -624,10 +624,10 @@ async function deleteRouteEndPoint (sourceMicroserviceUuid, destMicroserviceUuid throw new Errors.NotFoundError(AppHelper.formatMessage(ErrorMessages.ROUTE_NOT_FOUND)) } - return RoutingService.deleteRouting(route.application.name, route.name, user, isCLI, transaction) + return RoutingService.deleteRouting(route.application.name, route.name, isCLI, transaction) } -async function createPortMappingEndPoint (microserviceUuid, portMappingData, user, isCLI, transaction) { +async function createPortMappingEndPoint (microserviceUuid, portMappingData, isCLI, transaction) { await Validator.validate(portMappingData, Validator.schemas.portsCreate) const where = isCLI @@ -645,10 +645,10 @@ async function createPortMappingEndPoint (microserviceUuid, portMappingData, use } await MicroservicePortService.validatePortMapping(agent, portMappingData, {}, transaction) - return MicroservicePortService.createPortMapping(microservice, portMappingData, user, transaction) + return MicroservicePortService.createPortMapping(microservice, portMappingData, transaction) } -async function _createExtraHost (microservice, extraHostData, user, transaction) { +async function _createExtraHost (microservice, extraHostData, transaction) { const msExtraHostData = { ...extraHostData, microserviceUuid: microservice.uuid @@ -657,7 +657,7 @@ async function _createExtraHost (microservice, extraHostData, user, transaction) await MicroserviceExtraHostManager.create(msExtraHostData, transaction) } -async function _createEnv (microservice, envData, user, transaction) { +async function _createEnv (microservice, envData, transaction) { if (!microservice.iofogUuid) { throw new Errors.ValidationError(AppHelper.formatMessage(ErrorMessages.REQUIRED_FOG_NODE)) } @@ -672,7 +672,7 @@ async function _createEnv (microservice, envData, user, transaction) { await MicroservicePortService.switchOnUpdateFlagsForMicroservicesForPortMapping(microservice, false, transaction) } -async function _createArg (microservice, arg, user, transaction) { +async function _createArg (microservice, arg, transaction) { if (!microservice.iofogUuid) { throw new Errors.ValidationError(AppHelper.formatMessage(ErrorMessages.REQUIRED_FOG_NODE)) } @@ -686,12 +686,12 @@ async function _createArg (microservice, arg, user, transaction) { await MicroservicePortService.switchOnUpdateFlagsForMicroservicesForPortMapping(microservice, false, transaction) } -async function deletePortMappingEndPoint (microserviceUuid, internalPort, user, isCLI, transaction) { - return MicroservicePortService.deletePortMapping(microserviceUuid, internalPort, user, isCLI, transaction) +async function deletePortMappingEndPoint (microserviceUuid, internalPort, isCLI, transaction) { + return MicroservicePortService.deletePortMapping(microserviceUuid, internalPort, isCLI, transaction) } -async function listPortMappingsEndPoint (microserviceUuid, user, isCLI, transaction) { - return MicroservicePortService.listPortMappings(microserviceUuid, user, isCLI, transaction) +async function listPortMappingsEndPoint (microserviceUuid, isCLI, transaction) { + return MicroservicePortService.listPortMappings(microserviceUuid, isCLI, transaction) } async function getReceiverMicroservices (microservice, transaction) { @@ -706,7 +706,7 @@ async function isMicroserviceConsumer (microservice, transaction) { return !!(routes && routes.length > 0) } -async function createVolumeMappingEndPoint (microserviceUuid, volumeMappingData, user, isCLI, transaction) { +async function createVolumeMappingEndPoint (microserviceUuid, volumeMappingData, isCLI, transaction) { await Validator.validate(volumeMappingData, Validator.schemas.volumeMappings) const where = isCLI @@ -743,7 +743,7 @@ async function createVolumeMappingEndPoint (microserviceUuid, volumeMappingData, return VolumeMappingManager.create(volumeMappingObj, transaction) } -async function deleteVolumeMappingEndPoint (microserviceUuid, volumeMappingUuid, user, isCLI, transaction) { +async function deleteVolumeMappingEndPoint (microserviceUuid, volumeMappingUuid, isCLI, transaction) { const where = isCLI ? { uuid: microserviceUuid } : { uuid: microserviceUuid } @@ -764,7 +764,7 @@ async function deleteVolumeMappingEndPoint (microserviceUuid, volumeMappingUuid, } } -async function listVolumeMappingsEndPoint (microserviceUuid, user, isCLI, transaction) { +async function listVolumeMappingsEndPoint (microserviceUuid, isCLI, transaction) { const where = isCLI ? { uuid: microserviceUuid } : { uuid: microserviceUuid } @@ -789,7 +789,7 @@ function _validateMicroserviceConfig (config) { return result } -async function _createMicroservice (microserviceData, user, isCLI, transaction) { +async function _createMicroservice (microserviceData, isCLI, transaction) { const config = _validateMicroserviceConfig(microserviceData.config) let newMicroservice = { @@ -813,7 +813,7 @@ async function _createMicroservice (microserviceData, user, isCLI, transaction) } // validate application - const application = await _validateApplication(microserviceData.application, user, isCLI, transaction) + const application = await _validateApplication(microserviceData.application, isCLI, transaction) newMicroservice.applicationId = application.id await _checkForDuplicateName(newMicroservice.name, {}, newMicroservice.applicationId, transaction) @@ -829,7 +829,7 @@ async function _createMicroservice (microserviceData, user, isCLI, transaction) return MicroserviceManager.create(newMicroservice, transaction) } -async function _validateApplication (name, user, isCLI, transaction) { +async function _validateApplication (name, isCLI, transaction) { if (!name) { return null } @@ -916,12 +916,12 @@ async function _deleteImages (microserviceUuid, transaction) { }, transaction) } -async function _updateExtraHosts (extraHosts, microserviceUuid, user, transaction) { +async function _updateExtraHosts (extraHosts, microserviceUuid, transaction) { await MicroserviceExtraHostManager.delete({ microserviceUuid: microserviceUuid }, transaction) for (const extraHost of extraHosts) { - await _createExtraHost({ uuid: microserviceUuid }, extraHost, user, transaction) + await _createExtraHost({ uuid: microserviceUuid }, extraHost, transaction) } } @@ -954,10 +954,10 @@ async function _updateArg (arg, microserviceUuid, transaction) { } } -async function _updatePorts (newPortMappings, microservice, user, transaction) { - await MicroservicePortService.deletePortMappings(microservice, user, transaction) +async function _updatePorts (newPortMappings, microservice, transaction) { + await MicroservicePortService.deletePortMappings(microservice, transaction) for (const portMapping of newPortMappings) { - await createPortMappingEndPoint(microservice.uuid, portMapping, user, false, transaction) + await createPortMappingEndPoint(microservice.uuid, portMapping, false, transaction) } } @@ -1080,8 +1080,8 @@ async function _buildGetMicroserviceResponse (microservice, transaction) { return res } -function listAllPublicPortsEndPoint (user, transaction) { - return MicroservicePortService.listAllPublicPorts(user, transaction) +function listAllPublicPortsEndPoint (transaction) { + return MicroservicePortService.listAllPublicPorts(transaction) } module.exports = { diff --git a/src/services/registry-service.js b/src/services/registry-service.js index b5220cb99..de0a8eade 100644 --- a/src/services/registry-service.js +++ b/src/services/registry-service.js @@ -22,7 +22,7 @@ const Sequelize = require('sequelize') const Op = Sequelize.Op const AppHelper = require('../helpers/app-helper') -const createRegistry = async function (registry, user, transaction) { +const createRegistry = async function (registry, transaction) { await Validator.validate(registry, Validator.schemas.registryCreate) if (registry.requiresCert && registry.certificate === undefined) { throw new Errors.ValidationError(ErrorMessages.CERT_PROPERTY_REQUIRED) @@ -42,14 +42,14 @@ const createRegistry = async function (registry, user, transaction) { const createdRegistry = await RegistryManager.create(registryCreate, transaction) - await _updateChangeTracking(user, transaction) + await _updateChangeTracking(transaction) return { id: createdRegistry.id } } -const findRegistries = async function (user, isCLI, transaction) { +const findRegistries = async function (isCLI, transaction) { const queryRegistry = isCLI ? {} : { @@ -67,7 +67,7 @@ const findRegistries = async function (user, isCLI, transaction) { } } -const deleteRegistry = async function (registryData, user, isCLI, transaction) { +const deleteRegistry = async function (registryData, isCLI, transaction) { await Validator.validate(registryData, Validator.schemas.registryDelete) const queryData = isCLI ? { id: registryData.id } @@ -77,10 +77,10 @@ const deleteRegistry = async function (registryData, user, isCLI, transaction) { throw new Errors.NotFoundError(AppHelper.formatMessage(ErrorMessages.INVALID_REGISTRY_ID, registryData.id)) } await RegistryManager.delete(queryData, transaction) - await _updateChangeTracking(user, transaction) + await _updateChangeTracking(transaction) } -const updateRegistry = async function (registry, registryId, user, isCLI, transaction) { +const updateRegistry = async function (registry, registryId, isCLI, transaction) { await Validator.validate(registry, Validator.schemas.registryUpdate) if (registry.requiresCert && registry.certificate === undefined) { @@ -117,10 +117,10 @@ const updateRegistry = async function (registry, registryId, user, isCLI, transa await RegistryManager.update(where, registryUpdate, transaction) - await _updateChangeTracking(user, transaction) + await _updateChangeTracking(transaction) } -const _updateChangeTracking = async function (user, transaction) { +const _updateChangeTracking = async function (transaction) { const fogs = await FogManager.findAll(transaction) for (const fog of fogs) { await ChangeTrackingService.update(fog.uuid, ChangeTrackingService.events.registries, transaction) diff --git a/src/services/routing-service.js b/src/services/routing-service.js index b3737ba90..f6cb1fdc4 100644 --- a/src/services/routing-service.js +++ b/src/services/routing-service.js @@ -21,7 +21,7 @@ const RoutingManager = require('../data/managers/routing-manager') const TransactionDecorator = require('../decorators/transaction-decorator') const Validator = require('../schemas') -async function getRoutings (user, isCLI, transaction) { +async function getRoutings (isCLI, transaction) { const routes = await RoutingManager.findAllPopulated({}, transaction) return { routes: routes.map(r => ({ application: r.application.name, @@ -34,7 +34,7 @@ async function getRoutings (user, isCLI, transaction) { })) } } -async function getRouting (appName, name, user, isCLI, transaction) { +async function getRouting (appName, name, isCLI, transaction) { const application = await ApplicationManager.findOne({ name: appName }, transaction) if (!application) { throw new Errors.NotFoundError(AppHelper.formatMessage(ErrorMessages.INVALID_FLOW_NAME, appName)) @@ -54,7 +54,7 @@ async function getRouting (appName, name, user, isCLI, transaction) { } } -async function _validateRouteMsvc (routingData, user, isCLI, transaction) { +async function _validateRouteMsvc (routingData, isCLI, transaction) { // Retro compatibility logic if (routingData.sourceMicroserviceUuid) { const sourceWhere = { uuid: routingData.sourceMicroserviceUuid } @@ -91,15 +91,15 @@ async function _validateRouteMsvc (routingData, user, isCLI, transaction) { } } -async function createRouting (routingData, user, isCLI, transaction) { +async function createRouting (routingData, isCLI, transaction) { await Validator.validate(routingData, Validator.schemas.routingCreate) - const { sourceMicroservice, destMicroservice } = await _validateRouteMsvc(routingData, user, isCLI, transaction) + const { sourceMicroservice, destMicroservice } = await _validateRouteMsvc(routingData, isCLI, transaction) - return _createRoute(sourceMicroservice, destMicroservice, routingData, user, transaction) + return _createRoute(sourceMicroservice, destMicroservice, routingData, transaction) } -async function updateRouting (appName, routeName, routeData, user, isCLI, transaction) { +async function updateRouting (appName, routeName, routeData, isCLI, transaction) { await Validator.validate(routeData, Validator.schemas.routingUpdate) const application = await ApplicationManager.findOne({ name: appName }, transaction) if (!application) { @@ -111,7 +111,7 @@ async function updateRouting (appName, routeName, routeData, user, isCLI, transa throw new Errors.NotFoundError(AppHelper.formatMessage(ErrorMessages.INVALID_ROUTING_NAME, routeName)) } - const { sourceMicroservice, destMicroservice } = await _validateRouteMsvc({ ...routeData, application: oldRoute.application.name }, user, isCLI, transaction) + const { sourceMicroservice, destMicroservice } = await _validateRouteMsvc({ ...routeData, application: oldRoute.application.name }, isCLI, transaction) const updateRebuildMs = { rebuild: true @@ -143,7 +143,7 @@ async function updateRouting (appName, routeName, routeData, user, isCLI, transa await RoutingManager.update({ id: oldRoute.id }, updateRouteData, transaction) } -async function _createRoute (sourceMicroservice, destMicroservice, routeData, user, transaction) { +async function _createRoute (sourceMicroservice, destMicroservice, routeData, transaction) { if (!sourceMicroservice.iofogUuid || !destMicroservice.iofogUuid) { throw new Errors.ValidationError('fog not set') } @@ -162,7 +162,7 @@ async function _createRoute (sourceMicroservice, destMicroservice, routeData, us return _createSimpleRoute(sourceMicroservice, destMicroservice, routeData, transaction) } -async function deleteRouting (appName, name, user, isCLI, transaction) { +async function deleteRouting (appName, name, isCLI, transaction) { const application = await ApplicationManager.findOne({ name: appName }, transaction) if (!application) { throw new Errors.NotFoundError(AppHelper.formatMessage(ErrorMessages.INVALID_FLOW_NAME, appName)) diff --git a/src/services/tunnel-service.js b/src/services/tunnel-service.js index 680f7e5c3..14142af29 100644 --- a/src/services/tunnel-service.js +++ b/src/services/tunnel-service.js @@ -21,7 +21,7 @@ const ErrorMessages = require('../helpers/error-messages') const TransactionDecorator = require('../decorators/transaction-decorator') const ChangeTrackingService = require('./change-tracking-service') -const openTunnel = async function (tunnelData, user, isCli, transaction) { +const openTunnel = async function (tunnelData, isCli, transaction) { const iofog = await FogManager.findOne({ uuid: tunnelData.iofogUuid }, transaction) if (!iofog) { throw new Errors.NotFoundError(AppHelper.formatMessage(ErrorMessages.INVALID_IOFOG_UUID, tunnelData.iofogUuid)) @@ -47,7 +47,7 @@ const openTunnel = async function (tunnelData, user, isCli, transaction) { await ChangeTrackingService.update(tunnelData.iofogUuid, ChangeTrackingService.events.tunnel, transaction) } -const findTunnel = async function (tunnelData, user, transaction) { +const findTunnel = async function (tunnelData, transaction) { const tunnel = await TunnelManager.findOne(tunnelData, transaction) if (!tunnel) { throw new Errors.NotFoundError('Invalid Tunnel Id') @@ -68,8 +68,8 @@ const findAll = async function (transaction) { } } -const closeTunnel = async function (tunnelData, user, transaction) { - await module.exports.findTunnel(tunnelData, user, transaction) +const closeTunnel = async function (tunnelData, transaction) { + await module.exports.findTunnel(tunnelData, transaction) await TunnelManager.update(tunnelData, { closed: true }, transaction) await ChangeTrackingService.update(tunnelData.iofogUuid, ChangeTrackingService.events.tunnel, transaction) } From ef5771fcfc02e9e328f7244c84075579e95b0741 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Thu, 28 Mar 2024 14:04:09 +0300 Subject: [PATCH 074/146] Revert "user removed from endpoint's controller and service" This reverts commit e0fa248e8902409dbbe4735ae8722b3fa4942315. --- src/controllers/application-controller.js | 48 ++++---- .../application-template-controller.js | 36 +++--- src/controllers/catalog-controller.js | 20 ++-- src/controllers/config-controller.js | 6 +- src/controllers/diagnostic-controller.js | 20 ++-- src/controllers/edge-resource-controller.js | 32 +++--- src/controllers/iofog-controller.js | 44 ++++---- src/controllers/microservices-controller.js | 68 +++++------ src/controllers/registry-controller.js | 16 +-- src/controllers/routing-controller.js | 20 ++-- src/controllers/tunnel-controller.js | 10 +- src/services/application-service.js | 44 ++++---- src/services/application-template-service.js | 28 ++--- src/services/catalog-service.js | 18 +-- src/services/diagnostic-service.js | 12 +- src/services/edge-resource-service.js | 12 +- src/services/iofog-service.js | 42 +++---- src/services/microservice-ports/default.js | 42 +++---- src/services/microservice-ports/proxy.js | 10 +- src/services/microservices-service.js | 106 +++++++++--------- src/services/registry-service.js | 16 +-- src/services/routing-service.js | 20 ++-- src/services/tunnel-service.js | 8 +- 23 files changed, 341 insertions(+), 337 deletions(-) diff --git a/src/controllers/application-controller.js b/src/controllers/application-controller.js index 15676b7da..da06cfe8b 100644 --- a/src/controllers/application-controller.js +++ b/src/controllers/application-controller.js @@ -17,85 +17,85 @@ const errors = require('../helpers/errors') const ErrorMessages = require('../helpers/error-messages') const { rvaluesVarSubstition } = require('../helpers/template-helper') -const createApplicationEndPoint = async function (req) { +const createApplicationEndPoint = async function (req, user) { const application = req.body - return ApplicationService.createApplicationEndPoint(application, false) + return ApplicationService.createApplicationEndPoint(application, user, false) } -const createApplicationYAMLEndPoint = async function (req) { +const createApplicationYAMLEndPoint = async function (req, user) { if (!req.file) { throw new errors.ValidationError(ErrorMessages.APPLICATION_FILE_NOT_FOUND) } const fileContent = req.file.buffer.toString() const application = await YAMLParserService.parseAppFile(fileContent) - await rvaluesVarSubstition(application, { self: application }) + await rvaluesVarSubstition(application, { self: application }, user) - return ApplicationService.createApplicationEndPoint(application, false) + return ApplicationService.createApplicationEndPoint(application, user, false) } -const getApplicationsByUserEndPoint = async function (req) { - return ApplicationService.getUserApplicationsEndPoint(false) +const getApplicationsByUserEndPoint = async function (req, user) { + return ApplicationService.getUserApplicationsEndPoint(user, false) } -const getApplicationEndPoint = async function (req) { +const getApplicationEndPoint = async function (req, user) { const name = req.params.name - const application = await ApplicationService.getApplicationEndPoint({ name }, false) + const application = await ApplicationService.getApplicationEndPoint({ name }, user, false) return application } -const patchApplicationEndPoint = async function (req) { +const patchApplicationEndPoint = async function (req, user) { const application = req.body const name = req.params.name - return ApplicationService.patchApplicationEndPoint(application, { name }, false) + return ApplicationService.patchApplicationEndPoint(application, { name }, user, false) } -const updateApplicationEndPoint = async function (req) { +const updateApplicationEndPoint = async function (req, user) { const application = req.body const name = req.params.name - return ApplicationService.updateApplicationEndPoint(application, name, false) + return ApplicationService.updateApplicationEndPoint(application, name, user, false) } -const updateApplicationYAMLEndPoint = async function (req) { +const updateApplicationYAMLEndPoint = async function (req, user) { if (!req.file) { throw new errors.ValidationError(ErrorMessages.APPLICATION_FILE_NOT_FOUND) } const name = req.params.name const fileContent = req.file.buffer.toString() const application = await YAMLParserService.parseAppFile(fileContent) - await rvaluesVarSubstition(application, { self: application }) + await rvaluesVarSubstition(application, { self: application }, user) - return ApplicationService.updateApplicationEndPoint(application, name, false) + return ApplicationService.updateApplicationEndPoint(application, name, user, false) } -const deleteApplicationEndPoint = async function (req) { +const deleteApplicationEndPoint = async function (req, user) { const name = req.params.name - return ApplicationService.deleteApplicationEndPoint({ name }, false) + return ApplicationService.deleteApplicationEndPoint({ name }, user, false) } // Legacy -const deleteApplicationByIdEndPoint = async function (req) { +const deleteApplicationByIdEndPoint = async function (req, user) { const id = req.params.id - return ApplicationService.deleteApplicationEndPoint({ id }, false) + return ApplicationService.deleteApplicationEndPoint({ id }, user, false) } -const patchApplicationByIdEndPoint = async function (req) { +const patchApplicationByIdEndPoint = async function (req, user) { const application = req.body const id = req.params.id - return ApplicationService.patchApplicationEndPoint(application, { id }, false) + return ApplicationService.patchApplicationEndPoint(application, { id }, user, false) } -const getApplicationByIdEndPoint = async function (req) { +const getApplicationByIdEndPoint = async function (req, user) { const id = req.params.id - const application = await ApplicationService.getApplicationEndPoint({ id }, false) + const application = await ApplicationService.getApplicationEndPoint({ id }, user, false) return application } diff --git a/src/controllers/application-template-controller.js b/src/controllers/application-template-controller.js index 61f281112..7a9e85d0a 100644 --- a/src/controllers/application-template-controller.js +++ b/src/controllers/application-template-controller.js @@ -17,63 +17,63 @@ const errors = require('../helpers/errors') const ErrorMessages = require('../helpers/error-messages') const { rvaluesVarSubstition } = require('../helpers/template-helper') -const createApplicationTemplateEndPoint = async function (req) { +const createApplicationTemplateEndPoint = async function (req, user) { const application = req.body - return ApplicationTemplateService.createApplicationTemplateEndPoint(application, false) + return ApplicationTemplateService.createApplicationTemplateEndPoint(application, user, false) } -const createApplicationTemplateYAMLEndPoint = async function (req) { +const createApplicationTemplateYAMLEndPoint = async function (req, user) { if (!req.file) { throw new errors.ValidationError(ErrorMessages.APPLICATION_FILE_NOT_FOUND) } const fileContent = req.file.buffer.toString() const application = await YAMLParserService.parseAppTemplateFile(fileContent) - await rvaluesVarSubstition(application.variables, { self: application.variables }) + await rvaluesVarSubstition(application.variables, { self: application.variables }, user) - return ApplicationTemplateService.createApplicationTemplateEndPoint(application, false) + return ApplicationTemplateService.createApplicationTemplateEndPoint(application, user, false) } -const getApplicationTemplatesByUserEndPoint = async function (req) { - return ApplicationTemplateService.getUserApplicationTemplatesEndPoint(false) +const getApplicationTemplatesByUserEndPoint = async function (req, user) { + return ApplicationTemplateService.getUserApplicationTemplatesEndPoint(user, false) } -const getApplicationTemplateEndPoint = async function (req) { +const getApplicationTemplateEndPoint = async function (req, user) { const name = req.params.name - return ApplicationTemplateService.getApplicationTemplateEndPoint({ name }, false) + return ApplicationTemplateService.getApplicationTemplateEndPoint({ name }, user, false) } -const patchApplicationTemplateEndPoint = async function (req) { +const patchApplicationTemplateEndPoint = async function (req, user) { const application = req.body const name = req.params.name - return ApplicationTemplateService.patchApplicationTemplateEndPoint(application, { name }, false) + return ApplicationTemplateService.patchApplicationTemplateEndPoint(application, { name }, user, false) } -const updateApplicationTemplateEndPoint = async function (req) { +const updateApplicationTemplateEndPoint = async function (req, user) { const application = req.body const name = req.params.name - return ApplicationTemplateService.updateApplicationTemplateEndPoint(application, name, false) + return ApplicationTemplateService.updateApplicationTemplateEndPoint(application, name, user, false) } -const updateApplicationTemplateYAMLEndPoint = async function (req) { +const updateApplicationTemplateYAMLEndPoint = async function (req, user) { if (!req.file) { throw new errors.ValidationError(ErrorMessages.APPLICATION_FILE_NOT_FOUND) } const name = req.params.name const fileContent = req.file.buffer.toString() const application = await YAMLParserService.parseAppTemplateFile(fileContent) - await rvaluesVarSubstition(application.variables, { self: application.variables }) + await rvaluesVarSubstition(application.variables, { self: application.variables }, user) - return ApplicationTemplateService.updateApplicationTemplateEndPoint(application, name, false) + return ApplicationTemplateService.updateApplicationTemplateEndPoint(application, name, user, false) } -const deleteApplicationTemplateEndPoint = async function (req) { +const deleteApplicationTemplateEndPoint = async function (req, user) { const name = req.params.name - return ApplicationTemplateService.deleteApplicationTemplateEndPoint({ name }, false) + return ApplicationTemplateService.deleteApplicationTemplateEndPoint({ name }, user, false) } module.exports = { diff --git a/src/controllers/catalog-controller.js b/src/controllers/catalog-controller.js index dcd35cd57..afed875af 100644 --- a/src/controllers/catalog-controller.js +++ b/src/controllers/catalog-controller.js @@ -13,24 +13,24 @@ const CatalogService = require('../services/catalog-service') -const createCatalogItemEndPoint = async function (req) { - return CatalogService.createCatalogItemEndPoint(req.body) +const createCatalogItemEndPoint = async function (req, user) { + return CatalogService.createCatalogItemEndPoint(req.body, user) } -const listCatalogItemsEndPoint = async function (req) { - return CatalogService.listCatalogItemsEndPoint(false) +const listCatalogItemsEndPoint = async function (req, user) { + return CatalogService.listCatalogItemsEndPoint(user, false) } -const listCatalogItemEndPoint = async function (req) { - return CatalogService.getCatalogItemEndPoint(req.params.id, false) +const listCatalogItemEndPoint = async function (req, user) { + return CatalogService.getCatalogItemEndPoint(req.params.id, user, false) } -const deleteCatalogItemEndPoint = async function (req) { - await CatalogService.deleteCatalogItemEndPoint(req.params.id, false) +const deleteCatalogItemEndPoint = async function (req, user) { + await CatalogService.deleteCatalogItemEndPoint(req.params.id, user, false) } -const updateCatalogItemEndPoint = async function (req) { - await CatalogService.updateCatalogItemEndPoint(req.params.id, req.body, false) +const updateCatalogItemEndPoint = async function (req, user) { + await CatalogService.updateCatalogItemEndPoint(req.params.id, req.body, user, false) } module.exports = { diff --git a/src/controllers/config-controller.js b/src/controllers/config-controller.js index 2b5efd729..0b57a14fc 100644 --- a/src/controllers/config-controller.js +++ b/src/controllers/config-controller.js @@ -13,16 +13,16 @@ const ConfigService = require('../services/config-service') -const upsertConfigElementEndpoint = async function (req) { +const upsertConfigElementEndpoint = async function (req, user) { const configData = req.body return ConfigService.upsertConfigElement(configData) } -const listConfigEndpoint = async function () { +const listConfigEndpoint = async function (user) { return ConfigService.listConfig() } -const getConfigEndpoint = async function (req) { +const getConfigEndpoint = async function (req, user) { const key = req.params.key return ConfigService.getConfigElement(key) } diff --git a/src/controllers/diagnostic-controller.js b/src/controllers/diagnostic-controller.js index 35d053beb..640ae6642 100644 --- a/src/controllers/diagnostic-controller.js +++ b/src/controllers/diagnostic-controller.js @@ -13,24 +13,24 @@ const DiagnosticService = require('../services/diagnostic-service') -const changeMicroserviceStraceStateEndPoint = async function (req) { - return DiagnosticService.changeMicroserviceStraceState(req.params.uuid, req.body, false) +const changeMicroserviceStraceStateEndPoint = async function (req, user) { + return DiagnosticService.changeMicroserviceStraceState(req.params.uuid, req.body, user, false) } -const getMicroserviceStraceDataEndPoint = async function (req) { - return DiagnosticService.getMicroserviceStraceData(req.params.uuid, req.query, false) +const getMicroserviceStraceDataEndPoint = async function (req, user) { + return DiagnosticService.getMicroserviceStraceData(req.params.uuid, req.query, user, false) } -const postMicroserviceStraceDataToFtpEndPoint = async function (req) { - return DiagnosticService.postMicroserviceStraceDatatoFtp(req.params.uuid, req.body, false) +const postMicroserviceStraceDataToFtpEndPoint = async function (req, user) { + return DiagnosticService.postMicroserviceStraceDatatoFtp(req.params.uuid, req.body, user, false) } -const createMicroserviceImageSnapshotEndPoint = async function (req) { - return DiagnosticService.postMicroserviceImageSnapshotCreate(req.params.uuid, false) +const createMicroserviceImageSnapshotEndPoint = async function (req, user) { + return DiagnosticService.postMicroserviceImageSnapshotCreate(req.params.uuid, user, false) } -const getMicroserviceImageSnapshotEndPoint = async function (req) { - return DiagnosticService.getMicroserviceImageSnapshot(req.params.uuid, false) +const getMicroserviceImageSnapshotEndPoint = async function (req, user) { + return DiagnosticService.getMicroserviceImageSnapshot(req.params.uuid, user, false) } module.exports = { diff --git a/src/controllers/edge-resource-controller.js b/src/controllers/edge-resource-controller.js index e4ec39658..f6ca86473 100644 --- a/src/controllers/edge-resource-controller.js +++ b/src/controllers/edge-resource-controller.js @@ -13,24 +13,24 @@ const EdgeResourceService = require('../services/edge-resource-service') -const createEdgeResourceEndpoint = async function (req) { +const createEdgeResourceEndpoint = async function (req, user) { const edgeResourceData = req.body - return EdgeResourceService.createEdgeResource(edgeResourceData) + return EdgeResourceService.createEdgeResource(edgeResourceData, user) } -const updateEdgeResourceEndpoint = async function (req) { +const updateEdgeResourceEndpoint = async function (req, user) { const edgeResourceData = req.body const { version, name } = req.params - return EdgeResourceService.updateEdgeResourceEndpoint(edgeResourceData, { name, version }) + return EdgeResourceService.updateEdgeResourceEndpoint(edgeResourceData, { name, version }, user) } -const listEdgeResourcesEndpoint = async function (req) { - return { edgeResources: await EdgeResourceService.listEdgeResources() } +const listEdgeResourcesEndpoint = async function (req, user) { + return { edgeResources: await EdgeResourceService.listEdgeResources(user) } } -const getEdgeResourceEndpoint = async function (req) { +const getEdgeResourceEndpoint = async function (req, user) { const { version, name } = req.params - const result = await EdgeResourceService.getEdgeResource({ name, version }) + const result = await EdgeResourceService.getEdgeResource({ name, version }, user) if (version) { return result } else { @@ -38,27 +38,27 @@ const getEdgeResourceEndpoint = async function (req) { } } -const getEdgeResourceAllVersionsEndpoint = async function (req) { +const getEdgeResourceAllVersionsEndpoint = async function (req, user) { const { name } = req.params - const result = await EdgeResourceService.getEdgeResource({ name }) + const result = await EdgeResourceService.getEdgeResource({ name }, user) return { edgeResources: result } } -const deleteEdgeResourceEndpoint = async function (req) { +const deleteEdgeResourceEndpoint = async function (req, user) { const { version, name } = req.params - return EdgeResourceService.deleteEdgeResource({ name, version }) + return EdgeResourceService.deleteEdgeResource({ name, version }, user) } -const linkEdgeResourceEndpoint = async function (req) { +const linkEdgeResourceEndpoint = async function (req, user) { const { name, version } = req.params const { uuid } = req.body - return EdgeResourceService.linkEdgeResource({ name, version }, uuid) + return EdgeResourceService.linkEdgeResource({ name, version }, uuid, user) } -const unlinkEdgeResourceEndpoint = async function (req) { +const unlinkEdgeResourceEndpoint = async function (req, user) { const { name, version } = req.params const { uuid } = req.body - return EdgeResourceService.unlinkEdgeResource({ name, version }, uuid) + return EdgeResourceService.unlinkEdgeResource({ name, version }, uuid, user) } module.exports = { diff --git a/src/controllers/iofog-controller.js b/src/controllers/iofog-controller.js index 3d2f86ccb..2a6c793c7 100644 --- a/src/controllers/iofog-controller.js +++ b/src/controllers/iofog-controller.js @@ -14,83 +14,83 @@ const FogService = require('../services/iofog-service') const qs = require('qs') -async function createFogEndPoint (req) { +async function createFogEndPoint (req, user) { const newFog = req.body - return FogService.createFogEndPoint(newFog, false) + return FogService.createFogEndPoint(newFog, user, false) } -async function updateFogEndPoint (req) { +async function updateFogEndPoint (req, user) { const updateFog = req.body updateFog.uuid = req.params.uuid - return FogService.updateFogEndPoint(updateFog, false) + return FogService.updateFogEndPoint(updateFog, user, false) } -async function deleteFogEndPoint (req) { +async function deleteFogEndPoint (req, user) { const deleteFog = { uuid: req.params.uuid } - return FogService.deleteFogEndPoint(deleteFog, false) + return FogService.deleteFogEndPoint(deleteFog, user, false) } -async function getFogEndPoint (req) { +async function getFogEndPoint (req, user) { const getFog = { uuid: req.params.uuid } - return FogService.getFogEndPoint(getFog, false) + return FogService.getFogEndPoint(getFog, user, false) } -async function getFogListEndPoint (req) { +async function getFogListEndPoint (req, user) { const isSystem = req.query && req.query.system ? req.query.system === 'true' : false const query = qs.parse(req.query) - return FogService.getFogListEndPoint(query.filters, false, isSystem) + return FogService.getFogListEndPoint(query.filters, user, false, isSystem) } -async function generateProvisionKeyEndPoint (req) { +async function generateProvisionKeyEndPoint (req, user) { const fog = { uuid: req.params.uuid } - return FogService.generateProvisioningKeyEndPoint(fog, false) + return FogService.generateProvisioningKeyEndPoint(fog, user, false) } -async function setFogVersionCommandEndPoint (req) { +async function setFogVersionCommandEndPoint (req, user) { const fogVersionCommand = { uuid: req.params.uuid, versionCommand: req.params.versionCommand } - return FogService.setFogVersionCommandEndPoint(fogVersionCommand, false) + return FogService.setFogVersionCommandEndPoint(fogVersionCommand, user, false) } -async function setFogRebootCommandEndPoint (req) { +async function setFogRebootCommandEndPoint (req, user) { const fog = { uuid: req.params.uuid } - return FogService.setFogRebootCommandEndPoint(fog, false) + return FogService.setFogRebootCommandEndPoint(fog, user, false) } -async function getHalHardwareInfoEndPoint (req) { +async function getHalHardwareInfoEndPoint (req, user) { const uuidObj = { uuid: req.params.uuid } - return FogService.getHalHardwareInfoEndPoint(uuidObj, false) + return FogService.getHalHardwareInfoEndPoint(uuidObj, user, false) } -async function getHalUsbInfoEndPoint (req) { +async function getHalUsbInfoEndPoint (req, user) { const uuidObj = { uuid: req.params.uuid } - return FogService.getHalUsbInfoEndPoint(uuidObj, false) + return FogService.getHalUsbInfoEndPoint(uuidObj, user, false) } -async function setFogPruneCommandEndPoint (req) { +async function setFogPruneCommandEndPoint (req, user) { const fog = { uuid: req.params.uuid } - return FogService.setFogPruneCommandEndPoint(fog, false) + return FogService.setFogPruneCommandEndPoint(fog, user, false) } module.exports = { diff --git a/src/controllers/microservices-controller.js b/src/controllers/microservices-controller.js index 367c3003e..f2ff25531 100644 --- a/src/controllers/microservices-controller.js +++ b/src/controllers/microservices-controller.js @@ -15,108 +15,108 @@ const MicroservicesService = require('../services/microservices-service') const YAMLParserService = require('../services/yaml-parser-service') const { rvaluesVarSubstition } = require('../helpers/template-helper') -const createMicroserviceOnFogEndPoint = async function (req) { +const createMicroserviceOnFogEndPoint = async function (req, user) { const microservice = req.body - return MicroservicesService.createMicroserviceEndPoint(microservice, false) + return MicroservicesService.createMicroserviceEndPoint(microservice, user, false) } -const createMicroserviceYAMLEndPoint = async function (req) { +const createMicroserviceYAMLEndPoint = async function (req, user) { const fileContent = req.file.buffer.toString() const microservice = await YAMLParserService.parseMicroserviceFile(fileContent) - await rvaluesVarSubstition(microservice, { self: microservice }) - return MicroservicesService.createMicroserviceEndPoint(microservice, false) + await rvaluesVarSubstition(microservice, { self: microservice }, user) + return MicroservicesService.createMicroserviceEndPoint(microservice, user, false) } -const getMicroserviceEndPoint = async function (req) { +const getMicroserviceEndPoint = async function (req, user) { const microserviceUuid = req.params.uuid - return MicroservicesService.getMicroserviceEndPoint(microserviceUuid, false) + return MicroservicesService.getMicroserviceEndPoint(microserviceUuid, user, false) } -const updateMicroserviceEndPoint = async function (req) { +const updateMicroserviceEndPoint = async function (req, user) { const microservice = req.body const microserviceUuid = req.params.uuid - return MicroservicesService.updateMicroserviceEndPoint(microserviceUuid, microservice, false) + return MicroservicesService.updateMicroserviceEndPoint(microserviceUuid, microservice, user, false) } -const updateMicroserviceYAMLEndPoint = async function (req) { +const updateMicroserviceYAMLEndPoint = async function (req, user) { const microserviceUuid = req.params.uuid const fileContent = req.file.buffer.toString() const microservice = await YAMLParserService.parseMicroserviceFile(fileContent) - await rvaluesVarSubstition(microservice, { self: microservice }) - return MicroservicesService.updateMicroserviceEndPoint(microserviceUuid, microservice, false) + await rvaluesVarSubstition(microservice, { self: microservice }, user) + return MicroservicesService.updateMicroserviceEndPoint(microserviceUuid, microservice, user, false) } -const deleteMicroserviceEndPoint = async function (req) { +const deleteMicroserviceEndPoint = async function (req, user) { const microserviceUuid = req.params.uuid const microserviceData = req.body || {} - return MicroservicesService.deleteMicroserviceEndPoint(microserviceUuid, microserviceData, false) + return MicroservicesService.deleteMicroserviceEndPoint(microserviceUuid, microserviceData, user, false) } -const getMicroservicesByApplicationEndPoint = async function (req) { +const getMicroservicesByApplicationEndPoint = async function (req, user) { // API Retro compatibility const flowId = req.query.flowId const applicationName = req.query.application - return MicroservicesService.listMicroservicesEndPoint({ applicationName, flowId }, false) + return MicroservicesService.listMicroservicesEndPoint({ applicationName, flowId }, user, false) } -const createMicroserviceRouteEndPoint = async function (req) { +const createMicroserviceRouteEndPoint = async function (req, user) { const sourceUuid = req.params.uuid const destUuid = req.params.receiverUuid - return MicroservicesService.createRouteEndPoint(sourceUuid, destUuid, false) + return MicroservicesService.createRouteEndPoint(sourceUuid, destUuid, user, false) } -const deleteMicroserviceRouteEndPoint = async function (req) { +const deleteMicroserviceRouteEndPoint = async function (req, user) { const sourceUuid = req.params.uuid const destUuid = req.params.receiverUuid - return MicroservicesService.deleteRouteEndPoint(sourceUuid, destUuid, false) + return MicroservicesService.deleteRouteEndPoint(sourceUuid, destUuid, user, false) } -const createMicroservicePortMappingEndPoint = async function (req) { +const createMicroservicePortMappingEndPoint = async function (req, user) { const uuid = req.params.uuid const portMappingData = req.body - return MicroservicesService.createPortMappingEndPoint(uuid, portMappingData, false) + return MicroservicesService.createPortMappingEndPoint(uuid, portMappingData, user, false) } -const deleteMicroservicePortMappingEndPoint = async function (req) { +const deleteMicroservicePortMappingEndPoint = async function (req, user) { const uuid = req.params.uuid const internalPort = req.params.internalPort - return MicroservicesService.deletePortMappingEndPoint(uuid, internalPort, false) + return MicroservicesService.deletePortMappingEndPoint(uuid, internalPort, user, false) } -const listMicroservicePortMappingsEndPoint = async function (req) { +const listMicroservicePortMappingsEndPoint = async function (req, user) { const uuid = req.params.uuid - const ports = await MicroservicesService.listMicroservicePortMappingsEndPoint(uuid, false) + const ports = await MicroservicesService.listMicroservicePortMappingsEndPoint(uuid, user, false) return { ports: ports } } -const createMicroserviceVolumeMappingEndPoint = async function (req) { +const createMicroserviceVolumeMappingEndPoint = async function (req, user) { const microserviceUuid = req.params.uuid const volumeMappingData = req.body - const volumeMapping = await MicroservicesService.createVolumeMappingEndPoint(microserviceUuid, volumeMappingData, false) + const volumeMapping = await MicroservicesService.createVolumeMappingEndPoint(microserviceUuid, volumeMappingData, user, false) return { id: volumeMapping.id } } -const listMicroserviceVolumeMappingsEndPoint = async function (req) { +const listMicroserviceVolumeMappingsEndPoint = async function (req, user) { const uuid = req.params.uuid - const volumeMappings = await MicroservicesService.listVolumeMappingsEndPoint(uuid, false) + const volumeMappings = await MicroservicesService.listVolumeMappingsEndPoint(uuid, user, false) return { volumeMappings: volumeMappings } } -const deleteMicroserviceVolumeMappingEndPoint = async function (req) { +const deleteMicroserviceVolumeMappingEndPoint = async function (req, user) { const uuid = req.params.uuid const id = req.params.id - return MicroservicesService.deleteVolumeMappingEndPoint(uuid, id, false) + return MicroservicesService.deleteVolumeMappingEndPoint(uuid, id, user, false) } -const listAllPublicPortsEndPoint = async function (req) { - return MicroservicesService.listAllPublicPortsEndPoint() +const listAllPublicPortsEndPoint = async function (req, user) { + return MicroservicesService.listAllPublicPortsEndPoint(user) } module.exports = { diff --git a/src/controllers/registry-controller.js b/src/controllers/registry-controller.js index ab633cb0e..906db93cf 100644 --- a/src/controllers/registry-controller.js +++ b/src/controllers/registry-controller.js @@ -13,26 +13,26 @@ const RegistryService = require('../services/registry-service') -const createRegistryEndPoint = async function (req) { +const createRegistryEndPoint = async function (req, user) { const registry = req.body - return RegistryService.createRegistry(registry) + return RegistryService.createRegistry(registry, user) } -const getRegistriesEndPoint = async function (req) { - return RegistryService.findRegistries(false) +const getRegistriesEndPoint = async function (req, user) { + return RegistryService.findRegistries(user, false) } -const deleteRegistryEndPoint = async function (req) { +const deleteRegistryEndPoint = async function (req, user) { const deleteRegistry = { id: parseInt(req.params.id) } - return RegistryService.deleteRegistry(deleteRegistry, false) + return RegistryService.deleteRegistry(deleteRegistry, user, false) } -const updateRegistryEndPoint = async function (req) { +const updateRegistryEndPoint = async function (req, user) { const registry = req.body const registryId = req.params.id - return RegistryService.updateRegistry(registry, registryId, false) + return RegistryService.updateRegistry(registry, registryId, user, false) } module.exports = { diff --git a/src/controllers/routing-controller.js b/src/controllers/routing-controller.js index 8d6df8bc4..01b5f8ec8 100644 --- a/src/controllers/routing-controller.js +++ b/src/controllers/routing-controller.js @@ -13,32 +13,32 @@ const RoutingService = require('../services/routing-service') -const createRoutingEndpoint = async function (req) { +const createRoutingEndpoint = async function (req, user) { const routerData = req.body - return RoutingService.createRouting(routerData, false) + return RoutingService.createRouting(routerData, user, false) } -const getRoutingsEndPoint = async function (req) { - return RoutingService.getRoutings(false) +const getRoutingsEndPoint = async function (req, user) { + return RoutingService.getRoutings(user, false) } -const getRoutingEndPoint = async function (req) { +const getRoutingEndPoint = async function (req, user) { const routeName = req.params.name const appName = req.params.appName - return RoutingService.getRouting(appName, routeName, false) + return RoutingService.getRouting(appName, routeName, user, false) } -const updateRoutingEndpoint = async function (req) { +const updateRoutingEndpoint = async function (req, user) { const routeName = req.params.name const appName = req.params.appName const routeData = req.body - return RoutingService.updateRouting(appName, routeName, routeData, false) + return RoutingService.updateRouting(appName, routeName, routeData, user, false) } -const deleteRoutingEndpoint = async function (req) { +const deleteRoutingEndpoint = async function (req, user) { const routeName = req.params.name const appName = req.params.appName - return RoutingService.deleteRouting(appName, routeName, false) + return RoutingService.deleteRouting(appName, routeName, user, false) } module.exports = { diff --git a/src/controllers/tunnel-controller.js b/src/controllers/tunnel-controller.js index fb3ea34c9..7bc0ac9be 100644 --- a/src/controllers/tunnel-controller.js +++ b/src/controllers/tunnel-controller.js @@ -15,7 +15,7 @@ const TunnelService = require('../services/tunnel-service') const Errors = require('../helpers/errors') const ErrorMessages = require('../helpers/error-messages') -const manageTunnelEndPoint = async function (req) { +const manageTunnelEndPoint = async function (req, user) { const action = req.body.action const tunnelData = { iofogUuid: req.params.id @@ -23,21 +23,21 @@ const manageTunnelEndPoint = async function (req) { switch (action) { case 'open': - await TunnelService.openTunnel(tunnelData, false) + await TunnelService.openTunnel(tunnelData, user, false) break case 'close': - await TunnelService.closeTunnel(tunnelData) + await TunnelService.closeTunnel(tunnelData, user) break default: throw new Errors.ValidationError(ErrorMessages.INVALID_ACTION_PROPERTY) } } -const getTunnelEndPoint = async function (req) { +const getTunnelEndPoint = async function (req, user) { const tunnelData = { iofogUuid: req.params.id } - return TunnelService.findTunnel(tunnelData) + return TunnelService.findTunnel(tunnelData, user) } module.exports = { diff --git a/src/services/application-service.js b/src/services/application-service.js index c337b9ec2..a823588f4 100644 --- a/src/services/application-service.js +++ b/src/services/application-service.js @@ -28,11 +28,11 @@ const remove = require('lodash/remove') const onlyUnique = (value, index, self) => self.indexOf(value) === index -const createApplicationEndPoint = async function (applicationData, isCLI, transaction) { +const createApplicationEndPoint = async function (applicationData, user, isCLI, transaction) { // if template is provided, use template data if (applicationData.template && applicationData.template.name) { applicationData = { - ...await ApplicationTemplateService.getApplicationDataFromTemplate(applicationData.template, isCLI, transaction), + ...await ApplicationTemplateService.getApplicationDataFromTemplate(applicationData.template, user, isCLI, transaction), isSystem: applicationData.isSystem, name: applicationData.name, description: applicationData.description, @@ -72,13 +72,13 @@ const createApplicationEndPoint = async function (applicationData, isCLI, transa try { if (applicationData.microservices) { for (const msvcData of applicationData.microservices) { - await MicroserviceService.createMicroserviceEndPoint(msvcData, isCLI, transaction) + await MicroserviceService.createMicroserviceEndPoint(msvcData, user, isCLI, transaction) } } if (applicationData.routes) { for (const routeData of applicationData.routes) { - await RoutingService.createRouting(routeData, isCLI, transaction) + await RoutingService.createRouting(routeData, user, isCLI, transaction) } } @@ -88,12 +88,12 @@ const createApplicationEndPoint = async function (applicationData, isCLI, transa } } catch (e) { // If anything failed during creating the application, delete all that was created - await deleteApplicationEndPoint({ name: application.name }, isCLI, transaction) + await deleteApplicationEndPoint({ name: application.name }, user, isCLI, transaction) throw e } } -const deleteApplicationEndPoint = async function (conditions, isCLI, transaction) { +const deleteApplicationEndPoint = async function (conditions, user, isCLI, transaction) { const whereObj = { ...conditions } @@ -105,7 +105,7 @@ const deleteApplicationEndPoint = async function (conditions, isCLI, transaction } // Only patches the metadata (running, name, description, etc.) -const patchApplicationEndPoint = async function (applicationData, conditions, isCLI, transaction) { +const patchApplicationEndPoint = async function (applicationData, conditions, user, isCLI, transaction) { await Validator.validate(applicationData, Validator.schemas.applicationPatch) const oldApplication = await ApplicationManager.findOne({ ...conditions }, transaction) @@ -137,11 +137,11 @@ const patchApplicationEndPoint = async function (applicationData, conditions, is } // Updates the state (microservices, routes, etc.) -const updateApplicationEndPoint = async function (applicationData, name, isCLI, transaction) { +const updateApplicationEndPoint = async function (applicationData, name, user, isCLI, transaction) { // if template is provided, use template data if (applicationData.template && applicationData.template.name) { applicationData = { - ...await ApplicationTemplateService.getApplicationDataFromTemplate(applicationData.template, isCLI, transaction), + ...await ApplicationTemplateService.getApplicationDataFromTemplate(applicationData.template, user, isCLI, transaction), isSystem: applicationData.isSystem, name: applicationData.name || name, description: applicationData.description, @@ -188,10 +188,10 @@ const updateApplicationEndPoint = async function (applicationData, name, isCLI, await ApplicationManager.update(where, updateApplicationData, transaction) if (applicationData.microservices) { - await _updateMicroservices(application.name, applicationData.microservices, isCLI, transaction) + await _updateMicroservices(application.name, applicationData.microservices, user, isCLI, transaction) } if (applicationData.routes) { - await _updateRoutes(application.name, applicationData.routes, isCLI, transaction) + await _updateRoutes(application.name, applicationData.routes, user, isCLI, transaction) } if (oldApplication.isActivated !== applicationData.isActivated) { @@ -199,7 +199,7 @@ const updateApplicationEndPoint = async function (applicationData, name, isCLI, } } -const _updateRoutes = async function (application, routes, isCLI, transaction) { +const _updateRoutes = async function (application, routes, user, isCLI, transaction) { // Update routes const updatedRoutes = [...routes] const oldRoutes = await ApplicationManager.findApplicationRoutes({ name: application }, transaction) @@ -209,19 +209,19 @@ const _updateRoutes = async function (application, routes, isCLI, transaction) { for (const oldRoute of oldRoutes) { const removed = remove(updatedRoutes, (n) => oldRoute.name === n.name) if (!removed.length) { - await RoutingService.deleteRouting(oldRoute.name, isCLI, transaction) + await RoutingService.deleteRouting(oldRoute.name, user, isCLI, transaction) } else { const updatedRoute = removed[0] - await RoutingService.updateRouting(application, updatedRoute.name, updatedRoute, isCLI, transaction) + await RoutingService.updateRouting(application, updatedRoute.name, updatedRoute, user, isCLI, transaction) } } // Create missing routes for (const route of updatedRoutes) { - await RoutingService.createRouting(route, isCLI, transaction) + await RoutingService.createRouting(route, user, isCLI, transaction) } } -const _updateMicroservices = async function (application, microservices, isCLI, transaction) { +const _updateMicroservices = async function (application, microservices, user, isCLI, transaction) { const updatedMicroservices = [...microservices] // Update microservices const oldMicroservices = await ApplicationManager.findApplicationMicroservices({ name: application }, transaction) @@ -238,14 +238,14 @@ const _updateMicroservices = async function (application, microservices, isCLI, iofogUuids.push(oldMsvc.iofogUuid) } else { const updatedMsvc = removed[0] - const updatedMicroservices = await MicroserviceService.updateMicroserviceEndPoint(oldMsvc.uuid, updatedMsvc, isCLI, transaction, false) + const updatedMicroservices = await MicroserviceService.updateMicroserviceEndPoint(oldMsvc.uuid, updatedMsvc, user, isCLI, transaction, false) oldMsvcsIofogUuids.push(updatedMicroservices.microserviceIofogUuid) updatedMsvcsUuid.push(updatedMicroservices.updatedMicroserviceIofogUuid) } } // Create missing microservices for (const microservice of updatedMicroservices) { - await MicroserviceService.createMicroserviceEndPoint(microservice, isCLI, transaction) + await MicroserviceService.createMicroserviceEndPoint(microservice, user, isCLI, transaction) } iofogUuids .filter(onlyUnique) @@ -270,7 +270,7 @@ const _updateMicroservices = async function (application, microservices, isCLI, }) } -const getUserApplicationsEndPoint = async function (isCLI, transaction) { +const getUserApplicationsEndPoint = async function (user, isCLI, transaction) { const application = { isSystem: false } @@ -300,7 +300,7 @@ async function _buildApplicationObject (application, transaction) { return application } -async function getApplication (conditions, isCLI, transaction) { +async function getApplication (conditions, user, isCLI, transaction) { const where = isCLI ? { ...conditions } : { ...conditions } @@ -314,8 +314,8 @@ async function getApplication (conditions, isCLI, transaction) { return application } -const getApplicationEndPoint = async function (conditions, isCLI, transaction) { - const application = await getApplication(conditions, isCLI, transaction) +const getApplicationEndPoint = async function (conditions, user, isCLI, transaction) { + const application = await getApplication(conditions, user, isCLI, transaction) return application } diff --git a/src/services/application-template-service.js b/src/services/application-template-service.js index df68d89c2..8fa309cb2 100644 --- a/src/services/application-template-service.js +++ b/src/services/application-template-service.js @@ -24,7 +24,7 @@ const ApplicationTemplateVariableManager = require('../data/managers/application const TransactionDecorator = require('../decorators/transaction-decorator') const Validator = require('../schemas') -const createApplicationTemplateEndPoint = async function (applicationTemplateData, isCLI, transaction) { +const createApplicationTemplateEndPoint = async function (applicationTemplateData, user, isCLI, transaction) { // Add a name field to pass schema validation using the applicationCreate schema applicationTemplateData.application = { ...applicationTemplateData.application, name: 'validation' } await Validator.validate(applicationTemplateData, Validator.schemas.applicationTemplateCreate) @@ -56,12 +56,12 @@ const createApplicationTemplateEndPoint = async function (applicationTemplateDat } } catch (e) { // If anything failed during creating the application, delete all that was created - await deleteApplicationTemplateEndPoint({ name: applicationTemplate.name }, isCLI, transaction) + await deleteApplicationTemplateEndPoint({ name: applicationTemplate.name }, user, isCLI, transaction) throw e } } -const deleteApplicationTemplateEndPoint = async function (conditions, isCLI, transaction) { +const deleteApplicationTemplateEndPoint = async function (conditions, user, isCLI, transaction) { const whereObj = { ...conditions } @@ -70,7 +70,7 @@ const deleteApplicationTemplateEndPoint = async function (conditions, isCLI, tra await ApplicationTemplateManager.delete(where, transaction) } -const patchApplicationTemplateEndPoint = async function (applicationTemplateData, conditions, isCLI, transaction) { +const patchApplicationTemplateEndPoint = async function (applicationTemplateData, conditions, user, isCLI, transaction) { await Validator.validate(applicationTemplateData, Validator.schemas.applicationTemplatePatch) const oldApplicationTemplate = await ApplicationTemplateManager.findOne({ ...conditions }, transaction) @@ -95,7 +95,7 @@ const patchApplicationTemplateEndPoint = async function (applicationTemplateData await ApplicationTemplateManager.update(where, updateApplicationTemplateData, transaction) } -const updateApplicationTemplateEndPoint = async function (applicationTemplateData, name, isCLI, transaction) { +const updateApplicationTemplateEndPoint = async function (applicationTemplateData, name, user, isCLI, transaction) { // Add a name field to pass schema validation using the applicationCreate schema applicationTemplateData.application = { ...applicationTemplateData.application, name: 'validation' } await Validator.validate(applicationTemplateData, Validator.schemas.applicationTemplateUpdate) @@ -105,7 +105,7 @@ const updateApplicationTemplateEndPoint = async function (applicationTemplateDat const oldApplicationTemplate = await ApplicationTemplateManager.findOne({ name }, transaction) if (!oldApplicationTemplate) { - return createApplicationTemplateEndPoint({ ...applicationTemplateData, name }, isCLI, transaction) + return createApplicationTemplateEndPoint({ ...applicationTemplateData, name }, user, isCLI, transaction) } if (applicationTemplateData.name) { await _checkForDuplicateName(applicationTemplateData.name, oldApplicationTemplate.id, transaction) @@ -124,7 +124,7 @@ const updateApplicationTemplateEndPoint = async function (applicationTemplateDat await ApplicationTemplateManager.update(where, updateApplicationTemplateData, transaction) if (applicationTemplateData.variables) { - await _updateVariables(oldApplicationTemplate.id, applicationTemplateData.variables, isCLI, transaction) + await _updateVariables(oldApplicationTemplate.id, applicationTemplateData.variables, user, isCLI, transaction) } return { @@ -146,14 +146,14 @@ const _createVariable = async function (applicationTemplateId, variableData, tra return ApplicationTemplateVariableManager.create({ ...newVariable, applicationTemplateId }, transaction) } -const _updateVariables = async function (applicationTemplateId, variables, isCLI, transaction) { +const _updateVariables = async function (applicationTemplateId, variables, user, isCLI, transaction) { await ApplicationTemplateVariableManager.delete({ applicationTemplateId }, transaction) for (const variableData of variables) { await _createVariable(applicationTemplateId, variableData, transaction) } } -const getUserApplicationTemplatesEndPoint = async function (isCLI, transaction) { +const getUserApplicationTemplatesEndPoint = async function (user, isCLI, transaction) { const application = { } @@ -187,7 +187,7 @@ const getAllApplicationTemplatesEndPoint = async function (isCLI, transaction) { } } -async function getApplicationTemplate (conditions, isCLI, transaction) { +async function getApplicationTemplate (conditions, user, isCLI, transaction) { const where = isCLI ? { ...conditions } : { ...conditions } @@ -200,11 +200,11 @@ async function getApplicationTemplate (conditions, isCLI, transaction) { return _buildGetApplicationObj(application) } -const getApplicationTemplateEndPoint = async function (name, isCLI, transaction) { - return getApplicationTemplate(name, isCLI, transaction) +const getApplicationTemplateEndPoint = async function (name, user, isCLI, transaction) { + return getApplicationTemplate(name, user, isCLI, transaction) } -const getApplicationDataFromTemplate = async function (deploymentData, isCLI, transaction) { +const getApplicationDataFromTemplate = async function (deploymentData, user, isCLI, transaction) { await Validator.validate(deploymentData, Validator.schemas.applicationTemplateDeploy) const applicationTemplateDBObject = await ApplicationTemplateManager.findOnePopulated({ name: deploymentData.name }, transaction) @@ -236,7 +236,7 @@ const getApplicationDataFromTemplate = async function (deploymentData, isCLI, tr } // default values are overwritten by user defined values, and self is always overwritten to the current object - await rvaluesVarSubstition(newApplication, { ...defaultVariablesValues, ...userProvidedVariables, self: newApplication }) + await rvaluesVarSubstition(newApplication, { ...defaultVariablesValues, ...userProvidedVariables, self: newApplication }, user) for (const msvc of newApplication.microservices) { // Send it back as a string for application creation and validation diff --git a/src/services/catalog-service.js b/src/services/catalog-service.js index a6c0da298..9b7a07a77 100644 --- a/src/services/catalog-service.js +++ b/src/services/catalog-service.js @@ -26,11 +26,11 @@ const RegistryManager = require('../data/managers/registry-manager') const MicroserviceManager = require('../data/managers/microservice-manager') const MicroseriveStates = require('../enums/microservice-state') -const createCatalogItemEndPoint = async function (data, transaction) { +const createCatalogItemEndPoint = async function (data, user, transaction) { await Validator.validate(data, Validator.schemas.catalogItemCreate) await _checkForDuplicateName(data.name, transaction) await _checkForRestrictedPublisher(data.publisher) - const catalogItem = await _createCatalogItem(data, transaction) + const catalogItem = await _createCatalogItem(data, user, transaction) await _createCatalogImages(data, catalogItem, transaction) await _createCatalogItemInputType(data, catalogItem, transaction) await _createCatalogItemOutputType(data, catalogItem, transaction) @@ -40,7 +40,7 @@ const createCatalogItemEndPoint = async function (data, transaction) { } } -const updateCatalogItemEndPoint = async function (id, data, isCLI, transaction) { +const updateCatalogItemEndPoint = async function (id, data, user, isCLI, transaction) { await Validator.validate(data, Validator.schemas.catalogItemUpdate) const where = isCLI @@ -57,7 +57,7 @@ const updateCatalogItemEndPoint = async function (id, data, isCLI, transaction) await _updateCatalogItemIOTypes(data, where, transaction) } -const listCatalogItemsEndPoint = async function (isCLI, transaction) { +const listCatalogItemsEndPoint = async function (user, isCLI, transaction) { const where = isCLI ? {} : { @@ -74,7 +74,7 @@ const listCatalogItemsEndPoint = async function (isCLI, transaction) { } } -async function getCatalogItem (id, isCLI, transaction) { +async function getCatalogItem (id, user, isCLI, transaction) { const where = isCLI ? { id: id } : { @@ -93,11 +93,11 @@ async function getCatalogItem (id, isCLI, transaction) { return item } -const getCatalogItemEndPoint = async function (id, isCLI, transaction) { - return getCatalogItem(id, isCLI, transaction) +const getCatalogItemEndPoint = async function (id, user, isCLI, transaction) { + return getCatalogItem(id, user, isCLI, transaction) } -const deleteCatalogItemEndPoint = async function (id, isCLI, transaction) { +const deleteCatalogItemEndPoint = async function (id, user, isCLI, transaction) { const where = isCLI ? { id: id @@ -200,7 +200,7 @@ const _checkIfItemExists = async function (where, transaction) { return item } -const _createCatalogItem = async function (data, transaction) { +const _createCatalogItem = async function (data, user, transaction) { let catalogItem = { name: data.name, description: data.description, diff --git a/src/services/diagnostic-service.js b/src/services/diagnostic-service.js index f138683cc..0b8502a12 100644 --- a/src/services/diagnostic-service.js +++ b/src/services/diagnostic-service.js @@ -26,9 +26,9 @@ const logger = require('../logger') const FtpClient = require('ftp') const mime = require('mime') -const changeMicroserviceStraceState = async function (uuid, data, isCLI, transaction) { +const changeMicroserviceStraceState = async function (uuid, data, user, isCLI, transaction) { await Validator.validate(data, Validator.schemas.straceStateUpdate) - const microservice = await MicroserviceService.getMicroserviceEndPoint(uuid, isCLI, transaction) + const microservice = await MicroserviceService.getMicroserviceEndPoint(uuid, user, isCLI, transaction) if (microservice.iofogUuid === null) { throw new Errors.ValidationError(ErrorMessages.STRACE_WITHOUT_FOG) } @@ -42,7 +42,7 @@ const changeMicroserviceStraceState = async function (uuid, data, isCLI, transac await ChangeTrackingService.update(microservice.iofogUuid, ChangeTrackingService.events.diagnostics, transaction) } -const getMicroserviceStraceData = async function (uuid, data, isCLI, transaction) { +const getMicroserviceStraceData = async function (uuid, data, user, isCLI, transaction) { await Validator.validate(data, Validator.schemas.straceGetData) const microserviceWhere = isCLI @@ -75,7 +75,7 @@ const getMicroserviceStraceData = async function (uuid, data, isCLI, transaction } } -const postMicroserviceStraceDatatoFtp = async function (uuid, data, isCLI, transaction) { +const postMicroserviceStraceDatatoFtp = async function (uuid, data, user, isCLI, transaction) { await Validator.validate(data, Validator.schemas.stracePostToFtp) const microserviceWhere = isCLI @@ -100,7 +100,7 @@ const postMicroserviceStraceDatatoFtp = async function (uuid, data, isCLI, trans _deleteFile(filePath) } -const postMicroserviceImageSnapshotCreate = async function (microserviceUuid, isCLI, transaction) { +const postMicroserviceImageSnapshotCreate = async function (microserviceUuid, user, isCLI, transaction) { const where = isCLI ? { uuid: microserviceUuid @@ -126,7 +126,7 @@ const postMicroserviceImageSnapshotCreate = async function (microserviceUuid, is await ChangeTrackingService.update(microservice.iofogUuid, ChangeTrackingService.events.imageSnapshot, transaction) } -const getMicroserviceImageSnapshot = async function (microserviceUuid, isCLI, transaction) { +const getMicroserviceImageSnapshot = async function (microserviceUuid, user, isCLI, transaction) { const where = isCLI ? { uuid: microserviceUuid diff --git a/src/services/edge-resource-service.js b/src/services/edge-resource-service.js index dfa5052d5..750e040a7 100644 --- a/src/services/edge-resource-service.js +++ b/src/services/edge-resource-service.js @@ -155,7 +155,7 @@ async function _updateOrchestrationTags (tagArray, edgeResourceModel, transactio } } -async function createEdgeResource (edgeResourceData, transaction) { +async function createEdgeResource (edgeResourceData, user, transaction) { await Validator.validate(edgeResourceData, Validator.schemas.edgeResourceCreate) const { name, description, version, orchestrationTags, interfaceProtocol, display, custom } = edgeResourceData const existingResource = await EdgeResourceManager.findOne({ name, version }, transaction) @@ -192,7 +192,7 @@ async function createEdgeResource (edgeResourceData, transaction) { return buildGetObject(resource) } -async function updateEdgeResourceEndpoint (edgeResourceData, { name: oldName, version }, transaction) { +async function updateEdgeResourceEndpoint (edgeResourceData, { name: oldName, version }, user, transaction) { await Validator.validate(edgeResourceData, Validator.schemas.edgeResourceUpdate) const oldData = await EdgeResourceManager.findOne({ name: oldName, version }, transaction) if (!oldData) { @@ -202,7 +202,7 @@ async function updateEdgeResourceEndpoint (edgeResourceData, { name: oldName, ve if (!edgeResourceData.version) { edgeResourceData.version = version } - return createEdgeResource(edgeResourceData, transaction) + return createEdgeResource(edgeResourceData, user, transaction) } if (edgeResourceData.version && oldData.version !== edgeResourceData.version) { throw new Errors.ValidationError(AppHelper.formatMessage(ErrorMessages.RESOURCE_UPDATE_VERSION_MISMATCH)) @@ -244,7 +244,7 @@ async function updateEdgeResourceEndpoint (edgeResourceData, { name: oldName, ve } } -async function deleteEdgeResource ({ name, version }, transaction) { +async function deleteEdgeResource ({ name, version }, user, transaction) { const resource = await EdgeResourceManager.findOne({ name, version }, transaction) if (!resource) { throw new Errors.NotFoundError(AppHelper.formatMessage(ErrorMessages.NOT_FOUND_RESOURCE_NAME_VERSION, name, version)) @@ -258,7 +258,7 @@ async function deleteEdgeResource ({ name, version }, transaction) { await EdgeResourceManager.delete({ name, version }, transaction) } -async function linkEdgeResource ({ name, version }, uuid, transaction) { +async function linkEdgeResource ({ name, version }, uuid, user, transaction) { const resource = await EdgeResourceManager.findOne({ name, version }, transaction) if (!resource) { throw new Errors.NotFoundError(AppHelper.formatMessage(ErrorMessages.NOT_FOUND_RESOURCE_NAME_VERSION, name, version)) @@ -274,7 +274,7 @@ async function linkEdgeResource ({ name, version }, uuid, transaction) { await ChangeTrackingService.update(agent.uuid, ChangeTrackingService.events.edgeResources, transaction) } -async function unlinkEdgeResource ({ name, version }, uuid, transaction) { +async function unlinkEdgeResource ({ name, version }, uuid, user, transaction) { const resource = await EdgeResourceManager.findOne({ name, version }, transaction) if (!resource) { throw new Errors.NotFoundError(AppHelper.formatMessage(ErrorMessages.NOT_FOUND_RESOURCE_NAME_VERSION, name, version)) diff --git a/src/services/iofog-service.js b/src/services/iofog-service.js index a162b3e8e..06b1fce95 100644 --- a/src/services/iofog-service.js +++ b/src/services/iofog-service.js @@ -35,7 +35,7 @@ const Constants = require('../helpers/constants') const Op = require('sequelize').Op const lget = require('lodash/get') -async function createFogEndPoint (fogData, isCLI, transaction) { +async function createFogEndPoint (fogData, user, isCLI, transaction) { await Validator.validate(fogData, Validator.schemas.iofogCreate) let createFogData = { @@ -119,11 +119,11 @@ async function createFogEndPoint (fogData, isCLI, transaction) { await ChangeTrackingService.create(fog.uuid, transaction) if (fogData.abstractedHardwareEnabled) { - await _createHalMicroserviceForFog(fog, null, transaction) + await _createHalMicroserviceForFog(fog, null, user, transaction) } if (fogData.bluetoothEnabled) { - await _createBluetoothMicroserviceForFog(fog, null, transaction) + await _createBluetoothMicroserviceForFog(fog, null, user, transaction) } await ChangeTrackingService.update(createFogData.uuid, ChangeTrackingService.events.microserviceCommon, transaction) @@ -145,7 +145,7 @@ async function _setTags (fogModel, tagsArray, transaction) { } } -async function updateFogEndPoint (fogData, isCLI, transaction) { +async function updateFogEndPoint (fogData, user, isCLI, transaction) { await Validator.validate(fogData, Validator.schemas.iofogUpdate) const queryFogData = { uuid: fogData.uuid } @@ -268,7 +268,7 @@ async function updateFogEndPoint (fogData, isCLI, transaction) { msChanged = true } if (oldFog.abstractedHardwareEnabled === false && fogData.abstractedHardwareEnabled === true) { - await _createHalMicroserviceForFog(fogData, oldFog, transaction) + await _createHalMicroserviceForFog(fogData, oldFog, user, transaction) msChanged = true } @@ -277,7 +277,7 @@ async function updateFogEndPoint (fogData, isCLI, transaction) { msChanged = true } if (oldFog.bluetoothEnabled === false && fogData.bluetoothEnabled === true) { - await _createBluetoothMicroserviceForFog(fogData, oldFog, transaction) + await _createBluetoothMicroserviceForFog(fogData, oldFog, user, transaction) msChanged = true } @@ -359,7 +359,7 @@ async function _deleteFogRouter (fogData, transaction) { await MicroserviceManager.delete({ catalogItemId: routerCatalog.id, iofogUuid: fogData.uuid }, transaction) } -async function deleteFogEndPoint (fogData, isCLI, transaction) { +async function deleteFogEndPoint (fogData, user, isCLI, transaction) { await Validator.validate(fogData, Validator.schemas.iofogDelete) const queryFogData = { uuid: fogData.uuid } @@ -442,7 +442,7 @@ function _mapTags (fog) { return fog.tags ? fog.tags.map(t => t.value) : [] } -async function getFog (fogData, isCLI, transaction) { +async function getFog (fogData, user, isCLI, transaction) { await Validator.validate(fogData, Validator.schemas.iofogGet) const queryFogData = fogData.uuid ? { uuid: fogData.uuid } : { name: fogData.name } @@ -460,15 +460,15 @@ async function getFog (fogData, isCLI, transaction) { return _getFogExtraInformation(fog, transaction) } -async function getFogEndPoint (fogData, isCLI, transaction) { - return getFog(fogData, isCLI, transaction) +async function getFogEndPoint (fogData, user, isCLI, transaction) { + return getFog(fogData, user, isCLI, transaction) } -async function getFogListEndPoint (filters, isCLI, isSystem, transaction) { +async function getFogListEndPoint (filters, user, isCLI, isSystem, transaction) { await Validator.validate(filters, Validator.schemas.iofogFilters) // If listing system agent through REST API, make sure user is authenticated - if (isSystem && !isCLI && !lget('id')) { + if (isSystem && !isCLI && !lget(user, 'id')) { throw new Errors.AuthenticationError('Unauthorized') } @@ -485,7 +485,7 @@ async function getFogListEndPoint (filters, isCLI, isSystem, transaction) { } } -async function generateProvisioningKeyEndPoint (fogData, isCLI, transaction) { +async function generateProvisioningKeyEndPoint (fogData, user, isCLI, transaction) { await Validator.validate(fogData, Validator.schemas.iofogGenerateProvision) const queryFogData = { uuid: fogData.uuid } @@ -514,7 +514,7 @@ async function generateProvisioningKeyEndPoint (fogData, isCLI, transaction) { } } -async function setFogVersionCommandEndPoint (fogVersionData, isCLI, transaction) { +async function setFogVersionCommandEndPoint (fogVersionData, user, isCLI, transaction) { await Validator.validate(fogVersionData, Validator.schemas.iofogSetVersionCommand) const queryFogData = { uuid: fogVersionData.uuid } @@ -541,12 +541,12 @@ async function setFogVersionCommandEndPoint (fogVersionData, isCLI, transaction) throw new Errors.ValidationError(ErrorMessages.INVALID_VERSION_COMMAND_UPGRADE) } - await generateProvisioningKeyEndPoint({ uuid: fogVersionData.uuid }, isCLI, transaction) + await generateProvisioningKeyEndPoint({ uuid: fogVersionData.uuid }, user, isCLI, transaction) await FogVersionCommandManager.updateOrCreate({ iofogUuid: fogVersionData.uuid }, newVersionCommand, transaction) await ChangeTrackingService.update(fogVersionData.uuid, ChangeTrackingService.events.version, transaction) } -async function setFogRebootCommandEndPoint (fogData, isCLI, transaction) { +async function setFogRebootCommandEndPoint (fogData, user, isCLI, transaction) { await Validator.validate(fogData, Validator.schemas.iofogReboot) const queryFogData = { uuid: fogData.uuid } @@ -564,7 +564,7 @@ async function setFogRebootCommandEndPoint (fogData, isCLI, transaction) { await ChangeTrackingService.update(fogData.uuid, ChangeTrackingService.events.reboot, transaction) } -async function getHalHardwareInfoEndPoint (uuidObj, isCLI, transaction) { +async function getHalHardwareInfoEndPoint (uuidObj, user, isCLI, transaction) { await Validator.validate(uuidObj, Validator.schemas.halGet) const fog = await FogManager.findOne({ @@ -584,7 +584,7 @@ async function getHalHardwareInfoEndPoint (uuidObj, isCLI, transaction) { }, transaction) } -async function getHalUsbInfoEndPoint (uuidObj, isCLI, transaction) { +async function getHalUsbInfoEndPoint (uuidObj, user, isCLI, transaction) { await Validator.validate(uuidObj, Validator.schemas.halGet) const fog = await FogManager.findOne({ @@ -640,7 +640,7 @@ async function _processDeleteCommand (fog, transaction) { await FogManager.delete({ uuid: fog.uuid }, transaction) } -async function _createHalMicroserviceForFog (fogData, oldFog, transaction) { +async function _createHalMicroserviceForFog (fogData, oldFog, user, transaction) { const halItem = await CatalogService.getHalCatalogItem(transaction) const halMicroserviceData = { @@ -667,7 +667,7 @@ async function _deleteHalMicroserviceByFog (fogData, transaction) { await MicroserviceManager.delete(deleteHalMicroserviceData, transaction) } -async function _createBluetoothMicroserviceForFog (fogData, oldFog, transaction) { +async function _createBluetoothMicroserviceForFog (fogData, oldFog, user, transaction) { const bluetoothItem = await CatalogService.getBluetoothCatalogItem(transaction) const bluetoothMicroserviceData = { @@ -694,7 +694,7 @@ async function _deleteBluetoothMicroserviceByFog (fogData, transaction) { await MicroserviceManager.delete(deleteBluetoothMicroserviceData, transaction) } -async function setFogPruneCommandEndPoint (fogData, isCLI, transaction) { +async function setFogPruneCommandEndPoint (fogData, user, isCLI, transaction) { await Validator.validate(fogData, Validator.schemas.iofogPrune) const queryFogData = { uuid: fogData.uuid } diff --git a/src/services/microservice-ports/default.js b/src/services/microservice-ports/default.js index 07b504909..8ca6ac690 100644 --- a/src/services/microservice-ports/default.js +++ b/src/services/microservice-ports/default.js @@ -180,11 +180,11 @@ async function validatePublicPortAppHostTemplate (extraHost, templateArgs, msvc, throw new Errors.ValidationError(AppHelper.formatMessage(ErrorMessages.NOT_FOUND_HOST_TEMPLATE, templateArgs[4])) } -async function movePublicPortsToNewFog (updatedMicroservice, transaction) { +async function movePublicPortsToNewFog (updatedMicroservice, user, transaction) { const portMappings = await updatedMicroservice.getPorts() for (const portMapping of portMappings) { if (portMapping.isProxy) { - Proxy.moveProxyPortsToNewFog(updatedMicroservice, portMapping, transaction) + Proxy.moveProxyPortsToNewFog(updatedMicroservice, portMapping, user, transaction) continue } else if (!portMapping.isPublic) { continue @@ -201,13 +201,13 @@ async function movePublicPortsToNewFog (updatedMicroservice, transaction) { host: destAgentsRouter.host, port: destAgentsRouter.messagingPort } - const newProxy = await _createOrUpdateProxyMicroservice(localMapping, networkRouter, updatedMicroservice.iofogUuid, localProxy.catalogItemId, transaction) + const newProxy = await _createOrUpdateProxyMicroservice(localMapping, networkRouter, updatedMicroservice.iofogUuid, localProxy.catalogItemId, user, transaction) publicPort.localProxyId = newProxy.uuid await MicroservicePublicPortManager.updateOrCreate({ id: publicPort.id }, publicPort.toJSON(), transaction) } } -async function createPortMapping (microservice, portMappingData, transaction) { +async function createPortMapping (microservice, portMappingData, user, transaction) { if (!microservice.iofogUuid) { throw new Errors.ValidationError(AppHelper.formatMessage(ErrorMessages.REQUIRED_FOG_NODE)) } @@ -231,15 +231,15 @@ async function createPortMapping (microservice, portMappingData, transaction) { portMappingData.protocol = portMappingData.protocol || '' if (portMappingData.public) { - return _createPublicPortMapping(microservice, portMappingData, transaction) + return _createPublicPortMapping(microservice, portMappingData, user, transaction) } else if (portMappingData.proxy) { - return Proxy.createProxyPortMapping(microservice, portMappingData, transaction) + return Proxy.createProxyPortMapping(microservice, portMappingData, user, transaction) } else { - return _createSimplePortMapping(microservice, portMappingData, transaction) + return _createSimplePortMapping(microservice, portMappingData, user, transaction) } } -async function _createOrUpdateProxyMicroservice (mapping, networkRouter, hostUuid, proxyCatalogId, transaction) { +async function _createOrUpdateProxyMicroservice (mapping, networkRouter, hostUuid, proxyCatalogId, user, transaction) { const existingProxy = await MicroserviceManager.findOne({ catalogItemId: proxyCatalogId, iofogUuid: hostUuid }, transaction) if (existingProxy) { const config = JSON.parse(existingProxy.config || '{}') @@ -267,7 +267,7 @@ async function _createOrUpdateProxyMicroservice (mapping, networkRouter, hostUui return res } -async function _createPublicPortMapping (microservice, portMappingData, transaction) { +async function _createPublicPortMapping (microservice, portMappingData, user, transaction) { const isTcp = portMappingData.public.protocol ? portMappingData.public.protocol.toLowerCase() === 'tcp' : false const isUdp = portMappingData.protocol.toLowerCase() === 'udp' const localAgent = portMappingData.localAgent // This is populated by validating the ports @@ -289,6 +289,7 @@ async function _createPublicPortMapping (microservice, portMappingData, transact localNetworkRouter, microservice.iofogUuid, proxyCatalog.id, + user, transaction) : null @@ -306,6 +307,7 @@ async function _createPublicPortMapping (microservice, portMappingData, transact remoteNetworkRouter, portMappingData.publicHost.uuid, proxyCatalog.id, + user, transaction) : null } @@ -343,13 +345,13 @@ async function _createPublicPortMapping (microservice, portMappingData, transact } } -async function _deletePortMapping (microservice, portMapping, transaction) { +async function _deletePortMapping (microservice, portMapping, user, transaction) { if (portMapping.isPublic) { await _deletePublicPortMapping(microservice, portMapping, transaction) } else if (portMapping.isProxy) { - return Proxy.deleteProxyPortMapping(microservice, portMapping, transaction) + return Proxy.deleteProxyPortMapping(microservice, portMapping, user, transaction) } else { - await _deleteSimplePortMapping(microservice, portMapping, transaction) + await _deleteSimplePortMapping(microservice, portMapping, user, transaction) } } @@ -384,7 +386,7 @@ async function _deletePublicPortMapping (microservice, portMapping, transaction) await MicroservicePortManager.delete({ id: portMapping.id }, transaction) } -async function _createSimplePortMapping (microservice, portMappingData, transaction) { +async function _createSimplePortMapping (microservice, portMappingData, user, transaction) { // create port mapping const mappingData = { isPublic: false, @@ -399,7 +401,7 @@ async function _createSimplePortMapping (microservice, portMappingData, transact await switchOnUpdateFlagsForMicroservicesForPortMapping(microservice, false, transaction) } -async function _deleteSimplePortMapping (microservice, msPorts, transaction) { +async function _deleteSimplePortMapping (microservice, msPorts, user, transaction) { await MicroservicePortManager.delete({ id: msPorts.id }, transaction) const updateRebuildMs = { @@ -468,7 +470,7 @@ async function switchOnUpdateFlagsForMicroservicesForPortMapping (microservice, } } -async function listPortMappings (microserviceUuid, isCLI, transaction) { +async function listPortMappings (microserviceUuid, user, isCLI, transaction) { const where = isCLI ? { uuid: microserviceUuid } : { uuid: microserviceUuid } @@ -481,7 +483,7 @@ async function listPortMappings (microserviceUuid, isCLI, transaction) { return _buildPortsList(portsPairs, transaction) } -async function deletePortMapping (microserviceUuid, internalPort, isCLI, transaction) { +async function deletePortMapping (microserviceUuid, internalPort, user, isCLI, transaction) { const where = isCLI ? { uuid: microserviceUuid } : { uuid: microserviceUuid } @@ -503,13 +505,13 @@ async function deletePortMapping (microserviceUuid, internalPort, isCLI, transac throw new Errors.NotFoundError('port mapping not exists') } - await _deletePortMapping(microservice, msPorts, transaction) + await _deletePortMapping(microservice, msPorts, user, transaction) } -async function deletePortMappings (microservice, transaction) { +async function deletePortMappings (microservice, user, transaction) { const portMappings = await MicroservicePortManager.findAll({ microserviceUuid: microservice.uuid }, transaction) for (const ports of portMappings) { - await _deletePortMapping(microservice, ports, transaction) + await _deletePortMapping(microservice, ports, user, transaction) } } @@ -517,7 +519,7 @@ async function getPortMappings (microserviceUuid, transaction) { return MicroservicePortManager.findAll({ microserviceUuid }, transaction) } -function listAllPublicPorts (transaction) { +function listAllPublicPorts (user, transaction) { return MicroservicePortManager.findAllPublicPorts(transaction) } diff --git a/src/services/microservice-ports/proxy.js b/src/services/microservice-ports/proxy.js index d16a31f63..0a7e2dab2 100644 --- a/src/services/microservice-ports/proxy.js +++ b/src/services/microservice-ports/proxy.js @@ -20,7 +20,7 @@ const MicroservicePortManager = require('../../data/managers/microservice-port-m const MicroserviceProxyPortManager = require('../../data/managers/microservice-proxy-port-manager') const ProxyBrokerClient = require('../../helpers/proxy-broker-client') -async function _createOrUpdatePortRouterMicroservice (existingProxy, localPort, protocol, portRouterServerConfig, hostUuid, portRouterCatalogId, microserviceUuid, transaction) { +async function _createOrUpdatePortRouterMicroservice (existingProxy, localPort, protocol, portRouterServerConfig, hostUuid, portRouterCatalogId, microserviceUuid, user, transaction) { const proxyConfig = { name: `${microserviceUuid}_${localPort}`, server_addr: portRouterServerConfig.host, @@ -59,7 +59,7 @@ async function _createOrUpdatePortRouterMicroservice (existingProxy, localPort, return res } -async function createProxyPortMapping (microservice, portMappingData, transaction) { +async function createProxyPortMapping (microservice, portMappingData, user, transaction) { const protocol = portMappingData.protocol || 'tcp' // create proxy microservices @@ -82,6 +82,7 @@ async function createProxyPortMapping (microservice, portMappingData, transactio microservice.iofogUuid, portRouterCatalog.id, microservice.uuid, + user, transaction) const mappingData = { @@ -129,7 +130,7 @@ async function buildProxyPortMapping (pm, mapping, transaction) { } } -async function deleteProxyPortMapping (microservice, portMapping, transaction) { +async function deleteProxyPortMapping (microservice, portMapping, user, transaction) { const proxyPort = await portMapping.getProxyPort() if (proxyPort) { await _updateOrDeleteProxyMicroservice(proxyPort, false, transaction) @@ -164,7 +165,7 @@ async function _updateOrDeleteProxyMicroservice (proxyPort, isMove, transaction) } } -async function moveProxyPortsToNewFog (updatedMicroservice, portMapping, transaction) { +async function moveProxyPortsToNewFog (updatedMicroservice, portMapping, user, transaction) { const proxyPort = await portMapping.getProxyPort() const localProxy = await MicroserviceManager.findOne({ uuid: proxyPort.localProxyId }, transaction) await _updateOrDeleteProxyMicroservice(proxyPort, true, transaction) @@ -193,6 +194,7 @@ async function moveProxyPortsToNewFog (updatedMicroservice, portMapping, transac updatedMicroservice.iofogUuid, localProxy.catalogItemId, updatedMicroservice.uuid, + user, transaction) proxyPort.localProxyId = newProxy.uuid diff --git a/src/services/microservices-service.js b/src/services/microservices-service.js index 55156d1ce..4c90f7185 100644 --- a/src/services/microservices-service.js +++ b/src/services/microservices-service.js @@ -37,14 +37,14 @@ const { VOLUME_MAPPING_DEFAULT } = require('../helpers/constants') const constants = require('../helpers/constants') const isEqual = require('lodash/isEqual') -async function listMicroservicesEndPoint (opt, isCLI, transaction) { +async function listMicroservicesEndPoint (opt, user, isCLI, transaction) { // API retro compatibility const { applicationName, flowId } = opt - let application = await _validateApplication(applicationName, isCLI, transaction) + let application = await _validateApplication(applicationName, user, isCLI, transaction) if (flowId) { // _validateApplication wil try by ID if it fails finding by name - application = await _validateApplication(flowId, isCLI, transaction) + application = await _validateApplication(flowId, user, isCLI, transaction) } const where = application ? { applicationId: application.id, delete: false } : { delete: false, applicationId: { [Op.ne]: null } } @@ -60,7 +60,7 @@ async function listMicroservicesEndPoint (opt, isCLI, transaction) { } } -async function getMicroserviceEndPoint (microserviceUuid, isCLI, transaction) { +async function getMicroserviceEndPoint (microserviceUuid, user, isCLI, transaction) { if (!isCLI) { await _validateMicroserviceOnGet(microserviceUuid, transaction) } @@ -150,7 +150,7 @@ async function _validateAgentHostTemplate (extraHost, templateArgs, transaction) return extraHost } -async function _validateExtraHost (extraHostData, transaction) { +async function _validateExtraHost (extraHostData, user, transaction) { const extraHost = { templateType: 'Litteral', name: extraHostData.name, @@ -171,13 +171,13 @@ async function _validateExtraHost (extraHostData, transaction) { throw new Errors.ValidationError(AppHelper.formatMessage(ErrorMessages.INVALID_HOST_TEMPLATE, template)) } -async function _validateExtraHosts (microserviceData, transaction) { +async function _validateExtraHosts (microserviceData, user, transaction) { if (!microserviceData.extraHosts || microserviceData.extraHosts.length === 0) { return [] } const extraHosts = [] for (const extraHost of microserviceData.extraHosts) { - extraHosts.push(await _validateExtraHost(extraHost, transaction)) + extraHosts.push(await _validateExtraHost(extraHost, user, transaction)) } return extraHosts } @@ -195,7 +195,7 @@ function _validateImageFogType (microserviceData, fog, images) { } } -async function _findFog (microserviceData, isCLI, transaction) { +async function _findFog (microserviceData, user, isCLI, transaction) { const fogConditions = {} if (microserviceData.iofogUuid) { fogConditions.uuid = microserviceData.iofogUuid @@ -205,7 +205,7 @@ async function _findFog (microserviceData, isCLI, transaction) { return FogManager.findOne(fogConditions, transaction) } -async function createMicroserviceEndPoint (microserviceData, isCLI, transaction) { +async function createMicroserviceEndPoint (microserviceData, user, isCLI, transaction) { // API Retro compatibility if (!microserviceData.application) { microserviceData.application = microserviceData.flowId @@ -213,7 +213,7 @@ async function createMicroserviceEndPoint (microserviceData, isCLI, transaction) await Validator.validate(microserviceData, Validator.schemas.microserviceCreate) // find fog - const fog = await _findFog(microserviceData, isCLI, transaction) + const fog = await _findFog(microserviceData, user, isCLI, transaction) if (!fog) { throw new Errors.ValidationError(AppHelper.formatMessage(ErrorMessages.INVALID_IOFOG_UUID, microserviceData.iofogUuid || microserviceData.agentName)) } @@ -224,7 +224,7 @@ async function createMicroserviceEndPoint (microserviceData, isCLI, transaction) // validate images if (microserviceData.catalogItemId) { // validate catalog item - const catalogItem = await CatalogService.getCatalogItem(microserviceData.catalogItemId, isCLI, transaction) + const catalogItem = await CatalogService.getCatalogItem(microserviceData.catalogItemId, user, isCLI, transaction) _validateImagesAgainstCatalog(catalogItem, microserviceData.images || []) microserviceData.images = catalogItem.images _validateImageFogType(microserviceData, fog, catalogItem.images) @@ -237,13 +237,13 @@ async function createMicroserviceEndPoint (microserviceData, isCLI, transaction) } // validate extraHosts - const extraHosts = await _validateExtraHosts(microserviceData, transaction) + const extraHosts = await _validateExtraHosts(microserviceData, user, transaction) await MicroservicePortService.validatePortMappings(microserviceData, transaction) _validateVolumeMappings(microserviceData.volumeMappings) - const microservice = await _createMicroservice({ ...microserviceData, iofogUuid: fog.uuid }, isCLI, transaction) + const microservice = await _createMicroservice({ ...microserviceData, iofogUuid: fog.uuid }, user, isCLI, transaction) if (!microserviceData.catalogItemId) { await _createMicroserviceImages(microservice, microserviceData.images, transaction) @@ -253,7 +253,7 @@ async function createMicroserviceEndPoint (microserviceData, isCLI, transaction) const proxyPorts = [] if (microserviceData.ports) { for (const mapping of microserviceData.ports) { - const res = await MicroservicePortService.createPortMapping(microservice, mapping, transaction) + const res = await MicroservicePortService.createPortMapping(microservice, mapping, user, transaction) if (res) { if (res.publicLinks) { publicPorts.push({ @@ -273,17 +273,17 @@ async function createMicroserviceEndPoint (microserviceData, isCLI, transaction) } for (const extraHost of extraHosts) { - await _createExtraHost(microservice, extraHost, transaction) + await _createExtraHost(microservice, extraHost, user, transaction) } if (microserviceData.env) { for (const env of microserviceData.env) { - await _createEnv(microservice, env, transaction) + await _createEnv(microservice, env, user, transaction) } } if (microserviceData.cmd) { for (const arg of microserviceData.cmd) { - await _createArg(microservice, arg, transaction) + await _createArg(microservice, arg, user, transaction) } } if (microserviceData.volumeMappings) { @@ -346,7 +346,7 @@ async function _updateRelatedExtraHosts (updatedMicroservice, transaction) { } } -async function updateMicroserviceEndPoint (microserviceUuid, microserviceData, isCLI, transaction, changeTrackingEnabled = true) { +async function updateMicroserviceEndPoint (microserviceUuid, microserviceData, user, isCLI, transaction, changeTrackingEnabled = true) { await Validator.validate(microserviceData, Validator.schemas.microserviceUpdate) let needStatusReset = false const query = isCLI @@ -358,11 +358,11 @@ async function updateMicroserviceEndPoint (microserviceUuid, microserviceData, i } // validate extraHosts - const extraHosts = microserviceData.extraHosts ? await _validateExtraHosts(microserviceData, transaction) : null + const extraHosts = microserviceData.extraHosts ? await _validateExtraHosts(microserviceData, user, transaction) : null const config = _validateMicroserviceConfig(microserviceData.config) - const newFog = await _findFog(microserviceData, isCLI, transaction) || {} + const newFog = await _findFog(microserviceData, user, isCLI, transaction) || {} const microserviceToUpdate = { name: microserviceData.name, config: config, @@ -400,7 +400,7 @@ async function updateMicroserviceEndPoint (microserviceUuid, microserviceData, i } if (microserviceDataUpdate.ports) { - await _updatePorts(microserviceDataUpdate.ports, microservice, transaction) + await _updatePorts(microserviceDataUpdate.ports, microservice, user, transaction) } if (microserviceDataUpdate.iofogUuid && microservice.iofogUuid !== microserviceDataUpdate.iofogUuid) { @@ -433,7 +433,7 @@ async function updateMicroserviceEndPoint (microserviceUuid, microserviceData, i const iofogUuid = microserviceDataUpdate.iofogUuid || microservice.iofogUuid if (microserviceDataUpdate.catalogItemId) { - const catalogItem = await CatalogService.getCatalogItem(microserviceDataUpdate.catalogItemId, isCLI, transaction) + const catalogItem = await CatalogService.getCatalogItem(microserviceDataUpdate.catalogItemId, user, isCLI, transaction) _validateImagesAgainstCatalog(catalogItem, microserviceDataUpdate.images || []) if (microserviceDataUpdate.catalogItemId !== undefined && microserviceDataUpdate.catalogItemId !== microservice.catalogItemId) { // Catalog item changed or removed, set rebuild flag @@ -468,12 +468,12 @@ async function updateMicroserviceEndPoint (microserviceUuid, microserviceData, i // Validate image type let images = [] if (microserviceDataUpdate.catalogItemId) { - const catalogItem = await CatalogService.getCatalogItem(microserviceDataUpdate.catalogItemId, isCLI, transaction) + const catalogItem = await CatalogService.getCatalogItem(microserviceDataUpdate.catalogItemId, user, isCLI, transaction) images = catalogItem.images } else if (microserviceDataUpdate.images) { images = microserviceDataUpdate.images } else if (microservice.catalogItemId) { - const catalogItem = await CatalogService.getCatalogItem(microservice.catalogItemId, isCLI, transaction) + const catalogItem = await CatalogService.getCatalogItem(microservice.catalogItemId, user, isCLI, transaction) images = catalogItem.images } else { images = await microservice.getImages() @@ -493,7 +493,7 @@ async function updateMicroserviceEndPoint (microserviceUuid, microserviceData, i const updatedMicroservice = await MicroserviceManager.updateAndFind(query, microserviceDataUpdate, transaction) if (extraHosts) { - await _updateExtraHosts(extraHosts, microserviceUuid, transaction) + await _updateExtraHosts(extraHosts, microserviceUuid, user, transaction) } // Update extra hosts that reference this microservice @@ -512,7 +512,7 @@ async function updateMicroserviceEndPoint (microserviceUuid, microserviceData, i } if (microserviceDataUpdate.iofogUuid && microserviceDataUpdate.iofogUuid !== microservice.iofogUuid) { - await MicroservicePortService.movePublicPortsToNewFog(updatedMicroservice, transaction) + await MicroservicePortService.movePublicPortsToNewFog(updatedMicroservice, user, transaction) } if (needStatusReset) { @@ -561,7 +561,7 @@ const _checkIfMicroserviceImagesAreEqual = (microserviceDataUpdateImages, catalo return isEqual(newMicroserviceImages, oldMicroservicesImages) } -async function deleteMicroserviceEndPoint (microserviceUuid, microserviceData, isCLI, transaction) { +async function deleteMicroserviceEndPoint (microserviceUuid, microserviceData, user, isCLI, transaction) { const where = isCLI ? { uuid: microserviceUuid @@ -594,7 +594,7 @@ async function deleteNotRunningMicroservices (fog, transaction) { .forEach(async (microservice) => { await deleteMicroserviceWithRoutesAndPortMappings(microservice, transaction) }) } -async function createRouteEndPoint (sourceMicroserviceUuid, destMicroserviceUuid, isCLI, transaction) { +async function createRouteEndPoint (sourceMicroserviceUuid, destMicroserviceUuid, user, isCLI, transaction) { // Print deprecated warning const sourceMsvc = await MicroserviceManager.findOne({ uuid: sourceMicroserviceUuid }, transaction) if (!sourceMsvc) { @@ -610,10 +610,10 @@ async function createRouteEndPoint (sourceMicroserviceUuid, destMicroserviceUuid throw new Errors.NotFoundError(AppHelper.formatMessage(ErrorMessages.INVALID_FLOW_ID, sourceMsvc.applicationId)) } - return RoutingService.createRouting({ application: application.name, from: sourceMsvc.name, to: destMsvc.name, name: `r-${sourceMsvc.name}-${destMsvc.name}` }, isCLI, transaction) + return RoutingService.createRouting({ application: application.name, from: sourceMsvc.name, to: destMsvc.name, name: `r-${sourceMsvc.name}-${destMsvc.name}` }, user, isCLI, transaction) } -async function deleteRouteEndPoint (sourceMicroserviceUuid, destMicroserviceUuid, isCLI, transaction) { +async function deleteRouteEndPoint (sourceMicroserviceUuid, destMicroserviceUuid, user, isCLI, transaction) { // Print deprecated warning const route = await RoutingManager.findOnePopulated({ @@ -624,10 +624,10 @@ async function deleteRouteEndPoint (sourceMicroserviceUuid, destMicroserviceUuid throw new Errors.NotFoundError(AppHelper.formatMessage(ErrorMessages.ROUTE_NOT_FOUND)) } - return RoutingService.deleteRouting(route.application.name, route.name, isCLI, transaction) + return RoutingService.deleteRouting(route.application.name, route.name, user, isCLI, transaction) } -async function createPortMappingEndPoint (microserviceUuid, portMappingData, isCLI, transaction) { +async function createPortMappingEndPoint (microserviceUuid, portMappingData, user, isCLI, transaction) { await Validator.validate(portMappingData, Validator.schemas.portsCreate) const where = isCLI @@ -645,10 +645,10 @@ async function createPortMappingEndPoint (microserviceUuid, portMappingData, isC } await MicroservicePortService.validatePortMapping(agent, portMappingData, {}, transaction) - return MicroservicePortService.createPortMapping(microservice, portMappingData, transaction) + return MicroservicePortService.createPortMapping(microservice, portMappingData, user, transaction) } -async function _createExtraHost (microservice, extraHostData, transaction) { +async function _createExtraHost (microservice, extraHostData, user, transaction) { const msExtraHostData = { ...extraHostData, microserviceUuid: microservice.uuid @@ -657,7 +657,7 @@ async function _createExtraHost (microservice, extraHostData, transaction) { await MicroserviceExtraHostManager.create(msExtraHostData, transaction) } -async function _createEnv (microservice, envData, transaction) { +async function _createEnv (microservice, envData, user, transaction) { if (!microservice.iofogUuid) { throw new Errors.ValidationError(AppHelper.formatMessage(ErrorMessages.REQUIRED_FOG_NODE)) } @@ -672,7 +672,7 @@ async function _createEnv (microservice, envData, transaction) { await MicroservicePortService.switchOnUpdateFlagsForMicroservicesForPortMapping(microservice, false, transaction) } -async function _createArg (microservice, arg, transaction) { +async function _createArg (microservice, arg, user, transaction) { if (!microservice.iofogUuid) { throw new Errors.ValidationError(AppHelper.formatMessage(ErrorMessages.REQUIRED_FOG_NODE)) } @@ -686,12 +686,12 @@ async function _createArg (microservice, arg, transaction) { await MicroservicePortService.switchOnUpdateFlagsForMicroservicesForPortMapping(microservice, false, transaction) } -async function deletePortMappingEndPoint (microserviceUuid, internalPort, isCLI, transaction) { - return MicroservicePortService.deletePortMapping(microserviceUuid, internalPort, isCLI, transaction) +async function deletePortMappingEndPoint (microserviceUuid, internalPort, user, isCLI, transaction) { + return MicroservicePortService.deletePortMapping(microserviceUuid, internalPort, user, isCLI, transaction) } -async function listPortMappingsEndPoint (microserviceUuid, isCLI, transaction) { - return MicroservicePortService.listPortMappings(microserviceUuid, isCLI, transaction) +async function listPortMappingsEndPoint (microserviceUuid, user, isCLI, transaction) { + return MicroservicePortService.listPortMappings(microserviceUuid, user, isCLI, transaction) } async function getReceiverMicroservices (microservice, transaction) { @@ -706,7 +706,7 @@ async function isMicroserviceConsumer (microservice, transaction) { return !!(routes && routes.length > 0) } -async function createVolumeMappingEndPoint (microserviceUuid, volumeMappingData, isCLI, transaction) { +async function createVolumeMappingEndPoint (microserviceUuid, volumeMappingData, user, isCLI, transaction) { await Validator.validate(volumeMappingData, Validator.schemas.volumeMappings) const where = isCLI @@ -743,7 +743,7 @@ async function createVolumeMappingEndPoint (microserviceUuid, volumeMappingData, return VolumeMappingManager.create(volumeMappingObj, transaction) } -async function deleteVolumeMappingEndPoint (microserviceUuid, volumeMappingUuid, isCLI, transaction) { +async function deleteVolumeMappingEndPoint (microserviceUuid, volumeMappingUuid, user, isCLI, transaction) { const where = isCLI ? { uuid: microserviceUuid } : { uuid: microserviceUuid } @@ -764,7 +764,7 @@ async function deleteVolumeMappingEndPoint (microserviceUuid, volumeMappingUuid, } } -async function listVolumeMappingsEndPoint (microserviceUuid, isCLI, transaction) { +async function listVolumeMappingsEndPoint (microserviceUuid, user, isCLI, transaction) { const where = isCLI ? { uuid: microserviceUuid } : { uuid: microserviceUuid } @@ -789,7 +789,7 @@ function _validateMicroserviceConfig (config) { return result } -async function _createMicroservice (microserviceData, isCLI, transaction) { +async function _createMicroservice (microserviceData, user, isCLI, transaction) { const config = _validateMicroserviceConfig(microserviceData.config) let newMicroservice = { @@ -813,7 +813,7 @@ async function _createMicroservice (microserviceData, isCLI, transaction) { } // validate application - const application = await _validateApplication(microserviceData.application, isCLI, transaction) + const application = await _validateApplication(microserviceData.application, user, isCLI, transaction) newMicroservice.applicationId = application.id await _checkForDuplicateName(newMicroservice.name, {}, newMicroservice.applicationId, transaction) @@ -829,7 +829,7 @@ async function _createMicroservice (microserviceData, isCLI, transaction) { return MicroserviceManager.create(newMicroservice, transaction) } -async function _validateApplication (name, isCLI, transaction) { +async function _validateApplication (name, user, isCLI, transaction) { if (!name) { return null } @@ -916,12 +916,12 @@ async function _deleteImages (microserviceUuid, transaction) { }, transaction) } -async function _updateExtraHosts (extraHosts, microserviceUuid, transaction) { +async function _updateExtraHosts (extraHosts, microserviceUuid, user, transaction) { await MicroserviceExtraHostManager.delete({ microserviceUuid: microserviceUuid }, transaction) for (const extraHost of extraHosts) { - await _createExtraHost({ uuid: microserviceUuid }, extraHost, transaction) + await _createExtraHost({ uuid: microserviceUuid }, extraHost, user, transaction) } } @@ -954,10 +954,10 @@ async function _updateArg (arg, microserviceUuid, transaction) { } } -async function _updatePorts (newPortMappings, microservice, transaction) { - await MicroservicePortService.deletePortMappings(microservice, transaction) +async function _updatePorts (newPortMappings, microservice, user, transaction) { + await MicroservicePortService.deletePortMappings(microservice, user, transaction) for (const portMapping of newPortMappings) { - await createPortMappingEndPoint(microservice.uuid, portMapping, false, transaction) + await createPortMappingEndPoint(microservice.uuid, portMapping, user, false, transaction) } } @@ -1080,8 +1080,8 @@ async function _buildGetMicroserviceResponse (microservice, transaction) { return res } -function listAllPublicPortsEndPoint (transaction) { - return MicroservicePortService.listAllPublicPorts(transaction) +function listAllPublicPortsEndPoint (user, transaction) { + return MicroservicePortService.listAllPublicPorts(user, transaction) } module.exports = { diff --git a/src/services/registry-service.js b/src/services/registry-service.js index de0a8eade..b5220cb99 100644 --- a/src/services/registry-service.js +++ b/src/services/registry-service.js @@ -22,7 +22,7 @@ const Sequelize = require('sequelize') const Op = Sequelize.Op const AppHelper = require('../helpers/app-helper') -const createRegistry = async function (registry, transaction) { +const createRegistry = async function (registry, user, transaction) { await Validator.validate(registry, Validator.schemas.registryCreate) if (registry.requiresCert && registry.certificate === undefined) { throw new Errors.ValidationError(ErrorMessages.CERT_PROPERTY_REQUIRED) @@ -42,14 +42,14 @@ const createRegistry = async function (registry, transaction) { const createdRegistry = await RegistryManager.create(registryCreate, transaction) - await _updateChangeTracking(transaction) + await _updateChangeTracking(user, transaction) return { id: createdRegistry.id } } -const findRegistries = async function (isCLI, transaction) { +const findRegistries = async function (user, isCLI, transaction) { const queryRegistry = isCLI ? {} : { @@ -67,7 +67,7 @@ const findRegistries = async function (isCLI, transaction) { } } -const deleteRegistry = async function (registryData, isCLI, transaction) { +const deleteRegistry = async function (registryData, user, isCLI, transaction) { await Validator.validate(registryData, Validator.schemas.registryDelete) const queryData = isCLI ? { id: registryData.id } @@ -77,10 +77,10 @@ const deleteRegistry = async function (registryData, isCLI, transaction) { throw new Errors.NotFoundError(AppHelper.formatMessage(ErrorMessages.INVALID_REGISTRY_ID, registryData.id)) } await RegistryManager.delete(queryData, transaction) - await _updateChangeTracking(transaction) + await _updateChangeTracking(user, transaction) } -const updateRegistry = async function (registry, registryId, isCLI, transaction) { +const updateRegistry = async function (registry, registryId, user, isCLI, transaction) { await Validator.validate(registry, Validator.schemas.registryUpdate) if (registry.requiresCert && registry.certificate === undefined) { @@ -117,10 +117,10 @@ const updateRegistry = async function (registry, registryId, isCLI, transaction) await RegistryManager.update(where, registryUpdate, transaction) - await _updateChangeTracking(transaction) + await _updateChangeTracking(user, transaction) } -const _updateChangeTracking = async function (transaction) { +const _updateChangeTracking = async function (user, transaction) { const fogs = await FogManager.findAll(transaction) for (const fog of fogs) { await ChangeTrackingService.update(fog.uuid, ChangeTrackingService.events.registries, transaction) diff --git a/src/services/routing-service.js b/src/services/routing-service.js index f6cb1fdc4..b3737ba90 100644 --- a/src/services/routing-service.js +++ b/src/services/routing-service.js @@ -21,7 +21,7 @@ const RoutingManager = require('../data/managers/routing-manager') const TransactionDecorator = require('../decorators/transaction-decorator') const Validator = require('../schemas') -async function getRoutings (isCLI, transaction) { +async function getRoutings (user, isCLI, transaction) { const routes = await RoutingManager.findAllPopulated({}, transaction) return { routes: routes.map(r => ({ application: r.application.name, @@ -34,7 +34,7 @@ async function getRoutings (isCLI, transaction) { })) } } -async function getRouting (appName, name, isCLI, transaction) { +async function getRouting (appName, name, user, isCLI, transaction) { const application = await ApplicationManager.findOne({ name: appName }, transaction) if (!application) { throw new Errors.NotFoundError(AppHelper.formatMessage(ErrorMessages.INVALID_FLOW_NAME, appName)) @@ -54,7 +54,7 @@ async function getRouting (appName, name, isCLI, transaction) { } } -async function _validateRouteMsvc (routingData, isCLI, transaction) { +async function _validateRouteMsvc (routingData, user, isCLI, transaction) { // Retro compatibility logic if (routingData.sourceMicroserviceUuid) { const sourceWhere = { uuid: routingData.sourceMicroserviceUuid } @@ -91,15 +91,15 @@ async function _validateRouteMsvc (routingData, isCLI, transaction) { } } -async function createRouting (routingData, isCLI, transaction) { +async function createRouting (routingData, user, isCLI, transaction) { await Validator.validate(routingData, Validator.schemas.routingCreate) - const { sourceMicroservice, destMicroservice } = await _validateRouteMsvc(routingData, isCLI, transaction) + const { sourceMicroservice, destMicroservice } = await _validateRouteMsvc(routingData, user, isCLI, transaction) - return _createRoute(sourceMicroservice, destMicroservice, routingData, transaction) + return _createRoute(sourceMicroservice, destMicroservice, routingData, user, transaction) } -async function updateRouting (appName, routeName, routeData, isCLI, transaction) { +async function updateRouting (appName, routeName, routeData, user, isCLI, transaction) { await Validator.validate(routeData, Validator.schemas.routingUpdate) const application = await ApplicationManager.findOne({ name: appName }, transaction) if (!application) { @@ -111,7 +111,7 @@ async function updateRouting (appName, routeName, routeData, isCLI, transaction) throw new Errors.NotFoundError(AppHelper.formatMessage(ErrorMessages.INVALID_ROUTING_NAME, routeName)) } - const { sourceMicroservice, destMicroservice } = await _validateRouteMsvc({ ...routeData, application: oldRoute.application.name }, isCLI, transaction) + const { sourceMicroservice, destMicroservice } = await _validateRouteMsvc({ ...routeData, application: oldRoute.application.name }, user, isCLI, transaction) const updateRebuildMs = { rebuild: true @@ -143,7 +143,7 @@ async function updateRouting (appName, routeName, routeData, isCLI, transaction) await RoutingManager.update({ id: oldRoute.id }, updateRouteData, transaction) } -async function _createRoute (sourceMicroservice, destMicroservice, routeData, transaction) { +async function _createRoute (sourceMicroservice, destMicroservice, routeData, user, transaction) { if (!sourceMicroservice.iofogUuid || !destMicroservice.iofogUuid) { throw new Errors.ValidationError('fog not set') } @@ -162,7 +162,7 @@ async function _createRoute (sourceMicroservice, destMicroservice, routeData, tr return _createSimpleRoute(sourceMicroservice, destMicroservice, routeData, transaction) } -async function deleteRouting (appName, name, isCLI, transaction) { +async function deleteRouting (appName, name, user, isCLI, transaction) { const application = await ApplicationManager.findOne({ name: appName }, transaction) if (!application) { throw new Errors.NotFoundError(AppHelper.formatMessage(ErrorMessages.INVALID_FLOW_NAME, appName)) diff --git a/src/services/tunnel-service.js b/src/services/tunnel-service.js index 14142af29..680f7e5c3 100644 --- a/src/services/tunnel-service.js +++ b/src/services/tunnel-service.js @@ -21,7 +21,7 @@ const ErrorMessages = require('../helpers/error-messages') const TransactionDecorator = require('../decorators/transaction-decorator') const ChangeTrackingService = require('./change-tracking-service') -const openTunnel = async function (tunnelData, isCli, transaction) { +const openTunnel = async function (tunnelData, user, isCli, transaction) { const iofog = await FogManager.findOne({ uuid: tunnelData.iofogUuid }, transaction) if (!iofog) { throw new Errors.NotFoundError(AppHelper.formatMessage(ErrorMessages.INVALID_IOFOG_UUID, tunnelData.iofogUuid)) @@ -47,7 +47,7 @@ const openTunnel = async function (tunnelData, isCli, transaction) { await ChangeTrackingService.update(tunnelData.iofogUuid, ChangeTrackingService.events.tunnel, transaction) } -const findTunnel = async function (tunnelData, transaction) { +const findTunnel = async function (tunnelData, user, transaction) { const tunnel = await TunnelManager.findOne(tunnelData, transaction) if (!tunnel) { throw new Errors.NotFoundError('Invalid Tunnel Id') @@ -68,8 +68,8 @@ const findAll = async function (transaction) { } } -const closeTunnel = async function (tunnelData, transaction) { - await module.exports.findTunnel(tunnelData, transaction) +const closeTunnel = async function (tunnelData, user, transaction) { + await module.exports.findTunnel(tunnelData, user, transaction) await TunnelManager.update(tunnelData, { closed: true }, transaction) await ChangeTrackingService.update(tunnelData.iofogUuid, ChangeTrackingService.events.tunnel, transaction) } From 4a2603b5660e09d269f90462067195c9a80bf5db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Thu, 28 Mar 2024 14:52:40 +0300 Subject: [PATCH 075/146] iofog service user check fixed --- src/services/iofog-service.js | 45 ----------------------------------- 1 file changed, 45 deletions(-) diff --git a/src/services/iofog-service.js b/src/services/iofog-service.js index 06b1fce95..9f3bb6d04 100644 --- a/src/services/iofog-service.js +++ b/src/services/iofog-service.js @@ -189,11 +189,6 @@ async function updateFogEndPoint (fogData, user, isCLI, transaction) { // Update tags await _setTags(oldFog, fogData.tags, transaction) - // If using REST API and not system fog. You must be the fog's user to access it - if (!oldFog.isSystem && !isCLI) { - throw new Errors.NotFoundError(AppHelper.formatMessage(ErrorMessages.INVALID_IOFOG_UUID, fogData.uuid)) - } - if (updateFogData.name) { const conflictQuery = isCLI ? { name: updateFogData.name, uuid: { [Op.not]: fogData.uuid } } @@ -369,11 +364,6 @@ async function deleteFogEndPoint (fogData, user, isCLI, transaction) { throw new Errors.NotFoundError(AppHelper.formatMessage(ErrorMessages.INVALID_IOFOG_UUID, fogData.uuid)) } - // If using REST API and not system fog. You must be the fog's user to access it - if (!fog.isSystem && !isCLI) { - throw new Errors.NotFoundError(AppHelper.formatMessage(ErrorMessages.INVALID_IOFOG_UUID, fogData.uuid)) - } - await _deleteFogRouter(fogData, transaction) await _processDeleteCommand(fog, transaction) @@ -452,11 +442,6 @@ async function getFog (fogData, user, isCLI, transaction) { throw new Errors.NotFoundError(AppHelper.formatMessage(ErrorMessages.INVALID_IOFOG_UUID, fogData.uuid)) } - // If using REST API and not system fog. You must be the fog's user to access it - if (!fog.isSystem && !isCLI) { - throw new Errors.NotFoundError(AppHelper.formatMessage(ErrorMessages.INVALID_IOFOG_UUID, fogData.uuid)) - } - return _getFogExtraInformation(fog, transaction) } @@ -501,11 +486,6 @@ async function generateProvisioningKeyEndPoint (fogData, user, isCLI, transactio throw new Errors.NotFoundError(AppHelper.formatMessage(ErrorMessages.INVALID_IOFOG_UUID, fogData.uuid)) } - // If using REST API and not system fog. You must be the fog's user to access it - if (!fog.isSystem && !isCLI) { - throw new Errors.NotFoundError(AppHelper.formatMessage(ErrorMessages.INVALID_IOFOG_UUID, fogData.uuid)) - } - const provisioningKeyData = await FogProvisionKeyManager.updateOrCreate({ iofogUuid: fogData.uuid }, newProvision, transaction) return { @@ -529,11 +509,6 @@ async function setFogVersionCommandEndPoint (fogVersionData, user, isCLI, transa throw new Errors.NotFoundError(AppHelper.formatMessage(ErrorMessages.INVALID_IOFOG_UUID, queryFogData.uuid)) } - // If using REST API and not system fog. You must be the fog's user to access it - if (!fog.isSystem && !isCLI) { - throw new Errors.NotFoundError(AppHelper.formatMessage(ErrorMessages.INVALID_IOFOG_UUID, queryFogData.uuid)) - } - if (!fog.isReadyToRollback && fogVersionData.versionCommand === 'rollback') { throw new Errors.ValidationError(ErrorMessages.INVALID_VERSION_COMMAND_ROLLBACK) } @@ -556,11 +531,6 @@ async function setFogRebootCommandEndPoint (fogData, user, isCLI, transaction) { throw new Errors.NotFoundError(AppHelper.formatMessage(ErrorMessages.INVALID_IOFOG_UUID, fogData.uuid)) } - // If using REST API and not system fog. You must be the fog's user to access it - if (!fog.isSystem && !isCLI) { - throw new Errors.NotFoundError(AppHelper.formatMessage(ErrorMessages.INVALID_IOFOG_UUID, fogData.uuid)) - } - await ChangeTrackingService.update(fogData.uuid, ChangeTrackingService.events.reboot, transaction) } @@ -574,11 +544,6 @@ async function getHalHardwareInfoEndPoint (uuidObj, user, isCLI, transaction) { throw new Errors.NotFoundError(AppHelper.formatMessage(ErrorMessages.INVALID_IOFOG_UUID, uuidObj.uuid)) } - // If using REST API and not system fog. You must be the fog's user to access it - if (!fog.isSystem && !isCLI) { - throw new Errors.NotFoundError(AppHelper.formatMessage(ErrorMessages.INVALID_IOFOG_UUID, uuidObj.uuid)) - } - return HWInfoManager.findOne({ iofogUuid: uuidObj.uuid }, transaction) @@ -594,11 +559,6 @@ async function getHalUsbInfoEndPoint (uuidObj, user, isCLI, transaction) { throw new Errors.NotFoundError(AppHelper.formatMessage(ErrorMessages.INVALID_IOFOG_UUID, uuidObj.uuid)) } - // If using REST API and not system fog. You must be the fog's user to access it - if (!fog.isSystem && !isCLI) { - throw new Errors.NotFoundError(AppHelper.formatMessage(ErrorMessages.INVALID_IOFOG_UUID, uuidObj.uuid)) - } - return USBInfoManager.findOne({ iofogUuid: uuidObj.uuid }, transaction) @@ -704,11 +664,6 @@ async function setFogPruneCommandEndPoint (fogData, user, isCLI, transaction) { throw new Errors.NotFoundError(AppHelper.formatMessage(ErrorMessages.INVALID_IOFOG_UUID, fogData.uuid)) } - // If using REST API and not system fog. You must be the fog's user to access it - if (!fog.isSystem && !isCLI) { - throw new Errors.NotFoundError(AppHelper.formatMessage(ErrorMessages.INVALID_IOFOG_UUID, fogData.uuid)) - } - await ChangeTrackingService.update(fogData.uuid, ChangeTrackingService.events.prune, transaction) } From ae027545769b11b97e69636d573f61d760081f61 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Thu, 28 Mar 2024 19:55:12 +0300 Subject: [PATCH 076/146] microservice-service module's traction decorator edited --- src/services/edge-resource-service.js | 2 +- src/services/microservices-service.js | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/services/edge-resource-service.js b/src/services/edge-resource-service.js index 750e040a7..d83db34d7 100644 --- a/src/services/edge-resource-service.js +++ b/src/services/edge-resource-service.js @@ -28,7 +28,7 @@ async function listEdgeResources (transaction) { return edgeResources.map(buildGetObject) } -async function getEdgeResource ({ name, version }, transaction) { +async function getEdgeResource ({ name, version }, user, transaction) { if (version) { const resource = await EdgeResourceManager.findOneWithOrchestrationTags({ name, version }, transaction) if (!resource) { diff --git a/src/services/microservices-service.js b/src/services/microservices-service.js index 4c90f7185..07924e43a 100644 --- a/src/services/microservices-service.js +++ b/src/services/microservices-service.js @@ -1090,8 +1090,8 @@ module.exports = { createRouteEndPoint: TransactionDecorator.generateTransaction(createRouteEndPoint), createVolumeMappingEndPoint: TransactionDecorator.generateTransaction(createVolumeMappingEndPoint), deleteMicroserviceEndPoint: TransactionDecorator.generateTransaction(deleteMicroserviceEndPoint), - deleteMicroserviceWithRoutesAndPortMappings: deleteMicroserviceWithRoutesAndPortMappings, - deleteNotRunningMicroservices: deleteNotRunningMicroservices, + deleteMicroserviceWithRoutesAndPortMappings: TransactionDecorator.generateTransaction(deleteMicroserviceWithRoutesAndPortMappings), + deleteNotRunningMicroservices: TransactionDecorator.generateTransaction(deleteNotRunningMicroservices), deletePortMappingEndPoint: TransactionDecorator.generateTransaction(deletePortMappingEndPoint), deleteRouteEndPoint: TransactionDecorator.generateTransaction(deleteRouteEndPoint), deleteVolumeMappingEndPoint: TransactionDecorator.generateTransaction(deleteVolumeMappingEndPoint), From 30d19f3fa90706bd5494a698bdfa46060bb45528 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Thu, 28 Mar 2024 19:57:23 +0300 Subject: [PATCH 077/146] revert edgeresource service changes --- src/services/edge-resource-service.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/services/edge-resource-service.js b/src/services/edge-resource-service.js index d83db34d7..750e040a7 100644 --- a/src/services/edge-resource-service.js +++ b/src/services/edge-resource-service.js @@ -28,7 +28,7 @@ async function listEdgeResources (transaction) { return edgeResources.map(buildGetObject) } -async function getEdgeResource ({ name, version }, user, transaction) { +async function getEdgeResource ({ name, version }, transaction) { if (version) { const resource = await EdgeResourceManager.findOneWithOrchestrationTags({ name, version }, transaction) if (!resource) { From 10ea1c6dd3f705d7f76297210ff81b657a047030 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Thu, 28 Mar 2024 20:42:32 +0300 Subject: [PATCH 078/146] Revert "revert edgeresource service changes" This reverts commit 30d19f3fa90706bd5494a698bdfa46060bb45528. --- src/services/edge-resource-service.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/services/edge-resource-service.js b/src/services/edge-resource-service.js index 750e040a7..d83db34d7 100644 --- a/src/services/edge-resource-service.js +++ b/src/services/edge-resource-service.js @@ -28,7 +28,7 @@ async function listEdgeResources (transaction) { return edgeResources.map(buildGetObject) } -async function getEdgeResource ({ name, version }, transaction) { +async function getEdgeResource ({ name, version }, user, transaction) { if (version) { const resource = await EdgeResourceManager.findOneWithOrchestrationTags({ name, version }, transaction) if (!resource) { From 9329fd4a3e82bd9b7d6553e411c7cac9910dd345 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Thu, 28 Mar 2024 20:42:45 +0300 Subject: [PATCH 079/146] Revert "microservice-service module's traction decorator edited" This reverts commit ae027545769b11b97e69636d573f61d760081f61. --- src/services/edge-resource-service.js | 2 +- src/services/microservices-service.js | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/services/edge-resource-service.js b/src/services/edge-resource-service.js index d83db34d7..750e040a7 100644 --- a/src/services/edge-resource-service.js +++ b/src/services/edge-resource-service.js @@ -28,7 +28,7 @@ async function listEdgeResources (transaction) { return edgeResources.map(buildGetObject) } -async function getEdgeResource ({ name, version }, user, transaction) { +async function getEdgeResource ({ name, version }, transaction) { if (version) { const resource = await EdgeResourceManager.findOneWithOrchestrationTags({ name, version }, transaction) if (!resource) { diff --git a/src/services/microservices-service.js b/src/services/microservices-service.js index 07924e43a..4c90f7185 100644 --- a/src/services/microservices-service.js +++ b/src/services/microservices-service.js @@ -1090,8 +1090,8 @@ module.exports = { createRouteEndPoint: TransactionDecorator.generateTransaction(createRouteEndPoint), createVolumeMappingEndPoint: TransactionDecorator.generateTransaction(createVolumeMappingEndPoint), deleteMicroserviceEndPoint: TransactionDecorator.generateTransaction(deleteMicroserviceEndPoint), - deleteMicroserviceWithRoutesAndPortMappings: TransactionDecorator.generateTransaction(deleteMicroserviceWithRoutesAndPortMappings), - deleteNotRunningMicroservices: TransactionDecorator.generateTransaction(deleteNotRunningMicroservices), + deleteMicroserviceWithRoutesAndPortMappings: deleteMicroserviceWithRoutesAndPortMappings, + deleteNotRunningMicroservices: deleteNotRunningMicroservices, deletePortMappingEndPoint: TransactionDecorator.generateTransaction(deletePortMappingEndPoint), deleteRouteEndPoint: TransactionDecorator.generateTransaction(deleteRouteEndPoint), deleteVolumeMappingEndPoint: TransactionDecorator.generateTransaction(deleteVolumeMappingEndPoint), From cc487eda0001b7a4c2c2931e8c9ad8b7d863c9db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Thu, 28 Mar 2024 22:20:13 +0300 Subject: [PATCH 080/146] Revert "Revert "user removed from endpoint's controller and service"" This reverts commit ef5771fcfc02e9e328f7244c84075579e95b0741. --- src/controllers/application-controller.js | 48 ++++---- .../application-template-controller.js | 36 +++--- src/controllers/catalog-controller.js | 20 ++-- src/controllers/config-controller.js | 6 +- src/controllers/diagnostic-controller.js | 20 ++-- src/controllers/edge-resource-controller.js | 32 +++--- src/controllers/iofog-controller.js | 44 ++++---- src/controllers/microservices-controller.js | 68 +++++------ src/controllers/registry-controller.js | 16 +-- src/controllers/routing-controller.js | 20 ++-- src/controllers/tunnel-controller.js | 10 +- src/services/application-service.js | 44 ++++---- src/services/application-template-service.js | 28 ++--- src/services/catalog-service.js | 18 +-- src/services/diagnostic-service.js | 12 +- src/services/edge-resource-service.js | 12 +- src/services/iofog-service.js | 42 +++---- src/services/microservice-ports/default.js | 42 ++++--- src/services/microservice-ports/proxy.js | 10 +- src/services/microservices-service.js | 106 +++++++++--------- src/services/registry-service.js | 16 +-- src/services/routing-service.js | 20 ++-- src/services/tunnel-service.js | 8 +- 23 files changed, 337 insertions(+), 341 deletions(-) diff --git a/src/controllers/application-controller.js b/src/controllers/application-controller.js index da06cfe8b..15676b7da 100644 --- a/src/controllers/application-controller.js +++ b/src/controllers/application-controller.js @@ -17,85 +17,85 @@ const errors = require('../helpers/errors') const ErrorMessages = require('../helpers/error-messages') const { rvaluesVarSubstition } = require('../helpers/template-helper') -const createApplicationEndPoint = async function (req, user) { +const createApplicationEndPoint = async function (req) { const application = req.body - return ApplicationService.createApplicationEndPoint(application, user, false) + return ApplicationService.createApplicationEndPoint(application, false) } -const createApplicationYAMLEndPoint = async function (req, user) { +const createApplicationYAMLEndPoint = async function (req) { if (!req.file) { throw new errors.ValidationError(ErrorMessages.APPLICATION_FILE_NOT_FOUND) } const fileContent = req.file.buffer.toString() const application = await YAMLParserService.parseAppFile(fileContent) - await rvaluesVarSubstition(application, { self: application }, user) + await rvaluesVarSubstition(application, { self: application }) - return ApplicationService.createApplicationEndPoint(application, user, false) + return ApplicationService.createApplicationEndPoint(application, false) } -const getApplicationsByUserEndPoint = async function (req, user) { - return ApplicationService.getUserApplicationsEndPoint(user, false) +const getApplicationsByUserEndPoint = async function (req) { + return ApplicationService.getUserApplicationsEndPoint(false) } -const getApplicationEndPoint = async function (req, user) { +const getApplicationEndPoint = async function (req) { const name = req.params.name - const application = await ApplicationService.getApplicationEndPoint({ name }, user, false) + const application = await ApplicationService.getApplicationEndPoint({ name }, false) return application } -const patchApplicationEndPoint = async function (req, user) { +const patchApplicationEndPoint = async function (req) { const application = req.body const name = req.params.name - return ApplicationService.patchApplicationEndPoint(application, { name }, user, false) + return ApplicationService.patchApplicationEndPoint(application, { name }, false) } -const updateApplicationEndPoint = async function (req, user) { +const updateApplicationEndPoint = async function (req) { const application = req.body const name = req.params.name - return ApplicationService.updateApplicationEndPoint(application, name, user, false) + return ApplicationService.updateApplicationEndPoint(application, name, false) } -const updateApplicationYAMLEndPoint = async function (req, user) { +const updateApplicationYAMLEndPoint = async function (req) { if (!req.file) { throw new errors.ValidationError(ErrorMessages.APPLICATION_FILE_NOT_FOUND) } const name = req.params.name const fileContent = req.file.buffer.toString() const application = await YAMLParserService.parseAppFile(fileContent) - await rvaluesVarSubstition(application, { self: application }, user) + await rvaluesVarSubstition(application, { self: application }) - return ApplicationService.updateApplicationEndPoint(application, name, user, false) + return ApplicationService.updateApplicationEndPoint(application, name, false) } -const deleteApplicationEndPoint = async function (req, user) { +const deleteApplicationEndPoint = async function (req) { const name = req.params.name - return ApplicationService.deleteApplicationEndPoint({ name }, user, false) + return ApplicationService.deleteApplicationEndPoint({ name }, false) } // Legacy -const deleteApplicationByIdEndPoint = async function (req, user) { +const deleteApplicationByIdEndPoint = async function (req) { const id = req.params.id - return ApplicationService.deleteApplicationEndPoint({ id }, user, false) + return ApplicationService.deleteApplicationEndPoint({ id }, false) } -const patchApplicationByIdEndPoint = async function (req, user) { +const patchApplicationByIdEndPoint = async function (req) { const application = req.body const id = req.params.id - return ApplicationService.patchApplicationEndPoint(application, { id }, user, false) + return ApplicationService.patchApplicationEndPoint(application, { id }, false) } -const getApplicationByIdEndPoint = async function (req, user) { +const getApplicationByIdEndPoint = async function (req) { const id = req.params.id - const application = await ApplicationService.getApplicationEndPoint({ id }, user, false) + const application = await ApplicationService.getApplicationEndPoint({ id }, false) return application } diff --git a/src/controllers/application-template-controller.js b/src/controllers/application-template-controller.js index 7a9e85d0a..61f281112 100644 --- a/src/controllers/application-template-controller.js +++ b/src/controllers/application-template-controller.js @@ -17,63 +17,63 @@ const errors = require('../helpers/errors') const ErrorMessages = require('../helpers/error-messages') const { rvaluesVarSubstition } = require('../helpers/template-helper') -const createApplicationTemplateEndPoint = async function (req, user) { +const createApplicationTemplateEndPoint = async function (req) { const application = req.body - return ApplicationTemplateService.createApplicationTemplateEndPoint(application, user, false) + return ApplicationTemplateService.createApplicationTemplateEndPoint(application, false) } -const createApplicationTemplateYAMLEndPoint = async function (req, user) { +const createApplicationTemplateYAMLEndPoint = async function (req) { if (!req.file) { throw new errors.ValidationError(ErrorMessages.APPLICATION_FILE_NOT_FOUND) } const fileContent = req.file.buffer.toString() const application = await YAMLParserService.parseAppTemplateFile(fileContent) - await rvaluesVarSubstition(application.variables, { self: application.variables }, user) + await rvaluesVarSubstition(application.variables, { self: application.variables }) - return ApplicationTemplateService.createApplicationTemplateEndPoint(application, user, false) + return ApplicationTemplateService.createApplicationTemplateEndPoint(application, false) } -const getApplicationTemplatesByUserEndPoint = async function (req, user) { - return ApplicationTemplateService.getUserApplicationTemplatesEndPoint(user, false) +const getApplicationTemplatesByUserEndPoint = async function (req) { + return ApplicationTemplateService.getUserApplicationTemplatesEndPoint(false) } -const getApplicationTemplateEndPoint = async function (req, user) { +const getApplicationTemplateEndPoint = async function (req) { const name = req.params.name - return ApplicationTemplateService.getApplicationTemplateEndPoint({ name }, user, false) + return ApplicationTemplateService.getApplicationTemplateEndPoint({ name }, false) } -const patchApplicationTemplateEndPoint = async function (req, user) { +const patchApplicationTemplateEndPoint = async function (req) { const application = req.body const name = req.params.name - return ApplicationTemplateService.patchApplicationTemplateEndPoint(application, { name }, user, false) + return ApplicationTemplateService.patchApplicationTemplateEndPoint(application, { name }, false) } -const updateApplicationTemplateEndPoint = async function (req, user) { +const updateApplicationTemplateEndPoint = async function (req) { const application = req.body const name = req.params.name - return ApplicationTemplateService.updateApplicationTemplateEndPoint(application, name, user, false) + return ApplicationTemplateService.updateApplicationTemplateEndPoint(application, name, false) } -const updateApplicationTemplateYAMLEndPoint = async function (req, user) { +const updateApplicationTemplateYAMLEndPoint = async function (req) { if (!req.file) { throw new errors.ValidationError(ErrorMessages.APPLICATION_FILE_NOT_FOUND) } const name = req.params.name const fileContent = req.file.buffer.toString() const application = await YAMLParserService.parseAppTemplateFile(fileContent) - await rvaluesVarSubstition(application.variables, { self: application.variables }, user) + await rvaluesVarSubstition(application.variables, { self: application.variables }) - return ApplicationTemplateService.updateApplicationTemplateEndPoint(application, name, user, false) + return ApplicationTemplateService.updateApplicationTemplateEndPoint(application, name, false) } -const deleteApplicationTemplateEndPoint = async function (req, user) { +const deleteApplicationTemplateEndPoint = async function (req) { const name = req.params.name - return ApplicationTemplateService.deleteApplicationTemplateEndPoint({ name }, user, false) + return ApplicationTemplateService.deleteApplicationTemplateEndPoint({ name }, false) } module.exports = { diff --git a/src/controllers/catalog-controller.js b/src/controllers/catalog-controller.js index afed875af..dcd35cd57 100644 --- a/src/controllers/catalog-controller.js +++ b/src/controllers/catalog-controller.js @@ -13,24 +13,24 @@ const CatalogService = require('../services/catalog-service') -const createCatalogItemEndPoint = async function (req, user) { - return CatalogService.createCatalogItemEndPoint(req.body, user) +const createCatalogItemEndPoint = async function (req) { + return CatalogService.createCatalogItemEndPoint(req.body) } -const listCatalogItemsEndPoint = async function (req, user) { - return CatalogService.listCatalogItemsEndPoint(user, false) +const listCatalogItemsEndPoint = async function (req) { + return CatalogService.listCatalogItemsEndPoint(false) } -const listCatalogItemEndPoint = async function (req, user) { - return CatalogService.getCatalogItemEndPoint(req.params.id, user, false) +const listCatalogItemEndPoint = async function (req) { + return CatalogService.getCatalogItemEndPoint(req.params.id, false) } -const deleteCatalogItemEndPoint = async function (req, user) { - await CatalogService.deleteCatalogItemEndPoint(req.params.id, user, false) +const deleteCatalogItemEndPoint = async function (req) { + await CatalogService.deleteCatalogItemEndPoint(req.params.id, false) } -const updateCatalogItemEndPoint = async function (req, user) { - await CatalogService.updateCatalogItemEndPoint(req.params.id, req.body, user, false) +const updateCatalogItemEndPoint = async function (req) { + await CatalogService.updateCatalogItemEndPoint(req.params.id, req.body, false) } module.exports = { diff --git a/src/controllers/config-controller.js b/src/controllers/config-controller.js index 0b57a14fc..2b5efd729 100644 --- a/src/controllers/config-controller.js +++ b/src/controllers/config-controller.js @@ -13,16 +13,16 @@ const ConfigService = require('../services/config-service') -const upsertConfigElementEndpoint = async function (req, user) { +const upsertConfigElementEndpoint = async function (req) { const configData = req.body return ConfigService.upsertConfigElement(configData) } -const listConfigEndpoint = async function (user) { +const listConfigEndpoint = async function () { return ConfigService.listConfig() } -const getConfigEndpoint = async function (req, user) { +const getConfigEndpoint = async function (req) { const key = req.params.key return ConfigService.getConfigElement(key) } diff --git a/src/controllers/diagnostic-controller.js b/src/controllers/diagnostic-controller.js index 640ae6642..35d053beb 100644 --- a/src/controllers/diagnostic-controller.js +++ b/src/controllers/diagnostic-controller.js @@ -13,24 +13,24 @@ const DiagnosticService = require('../services/diagnostic-service') -const changeMicroserviceStraceStateEndPoint = async function (req, user) { - return DiagnosticService.changeMicroserviceStraceState(req.params.uuid, req.body, user, false) +const changeMicroserviceStraceStateEndPoint = async function (req) { + return DiagnosticService.changeMicroserviceStraceState(req.params.uuid, req.body, false) } -const getMicroserviceStraceDataEndPoint = async function (req, user) { - return DiagnosticService.getMicroserviceStraceData(req.params.uuid, req.query, user, false) +const getMicroserviceStraceDataEndPoint = async function (req) { + return DiagnosticService.getMicroserviceStraceData(req.params.uuid, req.query, false) } -const postMicroserviceStraceDataToFtpEndPoint = async function (req, user) { - return DiagnosticService.postMicroserviceStraceDatatoFtp(req.params.uuid, req.body, user, false) +const postMicroserviceStraceDataToFtpEndPoint = async function (req) { + return DiagnosticService.postMicroserviceStraceDatatoFtp(req.params.uuid, req.body, false) } -const createMicroserviceImageSnapshotEndPoint = async function (req, user) { - return DiagnosticService.postMicroserviceImageSnapshotCreate(req.params.uuid, user, false) +const createMicroserviceImageSnapshotEndPoint = async function (req) { + return DiagnosticService.postMicroserviceImageSnapshotCreate(req.params.uuid, false) } -const getMicroserviceImageSnapshotEndPoint = async function (req, user) { - return DiagnosticService.getMicroserviceImageSnapshot(req.params.uuid, user, false) +const getMicroserviceImageSnapshotEndPoint = async function (req) { + return DiagnosticService.getMicroserviceImageSnapshot(req.params.uuid, false) } module.exports = { diff --git a/src/controllers/edge-resource-controller.js b/src/controllers/edge-resource-controller.js index f6ca86473..e4ec39658 100644 --- a/src/controllers/edge-resource-controller.js +++ b/src/controllers/edge-resource-controller.js @@ -13,24 +13,24 @@ const EdgeResourceService = require('../services/edge-resource-service') -const createEdgeResourceEndpoint = async function (req, user) { +const createEdgeResourceEndpoint = async function (req) { const edgeResourceData = req.body - return EdgeResourceService.createEdgeResource(edgeResourceData, user) + return EdgeResourceService.createEdgeResource(edgeResourceData) } -const updateEdgeResourceEndpoint = async function (req, user) { +const updateEdgeResourceEndpoint = async function (req) { const edgeResourceData = req.body const { version, name } = req.params - return EdgeResourceService.updateEdgeResourceEndpoint(edgeResourceData, { name, version }, user) + return EdgeResourceService.updateEdgeResourceEndpoint(edgeResourceData, { name, version }) } -const listEdgeResourcesEndpoint = async function (req, user) { - return { edgeResources: await EdgeResourceService.listEdgeResources(user) } +const listEdgeResourcesEndpoint = async function (req) { + return { edgeResources: await EdgeResourceService.listEdgeResources() } } -const getEdgeResourceEndpoint = async function (req, user) { +const getEdgeResourceEndpoint = async function (req) { const { version, name } = req.params - const result = await EdgeResourceService.getEdgeResource({ name, version }, user) + const result = await EdgeResourceService.getEdgeResource({ name, version }) if (version) { return result } else { @@ -38,27 +38,27 @@ const getEdgeResourceEndpoint = async function (req, user) { } } -const getEdgeResourceAllVersionsEndpoint = async function (req, user) { +const getEdgeResourceAllVersionsEndpoint = async function (req) { const { name } = req.params - const result = await EdgeResourceService.getEdgeResource({ name }, user) + const result = await EdgeResourceService.getEdgeResource({ name }) return { edgeResources: result } } -const deleteEdgeResourceEndpoint = async function (req, user) { +const deleteEdgeResourceEndpoint = async function (req) { const { version, name } = req.params - return EdgeResourceService.deleteEdgeResource({ name, version }, user) + return EdgeResourceService.deleteEdgeResource({ name, version }) } -const linkEdgeResourceEndpoint = async function (req, user) { +const linkEdgeResourceEndpoint = async function (req) { const { name, version } = req.params const { uuid } = req.body - return EdgeResourceService.linkEdgeResource({ name, version }, uuid, user) + return EdgeResourceService.linkEdgeResource({ name, version }, uuid) } -const unlinkEdgeResourceEndpoint = async function (req, user) { +const unlinkEdgeResourceEndpoint = async function (req) { const { name, version } = req.params const { uuid } = req.body - return EdgeResourceService.unlinkEdgeResource({ name, version }, uuid, user) + return EdgeResourceService.unlinkEdgeResource({ name, version }, uuid) } module.exports = { diff --git a/src/controllers/iofog-controller.js b/src/controllers/iofog-controller.js index 2a6c793c7..3d2f86ccb 100644 --- a/src/controllers/iofog-controller.js +++ b/src/controllers/iofog-controller.js @@ -14,83 +14,83 @@ const FogService = require('../services/iofog-service') const qs = require('qs') -async function createFogEndPoint (req, user) { +async function createFogEndPoint (req) { const newFog = req.body - return FogService.createFogEndPoint(newFog, user, false) + return FogService.createFogEndPoint(newFog, false) } -async function updateFogEndPoint (req, user) { +async function updateFogEndPoint (req) { const updateFog = req.body updateFog.uuid = req.params.uuid - return FogService.updateFogEndPoint(updateFog, user, false) + return FogService.updateFogEndPoint(updateFog, false) } -async function deleteFogEndPoint (req, user) { +async function deleteFogEndPoint (req) { const deleteFog = { uuid: req.params.uuid } - return FogService.deleteFogEndPoint(deleteFog, user, false) + return FogService.deleteFogEndPoint(deleteFog, false) } -async function getFogEndPoint (req, user) { +async function getFogEndPoint (req) { const getFog = { uuid: req.params.uuid } - return FogService.getFogEndPoint(getFog, user, false) + return FogService.getFogEndPoint(getFog, false) } -async function getFogListEndPoint (req, user) { +async function getFogListEndPoint (req) { const isSystem = req.query && req.query.system ? req.query.system === 'true' : false const query = qs.parse(req.query) - return FogService.getFogListEndPoint(query.filters, user, false, isSystem) + return FogService.getFogListEndPoint(query.filters, false, isSystem) } -async function generateProvisionKeyEndPoint (req, user) { +async function generateProvisionKeyEndPoint (req) { const fog = { uuid: req.params.uuid } - return FogService.generateProvisioningKeyEndPoint(fog, user, false) + return FogService.generateProvisioningKeyEndPoint(fog, false) } -async function setFogVersionCommandEndPoint (req, user) { +async function setFogVersionCommandEndPoint (req) { const fogVersionCommand = { uuid: req.params.uuid, versionCommand: req.params.versionCommand } - return FogService.setFogVersionCommandEndPoint(fogVersionCommand, user, false) + return FogService.setFogVersionCommandEndPoint(fogVersionCommand, false) } -async function setFogRebootCommandEndPoint (req, user) { +async function setFogRebootCommandEndPoint (req) { const fog = { uuid: req.params.uuid } - return FogService.setFogRebootCommandEndPoint(fog, user, false) + return FogService.setFogRebootCommandEndPoint(fog, false) } -async function getHalHardwareInfoEndPoint (req, user) { +async function getHalHardwareInfoEndPoint (req) { const uuidObj = { uuid: req.params.uuid } - return FogService.getHalHardwareInfoEndPoint(uuidObj, user, false) + return FogService.getHalHardwareInfoEndPoint(uuidObj, false) } -async function getHalUsbInfoEndPoint (req, user) { +async function getHalUsbInfoEndPoint (req) { const uuidObj = { uuid: req.params.uuid } - return FogService.getHalUsbInfoEndPoint(uuidObj, user, false) + return FogService.getHalUsbInfoEndPoint(uuidObj, false) } -async function setFogPruneCommandEndPoint (req, user) { +async function setFogPruneCommandEndPoint (req) { const fog = { uuid: req.params.uuid } - return FogService.setFogPruneCommandEndPoint(fog, user, false) + return FogService.setFogPruneCommandEndPoint(fog, false) } module.exports = { diff --git a/src/controllers/microservices-controller.js b/src/controllers/microservices-controller.js index f2ff25531..367c3003e 100644 --- a/src/controllers/microservices-controller.js +++ b/src/controllers/microservices-controller.js @@ -15,108 +15,108 @@ const MicroservicesService = require('../services/microservices-service') const YAMLParserService = require('../services/yaml-parser-service') const { rvaluesVarSubstition } = require('../helpers/template-helper') -const createMicroserviceOnFogEndPoint = async function (req, user) { +const createMicroserviceOnFogEndPoint = async function (req) { const microservice = req.body - return MicroservicesService.createMicroserviceEndPoint(microservice, user, false) + return MicroservicesService.createMicroserviceEndPoint(microservice, false) } -const createMicroserviceYAMLEndPoint = async function (req, user) { +const createMicroserviceYAMLEndPoint = async function (req) { const fileContent = req.file.buffer.toString() const microservice = await YAMLParserService.parseMicroserviceFile(fileContent) - await rvaluesVarSubstition(microservice, { self: microservice }, user) - return MicroservicesService.createMicroserviceEndPoint(microservice, user, false) + await rvaluesVarSubstition(microservice, { self: microservice }) + return MicroservicesService.createMicroserviceEndPoint(microservice, false) } -const getMicroserviceEndPoint = async function (req, user) { +const getMicroserviceEndPoint = async function (req) { const microserviceUuid = req.params.uuid - return MicroservicesService.getMicroserviceEndPoint(microserviceUuid, user, false) + return MicroservicesService.getMicroserviceEndPoint(microserviceUuid, false) } -const updateMicroserviceEndPoint = async function (req, user) { +const updateMicroserviceEndPoint = async function (req) { const microservice = req.body const microserviceUuid = req.params.uuid - return MicroservicesService.updateMicroserviceEndPoint(microserviceUuid, microservice, user, false) + return MicroservicesService.updateMicroserviceEndPoint(microserviceUuid, microservice, false) } -const updateMicroserviceYAMLEndPoint = async function (req, user) { +const updateMicroserviceYAMLEndPoint = async function (req) { const microserviceUuid = req.params.uuid const fileContent = req.file.buffer.toString() const microservice = await YAMLParserService.parseMicroserviceFile(fileContent) - await rvaluesVarSubstition(microservice, { self: microservice }, user) - return MicroservicesService.updateMicroserviceEndPoint(microserviceUuid, microservice, user, false) + await rvaluesVarSubstition(microservice, { self: microservice }) + return MicroservicesService.updateMicroserviceEndPoint(microserviceUuid, microservice, false) } -const deleteMicroserviceEndPoint = async function (req, user) { +const deleteMicroserviceEndPoint = async function (req) { const microserviceUuid = req.params.uuid const microserviceData = req.body || {} - return MicroservicesService.deleteMicroserviceEndPoint(microserviceUuid, microserviceData, user, false) + return MicroservicesService.deleteMicroserviceEndPoint(microserviceUuid, microserviceData, false) } -const getMicroservicesByApplicationEndPoint = async function (req, user) { +const getMicroservicesByApplicationEndPoint = async function (req) { // API Retro compatibility const flowId = req.query.flowId const applicationName = req.query.application - return MicroservicesService.listMicroservicesEndPoint({ applicationName, flowId }, user, false) + return MicroservicesService.listMicroservicesEndPoint({ applicationName, flowId }, false) } -const createMicroserviceRouteEndPoint = async function (req, user) { +const createMicroserviceRouteEndPoint = async function (req) { const sourceUuid = req.params.uuid const destUuid = req.params.receiverUuid - return MicroservicesService.createRouteEndPoint(sourceUuid, destUuid, user, false) + return MicroservicesService.createRouteEndPoint(sourceUuid, destUuid, false) } -const deleteMicroserviceRouteEndPoint = async function (req, user) { +const deleteMicroserviceRouteEndPoint = async function (req) { const sourceUuid = req.params.uuid const destUuid = req.params.receiverUuid - return MicroservicesService.deleteRouteEndPoint(sourceUuid, destUuid, user, false) + return MicroservicesService.deleteRouteEndPoint(sourceUuid, destUuid, false) } -const createMicroservicePortMappingEndPoint = async function (req, user) { +const createMicroservicePortMappingEndPoint = async function (req) { const uuid = req.params.uuid const portMappingData = req.body - return MicroservicesService.createPortMappingEndPoint(uuid, portMappingData, user, false) + return MicroservicesService.createPortMappingEndPoint(uuid, portMappingData, false) } -const deleteMicroservicePortMappingEndPoint = async function (req, user) { +const deleteMicroservicePortMappingEndPoint = async function (req) { const uuid = req.params.uuid const internalPort = req.params.internalPort - return MicroservicesService.deletePortMappingEndPoint(uuid, internalPort, user, false) + return MicroservicesService.deletePortMappingEndPoint(uuid, internalPort, false) } -const listMicroservicePortMappingsEndPoint = async function (req, user) { +const listMicroservicePortMappingsEndPoint = async function (req) { const uuid = req.params.uuid - const ports = await MicroservicesService.listMicroservicePortMappingsEndPoint(uuid, user, false) + const ports = await MicroservicesService.listMicroservicePortMappingsEndPoint(uuid, false) return { ports: ports } } -const createMicroserviceVolumeMappingEndPoint = async function (req, user) { +const createMicroserviceVolumeMappingEndPoint = async function (req) { const microserviceUuid = req.params.uuid const volumeMappingData = req.body - const volumeMapping = await MicroservicesService.createVolumeMappingEndPoint(microserviceUuid, volumeMappingData, user, false) + const volumeMapping = await MicroservicesService.createVolumeMappingEndPoint(microserviceUuid, volumeMappingData, false) return { id: volumeMapping.id } } -const listMicroserviceVolumeMappingsEndPoint = async function (req, user) { +const listMicroserviceVolumeMappingsEndPoint = async function (req) { const uuid = req.params.uuid - const volumeMappings = await MicroservicesService.listVolumeMappingsEndPoint(uuid, user, false) + const volumeMappings = await MicroservicesService.listVolumeMappingsEndPoint(uuid, false) return { volumeMappings: volumeMappings } } -const deleteMicroserviceVolumeMappingEndPoint = async function (req, user) { +const deleteMicroserviceVolumeMappingEndPoint = async function (req) { const uuid = req.params.uuid const id = req.params.id - return MicroservicesService.deleteVolumeMappingEndPoint(uuid, id, user, false) + return MicroservicesService.deleteVolumeMappingEndPoint(uuid, id, false) } -const listAllPublicPortsEndPoint = async function (req, user) { - return MicroservicesService.listAllPublicPortsEndPoint(user) +const listAllPublicPortsEndPoint = async function (req) { + return MicroservicesService.listAllPublicPortsEndPoint() } module.exports = { diff --git a/src/controllers/registry-controller.js b/src/controllers/registry-controller.js index 906db93cf..ab633cb0e 100644 --- a/src/controllers/registry-controller.js +++ b/src/controllers/registry-controller.js @@ -13,26 +13,26 @@ const RegistryService = require('../services/registry-service') -const createRegistryEndPoint = async function (req, user) { +const createRegistryEndPoint = async function (req) { const registry = req.body - return RegistryService.createRegistry(registry, user) + return RegistryService.createRegistry(registry) } -const getRegistriesEndPoint = async function (req, user) { - return RegistryService.findRegistries(user, false) +const getRegistriesEndPoint = async function (req) { + return RegistryService.findRegistries(false) } -const deleteRegistryEndPoint = async function (req, user) { +const deleteRegistryEndPoint = async function (req) { const deleteRegistry = { id: parseInt(req.params.id) } - return RegistryService.deleteRegistry(deleteRegistry, user, false) + return RegistryService.deleteRegistry(deleteRegistry, false) } -const updateRegistryEndPoint = async function (req, user) { +const updateRegistryEndPoint = async function (req) { const registry = req.body const registryId = req.params.id - return RegistryService.updateRegistry(registry, registryId, user, false) + return RegistryService.updateRegistry(registry, registryId, false) } module.exports = { diff --git a/src/controllers/routing-controller.js b/src/controllers/routing-controller.js index 01b5f8ec8..8d6df8bc4 100644 --- a/src/controllers/routing-controller.js +++ b/src/controllers/routing-controller.js @@ -13,32 +13,32 @@ const RoutingService = require('../services/routing-service') -const createRoutingEndpoint = async function (req, user) { +const createRoutingEndpoint = async function (req) { const routerData = req.body - return RoutingService.createRouting(routerData, user, false) + return RoutingService.createRouting(routerData, false) } -const getRoutingsEndPoint = async function (req, user) { - return RoutingService.getRoutings(user, false) +const getRoutingsEndPoint = async function (req) { + return RoutingService.getRoutings(false) } -const getRoutingEndPoint = async function (req, user) { +const getRoutingEndPoint = async function (req) { const routeName = req.params.name const appName = req.params.appName - return RoutingService.getRouting(appName, routeName, user, false) + return RoutingService.getRouting(appName, routeName, false) } -const updateRoutingEndpoint = async function (req, user) { +const updateRoutingEndpoint = async function (req) { const routeName = req.params.name const appName = req.params.appName const routeData = req.body - return RoutingService.updateRouting(appName, routeName, routeData, user, false) + return RoutingService.updateRouting(appName, routeName, routeData, false) } -const deleteRoutingEndpoint = async function (req, user) { +const deleteRoutingEndpoint = async function (req) { const routeName = req.params.name const appName = req.params.appName - return RoutingService.deleteRouting(appName, routeName, user, false) + return RoutingService.deleteRouting(appName, routeName, false) } module.exports = { diff --git a/src/controllers/tunnel-controller.js b/src/controllers/tunnel-controller.js index 7bc0ac9be..fb3ea34c9 100644 --- a/src/controllers/tunnel-controller.js +++ b/src/controllers/tunnel-controller.js @@ -15,7 +15,7 @@ const TunnelService = require('../services/tunnel-service') const Errors = require('../helpers/errors') const ErrorMessages = require('../helpers/error-messages') -const manageTunnelEndPoint = async function (req, user) { +const manageTunnelEndPoint = async function (req) { const action = req.body.action const tunnelData = { iofogUuid: req.params.id @@ -23,21 +23,21 @@ const manageTunnelEndPoint = async function (req, user) { switch (action) { case 'open': - await TunnelService.openTunnel(tunnelData, user, false) + await TunnelService.openTunnel(tunnelData, false) break case 'close': - await TunnelService.closeTunnel(tunnelData, user) + await TunnelService.closeTunnel(tunnelData) break default: throw new Errors.ValidationError(ErrorMessages.INVALID_ACTION_PROPERTY) } } -const getTunnelEndPoint = async function (req, user) { +const getTunnelEndPoint = async function (req) { const tunnelData = { iofogUuid: req.params.id } - return TunnelService.findTunnel(tunnelData, user) + return TunnelService.findTunnel(tunnelData) } module.exports = { diff --git a/src/services/application-service.js b/src/services/application-service.js index a823588f4..c337b9ec2 100644 --- a/src/services/application-service.js +++ b/src/services/application-service.js @@ -28,11 +28,11 @@ const remove = require('lodash/remove') const onlyUnique = (value, index, self) => self.indexOf(value) === index -const createApplicationEndPoint = async function (applicationData, user, isCLI, transaction) { +const createApplicationEndPoint = async function (applicationData, isCLI, transaction) { // if template is provided, use template data if (applicationData.template && applicationData.template.name) { applicationData = { - ...await ApplicationTemplateService.getApplicationDataFromTemplate(applicationData.template, user, isCLI, transaction), + ...await ApplicationTemplateService.getApplicationDataFromTemplate(applicationData.template, isCLI, transaction), isSystem: applicationData.isSystem, name: applicationData.name, description: applicationData.description, @@ -72,13 +72,13 @@ const createApplicationEndPoint = async function (applicationData, user, isCLI, try { if (applicationData.microservices) { for (const msvcData of applicationData.microservices) { - await MicroserviceService.createMicroserviceEndPoint(msvcData, user, isCLI, transaction) + await MicroserviceService.createMicroserviceEndPoint(msvcData, isCLI, transaction) } } if (applicationData.routes) { for (const routeData of applicationData.routes) { - await RoutingService.createRouting(routeData, user, isCLI, transaction) + await RoutingService.createRouting(routeData, isCLI, transaction) } } @@ -88,12 +88,12 @@ const createApplicationEndPoint = async function (applicationData, user, isCLI, } } catch (e) { // If anything failed during creating the application, delete all that was created - await deleteApplicationEndPoint({ name: application.name }, user, isCLI, transaction) + await deleteApplicationEndPoint({ name: application.name }, isCLI, transaction) throw e } } -const deleteApplicationEndPoint = async function (conditions, user, isCLI, transaction) { +const deleteApplicationEndPoint = async function (conditions, isCLI, transaction) { const whereObj = { ...conditions } @@ -105,7 +105,7 @@ const deleteApplicationEndPoint = async function (conditions, user, isCLI, trans } // Only patches the metadata (running, name, description, etc.) -const patchApplicationEndPoint = async function (applicationData, conditions, user, isCLI, transaction) { +const patchApplicationEndPoint = async function (applicationData, conditions, isCLI, transaction) { await Validator.validate(applicationData, Validator.schemas.applicationPatch) const oldApplication = await ApplicationManager.findOne({ ...conditions }, transaction) @@ -137,11 +137,11 @@ const patchApplicationEndPoint = async function (applicationData, conditions, us } // Updates the state (microservices, routes, etc.) -const updateApplicationEndPoint = async function (applicationData, name, user, isCLI, transaction) { +const updateApplicationEndPoint = async function (applicationData, name, isCLI, transaction) { // if template is provided, use template data if (applicationData.template && applicationData.template.name) { applicationData = { - ...await ApplicationTemplateService.getApplicationDataFromTemplate(applicationData.template, user, isCLI, transaction), + ...await ApplicationTemplateService.getApplicationDataFromTemplate(applicationData.template, isCLI, transaction), isSystem: applicationData.isSystem, name: applicationData.name || name, description: applicationData.description, @@ -188,10 +188,10 @@ const updateApplicationEndPoint = async function (applicationData, name, user, i await ApplicationManager.update(where, updateApplicationData, transaction) if (applicationData.microservices) { - await _updateMicroservices(application.name, applicationData.microservices, user, isCLI, transaction) + await _updateMicroservices(application.name, applicationData.microservices, isCLI, transaction) } if (applicationData.routes) { - await _updateRoutes(application.name, applicationData.routes, user, isCLI, transaction) + await _updateRoutes(application.name, applicationData.routes, isCLI, transaction) } if (oldApplication.isActivated !== applicationData.isActivated) { @@ -199,7 +199,7 @@ const updateApplicationEndPoint = async function (applicationData, name, user, i } } -const _updateRoutes = async function (application, routes, user, isCLI, transaction) { +const _updateRoutes = async function (application, routes, isCLI, transaction) { // Update routes const updatedRoutes = [...routes] const oldRoutes = await ApplicationManager.findApplicationRoutes({ name: application }, transaction) @@ -209,19 +209,19 @@ const _updateRoutes = async function (application, routes, user, isCLI, transact for (const oldRoute of oldRoutes) { const removed = remove(updatedRoutes, (n) => oldRoute.name === n.name) if (!removed.length) { - await RoutingService.deleteRouting(oldRoute.name, user, isCLI, transaction) + await RoutingService.deleteRouting(oldRoute.name, isCLI, transaction) } else { const updatedRoute = removed[0] - await RoutingService.updateRouting(application, updatedRoute.name, updatedRoute, user, isCLI, transaction) + await RoutingService.updateRouting(application, updatedRoute.name, updatedRoute, isCLI, transaction) } } // Create missing routes for (const route of updatedRoutes) { - await RoutingService.createRouting(route, user, isCLI, transaction) + await RoutingService.createRouting(route, isCLI, transaction) } } -const _updateMicroservices = async function (application, microservices, user, isCLI, transaction) { +const _updateMicroservices = async function (application, microservices, isCLI, transaction) { const updatedMicroservices = [...microservices] // Update microservices const oldMicroservices = await ApplicationManager.findApplicationMicroservices({ name: application }, transaction) @@ -238,14 +238,14 @@ const _updateMicroservices = async function (application, microservices, user, i iofogUuids.push(oldMsvc.iofogUuid) } else { const updatedMsvc = removed[0] - const updatedMicroservices = await MicroserviceService.updateMicroserviceEndPoint(oldMsvc.uuid, updatedMsvc, user, isCLI, transaction, false) + const updatedMicroservices = await MicroserviceService.updateMicroserviceEndPoint(oldMsvc.uuid, updatedMsvc, isCLI, transaction, false) oldMsvcsIofogUuids.push(updatedMicroservices.microserviceIofogUuid) updatedMsvcsUuid.push(updatedMicroservices.updatedMicroserviceIofogUuid) } } // Create missing microservices for (const microservice of updatedMicroservices) { - await MicroserviceService.createMicroserviceEndPoint(microservice, user, isCLI, transaction) + await MicroserviceService.createMicroserviceEndPoint(microservice, isCLI, transaction) } iofogUuids .filter(onlyUnique) @@ -270,7 +270,7 @@ const _updateMicroservices = async function (application, microservices, user, i }) } -const getUserApplicationsEndPoint = async function (user, isCLI, transaction) { +const getUserApplicationsEndPoint = async function (isCLI, transaction) { const application = { isSystem: false } @@ -300,7 +300,7 @@ async function _buildApplicationObject (application, transaction) { return application } -async function getApplication (conditions, user, isCLI, transaction) { +async function getApplication (conditions, isCLI, transaction) { const where = isCLI ? { ...conditions } : { ...conditions } @@ -314,8 +314,8 @@ async function getApplication (conditions, user, isCLI, transaction) { return application } -const getApplicationEndPoint = async function (conditions, user, isCLI, transaction) { - const application = await getApplication(conditions, user, isCLI, transaction) +const getApplicationEndPoint = async function (conditions, isCLI, transaction) { + const application = await getApplication(conditions, isCLI, transaction) return application } diff --git a/src/services/application-template-service.js b/src/services/application-template-service.js index 8fa309cb2..df68d89c2 100644 --- a/src/services/application-template-service.js +++ b/src/services/application-template-service.js @@ -24,7 +24,7 @@ const ApplicationTemplateVariableManager = require('../data/managers/application const TransactionDecorator = require('../decorators/transaction-decorator') const Validator = require('../schemas') -const createApplicationTemplateEndPoint = async function (applicationTemplateData, user, isCLI, transaction) { +const createApplicationTemplateEndPoint = async function (applicationTemplateData, isCLI, transaction) { // Add a name field to pass schema validation using the applicationCreate schema applicationTemplateData.application = { ...applicationTemplateData.application, name: 'validation' } await Validator.validate(applicationTemplateData, Validator.schemas.applicationTemplateCreate) @@ -56,12 +56,12 @@ const createApplicationTemplateEndPoint = async function (applicationTemplateDat } } catch (e) { // If anything failed during creating the application, delete all that was created - await deleteApplicationTemplateEndPoint({ name: applicationTemplate.name }, user, isCLI, transaction) + await deleteApplicationTemplateEndPoint({ name: applicationTemplate.name }, isCLI, transaction) throw e } } -const deleteApplicationTemplateEndPoint = async function (conditions, user, isCLI, transaction) { +const deleteApplicationTemplateEndPoint = async function (conditions, isCLI, transaction) { const whereObj = { ...conditions } @@ -70,7 +70,7 @@ const deleteApplicationTemplateEndPoint = async function (conditions, user, isCL await ApplicationTemplateManager.delete(where, transaction) } -const patchApplicationTemplateEndPoint = async function (applicationTemplateData, conditions, user, isCLI, transaction) { +const patchApplicationTemplateEndPoint = async function (applicationTemplateData, conditions, isCLI, transaction) { await Validator.validate(applicationTemplateData, Validator.schemas.applicationTemplatePatch) const oldApplicationTemplate = await ApplicationTemplateManager.findOne({ ...conditions }, transaction) @@ -95,7 +95,7 @@ const patchApplicationTemplateEndPoint = async function (applicationTemplateData await ApplicationTemplateManager.update(where, updateApplicationTemplateData, transaction) } -const updateApplicationTemplateEndPoint = async function (applicationTemplateData, name, user, isCLI, transaction) { +const updateApplicationTemplateEndPoint = async function (applicationTemplateData, name, isCLI, transaction) { // Add a name field to pass schema validation using the applicationCreate schema applicationTemplateData.application = { ...applicationTemplateData.application, name: 'validation' } await Validator.validate(applicationTemplateData, Validator.schemas.applicationTemplateUpdate) @@ -105,7 +105,7 @@ const updateApplicationTemplateEndPoint = async function (applicationTemplateDat const oldApplicationTemplate = await ApplicationTemplateManager.findOne({ name }, transaction) if (!oldApplicationTemplate) { - return createApplicationTemplateEndPoint({ ...applicationTemplateData, name }, user, isCLI, transaction) + return createApplicationTemplateEndPoint({ ...applicationTemplateData, name }, isCLI, transaction) } if (applicationTemplateData.name) { await _checkForDuplicateName(applicationTemplateData.name, oldApplicationTemplate.id, transaction) @@ -124,7 +124,7 @@ const updateApplicationTemplateEndPoint = async function (applicationTemplateDat await ApplicationTemplateManager.update(where, updateApplicationTemplateData, transaction) if (applicationTemplateData.variables) { - await _updateVariables(oldApplicationTemplate.id, applicationTemplateData.variables, user, isCLI, transaction) + await _updateVariables(oldApplicationTemplate.id, applicationTemplateData.variables, isCLI, transaction) } return { @@ -146,14 +146,14 @@ const _createVariable = async function (applicationTemplateId, variableData, tra return ApplicationTemplateVariableManager.create({ ...newVariable, applicationTemplateId }, transaction) } -const _updateVariables = async function (applicationTemplateId, variables, user, isCLI, transaction) { +const _updateVariables = async function (applicationTemplateId, variables, isCLI, transaction) { await ApplicationTemplateVariableManager.delete({ applicationTemplateId }, transaction) for (const variableData of variables) { await _createVariable(applicationTemplateId, variableData, transaction) } } -const getUserApplicationTemplatesEndPoint = async function (user, isCLI, transaction) { +const getUserApplicationTemplatesEndPoint = async function (isCLI, transaction) { const application = { } @@ -187,7 +187,7 @@ const getAllApplicationTemplatesEndPoint = async function (isCLI, transaction) { } } -async function getApplicationTemplate (conditions, user, isCLI, transaction) { +async function getApplicationTemplate (conditions, isCLI, transaction) { const where = isCLI ? { ...conditions } : { ...conditions } @@ -200,11 +200,11 @@ async function getApplicationTemplate (conditions, user, isCLI, transaction) { return _buildGetApplicationObj(application) } -const getApplicationTemplateEndPoint = async function (name, user, isCLI, transaction) { - return getApplicationTemplate(name, user, isCLI, transaction) +const getApplicationTemplateEndPoint = async function (name, isCLI, transaction) { + return getApplicationTemplate(name, isCLI, transaction) } -const getApplicationDataFromTemplate = async function (deploymentData, user, isCLI, transaction) { +const getApplicationDataFromTemplate = async function (deploymentData, isCLI, transaction) { await Validator.validate(deploymentData, Validator.schemas.applicationTemplateDeploy) const applicationTemplateDBObject = await ApplicationTemplateManager.findOnePopulated({ name: deploymentData.name }, transaction) @@ -236,7 +236,7 @@ const getApplicationDataFromTemplate = async function (deploymentData, user, isC } // default values are overwritten by user defined values, and self is always overwritten to the current object - await rvaluesVarSubstition(newApplication, { ...defaultVariablesValues, ...userProvidedVariables, self: newApplication }, user) + await rvaluesVarSubstition(newApplication, { ...defaultVariablesValues, ...userProvidedVariables, self: newApplication }) for (const msvc of newApplication.microservices) { // Send it back as a string for application creation and validation diff --git a/src/services/catalog-service.js b/src/services/catalog-service.js index 9b7a07a77..a6c0da298 100644 --- a/src/services/catalog-service.js +++ b/src/services/catalog-service.js @@ -26,11 +26,11 @@ const RegistryManager = require('../data/managers/registry-manager') const MicroserviceManager = require('../data/managers/microservice-manager') const MicroseriveStates = require('../enums/microservice-state') -const createCatalogItemEndPoint = async function (data, user, transaction) { +const createCatalogItemEndPoint = async function (data, transaction) { await Validator.validate(data, Validator.schemas.catalogItemCreate) await _checkForDuplicateName(data.name, transaction) await _checkForRestrictedPublisher(data.publisher) - const catalogItem = await _createCatalogItem(data, user, transaction) + const catalogItem = await _createCatalogItem(data, transaction) await _createCatalogImages(data, catalogItem, transaction) await _createCatalogItemInputType(data, catalogItem, transaction) await _createCatalogItemOutputType(data, catalogItem, transaction) @@ -40,7 +40,7 @@ const createCatalogItemEndPoint = async function (data, user, transaction) { } } -const updateCatalogItemEndPoint = async function (id, data, user, isCLI, transaction) { +const updateCatalogItemEndPoint = async function (id, data, isCLI, transaction) { await Validator.validate(data, Validator.schemas.catalogItemUpdate) const where = isCLI @@ -57,7 +57,7 @@ const updateCatalogItemEndPoint = async function (id, data, user, isCLI, transac await _updateCatalogItemIOTypes(data, where, transaction) } -const listCatalogItemsEndPoint = async function (user, isCLI, transaction) { +const listCatalogItemsEndPoint = async function (isCLI, transaction) { const where = isCLI ? {} : { @@ -74,7 +74,7 @@ const listCatalogItemsEndPoint = async function (user, isCLI, transaction) { } } -async function getCatalogItem (id, user, isCLI, transaction) { +async function getCatalogItem (id, isCLI, transaction) { const where = isCLI ? { id: id } : { @@ -93,11 +93,11 @@ async function getCatalogItem (id, user, isCLI, transaction) { return item } -const getCatalogItemEndPoint = async function (id, user, isCLI, transaction) { - return getCatalogItem(id, user, isCLI, transaction) +const getCatalogItemEndPoint = async function (id, isCLI, transaction) { + return getCatalogItem(id, isCLI, transaction) } -const deleteCatalogItemEndPoint = async function (id, user, isCLI, transaction) { +const deleteCatalogItemEndPoint = async function (id, isCLI, transaction) { const where = isCLI ? { id: id @@ -200,7 +200,7 @@ const _checkIfItemExists = async function (where, transaction) { return item } -const _createCatalogItem = async function (data, user, transaction) { +const _createCatalogItem = async function (data, transaction) { let catalogItem = { name: data.name, description: data.description, diff --git a/src/services/diagnostic-service.js b/src/services/diagnostic-service.js index 0b8502a12..f138683cc 100644 --- a/src/services/diagnostic-service.js +++ b/src/services/diagnostic-service.js @@ -26,9 +26,9 @@ const logger = require('../logger') const FtpClient = require('ftp') const mime = require('mime') -const changeMicroserviceStraceState = async function (uuid, data, user, isCLI, transaction) { +const changeMicroserviceStraceState = async function (uuid, data, isCLI, transaction) { await Validator.validate(data, Validator.schemas.straceStateUpdate) - const microservice = await MicroserviceService.getMicroserviceEndPoint(uuid, user, isCLI, transaction) + const microservice = await MicroserviceService.getMicroserviceEndPoint(uuid, isCLI, transaction) if (microservice.iofogUuid === null) { throw new Errors.ValidationError(ErrorMessages.STRACE_WITHOUT_FOG) } @@ -42,7 +42,7 @@ const changeMicroserviceStraceState = async function (uuid, data, user, isCLI, t await ChangeTrackingService.update(microservice.iofogUuid, ChangeTrackingService.events.diagnostics, transaction) } -const getMicroserviceStraceData = async function (uuid, data, user, isCLI, transaction) { +const getMicroserviceStraceData = async function (uuid, data, isCLI, transaction) { await Validator.validate(data, Validator.schemas.straceGetData) const microserviceWhere = isCLI @@ -75,7 +75,7 @@ const getMicroserviceStraceData = async function (uuid, data, user, isCLI, trans } } -const postMicroserviceStraceDatatoFtp = async function (uuid, data, user, isCLI, transaction) { +const postMicroserviceStraceDatatoFtp = async function (uuid, data, isCLI, transaction) { await Validator.validate(data, Validator.schemas.stracePostToFtp) const microserviceWhere = isCLI @@ -100,7 +100,7 @@ const postMicroserviceStraceDatatoFtp = async function (uuid, data, user, isCLI, _deleteFile(filePath) } -const postMicroserviceImageSnapshotCreate = async function (microserviceUuid, user, isCLI, transaction) { +const postMicroserviceImageSnapshotCreate = async function (microserviceUuid, isCLI, transaction) { const where = isCLI ? { uuid: microserviceUuid @@ -126,7 +126,7 @@ const postMicroserviceImageSnapshotCreate = async function (microserviceUuid, us await ChangeTrackingService.update(microservice.iofogUuid, ChangeTrackingService.events.imageSnapshot, transaction) } -const getMicroserviceImageSnapshot = async function (microserviceUuid, user, isCLI, transaction) { +const getMicroserviceImageSnapshot = async function (microserviceUuid, isCLI, transaction) { const where = isCLI ? { uuid: microserviceUuid diff --git a/src/services/edge-resource-service.js b/src/services/edge-resource-service.js index 750e040a7..dfa5052d5 100644 --- a/src/services/edge-resource-service.js +++ b/src/services/edge-resource-service.js @@ -155,7 +155,7 @@ async function _updateOrchestrationTags (tagArray, edgeResourceModel, transactio } } -async function createEdgeResource (edgeResourceData, user, transaction) { +async function createEdgeResource (edgeResourceData, transaction) { await Validator.validate(edgeResourceData, Validator.schemas.edgeResourceCreate) const { name, description, version, orchestrationTags, interfaceProtocol, display, custom } = edgeResourceData const existingResource = await EdgeResourceManager.findOne({ name, version }, transaction) @@ -192,7 +192,7 @@ async function createEdgeResource (edgeResourceData, user, transaction) { return buildGetObject(resource) } -async function updateEdgeResourceEndpoint (edgeResourceData, { name: oldName, version }, user, transaction) { +async function updateEdgeResourceEndpoint (edgeResourceData, { name: oldName, version }, transaction) { await Validator.validate(edgeResourceData, Validator.schemas.edgeResourceUpdate) const oldData = await EdgeResourceManager.findOne({ name: oldName, version }, transaction) if (!oldData) { @@ -202,7 +202,7 @@ async function updateEdgeResourceEndpoint (edgeResourceData, { name: oldName, ve if (!edgeResourceData.version) { edgeResourceData.version = version } - return createEdgeResource(edgeResourceData, user, transaction) + return createEdgeResource(edgeResourceData, transaction) } if (edgeResourceData.version && oldData.version !== edgeResourceData.version) { throw new Errors.ValidationError(AppHelper.formatMessage(ErrorMessages.RESOURCE_UPDATE_VERSION_MISMATCH)) @@ -244,7 +244,7 @@ async function updateEdgeResourceEndpoint (edgeResourceData, { name: oldName, ve } } -async function deleteEdgeResource ({ name, version }, user, transaction) { +async function deleteEdgeResource ({ name, version }, transaction) { const resource = await EdgeResourceManager.findOne({ name, version }, transaction) if (!resource) { throw new Errors.NotFoundError(AppHelper.formatMessage(ErrorMessages.NOT_FOUND_RESOURCE_NAME_VERSION, name, version)) @@ -258,7 +258,7 @@ async function deleteEdgeResource ({ name, version }, user, transaction) { await EdgeResourceManager.delete({ name, version }, transaction) } -async function linkEdgeResource ({ name, version }, uuid, user, transaction) { +async function linkEdgeResource ({ name, version }, uuid, transaction) { const resource = await EdgeResourceManager.findOne({ name, version }, transaction) if (!resource) { throw new Errors.NotFoundError(AppHelper.formatMessage(ErrorMessages.NOT_FOUND_RESOURCE_NAME_VERSION, name, version)) @@ -274,7 +274,7 @@ async function linkEdgeResource ({ name, version }, uuid, user, transaction) { await ChangeTrackingService.update(agent.uuid, ChangeTrackingService.events.edgeResources, transaction) } -async function unlinkEdgeResource ({ name, version }, uuid, user, transaction) { +async function unlinkEdgeResource ({ name, version }, uuid, transaction) { const resource = await EdgeResourceManager.findOne({ name, version }, transaction) if (!resource) { throw new Errors.NotFoundError(AppHelper.formatMessage(ErrorMessages.NOT_FOUND_RESOURCE_NAME_VERSION, name, version)) diff --git a/src/services/iofog-service.js b/src/services/iofog-service.js index 9f3bb6d04..bc690d3cf 100644 --- a/src/services/iofog-service.js +++ b/src/services/iofog-service.js @@ -35,7 +35,7 @@ const Constants = require('../helpers/constants') const Op = require('sequelize').Op const lget = require('lodash/get') -async function createFogEndPoint (fogData, user, isCLI, transaction) { +async function createFogEndPoint (fogData, isCLI, transaction) { await Validator.validate(fogData, Validator.schemas.iofogCreate) let createFogData = { @@ -119,11 +119,11 @@ async function createFogEndPoint (fogData, user, isCLI, transaction) { await ChangeTrackingService.create(fog.uuid, transaction) if (fogData.abstractedHardwareEnabled) { - await _createHalMicroserviceForFog(fog, null, user, transaction) + await _createHalMicroserviceForFog(fog, null, transaction) } if (fogData.bluetoothEnabled) { - await _createBluetoothMicroserviceForFog(fog, null, user, transaction) + await _createBluetoothMicroserviceForFog(fog, null, transaction) } await ChangeTrackingService.update(createFogData.uuid, ChangeTrackingService.events.microserviceCommon, transaction) @@ -145,7 +145,7 @@ async function _setTags (fogModel, tagsArray, transaction) { } } -async function updateFogEndPoint (fogData, user, isCLI, transaction) { +async function updateFogEndPoint (fogData, isCLI, transaction) { await Validator.validate(fogData, Validator.schemas.iofogUpdate) const queryFogData = { uuid: fogData.uuid } @@ -263,7 +263,7 @@ async function updateFogEndPoint (fogData, user, isCLI, transaction) { msChanged = true } if (oldFog.abstractedHardwareEnabled === false && fogData.abstractedHardwareEnabled === true) { - await _createHalMicroserviceForFog(fogData, oldFog, user, transaction) + await _createHalMicroserviceForFog(fogData, oldFog, transaction) msChanged = true } @@ -272,7 +272,7 @@ async function updateFogEndPoint (fogData, user, isCLI, transaction) { msChanged = true } if (oldFog.bluetoothEnabled === false && fogData.bluetoothEnabled === true) { - await _createBluetoothMicroserviceForFog(fogData, oldFog, user, transaction) + await _createBluetoothMicroserviceForFog(fogData, oldFog, transaction) msChanged = true } @@ -354,7 +354,7 @@ async function _deleteFogRouter (fogData, transaction) { await MicroserviceManager.delete({ catalogItemId: routerCatalog.id, iofogUuid: fogData.uuid }, transaction) } -async function deleteFogEndPoint (fogData, user, isCLI, transaction) { +async function deleteFogEndPoint (fogData, isCLI, transaction) { await Validator.validate(fogData, Validator.schemas.iofogDelete) const queryFogData = { uuid: fogData.uuid } @@ -432,7 +432,7 @@ function _mapTags (fog) { return fog.tags ? fog.tags.map(t => t.value) : [] } -async function getFog (fogData, user, isCLI, transaction) { +async function getFog (fogData, isCLI, transaction) { await Validator.validate(fogData, Validator.schemas.iofogGet) const queryFogData = fogData.uuid ? { uuid: fogData.uuid } : { name: fogData.name } @@ -445,15 +445,15 @@ async function getFog (fogData, user, isCLI, transaction) { return _getFogExtraInformation(fog, transaction) } -async function getFogEndPoint (fogData, user, isCLI, transaction) { - return getFog(fogData, user, isCLI, transaction) +async function getFogEndPoint (fogData, isCLI, transaction) { + return getFog(fogData, isCLI, transaction) } -async function getFogListEndPoint (filters, user, isCLI, isSystem, transaction) { +async function getFogListEndPoint (filters, isCLI, isSystem, transaction) { await Validator.validate(filters, Validator.schemas.iofogFilters) // If listing system agent through REST API, make sure user is authenticated - if (isSystem && !isCLI && !lget(user, 'id')) { + if (isSystem && !isCLI && !lget('id')) { throw new Errors.AuthenticationError('Unauthorized') } @@ -470,7 +470,7 @@ async function getFogListEndPoint (filters, user, isCLI, isSystem, transaction) } } -async function generateProvisioningKeyEndPoint (fogData, user, isCLI, transaction) { +async function generateProvisioningKeyEndPoint (fogData, isCLI, transaction) { await Validator.validate(fogData, Validator.schemas.iofogGenerateProvision) const queryFogData = { uuid: fogData.uuid } @@ -494,7 +494,7 @@ async function generateProvisioningKeyEndPoint (fogData, user, isCLI, transactio } } -async function setFogVersionCommandEndPoint (fogVersionData, user, isCLI, transaction) { +async function setFogVersionCommandEndPoint (fogVersionData, isCLI, transaction) { await Validator.validate(fogVersionData, Validator.schemas.iofogSetVersionCommand) const queryFogData = { uuid: fogVersionData.uuid } @@ -516,12 +516,12 @@ async function setFogVersionCommandEndPoint (fogVersionData, user, isCLI, transa throw new Errors.ValidationError(ErrorMessages.INVALID_VERSION_COMMAND_UPGRADE) } - await generateProvisioningKeyEndPoint({ uuid: fogVersionData.uuid }, user, isCLI, transaction) + await generateProvisioningKeyEndPoint({ uuid: fogVersionData.uuid }, isCLI, transaction) await FogVersionCommandManager.updateOrCreate({ iofogUuid: fogVersionData.uuid }, newVersionCommand, transaction) await ChangeTrackingService.update(fogVersionData.uuid, ChangeTrackingService.events.version, transaction) } -async function setFogRebootCommandEndPoint (fogData, user, isCLI, transaction) { +async function setFogRebootCommandEndPoint (fogData, isCLI, transaction) { await Validator.validate(fogData, Validator.schemas.iofogReboot) const queryFogData = { uuid: fogData.uuid } @@ -534,7 +534,7 @@ async function setFogRebootCommandEndPoint (fogData, user, isCLI, transaction) { await ChangeTrackingService.update(fogData.uuid, ChangeTrackingService.events.reboot, transaction) } -async function getHalHardwareInfoEndPoint (uuidObj, user, isCLI, transaction) { +async function getHalHardwareInfoEndPoint (uuidObj, isCLI, transaction) { await Validator.validate(uuidObj, Validator.schemas.halGet) const fog = await FogManager.findOne({ @@ -549,7 +549,7 @@ async function getHalHardwareInfoEndPoint (uuidObj, user, isCLI, transaction) { }, transaction) } -async function getHalUsbInfoEndPoint (uuidObj, user, isCLI, transaction) { +async function getHalUsbInfoEndPoint (uuidObj, isCLI, transaction) { await Validator.validate(uuidObj, Validator.schemas.halGet) const fog = await FogManager.findOne({ @@ -600,7 +600,7 @@ async function _processDeleteCommand (fog, transaction) { await FogManager.delete({ uuid: fog.uuid }, transaction) } -async function _createHalMicroserviceForFog (fogData, oldFog, user, transaction) { +async function _createHalMicroserviceForFog (fogData, oldFog, transaction) { const halItem = await CatalogService.getHalCatalogItem(transaction) const halMicroserviceData = { @@ -627,7 +627,7 @@ async function _deleteHalMicroserviceByFog (fogData, transaction) { await MicroserviceManager.delete(deleteHalMicroserviceData, transaction) } -async function _createBluetoothMicroserviceForFog (fogData, oldFog, user, transaction) { +async function _createBluetoothMicroserviceForFog (fogData, oldFog, transaction) { const bluetoothItem = await CatalogService.getBluetoothCatalogItem(transaction) const bluetoothMicroserviceData = { @@ -654,7 +654,7 @@ async function _deleteBluetoothMicroserviceByFog (fogData, transaction) { await MicroserviceManager.delete(deleteBluetoothMicroserviceData, transaction) } -async function setFogPruneCommandEndPoint (fogData, user, isCLI, transaction) { +async function setFogPruneCommandEndPoint (fogData, isCLI, transaction) { await Validator.validate(fogData, Validator.schemas.iofogPrune) const queryFogData = { uuid: fogData.uuid } diff --git a/src/services/microservice-ports/default.js b/src/services/microservice-ports/default.js index 8ca6ac690..07b504909 100644 --- a/src/services/microservice-ports/default.js +++ b/src/services/microservice-ports/default.js @@ -180,11 +180,11 @@ async function validatePublicPortAppHostTemplate (extraHost, templateArgs, msvc, throw new Errors.ValidationError(AppHelper.formatMessage(ErrorMessages.NOT_FOUND_HOST_TEMPLATE, templateArgs[4])) } -async function movePublicPortsToNewFog (updatedMicroservice, user, transaction) { +async function movePublicPortsToNewFog (updatedMicroservice, transaction) { const portMappings = await updatedMicroservice.getPorts() for (const portMapping of portMappings) { if (portMapping.isProxy) { - Proxy.moveProxyPortsToNewFog(updatedMicroservice, portMapping, user, transaction) + Proxy.moveProxyPortsToNewFog(updatedMicroservice, portMapping, transaction) continue } else if (!portMapping.isPublic) { continue @@ -201,13 +201,13 @@ async function movePublicPortsToNewFog (updatedMicroservice, user, transaction) host: destAgentsRouter.host, port: destAgentsRouter.messagingPort } - const newProxy = await _createOrUpdateProxyMicroservice(localMapping, networkRouter, updatedMicroservice.iofogUuid, localProxy.catalogItemId, user, transaction) + const newProxy = await _createOrUpdateProxyMicroservice(localMapping, networkRouter, updatedMicroservice.iofogUuid, localProxy.catalogItemId, transaction) publicPort.localProxyId = newProxy.uuid await MicroservicePublicPortManager.updateOrCreate({ id: publicPort.id }, publicPort.toJSON(), transaction) } } -async function createPortMapping (microservice, portMappingData, user, transaction) { +async function createPortMapping (microservice, portMappingData, transaction) { if (!microservice.iofogUuid) { throw new Errors.ValidationError(AppHelper.formatMessage(ErrorMessages.REQUIRED_FOG_NODE)) } @@ -231,15 +231,15 @@ async function createPortMapping (microservice, portMappingData, user, transacti portMappingData.protocol = portMappingData.protocol || '' if (portMappingData.public) { - return _createPublicPortMapping(microservice, portMappingData, user, transaction) + return _createPublicPortMapping(microservice, portMappingData, transaction) } else if (portMappingData.proxy) { - return Proxy.createProxyPortMapping(microservice, portMappingData, user, transaction) + return Proxy.createProxyPortMapping(microservice, portMappingData, transaction) } else { - return _createSimplePortMapping(microservice, portMappingData, user, transaction) + return _createSimplePortMapping(microservice, portMappingData, transaction) } } -async function _createOrUpdateProxyMicroservice (mapping, networkRouter, hostUuid, proxyCatalogId, user, transaction) { +async function _createOrUpdateProxyMicroservice (mapping, networkRouter, hostUuid, proxyCatalogId, transaction) { const existingProxy = await MicroserviceManager.findOne({ catalogItemId: proxyCatalogId, iofogUuid: hostUuid }, transaction) if (existingProxy) { const config = JSON.parse(existingProxy.config || '{}') @@ -267,7 +267,7 @@ async function _createOrUpdateProxyMicroservice (mapping, networkRouter, hostUui return res } -async function _createPublicPortMapping (microservice, portMappingData, user, transaction) { +async function _createPublicPortMapping (microservice, portMappingData, transaction) { const isTcp = portMappingData.public.protocol ? portMappingData.public.protocol.toLowerCase() === 'tcp' : false const isUdp = portMappingData.protocol.toLowerCase() === 'udp' const localAgent = portMappingData.localAgent // This is populated by validating the ports @@ -289,7 +289,6 @@ async function _createPublicPortMapping (microservice, portMappingData, user, tr localNetworkRouter, microservice.iofogUuid, proxyCatalog.id, - user, transaction) : null @@ -307,7 +306,6 @@ async function _createPublicPortMapping (microservice, portMappingData, user, tr remoteNetworkRouter, portMappingData.publicHost.uuid, proxyCatalog.id, - user, transaction) : null } @@ -345,13 +343,13 @@ async function _createPublicPortMapping (microservice, portMappingData, user, tr } } -async function _deletePortMapping (microservice, portMapping, user, transaction) { +async function _deletePortMapping (microservice, portMapping, transaction) { if (portMapping.isPublic) { await _deletePublicPortMapping(microservice, portMapping, transaction) } else if (portMapping.isProxy) { - return Proxy.deleteProxyPortMapping(microservice, portMapping, user, transaction) + return Proxy.deleteProxyPortMapping(microservice, portMapping, transaction) } else { - await _deleteSimplePortMapping(microservice, portMapping, user, transaction) + await _deleteSimplePortMapping(microservice, portMapping, transaction) } } @@ -386,7 +384,7 @@ async function _deletePublicPortMapping (microservice, portMapping, transaction) await MicroservicePortManager.delete({ id: portMapping.id }, transaction) } -async function _createSimplePortMapping (microservice, portMappingData, user, transaction) { +async function _createSimplePortMapping (microservice, portMappingData, transaction) { // create port mapping const mappingData = { isPublic: false, @@ -401,7 +399,7 @@ async function _createSimplePortMapping (microservice, portMappingData, user, tr await switchOnUpdateFlagsForMicroservicesForPortMapping(microservice, false, transaction) } -async function _deleteSimplePortMapping (microservice, msPorts, user, transaction) { +async function _deleteSimplePortMapping (microservice, msPorts, transaction) { await MicroservicePortManager.delete({ id: msPorts.id }, transaction) const updateRebuildMs = { @@ -470,7 +468,7 @@ async function switchOnUpdateFlagsForMicroservicesForPortMapping (microservice, } } -async function listPortMappings (microserviceUuid, user, isCLI, transaction) { +async function listPortMappings (microserviceUuid, isCLI, transaction) { const where = isCLI ? { uuid: microserviceUuid } : { uuid: microserviceUuid } @@ -483,7 +481,7 @@ async function listPortMappings (microserviceUuid, user, isCLI, transaction) { return _buildPortsList(portsPairs, transaction) } -async function deletePortMapping (microserviceUuid, internalPort, user, isCLI, transaction) { +async function deletePortMapping (microserviceUuid, internalPort, isCLI, transaction) { const where = isCLI ? { uuid: microserviceUuid } : { uuid: microserviceUuid } @@ -505,13 +503,13 @@ async function deletePortMapping (microserviceUuid, internalPort, user, isCLI, t throw new Errors.NotFoundError('port mapping not exists') } - await _deletePortMapping(microservice, msPorts, user, transaction) + await _deletePortMapping(microservice, msPorts, transaction) } -async function deletePortMappings (microservice, user, transaction) { +async function deletePortMappings (microservice, transaction) { const portMappings = await MicroservicePortManager.findAll({ microserviceUuid: microservice.uuid }, transaction) for (const ports of portMappings) { - await _deletePortMapping(microservice, ports, user, transaction) + await _deletePortMapping(microservice, ports, transaction) } } @@ -519,7 +517,7 @@ async function getPortMappings (microserviceUuid, transaction) { return MicroservicePortManager.findAll({ microserviceUuid }, transaction) } -function listAllPublicPorts (user, transaction) { +function listAllPublicPorts (transaction) { return MicroservicePortManager.findAllPublicPorts(transaction) } diff --git a/src/services/microservice-ports/proxy.js b/src/services/microservice-ports/proxy.js index 0a7e2dab2..d16a31f63 100644 --- a/src/services/microservice-ports/proxy.js +++ b/src/services/microservice-ports/proxy.js @@ -20,7 +20,7 @@ const MicroservicePortManager = require('../../data/managers/microservice-port-m const MicroserviceProxyPortManager = require('../../data/managers/microservice-proxy-port-manager') const ProxyBrokerClient = require('../../helpers/proxy-broker-client') -async function _createOrUpdatePortRouterMicroservice (existingProxy, localPort, protocol, portRouterServerConfig, hostUuid, portRouterCatalogId, microserviceUuid, user, transaction) { +async function _createOrUpdatePortRouterMicroservice (existingProxy, localPort, protocol, portRouterServerConfig, hostUuid, portRouterCatalogId, microserviceUuid, transaction) { const proxyConfig = { name: `${microserviceUuid}_${localPort}`, server_addr: portRouterServerConfig.host, @@ -59,7 +59,7 @@ async function _createOrUpdatePortRouterMicroservice (existingProxy, localPort, return res } -async function createProxyPortMapping (microservice, portMappingData, user, transaction) { +async function createProxyPortMapping (microservice, portMappingData, transaction) { const protocol = portMappingData.protocol || 'tcp' // create proxy microservices @@ -82,7 +82,6 @@ async function createProxyPortMapping (microservice, portMappingData, user, tran microservice.iofogUuid, portRouterCatalog.id, microservice.uuid, - user, transaction) const mappingData = { @@ -130,7 +129,7 @@ async function buildProxyPortMapping (pm, mapping, transaction) { } } -async function deleteProxyPortMapping (microservice, portMapping, user, transaction) { +async function deleteProxyPortMapping (microservice, portMapping, transaction) { const proxyPort = await portMapping.getProxyPort() if (proxyPort) { await _updateOrDeleteProxyMicroservice(proxyPort, false, transaction) @@ -165,7 +164,7 @@ async function _updateOrDeleteProxyMicroservice (proxyPort, isMove, transaction) } } -async function moveProxyPortsToNewFog (updatedMicroservice, portMapping, user, transaction) { +async function moveProxyPortsToNewFog (updatedMicroservice, portMapping, transaction) { const proxyPort = await portMapping.getProxyPort() const localProxy = await MicroserviceManager.findOne({ uuid: proxyPort.localProxyId }, transaction) await _updateOrDeleteProxyMicroservice(proxyPort, true, transaction) @@ -194,7 +193,6 @@ async function moveProxyPortsToNewFog (updatedMicroservice, portMapping, user, t updatedMicroservice.iofogUuid, localProxy.catalogItemId, updatedMicroservice.uuid, - user, transaction) proxyPort.localProxyId = newProxy.uuid diff --git a/src/services/microservices-service.js b/src/services/microservices-service.js index 4c90f7185..55156d1ce 100644 --- a/src/services/microservices-service.js +++ b/src/services/microservices-service.js @@ -37,14 +37,14 @@ const { VOLUME_MAPPING_DEFAULT } = require('../helpers/constants') const constants = require('../helpers/constants') const isEqual = require('lodash/isEqual') -async function listMicroservicesEndPoint (opt, user, isCLI, transaction) { +async function listMicroservicesEndPoint (opt, isCLI, transaction) { // API retro compatibility const { applicationName, flowId } = opt - let application = await _validateApplication(applicationName, user, isCLI, transaction) + let application = await _validateApplication(applicationName, isCLI, transaction) if (flowId) { // _validateApplication wil try by ID if it fails finding by name - application = await _validateApplication(flowId, user, isCLI, transaction) + application = await _validateApplication(flowId, isCLI, transaction) } const where = application ? { applicationId: application.id, delete: false } : { delete: false, applicationId: { [Op.ne]: null } } @@ -60,7 +60,7 @@ async function listMicroservicesEndPoint (opt, user, isCLI, transaction) { } } -async function getMicroserviceEndPoint (microserviceUuid, user, isCLI, transaction) { +async function getMicroserviceEndPoint (microserviceUuid, isCLI, transaction) { if (!isCLI) { await _validateMicroserviceOnGet(microserviceUuid, transaction) } @@ -150,7 +150,7 @@ async function _validateAgentHostTemplate (extraHost, templateArgs, transaction) return extraHost } -async function _validateExtraHost (extraHostData, user, transaction) { +async function _validateExtraHost (extraHostData, transaction) { const extraHost = { templateType: 'Litteral', name: extraHostData.name, @@ -171,13 +171,13 @@ async function _validateExtraHost (extraHostData, user, transaction) { throw new Errors.ValidationError(AppHelper.formatMessage(ErrorMessages.INVALID_HOST_TEMPLATE, template)) } -async function _validateExtraHosts (microserviceData, user, transaction) { +async function _validateExtraHosts (microserviceData, transaction) { if (!microserviceData.extraHosts || microserviceData.extraHosts.length === 0) { return [] } const extraHosts = [] for (const extraHost of microserviceData.extraHosts) { - extraHosts.push(await _validateExtraHost(extraHost, user, transaction)) + extraHosts.push(await _validateExtraHost(extraHost, transaction)) } return extraHosts } @@ -195,7 +195,7 @@ function _validateImageFogType (microserviceData, fog, images) { } } -async function _findFog (microserviceData, user, isCLI, transaction) { +async function _findFog (microserviceData, isCLI, transaction) { const fogConditions = {} if (microserviceData.iofogUuid) { fogConditions.uuid = microserviceData.iofogUuid @@ -205,7 +205,7 @@ async function _findFog (microserviceData, user, isCLI, transaction) { return FogManager.findOne(fogConditions, transaction) } -async function createMicroserviceEndPoint (microserviceData, user, isCLI, transaction) { +async function createMicroserviceEndPoint (microserviceData, isCLI, transaction) { // API Retro compatibility if (!microserviceData.application) { microserviceData.application = microserviceData.flowId @@ -213,7 +213,7 @@ async function createMicroserviceEndPoint (microserviceData, user, isCLI, transa await Validator.validate(microserviceData, Validator.schemas.microserviceCreate) // find fog - const fog = await _findFog(microserviceData, user, isCLI, transaction) + const fog = await _findFog(microserviceData, isCLI, transaction) if (!fog) { throw new Errors.ValidationError(AppHelper.formatMessage(ErrorMessages.INVALID_IOFOG_UUID, microserviceData.iofogUuid || microserviceData.agentName)) } @@ -224,7 +224,7 @@ async function createMicroserviceEndPoint (microserviceData, user, isCLI, transa // validate images if (microserviceData.catalogItemId) { // validate catalog item - const catalogItem = await CatalogService.getCatalogItem(microserviceData.catalogItemId, user, isCLI, transaction) + const catalogItem = await CatalogService.getCatalogItem(microserviceData.catalogItemId, isCLI, transaction) _validateImagesAgainstCatalog(catalogItem, microserviceData.images || []) microserviceData.images = catalogItem.images _validateImageFogType(microserviceData, fog, catalogItem.images) @@ -237,13 +237,13 @@ async function createMicroserviceEndPoint (microserviceData, user, isCLI, transa } // validate extraHosts - const extraHosts = await _validateExtraHosts(microserviceData, user, transaction) + const extraHosts = await _validateExtraHosts(microserviceData, transaction) await MicroservicePortService.validatePortMappings(microserviceData, transaction) _validateVolumeMappings(microserviceData.volumeMappings) - const microservice = await _createMicroservice({ ...microserviceData, iofogUuid: fog.uuid }, user, isCLI, transaction) + const microservice = await _createMicroservice({ ...microserviceData, iofogUuid: fog.uuid }, isCLI, transaction) if (!microserviceData.catalogItemId) { await _createMicroserviceImages(microservice, microserviceData.images, transaction) @@ -253,7 +253,7 @@ async function createMicroserviceEndPoint (microserviceData, user, isCLI, transa const proxyPorts = [] if (microserviceData.ports) { for (const mapping of microserviceData.ports) { - const res = await MicroservicePortService.createPortMapping(microservice, mapping, user, transaction) + const res = await MicroservicePortService.createPortMapping(microservice, mapping, transaction) if (res) { if (res.publicLinks) { publicPorts.push({ @@ -273,17 +273,17 @@ async function createMicroserviceEndPoint (microserviceData, user, isCLI, transa } for (const extraHost of extraHosts) { - await _createExtraHost(microservice, extraHost, user, transaction) + await _createExtraHost(microservice, extraHost, transaction) } if (microserviceData.env) { for (const env of microserviceData.env) { - await _createEnv(microservice, env, user, transaction) + await _createEnv(microservice, env, transaction) } } if (microserviceData.cmd) { for (const arg of microserviceData.cmd) { - await _createArg(microservice, arg, user, transaction) + await _createArg(microservice, arg, transaction) } } if (microserviceData.volumeMappings) { @@ -346,7 +346,7 @@ async function _updateRelatedExtraHosts (updatedMicroservice, transaction) { } } -async function updateMicroserviceEndPoint (microserviceUuid, microserviceData, user, isCLI, transaction, changeTrackingEnabled = true) { +async function updateMicroserviceEndPoint (microserviceUuid, microserviceData, isCLI, transaction, changeTrackingEnabled = true) { await Validator.validate(microserviceData, Validator.schemas.microserviceUpdate) let needStatusReset = false const query = isCLI @@ -358,11 +358,11 @@ async function updateMicroserviceEndPoint (microserviceUuid, microserviceData, u } // validate extraHosts - const extraHosts = microserviceData.extraHosts ? await _validateExtraHosts(microserviceData, user, transaction) : null + const extraHosts = microserviceData.extraHosts ? await _validateExtraHosts(microserviceData, transaction) : null const config = _validateMicroserviceConfig(microserviceData.config) - const newFog = await _findFog(microserviceData, user, isCLI, transaction) || {} + const newFog = await _findFog(microserviceData, isCLI, transaction) || {} const microserviceToUpdate = { name: microserviceData.name, config: config, @@ -400,7 +400,7 @@ async function updateMicroserviceEndPoint (microserviceUuid, microserviceData, u } if (microserviceDataUpdate.ports) { - await _updatePorts(microserviceDataUpdate.ports, microservice, user, transaction) + await _updatePorts(microserviceDataUpdate.ports, microservice, transaction) } if (microserviceDataUpdate.iofogUuid && microservice.iofogUuid !== microserviceDataUpdate.iofogUuid) { @@ -433,7 +433,7 @@ async function updateMicroserviceEndPoint (microserviceUuid, microserviceData, u const iofogUuid = microserviceDataUpdate.iofogUuid || microservice.iofogUuid if (microserviceDataUpdate.catalogItemId) { - const catalogItem = await CatalogService.getCatalogItem(microserviceDataUpdate.catalogItemId, user, isCLI, transaction) + const catalogItem = await CatalogService.getCatalogItem(microserviceDataUpdate.catalogItemId, isCLI, transaction) _validateImagesAgainstCatalog(catalogItem, microserviceDataUpdate.images || []) if (microserviceDataUpdate.catalogItemId !== undefined && microserviceDataUpdate.catalogItemId !== microservice.catalogItemId) { // Catalog item changed or removed, set rebuild flag @@ -468,12 +468,12 @@ async function updateMicroserviceEndPoint (microserviceUuid, microserviceData, u // Validate image type let images = [] if (microserviceDataUpdate.catalogItemId) { - const catalogItem = await CatalogService.getCatalogItem(microserviceDataUpdate.catalogItemId, user, isCLI, transaction) + const catalogItem = await CatalogService.getCatalogItem(microserviceDataUpdate.catalogItemId, isCLI, transaction) images = catalogItem.images } else if (microserviceDataUpdate.images) { images = microserviceDataUpdate.images } else if (microservice.catalogItemId) { - const catalogItem = await CatalogService.getCatalogItem(microservice.catalogItemId, user, isCLI, transaction) + const catalogItem = await CatalogService.getCatalogItem(microservice.catalogItemId, isCLI, transaction) images = catalogItem.images } else { images = await microservice.getImages() @@ -493,7 +493,7 @@ async function updateMicroserviceEndPoint (microserviceUuid, microserviceData, u const updatedMicroservice = await MicroserviceManager.updateAndFind(query, microserviceDataUpdate, transaction) if (extraHosts) { - await _updateExtraHosts(extraHosts, microserviceUuid, user, transaction) + await _updateExtraHosts(extraHosts, microserviceUuid, transaction) } // Update extra hosts that reference this microservice @@ -512,7 +512,7 @@ async function updateMicroserviceEndPoint (microserviceUuid, microserviceData, u } if (microserviceDataUpdate.iofogUuid && microserviceDataUpdate.iofogUuid !== microservice.iofogUuid) { - await MicroservicePortService.movePublicPortsToNewFog(updatedMicroservice, user, transaction) + await MicroservicePortService.movePublicPortsToNewFog(updatedMicroservice, transaction) } if (needStatusReset) { @@ -561,7 +561,7 @@ const _checkIfMicroserviceImagesAreEqual = (microserviceDataUpdateImages, catalo return isEqual(newMicroserviceImages, oldMicroservicesImages) } -async function deleteMicroserviceEndPoint (microserviceUuid, microserviceData, user, isCLI, transaction) { +async function deleteMicroserviceEndPoint (microserviceUuid, microserviceData, isCLI, transaction) { const where = isCLI ? { uuid: microserviceUuid @@ -594,7 +594,7 @@ async function deleteNotRunningMicroservices (fog, transaction) { .forEach(async (microservice) => { await deleteMicroserviceWithRoutesAndPortMappings(microservice, transaction) }) } -async function createRouteEndPoint (sourceMicroserviceUuid, destMicroserviceUuid, user, isCLI, transaction) { +async function createRouteEndPoint (sourceMicroserviceUuid, destMicroserviceUuid, isCLI, transaction) { // Print deprecated warning const sourceMsvc = await MicroserviceManager.findOne({ uuid: sourceMicroserviceUuid }, transaction) if (!sourceMsvc) { @@ -610,10 +610,10 @@ async function createRouteEndPoint (sourceMicroserviceUuid, destMicroserviceUuid throw new Errors.NotFoundError(AppHelper.formatMessage(ErrorMessages.INVALID_FLOW_ID, sourceMsvc.applicationId)) } - return RoutingService.createRouting({ application: application.name, from: sourceMsvc.name, to: destMsvc.name, name: `r-${sourceMsvc.name}-${destMsvc.name}` }, user, isCLI, transaction) + return RoutingService.createRouting({ application: application.name, from: sourceMsvc.name, to: destMsvc.name, name: `r-${sourceMsvc.name}-${destMsvc.name}` }, isCLI, transaction) } -async function deleteRouteEndPoint (sourceMicroserviceUuid, destMicroserviceUuid, user, isCLI, transaction) { +async function deleteRouteEndPoint (sourceMicroserviceUuid, destMicroserviceUuid, isCLI, transaction) { // Print deprecated warning const route = await RoutingManager.findOnePopulated({ @@ -624,10 +624,10 @@ async function deleteRouteEndPoint (sourceMicroserviceUuid, destMicroserviceUuid throw new Errors.NotFoundError(AppHelper.formatMessage(ErrorMessages.ROUTE_NOT_FOUND)) } - return RoutingService.deleteRouting(route.application.name, route.name, user, isCLI, transaction) + return RoutingService.deleteRouting(route.application.name, route.name, isCLI, transaction) } -async function createPortMappingEndPoint (microserviceUuid, portMappingData, user, isCLI, transaction) { +async function createPortMappingEndPoint (microserviceUuid, portMappingData, isCLI, transaction) { await Validator.validate(portMappingData, Validator.schemas.portsCreate) const where = isCLI @@ -645,10 +645,10 @@ async function createPortMappingEndPoint (microserviceUuid, portMappingData, use } await MicroservicePortService.validatePortMapping(agent, portMappingData, {}, transaction) - return MicroservicePortService.createPortMapping(microservice, portMappingData, user, transaction) + return MicroservicePortService.createPortMapping(microservice, portMappingData, transaction) } -async function _createExtraHost (microservice, extraHostData, user, transaction) { +async function _createExtraHost (microservice, extraHostData, transaction) { const msExtraHostData = { ...extraHostData, microserviceUuid: microservice.uuid @@ -657,7 +657,7 @@ async function _createExtraHost (microservice, extraHostData, user, transaction) await MicroserviceExtraHostManager.create(msExtraHostData, transaction) } -async function _createEnv (microservice, envData, user, transaction) { +async function _createEnv (microservice, envData, transaction) { if (!microservice.iofogUuid) { throw new Errors.ValidationError(AppHelper.formatMessage(ErrorMessages.REQUIRED_FOG_NODE)) } @@ -672,7 +672,7 @@ async function _createEnv (microservice, envData, user, transaction) { await MicroservicePortService.switchOnUpdateFlagsForMicroservicesForPortMapping(microservice, false, transaction) } -async function _createArg (microservice, arg, user, transaction) { +async function _createArg (microservice, arg, transaction) { if (!microservice.iofogUuid) { throw new Errors.ValidationError(AppHelper.formatMessage(ErrorMessages.REQUIRED_FOG_NODE)) } @@ -686,12 +686,12 @@ async function _createArg (microservice, arg, user, transaction) { await MicroservicePortService.switchOnUpdateFlagsForMicroservicesForPortMapping(microservice, false, transaction) } -async function deletePortMappingEndPoint (microserviceUuid, internalPort, user, isCLI, transaction) { - return MicroservicePortService.deletePortMapping(microserviceUuid, internalPort, user, isCLI, transaction) +async function deletePortMappingEndPoint (microserviceUuid, internalPort, isCLI, transaction) { + return MicroservicePortService.deletePortMapping(microserviceUuid, internalPort, isCLI, transaction) } -async function listPortMappingsEndPoint (microserviceUuid, user, isCLI, transaction) { - return MicroservicePortService.listPortMappings(microserviceUuid, user, isCLI, transaction) +async function listPortMappingsEndPoint (microserviceUuid, isCLI, transaction) { + return MicroservicePortService.listPortMappings(microserviceUuid, isCLI, transaction) } async function getReceiverMicroservices (microservice, transaction) { @@ -706,7 +706,7 @@ async function isMicroserviceConsumer (microservice, transaction) { return !!(routes && routes.length > 0) } -async function createVolumeMappingEndPoint (microserviceUuid, volumeMappingData, user, isCLI, transaction) { +async function createVolumeMappingEndPoint (microserviceUuid, volumeMappingData, isCLI, transaction) { await Validator.validate(volumeMappingData, Validator.schemas.volumeMappings) const where = isCLI @@ -743,7 +743,7 @@ async function createVolumeMappingEndPoint (microserviceUuid, volumeMappingData, return VolumeMappingManager.create(volumeMappingObj, transaction) } -async function deleteVolumeMappingEndPoint (microserviceUuid, volumeMappingUuid, user, isCLI, transaction) { +async function deleteVolumeMappingEndPoint (microserviceUuid, volumeMappingUuid, isCLI, transaction) { const where = isCLI ? { uuid: microserviceUuid } : { uuid: microserviceUuid } @@ -764,7 +764,7 @@ async function deleteVolumeMappingEndPoint (microserviceUuid, volumeMappingUuid, } } -async function listVolumeMappingsEndPoint (microserviceUuid, user, isCLI, transaction) { +async function listVolumeMappingsEndPoint (microserviceUuid, isCLI, transaction) { const where = isCLI ? { uuid: microserviceUuid } : { uuid: microserviceUuid } @@ -789,7 +789,7 @@ function _validateMicroserviceConfig (config) { return result } -async function _createMicroservice (microserviceData, user, isCLI, transaction) { +async function _createMicroservice (microserviceData, isCLI, transaction) { const config = _validateMicroserviceConfig(microserviceData.config) let newMicroservice = { @@ -813,7 +813,7 @@ async function _createMicroservice (microserviceData, user, isCLI, transaction) } // validate application - const application = await _validateApplication(microserviceData.application, user, isCLI, transaction) + const application = await _validateApplication(microserviceData.application, isCLI, transaction) newMicroservice.applicationId = application.id await _checkForDuplicateName(newMicroservice.name, {}, newMicroservice.applicationId, transaction) @@ -829,7 +829,7 @@ async function _createMicroservice (microserviceData, user, isCLI, transaction) return MicroserviceManager.create(newMicroservice, transaction) } -async function _validateApplication (name, user, isCLI, transaction) { +async function _validateApplication (name, isCLI, transaction) { if (!name) { return null } @@ -916,12 +916,12 @@ async function _deleteImages (microserviceUuid, transaction) { }, transaction) } -async function _updateExtraHosts (extraHosts, microserviceUuid, user, transaction) { +async function _updateExtraHosts (extraHosts, microserviceUuid, transaction) { await MicroserviceExtraHostManager.delete({ microserviceUuid: microserviceUuid }, transaction) for (const extraHost of extraHosts) { - await _createExtraHost({ uuid: microserviceUuid }, extraHost, user, transaction) + await _createExtraHost({ uuid: microserviceUuid }, extraHost, transaction) } } @@ -954,10 +954,10 @@ async function _updateArg (arg, microserviceUuid, transaction) { } } -async function _updatePorts (newPortMappings, microservice, user, transaction) { - await MicroservicePortService.deletePortMappings(microservice, user, transaction) +async function _updatePorts (newPortMappings, microservice, transaction) { + await MicroservicePortService.deletePortMappings(microservice, transaction) for (const portMapping of newPortMappings) { - await createPortMappingEndPoint(microservice.uuid, portMapping, user, false, transaction) + await createPortMappingEndPoint(microservice.uuid, portMapping, false, transaction) } } @@ -1080,8 +1080,8 @@ async function _buildGetMicroserviceResponse (microservice, transaction) { return res } -function listAllPublicPortsEndPoint (user, transaction) { - return MicroservicePortService.listAllPublicPorts(user, transaction) +function listAllPublicPortsEndPoint (transaction) { + return MicroservicePortService.listAllPublicPorts(transaction) } module.exports = { diff --git a/src/services/registry-service.js b/src/services/registry-service.js index b5220cb99..de0a8eade 100644 --- a/src/services/registry-service.js +++ b/src/services/registry-service.js @@ -22,7 +22,7 @@ const Sequelize = require('sequelize') const Op = Sequelize.Op const AppHelper = require('../helpers/app-helper') -const createRegistry = async function (registry, user, transaction) { +const createRegistry = async function (registry, transaction) { await Validator.validate(registry, Validator.schemas.registryCreate) if (registry.requiresCert && registry.certificate === undefined) { throw new Errors.ValidationError(ErrorMessages.CERT_PROPERTY_REQUIRED) @@ -42,14 +42,14 @@ const createRegistry = async function (registry, user, transaction) { const createdRegistry = await RegistryManager.create(registryCreate, transaction) - await _updateChangeTracking(user, transaction) + await _updateChangeTracking(transaction) return { id: createdRegistry.id } } -const findRegistries = async function (user, isCLI, transaction) { +const findRegistries = async function (isCLI, transaction) { const queryRegistry = isCLI ? {} : { @@ -67,7 +67,7 @@ const findRegistries = async function (user, isCLI, transaction) { } } -const deleteRegistry = async function (registryData, user, isCLI, transaction) { +const deleteRegistry = async function (registryData, isCLI, transaction) { await Validator.validate(registryData, Validator.schemas.registryDelete) const queryData = isCLI ? { id: registryData.id } @@ -77,10 +77,10 @@ const deleteRegistry = async function (registryData, user, isCLI, transaction) { throw new Errors.NotFoundError(AppHelper.formatMessage(ErrorMessages.INVALID_REGISTRY_ID, registryData.id)) } await RegistryManager.delete(queryData, transaction) - await _updateChangeTracking(user, transaction) + await _updateChangeTracking(transaction) } -const updateRegistry = async function (registry, registryId, user, isCLI, transaction) { +const updateRegistry = async function (registry, registryId, isCLI, transaction) { await Validator.validate(registry, Validator.schemas.registryUpdate) if (registry.requiresCert && registry.certificate === undefined) { @@ -117,10 +117,10 @@ const updateRegistry = async function (registry, registryId, user, isCLI, transa await RegistryManager.update(where, registryUpdate, transaction) - await _updateChangeTracking(user, transaction) + await _updateChangeTracking(transaction) } -const _updateChangeTracking = async function (user, transaction) { +const _updateChangeTracking = async function (transaction) { const fogs = await FogManager.findAll(transaction) for (const fog of fogs) { await ChangeTrackingService.update(fog.uuid, ChangeTrackingService.events.registries, transaction) diff --git a/src/services/routing-service.js b/src/services/routing-service.js index b3737ba90..f6cb1fdc4 100644 --- a/src/services/routing-service.js +++ b/src/services/routing-service.js @@ -21,7 +21,7 @@ const RoutingManager = require('../data/managers/routing-manager') const TransactionDecorator = require('../decorators/transaction-decorator') const Validator = require('../schemas') -async function getRoutings (user, isCLI, transaction) { +async function getRoutings (isCLI, transaction) { const routes = await RoutingManager.findAllPopulated({}, transaction) return { routes: routes.map(r => ({ application: r.application.name, @@ -34,7 +34,7 @@ async function getRoutings (user, isCLI, transaction) { })) } } -async function getRouting (appName, name, user, isCLI, transaction) { +async function getRouting (appName, name, isCLI, transaction) { const application = await ApplicationManager.findOne({ name: appName }, transaction) if (!application) { throw new Errors.NotFoundError(AppHelper.formatMessage(ErrorMessages.INVALID_FLOW_NAME, appName)) @@ -54,7 +54,7 @@ async function getRouting (appName, name, user, isCLI, transaction) { } } -async function _validateRouteMsvc (routingData, user, isCLI, transaction) { +async function _validateRouteMsvc (routingData, isCLI, transaction) { // Retro compatibility logic if (routingData.sourceMicroserviceUuid) { const sourceWhere = { uuid: routingData.sourceMicroserviceUuid } @@ -91,15 +91,15 @@ async function _validateRouteMsvc (routingData, user, isCLI, transaction) { } } -async function createRouting (routingData, user, isCLI, transaction) { +async function createRouting (routingData, isCLI, transaction) { await Validator.validate(routingData, Validator.schemas.routingCreate) - const { sourceMicroservice, destMicroservice } = await _validateRouteMsvc(routingData, user, isCLI, transaction) + const { sourceMicroservice, destMicroservice } = await _validateRouteMsvc(routingData, isCLI, transaction) - return _createRoute(sourceMicroservice, destMicroservice, routingData, user, transaction) + return _createRoute(sourceMicroservice, destMicroservice, routingData, transaction) } -async function updateRouting (appName, routeName, routeData, user, isCLI, transaction) { +async function updateRouting (appName, routeName, routeData, isCLI, transaction) { await Validator.validate(routeData, Validator.schemas.routingUpdate) const application = await ApplicationManager.findOne({ name: appName }, transaction) if (!application) { @@ -111,7 +111,7 @@ async function updateRouting (appName, routeName, routeData, user, isCLI, transa throw new Errors.NotFoundError(AppHelper.formatMessage(ErrorMessages.INVALID_ROUTING_NAME, routeName)) } - const { sourceMicroservice, destMicroservice } = await _validateRouteMsvc({ ...routeData, application: oldRoute.application.name }, user, isCLI, transaction) + const { sourceMicroservice, destMicroservice } = await _validateRouteMsvc({ ...routeData, application: oldRoute.application.name }, isCLI, transaction) const updateRebuildMs = { rebuild: true @@ -143,7 +143,7 @@ async function updateRouting (appName, routeName, routeData, user, isCLI, transa await RoutingManager.update({ id: oldRoute.id }, updateRouteData, transaction) } -async function _createRoute (sourceMicroservice, destMicroservice, routeData, user, transaction) { +async function _createRoute (sourceMicroservice, destMicroservice, routeData, transaction) { if (!sourceMicroservice.iofogUuid || !destMicroservice.iofogUuid) { throw new Errors.ValidationError('fog not set') } @@ -162,7 +162,7 @@ async function _createRoute (sourceMicroservice, destMicroservice, routeData, us return _createSimpleRoute(sourceMicroservice, destMicroservice, routeData, transaction) } -async function deleteRouting (appName, name, user, isCLI, transaction) { +async function deleteRouting (appName, name, isCLI, transaction) { const application = await ApplicationManager.findOne({ name: appName }, transaction) if (!application) { throw new Errors.NotFoundError(AppHelper.formatMessage(ErrorMessages.INVALID_FLOW_NAME, appName)) diff --git a/src/services/tunnel-service.js b/src/services/tunnel-service.js index 680f7e5c3..14142af29 100644 --- a/src/services/tunnel-service.js +++ b/src/services/tunnel-service.js @@ -21,7 +21,7 @@ const ErrorMessages = require('../helpers/error-messages') const TransactionDecorator = require('../decorators/transaction-decorator') const ChangeTrackingService = require('./change-tracking-service') -const openTunnel = async function (tunnelData, user, isCli, transaction) { +const openTunnel = async function (tunnelData, isCli, transaction) { const iofog = await FogManager.findOne({ uuid: tunnelData.iofogUuid }, transaction) if (!iofog) { throw new Errors.NotFoundError(AppHelper.formatMessage(ErrorMessages.INVALID_IOFOG_UUID, tunnelData.iofogUuid)) @@ -47,7 +47,7 @@ const openTunnel = async function (tunnelData, user, isCli, transaction) { await ChangeTrackingService.update(tunnelData.iofogUuid, ChangeTrackingService.events.tunnel, transaction) } -const findTunnel = async function (tunnelData, user, transaction) { +const findTunnel = async function (tunnelData, transaction) { const tunnel = await TunnelManager.findOne(tunnelData, transaction) if (!tunnel) { throw new Errors.NotFoundError('Invalid Tunnel Id') @@ -68,8 +68,8 @@ const findAll = async function (transaction) { } } -const closeTunnel = async function (tunnelData, user, transaction) { - await module.exports.findTunnel(tunnelData, user, transaction) +const closeTunnel = async function (tunnelData, transaction) { + await module.exports.findTunnel(tunnelData, transaction) await TunnelManager.update(tunnelData, { closed: true }, transaction) await ChangeTrackingService.update(tunnelData.iofogUuid, ChangeTrackingService.events.tunnel, transaction) } From 744c9ba47e15258523efc68e6af6f637d39c6b73 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Fri, 29 Mar 2024 00:05:52 +0300 Subject: [PATCH 081/146] listEdgeResources and listEdgeResourcesEndpoint modified --- src/controllers/edge-resource-controller.js | 2 +- src/services/edge-resource-service.js | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/controllers/edge-resource-controller.js b/src/controllers/edge-resource-controller.js index e4ec39658..68ffb5601 100644 --- a/src/controllers/edge-resource-controller.js +++ b/src/controllers/edge-resource-controller.js @@ -24,7 +24,7 @@ const updateEdgeResourceEndpoint = async function (req) { return EdgeResourceService.updateEdgeResourceEndpoint(edgeResourceData, { name, version }) } -const listEdgeResourcesEndpoint = async function (req) { +const listEdgeResourcesEndpoint = async function () { return { edgeResources: await EdgeResourceService.listEdgeResources() } } diff --git a/src/services/edge-resource-service.js b/src/services/edge-resource-service.js index dfa5052d5..10e943cae 100644 --- a/src/services/edge-resource-service.js +++ b/src/services/edge-resource-service.js @@ -23,8 +23,8 @@ const TransactionDecorator = require('../decorators/transaction-decorator') const Validator = require('../schemas') const ChangeTrackingService = require('./change-tracking-service') -async function listEdgeResources (transaction) { - const edgeResources = await EdgeResourceManager.findAllWithOrchestrationTags(transaction) +async function listEdgeResources () { + const edgeResources = await EdgeResourceManager.findAllWithOrchestrationTags() return edgeResources.map(buildGetObject) } From a7ec8e001f37c810019ced4147f0bf247e20a2d4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Sat, 30 Mar 2024 15:47:02 +0300 Subject: [PATCH 082/146] ecn-viewer version updated --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 23e892fe5..e9338a3b7 100644 --- a/package.json +++ b/package.json @@ -57,7 +57,7 @@ "iofog-controller": "src/main.js" }, "dependencies": { - "@datasance/ecn-viewer": "0.1.3", + "@datasance/ecn-viewer": "0.1.4", "axios": "1.0.0-alpha.1", "body-parser": "^1.20.1", "child_process": "1.0.2", From b5b66c4c7eeb934950923af317a851356673a751 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Tue, 2 Apr 2024 17:16:29 +0300 Subject: [PATCH 083/146] release version and microservice port service update --- package.json | 4 ++-- src/services/microservice-ports/default.js | 10 +--------- 2 files changed, 3 insertions(+), 11 deletions(-) diff --git a/package.json b/package.json index e9338a3b7..5a1d07603 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@datasance/iofogcontroller", - "version": "3.0.6", + "version": "3.1.0", "description": "ioFog Controller project for Eclipse IoFog @ iofog.org \\nCopyright (c) 2023 Datasance Teknoloji A.S.", "main": "./src/main.js", "author": "Emirhan Durmus", @@ -57,7 +57,7 @@ "iofog-controller": "src/main.js" }, "dependencies": { - "@datasance/ecn-viewer": "0.1.4", + "@datasance/ecn-viewer": "0.1.5", "axios": "1.0.0-alpha.1", "body-parser": "^1.20.1", "child_process": "1.0.2", diff --git a/src/services/microservice-ports/default.js b/src/services/microservice-ports/default.js index 07b504909..57a4ed428 100644 --- a/src/services/microservice-ports/default.js +++ b/src/services/microservice-ports/default.js @@ -214,15 +214,7 @@ async function createPortMapping (microservice, portMappingData, transaction) { const msPorts = await MicroservicePortManager.findOne({ microserviceUuid: microservice.uuid, - [Op.or]: - [ - { - portInternal: portMappingData.internal - }, - { - portExternal: portMappingData.external - } - ] + [Op.or]: [] }, transaction) if (msPorts) { throw new Errors.ValidationError(ErrorMessages.PORT_MAPPING_ALREADY_EXISTS) From 9a38a42df4a5a5bf49c72c320a6ffbbbcad4967d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Tue, 2 Apr 2024 17:22:14 +0300 Subject: [PATCH 084/146] audit fix --- .nsprc | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/.nsprc b/.nsprc index 2a54564df..8bc4c1c5a 100644 --- a/.nsprc +++ b/.nsprc @@ -41,6 +41,18 @@ }, "1096483": { "notes": "" + }, + "1096820": { + "notes": "" + }, + "1096571": { + "notes": "" + }, + "1096727": { + "notes": "" + }, + "1096643": { + "notes": "" } } \ No newline at end of file From f45704465077c26582b7b0f47f6821056b13550a Mon Sep 17 00:00:00 2001 From: Alpaslan DOGAN Date: Mon, 20 May 2024 21:28:05 +0300 Subject: [PATCH 085/146] node and node moduls updated. --- .nsprc | 59 +- Dockerfile.dev | 6 +- package-lock.json | 16924 +++++++++++++++++---------------------- package.json | 94 +- scripts/postinstall.js | 14 +- src/main.js | 13 +- 6 files changed, 7268 insertions(+), 9842 deletions(-) diff --git a/.nsprc b/.nsprc index 8bc4c1c5a..9e26dfeeb 100644 --- a/.nsprc +++ b/.nsprc @@ -1,58 +1 @@ -{ - "1091459": { - "notes": "" - }, - "1091725": { - "notes": "" - } - , - "1092972": { - "notes": "" - }, - "1094554": { - "notes": "" - }, - "1094555": { - "notes": "" - }, - "1094556": { - "notes": "" - }, - "1095102": { - "notes": "" - }, - "1095024": { - "notes": "" - }, - "1096366": { - "notes": "" - }, - "1095365": { - "notes": "" - }, - "1095367": { - "notes": "" - }, - "1096460": { - "notes": "" - }, - "1096482": { - "notes": "" - }, - "1096483": { - "notes": "" - }, - "1096820": { - "notes": "" - }, - "1096571": { - "notes": "" - }, - "1096727": { - "notes": "" - }, - "1096643": { - "notes": "" - } - -} \ No newline at end of file +{} \ No newline at end of file diff --git a/Dockerfile.dev b/Dockerfile.dev index 1d2b52a27..3695faa46 100644 --- a/Dockerfile.dev +++ b/Dockerfile.dev @@ -1,4 +1,4 @@ -FROM node:hydrogen-bookworm AS builder +FROM node:iron-bookworm AS builder ARG PKG_VERSION ARG GITHUB_TOKEN @@ -16,13 +16,13 @@ RUN sed -i.back "s|PAT|${GITHUB_TOKEN}|g" .npmrc RUN npm config set @datasance:registry https://npm.pkg.github.com/ -RUN npm i --build-from-source +RUN npm i --build-from-source --force RUN npm version $PKG_VERSION --allow-same-version --no-git-tag-version RUN npm pack -FROM node:hydrogen-alpine3.17 +FROM node:iron-alpine3.18 RUN apk add sudo logrotate g++ make diff --git a/package-lock.json b/package-lock.json index b012a4d5f..444a4b4d4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,87 +1,104 @@ { "name": "@datasance/iofogcontroller", - "version": "3.0.6", + "version": "3.1.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@datasance/iofogcontroller", - "version": "3.0.6", + "version": "3.1.0", "hasInstallScript": true, "license": "EPL-2.0", "dependencies": { - "@datasance/ecn-viewer": "0.0.1", - "axios": "1.0.0-alpha.1", - "body-parser": "^1.20.1", + "@datasance/ecn-viewer": "0.1.5", + "axios": "1.6.8", + "body-parser": "^1.20.2", "child_process": "1.0.2", - "command-line-args": "5.0.2", - "command-line-usage": "5.0.5", + "command-line-args": "5.2.1", + "command-line-usage": "7.0.1", "concurrent-queue": "7.0.2", - "cookie-parser": "1.4.3", + "cookie-parser": "1.4.6", "cors": "2.8.5", "daemonize2": "0.4.2", - "ejs": "3.1.7", - "express": "4.17.3", + "ejs": "3.1.10", + "express": "4.19.2", "express-session": "1.18.0", - "formidable": "1.2.1", + "formidable": "3.5.1", "ftp": "0.3.10", - "helmet": "3.21.2", + "globally": "^0.0.0", + "helmet": "7.1.0", "https": "1.0.0", "is-elevated": "3.0.0", - "js-yaml": "3.14.1", - "jsonschema": "1.2.5", - "keycloak-connect": "24.0.1", - "minimatch": "3.1.2", - "moment": "2.29.4", - "moment-timezone": "0.5.38", - "morgan": "1.9.1", + "js-yaml": "4.1.0", + "jsonschema": "1.4.1", + "keycloak-connect": "24.0.4", + "minimatch": "9.0.4", + "moment": "2.30.1", + "moment-timezone": "0.5.45", + "morgan": "1.10.0", "multer": "1.4.5-lts.1", - "mysql2": "3.2.2", - "nconf": "0.12.0", - "nodemailer": "6.7.3", - "nodemailer-smtp-transport": "2.4.2", - "os": "0.1.1", + "mysql2": "3.9.7", + "nconf": "0.12.1", + "node-fetch-npm": "^2.0.4", + "npm-check-updates": "^16.14.20", + "os": "0.1.2", "path": "0.12.7", - "pino": "6.6.1", - "pino-std-serializers": "2.5.0", + "pino": "9.1.0", + "pino-std-serializers": "7.0.0", "portscanner": "2.2.0", - "qs": "6.10.3", - "request": "2.88.0", - "request-promise": "4.2.4", - "retry-as-promised": "3.1.0", - "semantic-release": "19.0.3", - "semver": "5.6.0", - "sequelize": "6.29.0", - "sqlite3": "^5.1.5", + "qs": "6.12.1", + "retry-as-promised": "7.0.4", + "sequelize": "6.37.3", + "sqlite3": "^5.1.7", "string-format": "2.0.0", - "swagger-ui-express": "^4.6.2", - "umzug": "2.2.0", - "underscore": "1.13.1", + "swagger-ui-express": "^5.0.0", + "umzug": "3.8.0", + "underscore": "1.13.6", "xss-clean": "0.1.1" }, "bin": { "iofog-controller": "src/main.js" }, "devDependencies": { - "acorn": "7.1.1", - "bdd-lazy-var": "2.5.2", - "chai": "4.2.0", - "chai-as-promised": "7.1.1", - "chai-http": "4.2.1", - "eslint": "5.14.1", - "eslint-config-google": "0.12.0", - "mocha": "9.2.2", - "mocha-junit-reporter": "2.0.0", - "newman": "5.3.2", + "acorn": "8.11.3", + "bdd-lazy-var": "2.6.1", + "chai": "5.1.1", + "chai-as-promised": "7.1.2", + "chai-http": "4.4.0", + "eslint": "9.2.0", + "eslint-config-google": "0.14.0", + "mocha": "10.4.0", + "mocha-junit-reporter": "2.2.1", + "newman": "6.1.2", "newman-reporter-junitfull": "1.1.1", - "nyc": "15.0.0", - "sequelize-cli": "5.5.0", - "sinon": "7.5.0", - "sinon-chai": "3.3.0", - "snyk": "^1.1064.0", + "nyc": "15.1.0", + "sequelize-cli": "6.6.2", + "sinon": "17.0.1", + "sinon-chai": "3.7.0", + "snyk": "^1.1291.0", "standard": "12.0.1" } }, + "node_modules/@75lb/deep-merge": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@75lb/deep-merge/-/deep-merge-1.1.1.tgz", + "integrity": "sha512-xvgv6pkMGBA6GwdyJbNAnDmfAIR/DfWhrj9jgWh3TY7gRm3KO46x/GPjRg6wJ0nOepwqrNxFfojebh0Df4h4Tw==", + "dependencies": { + "lodash.assignwith": "^4.2.0", + "typical": "^7.1.1" + }, + "engines": { + "node": ">=12.17" + } + }, + "node_modules/@75lb/deep-merge/node_modules/typical": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/typical/-/typical-7.1.1.tgz", + "integrity": "sha512-T+tKVNs6Wu7IWiAce5BgMd7OZfNYUndHwc5MknN+UHOudi7sGZzuHdCadllRuqJ3fPtgFtIH9+lt9qRv6lmpfA==", + "engines": { + "node": ">=12.17" + } + }, "node_modules/@ampproject/remapping": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", @@ -96,42 +113,43 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", - "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", + "version": "7.24.2", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.2.tgz", + "integrity": "sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==", + "dev": true, "dependencies": { - "@babel/highlight": "^7.23.4", - "chalk": "^2.4.2" + "@babel/highlight": "^7.24.2", + "picocolors": "^1.0.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/compat-data": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz", - "integrity": "sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==", + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.4.tgz", + "integrity": "sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.0.tgz", - "integrity": "sha512-fQfkg0Gjkza3nf0c7/w6Xf34BW4YvzNfACRLmmb7XRLa6XHdR+K9AlJlxneFfWYf6uhOzuzZVTjF/8KfndZANw==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.5.tgz", + "integrity": "sha512-tVQRucExLQ02Boi4vdPp49svNGcfL2GhdTCT9aldhXgCJVAI21EtRfBettiuLUwce/7r6bFdgs6JFkcdTiFttA==", "dev": true, "dependencies": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.23.5", - "@babel/generator": "^7.23.6", + "@babel/code-frame": "^7.24.2", + "@babel/generator": "^7.24.5", "@babel/helper-compilation-targets": "^7.23.6", - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helpers": "^7.24.0", - "@babel/parser": "^7.24.0", + "@babel/helper-module-transforms": "^7.24.5", + "@babel/helpers": "^7.24.5", + "@babel/parser": "^7.24.5", "@babel/template": "^7.24.0", - "@babel/traverse": "^7.24.0", - "@babel/types": "^7.24.0", + "@babel/traverse": "^7.24.5", + "@babel/types": "^7.24.5", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -185,14 +203,14 @@ } }, "node_modules/@babel/generator": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz", - "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.5.tgz", + "integrity": "sha512-x32i4hEXvr+iI0NEoEfDKzlemF8AmtOP8CcrRaEcpzysWuoEb1KknpcvMsHKPONoKZiDuItklgWhB18xEhr9PA==", "dev": true, "dependencies": { - "@babel/types": "^7.23.6", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", + "@babel/types": "^7.24.5", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^2.5.1" }, "engines": { @@ -274,28 +292,28 @@ } }, "node_modules/@babel/helper-module-imports": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", - "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", + "version": "7.24.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.3.tgz", + "integrity": "sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg==", "dev": true, "dependencies": { - "@babel/types": "^7.22.15" + "@babel/types": "^7.24.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz", - "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.24.5.tgz", + "integrity": "sha512-9GxeY8c2d2mdQUP1Dye0ks3VDyIMS98kt/llQ2nUId8IsWqTF0l1LkSX0/uP7l7MCDrzXS009Hyhe2gzTiGW8A==", "dev": true, "dependencies": { "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-module-imports": "^7.22.15", - "@babel/helper-simple-access": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/helper-validator-identifier": "^7.22.20" + "@babel/helper-module-imports": "^7.24.3", + "@babel/helper-simple-access": "^7.24.5", + "@babel/helper-split-export-declaration": "^7.24.5", + "@babel/helper-validator-identifier": "^7.24.5" }, "engines": { "node": ">=6.9.0" @@ -305,42 +323,43 @@ } }, "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==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.5.tgz", + "integrity": "sha512-uH3Hmf5q5n7n8mz7arjUlDOCbttY/DW4DYhE6FUsjKJ/oYC1kQQUvwEQWxRwUpX9qQKRXeqLwWxrqilMrf32sQ==", "dev": true, "dependencies": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.24.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-split-export-declaration": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", - "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.5.tgz", + "integrity": "sha512-5CHncttXohrHk8GWOFCcCl4oRD9fKosWlIRgWm4ql9VYioKm52Mk2xsmoohvm7f3JoiLSM5ZgJuRaf5QZZYd3Q==", "dev": true, "dependencies": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.24.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-string-parser": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", - "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.1.tgz", + "integrity": "sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", - "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.5.tgz", + "integrity": "sha512-3q93SSKX2TWCG30M2G2kwaKeTYgEUp5Snjuj8qm729SObL6nbtUldAi37qbxkD5gg3xnBio+f9nqpSepGZMvxA==", + "dev": true, "engines": { "node": ">=6.9.0" } @@ -355,36 +374,109 @@ } }, "node_modules/@babel/helpers": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.0.tgz", - "integrity": "sha512-ulDZdc0Aj5uLc5nETsa7EPx2L7rM0YJM8r7ck7U73AXi7qOV44IHHRAYZHY6iU1rr3C5N4NtTmMRUJP6kwCWeA==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.5.tgz", + "integrity": "sha512-CiQmBMMpMQHwM5m01YnrM6imUG1ebgYJ+fAIW4FZe6m4qHTPaRHti+R8cggAwkdz4oXhtO4/K9JWlh+8hIfR2Q==", "dev": true, "dependencies": { "@babel/template": "^7.24.0", - "@babel/traverse": "^7.24.0", - "@babel/types": "^7.24.0" + "@babel/traverse": "^7.24.5", + "@babel/types": "^7.24.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", - "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.5.tgz", + "integrity": "sha512-8lLmua6AVh/8SLJRRVD6V8p73Hir9w5mJrhE+IPpILG31KKlI9iz5zmBYKcWPS59qSfgP9RaSBQSHHE81WKuEw==", + "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.22.20", + "@babel/helper-validator-identifier": "^7.24.5", "chalk": "^2.4.2", - "js-tokens": "^4.0.0" + "js-tokens": "^4.0.0", + "picocolors": "^1.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.24.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.0.tgz", - "integrity": "sha512-QuP/FxEAzMSjXygs8v4N9dvdXzEHN4W1oF3PxuWAtPo08UdM17u89RDMgjLn/mlc56iM0HlLmVkO/wgR+rDgHg==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.5.tgz", + "integrity": "sha512-EOv5IK8arwh3LI47dz1b0tKUb/1uhHAnHJOrjgtQMIpu1uXd9mlFrJg9IUgGUgZ41Ch0K8REPTYpO7B76b4vJg==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -408,19 +500,19 @@ } }, "node_modules/@babel/traverse": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.0.tgz", - "integrity": "sha512-HfuJlI8qq3dEDmNU5ChzzpZRWq+oxCZQyMzIMEqLho+AQnhMnKQUzH6ydo3RBl/YjPCuk68Y6s0Gx0AeyULiWw==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.5.tgz", + "integrity": "sha512-7aaBLeDQ4zYcUFDUD41lJc1fG8+5IU9DaNSJAgal866FGvmD5EbWQgnEC6kO1gGLsX0esNkfnJSndbTXA3r7UA==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.23.5", - "@babel/generator": "^7.23.6", + "@babel/code-frame": "^7.24.2", + "@babel/generator": "^7.24.5", "@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-function-name": "^7.23.0", "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.24.0", - "@babel/types": "^7.24.0", + "@babel/helper-split-export-declaration": "^7.24.5", + "@babel/parser": "^7.24.5", + "@babel/types": "^7.24.5", "debug": "^4.3.1", "globals": "^11.1.0" }, @@ -445,6 +537,15 @@ } } }, + "node_modules/@babel/traverse/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/@babel/traverse/node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -452,13 +553,13 @@ "dev": true }, "node_modules/@babel/types": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.0.tgz", - "integrity": "sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.5.tgz", + "integrity": "sha512-6mQNsaLeXTw0nxYUYu+NSa4Hx4BlF1x1x8/PMFbiR+GBSr+2DkECc69b8hgy2frEodNcvPffeH8YfWd3LI6jhQ==", "dev": true, "dependencies": { - "@babel/helper-string-parser": "^7.23.4", - "@babel/helper-validator-identifier": "^7.22.20", + "@babel/helper-string-parser": "^7.24.1", + "@babel/helper-validator-identifier": "^7.24.5", "to-fast-properties": "^2.0.0" }, "engines": { @@ -475,166 +576,362 @@ } }, "node_modules/@datasance/ecn-viewer": { - "version": "0.0.1", - "resolved": "https://npm.pkg.github.com/download/@datasance/ecn-viewer/0.0.1/e4d3b4942f496b6bcafa982865b9bb14e324eb06", - "integrity": "sha512-rrSn+AWwRDCyME5zLH444VtRNcm7umTKoDOKa/3xFKyFPi6QntZVLr7iI207NcmoU4ilNXPpdvOmLGk7ZSUCWA==", - "license": "EPL-2.0" - }, - "node_modules/@gar/promisify": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", - "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", - "optional": true + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@datasance/ecn-viewer/-/ecn-viewer-0.1.5.tgz", + "integrity": "sha512-6RtIBh9FX63+mA6pqlcnA5g91vNEkMIg2JMEQkPJYjmNUH/8Zk3qlf6kmsqnaPaAawkbECtwn+RFMLCVhd2Btw==" }, - "node_modules/@isaacs/cliui": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", - "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "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": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + "eslint-visitor-keys": "^3.3.0" }, "engines": { - "node": ">=12" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, - "node_modules/@isaacs/cliui/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, "engines": { - "node": ">=12" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" + "url": "https://opencollective.com/eslint" } }, - "node_modules/@isaacs/cliui/node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "node_modules/@eslint-community/regexpp": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", + "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", "dev": true, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, - "node_modules/@isaacs/cliui/node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true - }, - "node_modules/@isaacs/cliui/node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "node_modules/@eslint/eslintrc": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.0.2.tgz", + "integrity": "sha512-wV19ZEGEMAC1eHgrS7UQPqsdEiCIbTKTasEfcXAigzoXICcqZSjBZEHlZwNVvKg6UBCjSlos84XiLqsRJnIcIg==", "dev": true, "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^10.0.1", + "globals": "^14.0.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" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://opencollective.com/eslint" } }, - "node_modules/@isaacs/cliui/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "node_modules/@eslint/eslintrc/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": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "node_modules/@eslint/eslintrc/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" + "ms": "2.1.2" }, "engines": { - "node": ">=12" + "node": ">=6.0" }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "peerDependenciesMeta": { + "supports-color": { + "optional": 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==", + "node_modules/@eslint/eslintrc/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": { - "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" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">=8" + "node": "*" } }, - "node_modules/@istanbuljs/load-nyc-config/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==", + "node_modules/@eslint/eslintrc/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/@eslint/js": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.2.0.tgz", + "integrity": "sha512-ESiIudvhoYni+MdsI8oD7skpprZ89qKocwRM2KEvhhBJ9nl5MRh7BXU5GTod7Mdygq+AUl+QzId6iWJKR/wABA==", "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, "engines": { - "node": ">=8" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/@istanbuljs/load-nyc-config/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==", + "node_modules/@faker-js/faker": { + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/@faker-js/faker/-/faker-5.5.3.tgz", + "integrity": "sha512-R11tGE6yIFwqpaIqcfkcg7AICXzFg14+5h5v0TfF/9+RMDL6jhzCy/pxHVOfbALGdtVYdt6JdR21tuxEgl34dw==", + "dev": true + }, + "node_modules/@gar/promisify": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", + "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==" + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", + "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==", "dev": true, "dependencies": { - "p-locate": "^4.1.0" + "@humanwhocodes/object-schema": "^2.0.3", + "debug": "^4.3.1", + "minimatch": "^3.0.5" }, "engines": { - "node": ">=8" + "node": ">=10.10.0" } }, - "node_modules/@istanbuljs/load-nyc-config/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==", + "node_modules/@humanwhocodes/config-array/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": { - "p-try": "^2.0.0" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@humanwhocodes/config-array/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" }, "engines": { - "node": ">=6" + "node": ">=6.0" }, - "funding": { + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@humanwhocodes/config-array/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/@humanwhocodes/config-array/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/@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": "2.0.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", + "dev": true + }, + "node_modules/@humanwhocodes/retry": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.2.4.tgz", + "integrity": "sha512-Ttl/jHpxfS3st5sxwICYfk4pOH0WrLI1SpW283GgQL7sCWU7EHIOhX4b4fkIxr3tkfzwg8+FNojtzsIEE7Ecgg==", + "dev": true, + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" + }, + "node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "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/load-nyc-config/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/@istanbuljs/load-nyc-config/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/@istanbuljs/load-nyc-config/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==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@istanbuljs/load-nyc-config/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/@istanbuljs/load-nyc-config/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" } }, @@ -659,6 +956,12 @@ "node": ">=8" } }, + "node_modules/@istanbuljs/load-nyc-config/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 + }, "node_modules/@istanbuljs/schema": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", @@ -749,232 +1052,208 @@ } }, "node_modules/@npmcli/fs": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz", - "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==", - "optional": true, + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.1.tgz", + "integrity": "sha512-q9CRWjpHCMIh5sVyefoD1cA7PkvILqCZsnSOEUUivORLjxCO/Irmue2DprETiNgEqktDBZaM1Bi+jrarx1XdCg==", "dependencies": { - "@gar/promisify": "^1.0.1", "semver": "^7.3.5" - } - }, - "node_modules/@npmcli/fs/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==", - "optional": true, - "dependencies": { - "yallist": "^4.0.0" }, "engines": { - "node": ">=10" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@npmcli/fs/node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", - "optional": true, + "node_modules/@npmcli/git": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-4.1.0.tgz", + "integrity": "sha512-9hwoB3gStVfa0N31ymBmrX+GuDGdVA/QWShZVqE0HK2Af+7QGGrCTbZia/SW0ImUTjTne7SP91qxDmtXvDHRPQ==", "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" + "@npmcli/promise-spawn": "^6.0.0", + "lru-cache": "^7.4.4", + "npm-pick-manifest": "^8.0.0", + "proc-log": "^3.0.0", + "promise-inflight": "^1.0.1", + "promise-retry": "^2.0.1", + "semver": "^7.3.5", + "which": "^3.0.0" }, "engines": { - "node": ">=10" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@npmcli/move-file": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", - "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", - "deprecated": "This functionality has been moved to @npmcli/fs", - "optional": true, - "dependencies": { - "mkdirp": "^1.0.4", - "rimraf": "^3.0.2" - }, + "node_modules/@npmcli/git/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", "engines": { - "node": ">=10" + "node": ">=12" } }, - "node_modules/@npmcli/move-file/node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "optional": true, + "node_modules/@npmcli/git/node_modules/which": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/which/-/which-3.0.1.tgz", + "integrity": "sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==", + "dependencies": { + "isexe": "^2.0.0" + }, "bin": { - "mkdirp": "bin/cmd.js" + "node-which": "bin/which.js" }, "engines": { - "node": ">=10" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@npmcli/move-file/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "optional": true, + "node_modules/@npmcli/installed-package-contents": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-2.1.0.tgz", + "integrity": "sha512-c8UuGLeZpm69BryRykLuKRyKFZYJsZSCT4aVY5ds4omyZqJ172ApzgfKJ5eV/r3HgLdUYgFVe54KSFVjKoe27w==", "dependencies": { - "glob": "^7.1.3" + "npm-bundled": "^3.0.0", + "npm-normalize-package-bin": "^3.0.0" }, "bin": { - "rimraf": "bin.js" + "installed-package-contents": "bin/index.js" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "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": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@octokit/core": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/@octokit/core/-/core-4.2.4.tgz", - "integrity": "sha512-rYKilwgzQ7/imScn3M9/pFfUf4I1AZEH3KhyJmtPdE2zfaXAn2mFfUy4FbKewzc2We5y/LlKLj36fWJLKC2SIQ==", + "node_modules/@npmcli/move-file": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.1.tgz", + "integrity": "sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==", + "deprecated": "This functionality has been moved to @npmcli/fs", "dependencies": { - "@octokit/auth-token": "^3.0.0", - "@octokit/graphql": "^5.0.0", - "@octokit/request": "^6.0.0", - "@octokit/request-error": "^3.0.0", - "@octokit/types": "^9.0.0", - "before-after-hook": "^2.2.0", - "universal-user-agent": "^6.0.0" + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" }, "engines": { - "node": ">= 14" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "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==", + "node_modules/@npmcli/move-file/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==", "dependencies": { - "@octokit/types": "^9.0.0", - "is-plain-object": "^5.0.0", - "universal-user-agent": "^6.0.0" - }, - "engines": { - "node": ">= 14" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/@octokit/graphql": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-5.0.6.tgz", - "integrity": "sha512-Fxyxdy/JH0MnIB5h+UQ3yCoh1FG4kWXfFKkpWqjZHw/p+Kc8Y44Hu/kCgNBT6nU1shNumEchmW/sUO1JuQnPcw==", + "node_modules/@npmcli/move-file/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "dependencies": { - "@octokit/request": "^6.0.0", - "@octokit/types": "^9.0.0", - "universal-user-agent": "^6.0.0" + "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": ">= 14" + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@octokit/openapi-types": { - "version": "18.1.1", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-18.1.1.tgz", - "integrity": "sha512-VRaeH8nCDtF5aXWnjPuEMIYf1itK/s3JYyJcWFJT8X9pSNnBtriDf7wlEWsGuhPLl4QIH4xM8fqTXDwJ3Mu6sw==" - }, - "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", - "integrity": "sha512-qhrmtQeHU/IivxucOV1bbI/xZyC/iOBhclokv7Sut5vnejAIAEXVcGQeRpQlU39E0WwK9lNvJHphHri/DB6lbQ==", + "node_modules/@npmcli/move-file/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dependencies": { - "@octokit/tsconfig": "^1.0.2", - "@octokit/types": "^9.2.3" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">= 14" - }, - "peerDependencies": { - "@octokit/core": ">=4" + "node": "*" } }, - "node_modules/@octokit/plugin-retry": { - "version": "4.1.6", - "resolved": "https://registry.npmjs.org/@octokit/plugin-retry/-/plugin-retry-4.1.6.tgz", - "integrity": "sha512-obkYzIgEC75r8+9Pnfiiqy3y/x1bc3QLE5B7qvv9wi9Kj0R5tGQFC6QMBg1154WQ9lAVypuQDGyp3hNpp15gQQ==", - "dependencies": { - "@octokit/types": "^9.0.0", - "bottleneck": "^2.15.3" + "node_modules/@npmcli/move-file/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "bin": { + "mkdirp": "bin/cmd.js" }, "engines": { - "node": ">= 14" - }, - "peerDependencies": { - "@octokit/core": ">=3" + "node": ">=10" } }, - "node_modules/@octokit/plugin-throttling": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/@octokit/plugin-throttling/-/plugin-throttling-5.2.3.tgz", - "integrity": "sha512-C9CFg9mrf6cugneKiaI841iG8DOv6P5XXkjmiNNut+swePxQ7RWEdAZRp5rJoE1hjsIqiYcKa/ZkOQ+ujPI39Q==", + "node_modules/@npmcli/move-file/node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dependencies": { - "@octokit/types": "^9.0.0", - "bottleneck": "^2.15.3" + "glob": "^7.1.3" }, - "engines": { - "node": ">= 14" + "bin": { + "rimraf": "bin.js" }, - "peerDependencies": { - "@octokit/core": "^4.0.0" + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@npmcli/node-gyp": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-3.0.0.tgz", + "integrity": "sha512-gp8pRXC2oOxu0DUE1/M3bYtb1b3/DbJ5aM113+XJBgfXdussRAsX0YOrOhdd8WvnAR6auDBvJomGAkLKA5ydxA==", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "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==", + "node_modules/@npmcli/promise-spawn": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-6.0.2.tgz", + "integrity": "sha512-gGq0NJkIGSwdbUt4yhdF8ZrmkGKVz9vAdVzpOfnom+V8PLSmSOVhZwbNvZZS1EYcJN5hzzKBxmmVVAInM6HQLg==", "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" + "which": "^3.0.0" }, "engines": { - "node": ">= 14" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "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==", + "node_modules/@npmcli/promise-spawn/node_modules/which": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/which/-/which-3.0.1.tgz", + "integrity": "sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==", "dependencies": { - "@octokit/types": "^9.0.0", - "deprecation": "^2.0.0", - "once": "^1.4.0" + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/which.js" }, "engines": { - "node": ">= 14" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@octokit/request-error/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==", + "node_modules/@npmcli/run-script": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-6.0.2.tgz", + "integrity": "sha512-NCcr1uQo1k5U+SYlnIrbAh3cxy+OQT1VtqiAbxdymSlptbzBb62AjH2xXgjNCoP073hoa1CfCAcwoZ8k96C4nA==", "dependencies": { - "wrappy": "1" + "@npmcli/node-gyp": "^3.0.0", + "@npmcli/promise-spawn": "^6.0.0", + "node-gyp": "^9.0.0", + "read-package-json-fast": "^3.0.0", + "which": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@octokit/tsconfig": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@octokit/tsconfig/-/tsconfig-1.0.2.tgz", - "integrity": "sha512-I0vDR0rdtP8p2lGMzvsJzbhdOWy405HcGovrspJ8RRibHnyRgggUSNO5AIox5LmqiwmatHKYsvj6VGFHkqS7lA==" - }, - "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==", + "node_modules/@npmcli/run-script/node_modules/which": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/which/-/which-3.0.1.tgz", + "integrity": "sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==", "dependencies": { - "@octokit/openapi-types": "^18.0.0" + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/@one-ini/wasm": { @@ -987,7 +1266,6 @@ "version": "0.11.0", "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", - "dev": true, "optional": true, "engines": { "node": ">=14" @@ -1044,6 +1322,21 @@ "node": ">= 6" } }, + "node_modules/@postman/tough-cookie": { + "version": "4.1.3-postman.1", + "resolved": "https://registry.npmjs.org/@postman/tough-cookie/-/tough-cookie-4.1.3-postman.1.tgz", + "integrity": "sha512-txpgUqZOnWYnUHZpHjkfb0IwVH4qJmyq77pPnJLlfhMtdCLMFTEeQHlzQiK906aaNCe4NEB5fGJHo9uzGbFMeA==", + "dev": true, + "dependencies": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.2.0", + "url-parse": "^1.5.3" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/@postman/tunnel-agent": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/@postman/tunnel-agent/-/tunnel-agent-0.6.3.tgz", @@ -1056,442 +1349,325 @@ "node": "*" } }, - "node_modules/@semantic-release/commit-analyzer": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/@semantic-release/commit-analyzer/-/commit-analyzer-9.0.2.tgz", - "integrity": "sha512-E+dr6L+xIHZkX4zNMe6Rnwg4YQrWNXK+rNsvwOPpdFppvZO1olE2fIgWhv89TkQErygevbjsZFSIxp+u6w2e5g==", + "node_modules/@rushstack/node-core-library": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@rushstack/node-core-library/-/node-core-library-4.3.0.tgz", + "integrity": "sha512-JuNZ7lwaYQ4R1TugpryyWBn4lIxK+L7fF+muibFp0by5WklG22nsvH868fuBoZMLo5FqAs6WFOifNos4PJjWSA==", "dependencies": { - "conventional-changelog-angular": "^5.0.0", - "conventional-commits-filter": "^2.0.0", - "conventional-commits-parser": "^3.2.3", - "debug": "^4.0.0", - "import-from": "^4.0.0", - "lodash": "^4.17.4", - "micromatch": "^4.0.2" - }, - "engines": { - "node": ">=14.17" + "fs-extra": "~7.0.1", + "import-lazy": "~4.0.0", + "jju": "~1.4.0", + "resolve": "~1.22.1", + "semver": "~7.5.4", + "z-schema": "~5.0.2" }, "peerDependencies": { - "semantic-release": ">=18.0.0-beta.1" + "@types/node": "*" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/@semantic-release/commit-analyzer/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "node_modules/@rushstack/node-core-library/node_modules/fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", "dependencies": { - "ms": "2.1.2" + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" }, "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "node": ">=6 <7 || >=8" } }, - "node_modules/@semantic-release/commit-analyzer/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/@rushstack/node-core-library/node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } }, - "node_modules/@semantic-release/error": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-3.0.0.tgz", - "integrity": "sha512-5hiM4Un+tpl4cKw3lV4UgzJj+SmfNIDCLLw0TepzQxz9ZGV5ixnqkzIVF+3tp0ZHgcMKE+VNGHJjEeyFG2dcSw==", + "node_modules/@rushstack/node-core-library/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": ">=14.17" + "node": ">=10" } }, - "node_modules/@semantic-release/github": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@semantic-release/github/-/github-8.1.0.tgz", - "integrity": "sha512-erR9E5rpdsz0dW1I7785JtndQuMWN/iDcemcptf67tBNOmBUN0b2YNOgcjYUnBpgRpZ5ozfBHrK7Bz+2ets/Dg==", - "dependencies": { - "@octokit/core": "^4.2.1", - "@octokit/plugin-paginate-rest": "^6.1.2", - "@octokit/plugin-retry": "^4.1.3", - "@octokit/plugin-throttling": "^5.2.3", - "@semantic-release/error": "^3.0.0", - "aggregate-error": "^3.0.0", - "debug": "^4.0.0", - "dir-glob": "^3.0.0", - "fs-extra": "^11.0.0", - "globby": "^11.0.0", - "http-proxy-agent": "^7.0.0", - "https-proxy-agent": "^7.0.0", - "issue-parser": "^6.0.0", - "lodash": "^4.17.4", - "mime": "^3.0.0", - "p-filter": "^2.0.0", - "url-join": "^4.0.0" + "node_modules/@rushstack/node-core-library/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dependencies": { + "lru-cache": "^6.0.0" }, - "engines": { - "node": ">=14.17" + "bin": { + "semver": "bin/semver.js" }, - "peerDependencies": { - "semantic-release": ">=18.0.0-beta.1" + "engines": { + "node": ">=10" } }, - "node_modules/@semantic-release/github/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "node_modules/@rushstack/node-core-library/node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/@rushstack/terminal": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@rushstack/terminal/-/terminal-0.11.0.tgz", + "integrity": "sha512-LKz7pv0G9Py5uULahNSixK1pTqIIKd103pAGhDW51YfzPojvmO5wfITe0PEUNAJZjuufN/KgeRW83dJo1gL2rQ==", "dependencies": { - "ms": "2.1.2" + "@rushstack/node-core-library": "4.3.0", + "supports-color": "~8.1.1" }, - "engines": { - "node": ">=6.0" + "peerDependencies": { + "@types/node": "*" }, "peerDependenciesMeta": { - "supports-color": { + "@types/node": { "optional": true } } }, - "node_modules/@semantic-release/github/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/@semantic-release/npm": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/@semantic-release/npm/-/npm-9.0.2.tgz", - "integrity": "sha512-zgsynF6McdzxPnFet+a4iO9HpAlARXOM5adz7VGVCvj0ne8wtL2ZOQoDV2wZPDmdEotDIbVeJjafhelZjs9j6g==", + "node_modules/@rushstack/terminal/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==", "dependencies": { - "@semantic-release/error": "^3.0.0", - "aggregate-error": "^3.0.0", - "execa": "^5.0.0", - "fs-extra": "^11.0.0", - "lodash": "^4.17.15", - "nerf-dart": "^1.0.0", - "normalize-url": "^6.0.0", - "npm": "^8.3.0", - "rc": "^1.2.8", - "read-pkg": "^5.0.0", - "registry-auth-token": "^5.0.0", - "semver": "^7.1.2", - "tempy": "^1.0.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=16 || ^14.17" + "node": ">=10" }, - "peerDependencies": { - "semantic-release": ">=19.0.0" + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/@semantic-release/npm/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==", + "node_modules/@rushstack/ts-command-line": { + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/@rushstack/ts-command-line/-/ts-command-line-4.21.0.tgz", + "integrity": "sha512-z38FLUCn8M9FQf19gJ9eltdwkvc47PxvJmVZS6aKwbBAa3Pis3r3A+ZcBCVPNb9h/Tbga+i0tHdzoSGUoji9GQ==", "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" + "@rushstack/terminal": "0.11.0", + "@types/argparse": "1.0.38", + "argparse": "~1.0.9", + "string-argv": "~0.3.1" } }, - "node_modules/@semantic-release/npm/node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "node_modules/@rushstack/ts-command-line/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "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" + "sprintf-js": "~1.0.2" + } + }, + "node_modules/@rushstack/ts-command-line/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/@sentry-internal/tracing": { + "version": "7.115.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.115.0.tgz", + "integrity": "sha512-n1w3eJadvzkL4HebjtJGHre8Z9WbYpPw5GxSNI8ZFM+OTnhzzCAEcNL2C4tr7ssD2Lkao4+N3KaigJi54geOmg==", + "dev": true, + "dependencies": { + "@sentry/core": "7.115.0", + "@sentry/types": "7.115.0", + "@sentry/utils": "7.115.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" + "node": ">=8" } }, - "node_modules/@semantic-release/npm/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==", - "engines": { - "node": ">=10" + "node_modules/@sentry/core": { + "version": "7.115.0", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.115.0.tgz", + "integrity": "sha512-LSacE6rY/pJY4esXdLex5qVjo82DX6sQuvDLcEcR00bvRWGWMxSi2SipeW4RLbKmYyi0Ub+T+tUJxIOViyqyXw==", + "dev": true, + "dependencies": { + "@sentry/types": "7.115.0", + "@sentry/utils": "7.115.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=8" } }, - "node_modules/@semantic-release/npm/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==", + "node_modules/@sentry/integrations": { + "version": "7.115.0", + "resolved": "https://registry.npmjs.org/@sentry/integrations/-/integrations-7.115.0.tgz", + "integrity": "sha512-0a75FIfG2mLPTmQ2QYFYoh3yvHqGT+D4SBAcsWVZEG24lNCiofSHnjffzIOXZX+2Spi1nY+cxIt9ItSyS2Z8VQ==", + "dev": true, + "dependencies": { + "@sentry/core": "7.115.0", + "@sentry/types": "7.115.0", + "@sentry/utils": "7.115.0", + "localforage": "^1.8.1" + }, "engines": { "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@semantic-release/npm/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==", + "node_modules/@sentry/node": { + "version": "7.115.0", + "resolved": "https://registry.npmjs.org/@sentry/node/-/node-7.115.0.tgz", + "integrity": "sha512-Y8kiwHqiICLkraSTsm7O/MWkfakRXOjhwpv4f3f+5CmPIigW0YCMTQZ3sSX+NhnvDhdkmakWy3tH9CX8+T2Ykg==", + "dev": true, "dependencies": { - "yallist": "^4.0.0" + "@sentry-internal/tracing": "7.115.0", + "@sentry/core": "7.115.0", + "@sentry/integrations": "7.115.0", + "@sentry/types": "7.115.0", + "@sentry/utils": "7.115.0" }, "engines": { - "node": ">=10" + "node": ">=8" } }, - "node_modules/@semantic-release/npm/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==", + "node_modules/@sentry/types": { + "version": "7.115.0", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.115.0.tgz", + "integrity": "sha512-KbhDS0DX+lk9VFCCR4AwPdiU9KUAH+vI+5HBLlgCNMY7KRGxRLnpXi3VyGi80iRdt2gi8sg2ncsVhc+SunBx7w==", + "dev": true, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/@semantic-release/npm/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==", + "node_modules/@sentry/utils": { + "version": "7.115.0", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.115.0.tgz", + "integrity": "sha512-MhrpHOMPwsjlXE3vnfFFyexneozPluaMCgL7MzH2iL0m7FxXG8A9CEe7W9sVG8hh1kw8ksYz1ryb2Mx2L+UTJA==", + "dev": true, "dependencies": { - "path-key": "^3.0.0" + "@sentry/types": "7.115.0" }, "engines": { "node": ">=8" } }, - "node_modules/@semantic-release/npm/node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "node_modules/@sigstore/bundle": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@sigstore/bundle/-/bundle-1.1.0.tgz", + "integrity": "sha512-PFutXEy0SmQxYI4texPw3dd2KewuNqv7OuK1ZFtY2fM754yhvG2KdgwIhRnoEE2uHdtdGNQ8s0lb94dW9sELog==", "dependencies": { - "mimic-fn": "^2.1.0" + "@sigstore/protobuf-specs": "^0.2.0" }, "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@semantic-release/npm/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==", - "engines": { - "node": ">=8" - } - }, - "node_modules/@semantic-release/npm/node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@semantic-release/npm/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==", - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@semantic-release/npm/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==", - "engines": { - "node": ">=8" - } - }, - "node_modules/@semantic-release/npm/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, + "node_modules/@sigstore/protobuf-specs": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@sigstore/protobuf-specs/-/protobuf-specs-0.2.1.tgz", + "integrity": "sha512-XTWVxnWJu+c1oCshMLwnKvz8ZQJJDVOlciMfgpJBQbThVjKTCG8dwyhgLngBD2KN0ap9F/gOV8rFDEx8uh7R2A==", "engines": { - "node": ">= 8" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@semantic-release/release-notes-generator": { - "version": "10.0.3", - "resolved": "https://registry.npmjs.org/@semantic-release/release-notes-generator/-/release-notes-generator-10.0.3.tgz", - "integrity": "sha512-k4x4VhIKneOWoBGHkx0qZogNjCldLPRiAjnIpMnlUh6PtaWXp/T+C9U7/TaNDDtgDa5HMbHl4WlREdxHio6/3w==", + "node_modules/@sigstore/sign": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@sigstore/sign/-/sign-1.0.0.tgz", + "integrity": "sha512-INxFVNQteLtcfGmcoldzV6Je0sbbfh9I16DM4yJPw3j5+TFP8X6uIiA18mvpEa9yyeycAKgPmOA3X9hVdVTPUA==", "dependencies": { - "conventional-changelog-angular": "^5.0.0", - "conventional-changelog-writer": "^5.0.0", - "conventional-commits-filter": "^2.0.0", - "conventional-commits-parser": "^3.2.3", - "debug": "^4.0.0", - "get-stream": "^6.0.0", - "import-from": "^4.0.0", - "into-stream": "^6.0.0", - "lodash": "^4.17.4", - "read-pkg-up": "^7.0.0" + "@sigstore/bundle": "^1.1.0", + "@sigstore/protobuf-specs": "^0.2.0", + "make-fetch-happen": "^11.0.1" }, "engines": { - "node": ">=14.17" - }, - "peerDependencies": { - "semantic-release": ">=18.0.0-beta.1" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@semantic-release/release-notes-generator/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "node_modules/@sigstore/tuf": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@sigstore/tuf/-/tuf-1.0.3.tgz", + "integrity": "sha512-2bRovzs0nJZFlCN3rXirE4gwxCn97JNjMmwpecqlbgV9WcxX7WRuIrgzx/X7Ib7MYRbyUTpBYE0s2x6AmZXnlg==", "dependencies": { - "ms": "2.1.2" + "@sigstore/protobuf-specs": "^0.2.0", + "tuf-js": "^1.1.7" }, "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@semantic-release/release-notes-generator/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==", + "node_modules/@sindresorhus/is": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-5.6.0.tgz", + "integrity": "sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==", "engines": { - "node": ">=10" + "node": ">=14.16" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@semantic-release/release-notes-generator/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/@sentry-internal/tracing": { - "version": "7.105.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.105.0.tgz", - "integrity": "sha512-b+AFYB7Bc9vmyxl2jbmuT4esX5G0oPfpz35A0sxFzmJIhvMg1YMDNio2c81BtKN+VSPORCnKMLhfk3kyKKvWMQ==", - "dev": true, - "dependencies": { - "@sentry/core": "7.105.0", - "@sentry/types": "7.105.0", - "@sentry/utils": "7.105.0" - }, - "engines": { - "node": ">=8" + "url": "https://github.com/sindresorhus/is?sponsor=1" } }, - "node_modules/@sentry/core": { - "version": "7.105.0", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.105.0.tgz", - "integrity": "sha512-5xsaTG6jZincTeJUmZomlv20mVRZUEF1U/g89lmrSOybyk2+opEnB1JeBn4ODwnvmSik8r2QLr6/RiYlaxRJCg==", + "node_modules/@sinonjs/commons": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", + "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", "dev": true, "dependencies": { - "@sentry/types": "7.105.0", - "@sentry/utils": "7.105.0" - }, - "engines": { - "node": ">=8" + "type-detect": "4.0.8" } }, - "node_modules/@sentry/node": { - "version": "7.105.0", - "resolved": "https://registry.npmjs.org/@sentry/node/-/node-7.105.0.tgz", - "integrity": "sha512-b0QwZ7vT4hcJi6LmNRh3dcaYpLtXnkYXkL0rfhMb8hN8sUx8zuOWFMI7j0cfAloVThUeJVwGyv9dERfzGS2r2w==", + "node_modules/@sinonjs/fake-timers": { + "version": "11.2.2", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-11.2.2.tgz", + "integrity": "sha512-G2piCSxQ7oWOxwGSAyFHfPIsyeJGXYtc6mFbnFA+kRXkiEnTl8c/8jul2S329iFBnDI9HGoeWWAZvuvOkZccgw==", "dev": true, "dependencies": { - "@sentry-internal/tracing": "7.105.0", - "@sentry/core": "7.105.0", - "@sentry/types": "7.105.0", - "@sentry/utils": "7.105.0" - }, - "engines": { - "node": ">=8" + "@sinonjs/commons": "^3.0.0" } }, - "node_modules/@sentry/types": { - "version": "7.105.0", - "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.105.0.tgz", - "integrity": "sha512-80o0KMVM+X2Ym9hoQxvJetkJJwkpCg7o6tHHFXI+Rp7fawc2iCMTa0IRQMUiSkFvntQLYIdDoNNuKdzz2PbQGA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@sentry/utils": { - "version": "7.105.0", - "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.105.0.tgz", - "integrity": "sha512-YVAV0c2KLM8+VZCicQ/E/P2+J9Vs0hGhrXwV7w6ZEAtvxrg4oF270toL1WRhvcaf8JO4J1v4V+LuU6Txs4uEeQ==", + "node_modules/@sinonjs/samsam": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-8.0.0.tgz", + "integrity": "sha512-Bp8KUVlLp8ibJZrnvq2foVhP0IVX2CIprMJPK0vqGqgrDa0OHVKeZyBykqskkrdxV6yKBPmGasO8LVjAKR3Gew==", "dev": true, "dependencies": { - "@sentry/types": "7.105.0" - }, - "engines": { - "node": ">=8" + "@sinonjs/commons": "^2.0.0", + "lodash.get": "^4.4.2", + "type-detect": "^4.0.8" } }, - "node_modules/@sinonjs/commons": { - "version": "1.8.6", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.6.tgz", - "integrity": "sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==", + "node_modules/@sinonjs/samsam/node_modules/@sinonjs/commons": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-2.0.0.tgz", + "integrity": "sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg==", "dev": true, "dependencies": { "type-detect": "4.0.8" } }, - "node_modules/@sinonjs/formatio": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/@sinonjs/formatio/-/formatio-3.2.2.tgz", - "integrity": "sha512-B8SEsgd8gArBLMD6zpRw3juQ2FVSsmdd7qlevyDqzS9WTCtvF55/gAL+h6gue8ZvPYcdiPdvueM/qm//9XzyTQ==", - "dev": true, - "dependencies": { - "@sinonjs/commons": "^1", - "@sinonjs/samsam": "^3.1.0" - } - }, - "node_modules/@sinonjs/samsam": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-3.3.3.tgz", - "integrity": "sha512-bKCMKZvWIjYD0BLGnNrxVuw4dkWCYsLqFOUWw8VgKF/+5Y+mE7LfHWPIYoDXowH+3a9LsWDMo0uAP8YDosPvHQ==", - "dev": true, - "dependencies": { - "@sinonjs/commons": "^1.3.0", - "array-from": "^2.1.1", - "lodash": "^4.17.15" - } - }, "node_modules/@sinonjs/text-encoding": { "version": "0.7.2", "resolved": "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.2.tgz", "integrity": "sha512-sXXKG+uL9IrKqViTtao2Ws6dy0znu9sOaP1di/jKGW1M6VssO8vlpXCQcpZ+jisQ1tTFAC5Jo/EOzFbggBagFQ==", "dev": true }, + "node_modules/@szmarczak/http-timer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-5.0.1.tgz", + "integrity": "sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==", + "dependencies": { + "defer-to-connect": "^2.0.1" + }, + "engines": { + "node": ">=14.16" + } + }, "node_modules/@testim/chrome-version": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/@testim/chrome-version/-/chrome-version-1.1.4.tgz", @@ -1499,12 +1675,11 @@ "optional": true }, "node_modules/@tootallnate/once": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", - "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", - "optional": true, + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", "engines": { - "node": ">= 6" + "node": ">= 10" } }, "node_modules/@tootallnate/quickjs-emscripten": { @@ -1513,10 +1688,35 @@ "integrity": "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==", "optional": true }, + "node_modules/@tufjs/canonical-json": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@tufjs/canonical-json/-/canonical-json-1.0.0.tgz", + "integrity": "sha512-QTnf++uxunWvG2z3UFNzAoQPHxnSXOwtaI3iJ+AohhV+5vONuArPjJE7aPXPVXfXJsqrVbZBu9b81AJoSd09IQ==", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@tufjs/models": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@tufjs/models/-/models-1.0.4.tgz", + "integrity": "sha512-qaGV9ltJP0EO25YfFUPhxRVK0evXFIAGicsVXuRim4Ed9cjPxYhNnNJ49SFmbeLgtxpslIkX317IgpfcHPVj/A==", + "dependencies": { + "@tufjs/canonical-json": "1.0.0", + "minimatch": "^9.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@types/argparse": { + "version": "1.0.38", + "resolved": "https://registry.npmjs.org/@types/argparse/-/argparse-1.0.38.tgz", + "integrity": "sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA==" + }, "node_modules/@types/chai": { - "version": "4.3.12", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.12.tgz", - "integrity": "sha512-zNKDHG/1yxm8Il6uCCVsm+dRdEsJlFoDu73X17y09bId6UwoYww+vFBsAcRzl8knM1sab3Dp1VRikFQwDOtDDw==", + "version": "4.3.16", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.16.tgz", + "integrity": "sha512-PatH4iOdyh3MyWtmHVFXLWCCIhUbopaltqddG9BzB+gMIzee2MJrvd+jouii9Z3wzQJruGWAm7WOMjgfG8hQlQ==", "dev": true }, "node_modules/@types/cookiejar": { @@ -1533,10 +1733,10 @@ "@types/ms": "*" } }, - "node_modules/@types/minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==" + "node_modules/@types/http-cache-semantics": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz", + "integrity": "sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==" }, "node_modules/@types/ms": { "version": "0.7.34", @@ -1544,27 +1744,22 @@ "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==" }, "node_modules/@types/node": { - "version": "20.11.24", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.24.tgz", - "integrity": "sha512-Kza43ewS3xoLgCEpQrsT+xRo/EJej1y0kVYGiLFE1NEODXGzTfwiC6tXTLMQskn1X4/Rjlh0MQUvx9W+L9long==", + "version": "20.12.12", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.12.tgz", + "integrity": "sha512-eWLDGF/FOSPtAvEqeRAQ4C8LSA7M1I7i0ky1I8U7kD1J5ITyW3AsRhQrKVoWf5pFKZ2kILsEGJhsI9r93PYnOw==", "dependencies": { "undici-types": "~5.26.4" } }, - "node_modules/@types/normalize-package-data": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", - "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==" - }, - "node_modules/@types/parse-json": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz", - "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==" + "node_modules/@types/semver-utils": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@types/semver-utils/-/semver-utils-1.1.3.tgz", + "integrity": "sha512-T+YwkslhsM+CeuhYUxyAjWm7mJ5am/K10UX40RuA6k6Lc7eGtq8iY2xOzy7Vq0GOqhl/xZl5l2FwURZMTPTUww==" }, "node_modules/@types/superagent": { - "version": "3.8.7", - "resolved": "https://registry.npmjs.org/@types/superagent/-/superagent-3.8.7.tgz", - "integrity": "sha512-9KhCkyXv268A2nZ1Wvu7rQWM+BmdYUVkycFeNnYrUL5Zwu7o8wPQ3wBfW59dDP+wuoxw0ww8YKgTNv8j/cgscA==", + "version": "4.1.13", + "resolved": "https://registry.npmjs.org/@types/superagent/-/superagent-4.1.13.tgz", + "integrity": "sha512-YIGelp3ZyMiH0/A09PMAORO0EBGlF5xIKfDpK74wdYvWUs2o96b5CItJcWPdH409b7SAXIIG6p8NdU/4U2Maww==", "dev": true, "dependencies": { "@types/cookiejar": "*", @@ -1572,9 +1767,9 @@ } }, "node_modules/@types/validator": { - "version": "13.11.9", - "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.11.9.tgz", - "integrity": "sha512-FCTsikRozryfayPuiI46QzH3fnrOoctTjvOYZkho9BTFLCOZ2rgZJHMOVgCOfttjPJcgOx52EpkY0CMfy87MIw==" + "version": "13.11.10", + "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.11.10.tgz", + "integrity": "sha512-e2PNXoXLr6Z+dbfx5zSh9TRlXJrELycxiaXznp4S5+D2M3b9bqJEitNHA5923jhnB2zzFiZHa2f0SI1HoIahpg==" }, "node_modules/@types/yauzl": { "version": "2.10.3", @@ -1585,19 +1780,20 @@ "@types/node": "*" } }, - "node_modules/@ungap/promise-all-settled": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz", - "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==", - "dev": true - }, "node_modules/abbrev": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-2.0.0.tgz", - "integrity": "sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==", - "dev": true, + "version": "1.1.1", + "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": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=6.5" } }, "node_modules/accepts": { @@ -1613,9 +1809,9 @@ } }, "node_modules/acorn": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.1.tgz", - "integrity": "sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg==", + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -1642,14 +1838,14 @@ } }, "node_modules/agent-base": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz", - "integrity": "sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==", + "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.3.4" + "debug": "4" }, "engines": { - "node": ">= 14" + "node": ">= 6.0.0" } }, "node_modules/agent-base/node_modules/debug": { @@ -1677,7 +1873,6 @@ "version": "4.5.0", "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.5.0.tgz", "integrity": "sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==", - "optional": true, "dependencies": { "humanize-ms": "^1.2.1" }, @@ -1701,6 +1896,7 @@ "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", @@ -1721,6 +1917,14 @@ "ajv": "^6.9.1" } }, + "node_modules/ansi-align": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", + "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", + "dependencies": { + "string-width": "^4.1.0" + } + }, "node_modules/ansi-colors": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", @@ -1740,35 +1944,27 @@ } }, "node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "dev": true, + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, "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==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dependencies": { - "color-convert": "^1.9.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=4" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/ansicolors": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/ansicolors/-/ansicolors-0.3.2.tgz", - "integrity": "sha512-QXu7BPrP29VllRxH8GwB7x5iX5qWKAAMLqKQGWTeLWVlNHNOpVMJ91dsxQAIWXpjuW5wqvxu3Jd/nRjrJ+0pqg==" - }, - "node_modules/any-promise": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", - "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==" - }, "node_modules/anymatch": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", @@ -1802,8 +1998,7 @@ "node_modules/aproba": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", - "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", - "optional": true + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==" }, "node_modules/archy": { "version": "1.0.0", @@ -1815,7 +2010,6 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz", "integrity": "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==", - "optional": true, "dependencies": { "delegates": "^1.0.0", "readable-stream": "^3.6.0" @@ -1828,7 +2022,6 @@ "version": "3.6.2", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "optional": true, "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -1842,45 +2035,21 @@ "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==", - "optional": true, "dependencies": { "safe-buffer": "~5.2.0" } }, "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/argv-formatter": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/argv-formatter/-/argv-formatter-1.0.0.tgz", - "integrity": "sha512-F2+Hkm9xFaRg+GkaNnbwXNDV5O6pnCFEmqyhvfC/Ic5LbgOWjJh3L+mN/s91rxVL3znE7DYVpW0GJFT+4YBgWw==" - }, - "node_modules/argv-tools": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/argv-tools/-/argv-tools-0.1.2.tgz", - "integrity": "sha512-wxqoymY0BEu9NblZVQiOTOAiJUjPhaa/kbNMjC2h6bnrmUSgnxKgWJo3lzXvi3bHJRwXyqK/dHzMlZVRT89Cxg==", - "dependencies": { - "array-back": "^2.0.0", - "find-replace": "^2.0.1" - }, - "engines": { - "node": ">=4.0.0" - } + "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/array-back": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/array-back/-/array-back-2.0.0.tgz", - "integrity": "sha512-eJv4pLLufP3g5kcZry0j6WXpIbzYw9GUB4mVJZno9wfwiBxbizTnHCw3VJb07cBihbFX48Y7oSrW9y+gt4glyw==", - "dependencies": { - "typical": "^2.6.1" - }, + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz", + "integrity": "sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==", "engines": { - "node": ">=4" + "node": ">=6" } }, "node_modules/array-buffer-byte-length": { @@ -1904,27 +2073,17 @@ "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" }, - "node_modules/array-from": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/array-from/-/array-from-2.1.1.tgz", - "integrity": "sha512-GQTc6Uupx1FCavi5mPzBvVT7nEOeWMmUA9P95wpfpW1XwMSKs+KaymD5C2Up7KAUKg/mYwbsUYzdZWcoajlNZg==", - "dev": true - }, - "node_modules/array-ify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", - "integrity": "sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==" - }, "node_modules/array-includes": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.7.tgz", - "integrity": "sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==", + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", + "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1", + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", "is-string": "^1.0.7" }, "engines": { @@ -1964,18 +2123,16 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", - "engines": { - "node": ">=0.10.0" - } + "node_modules/asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==" }, "node_modules/asn1": { "version": "0.2.6", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", + "dev": true, "dependencies": { "safer-buffer": "~2.1.0" } @@ -1995,17 +2152,18 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", + "dev": true, "engines": { "node": ">=0.8" } }, "node_modules/assertion-error": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", - "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", + "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", "dev": true, "engines": { - "node": "*" + "node": ">=12" } }, "node_modules/ast-types": { @@ -2020,21 +2178,6 @@ "node": ">=4" } }, - "node_modules/ast-types/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "optional": true - }, - "node_modules/astral-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", - "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/async": { "version": "3.2.5", "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", @@ -2045,6 +2188,15 @@ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" }, + "node_modules/at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, "node_modules/atomic-sleep": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/atomic-sleep/-/atomic-sleep-1.0.0.tgz", @@ -2072,6 +2224,7 @@ "version": "0.7.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", + "dev": true, "engines": { "node": "*" } @@ -2079,14 +2232,15 @@ "node_modules/aws4": { "version": "1.12.0", "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz", - "integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==" + "integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==", + "dev": true }, "node_modules/axios": { - "version": "1.0.0-alpha.1", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.0.0-alpha.1.tgz", - "integrity": "sha512-p+meG161943WT+K7sJYquHR46xxi/z0tk7vnSmEf/LrfEAyiP+0uTMMYk1OEo1IRF18oGRhnFxN1y8fLcXaTMw==", + "version": "1.6.8", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.8.tgz", + "integrity": "sha512-v/ZHtJDU39mDpyBoFVkETcd/uNdxrWRrg3bKpOKzXFA6Bvqopts6ALSMU3y6ijYxbw2B+wPrIv46egTzJXCLGQ==", "dependencies": { - "follow-redirects": "^1.15.0", + "follow-redirects": "^1.15.6", "form-data": "^4.0.0", "proxy-from-env": "^1.1.0" } @@ -2102,6 +2256,15 @@ "js-tokens": "^3.0.2" } }, + "node_modules/babel-code-frame/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/babel-code-frame/node_modules/ansi-styles": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", @@ -2127,6 +2290,15 @@ "node": ">=0.10.0" } }, + "node_modules/babel-code-frame/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-code-frame/node_modules/js-tokens": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", @@ -2154,15 +2326,6 @@ "node": ">=0.8.0" } }, - "node_modules/babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==", - "dependencies": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.0" - } - }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -2216,28 +2379,47 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", + "dev": true, "dependencies": { "tweetnacl": "^0.14.3" } }, "node_modules/bdd-lazy-var": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/bdd-lazy-var/-/bdd-lazy-var-2.5.2.tgz", - "integrity": "sha512-EBFk8uOTALu8crLChd+KfhHwv+frhxqE235jcy6NY1G1weB0Gyr5H7u0zvUnr1yduzX6M1I/ERaVGdY1cd+6ZQ==", - "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==" + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/bdd-lazy-var/-/bdd-lazy-var-2.6.1.tgz", + "integrity": "sha512-X3ADwcFji/IHIrYJhTTpaiWhoOx4pl4whdAx1dmvdeUPsMUb7fVYFvf/Q33VEAEAVkEwi5rgNSZ0Y9oOVeQV+A==", + "dev": true, + "peerDependencies": { + "jasmine": ">=2", + "jasmine-core": ">=2", + "jest": ">=20", + "mocha": ">=2.3" + }, + "peerDependenciesMeta": { + "jasmine": { + "optional": true + }, + "jasmine-core": { + "optional": true + }, + "jest": { + "optional": true + }, + "mocha": { + "optional": true + } + } }, "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==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", "dev": true, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/bindings": { @@ -2280,9 +2462,10 @@ } }, "node_modules/bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-2.11.0.tgz", + "integrity": "sha512-UfFSr22dmHPQqPP9XWHRhq+gWnHCYguQGkXQlbyPtW5qTnhFWA8/iXg765tH0cAjy7l/zPJ1aBTO0g5XgA7kvQ==", + "dev": true }, "node_modules/bn.js": { "version": "4.12.0", @@ -2332,23 +2515,112 @@ "integrity": "sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==", "dev": true }, - "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/boxen": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-7.1.1.tgz", + "integrity": "sha512-2hCgjEmP8YLWQ130n2FerGv7rYpfBmnmp9Uy2Le1vge6X3gZIfSmEzP5QTDElFxcvVcXlEn8Aq6MU/PZygIOog==", + "dependencies": { + "ansi-align": "^3.0.1", + "camelcase": "^7.0.1", + "chalk": "^5.2.0", + "cli-boxes": "^3.0.0", + "string-width": "^5.1.2", + "type-fest": "^2.13.0", + "widest-line": "^4.0.1", + "wrap-ansi": "^8.1.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/boxen/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } }, - "node_modules/bowser": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.11.0.tgz", - "integrity": "sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==" + "node_modules/boxen/node_modules/camelcase": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-7.0.1.tgz", + "integrity": "sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/boxen/node_modules/chalk": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/boxen/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" + }, + "node_modules/boxen/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/boxen/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/boxen/node_modules/type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, "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==", + "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", - "concat-map": "0.0.1" + "balanced-match": "^1.0.0" } }, "node_modules/braces": { @@ -2471,66 +2743,119 @@ } }, "node_modules/cacache": { - "version": "15.3.0", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", - "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", - "optional": true, + "version": "17.1.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.1.4.tgz", + "integrity": "sha512-/aJwG2l3ZMJ1xNAnqbMpA40of9dj/pIH3QfiuQSqjfPJF747VR0J/bHn+/KdNnHKc6XQcWt/AfRSBft82W1d2A==", "dependencies": { - "@npmcli/fs": "^1.0.0", - "@npmcli/move-file": "^1.0.1", - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "glob": "^7.1.4", - "infer-owner": "^1.0.4", - "lru-cache": "^6.0.0", - "minipass": "^3.1.1", + "@npmcli/fs": "^3.1.0", + "fs-minipass": "^3.0.0", + "glob": "^10.2.2", + "lru-cache": "^7.7.1", + "minipass": "^7.0.3", "minipass-collect": "^1.0.2", "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.2", - "mkdirp": "^1.0.3", + "minipass-pipeline": "^1.2.4", "p-map": "^4.0.0", - "promise-inflight": "^1.0.1", - "rimraf": "^3.0.2", - "ssri": "^8.0.1", - "tar": "^6.0.2", - "unique-filename": "^1.1.1" + "ssri": "^10.0.0", + "tar": "^6.1.11", + "unique-filename": "^3.0.0" }, "engines": { - "node": ">= 10" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/cacache/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==", - "optional": true, + "node_modules/cacache/node_modules/foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", "dependencies": { - "yallist": "^4.0.0" + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" }, "engines": { - "node": ">=10" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/cacache/node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "optional": true, + "node_modules/cacache/node_modules/glob": { + "version": "10.3.15", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.15.tgz", + "integrity": "sha512-0c6RlJt1TICLyvJYIApxb8GsXoai0KUP7AxKKAtsYXdgJR1mGEUa7DgwShbdk1nly0PYoZj01xd4hzbq3fsjpw==", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.6", + "minimatch": "^9.0.1", + "minipass": "^7.0.4", + "path-scurry": "^1.11.0" + }, "bin": { - "mkdirp": "bin/cmd.js" + "glob": "dist/esm/bin.mjs" }, "engines": { - "node": ">=10" + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/cacache/node_modules/p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "optional": true, + "node_modules/cacache/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/cacache/node_modules/minipass": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.1.tgz", + "integrity": "sha512-UZ7eQ+h8ywIRAW1hIEl2AqdwzJucU/Kp59+8kkZeSvafXhZjul247BvIJjEVFVeON6d7lM46XX1HXCduKAS8VA==", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/cacache/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/cacheable-lookup": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-7.0.0.tgz", + "integrity": "sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==", + "engines": { + "node": ">=14.16" + } + }, + "node_modules/cacheable-request": { + "version": "10.2.14", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-10.2.14.tgz", + "integrity": "sha512-zkDT5WAF4hSSoUgyfg5tFIxz8XQK+25W/TLVojJTMKBaxevLBBtLxgqguAuVQB8PVW79FVjHcU+GJ9tVbDZ9mQ==", "dependencies": { - "aggregate-error": "^3.0.0" + "@types/http-cache-semantics": "^4.0.2", + "get-stream": "^6.0.1", + "http-cache-semantics": "^4.1.1", + "keyv": "^4.5.3", + "mimic-response": "^4.0.0", + "normalize-url": "^8.0.0", + "responselike": "^3.0.0" }, + "engines": { + "node": ">=14.16" + } + }, + "node_modules/cacheable-request/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==", "engines": { "node": ">=10" }, @@ -2538,19 +2863,15 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/cacache/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "optional": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" + "node_modules/cacheable-request/node_modules/mimic-response": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-4.0.0.tgz", + "integrity": "sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/caching-transform": { @@ -2611,6 +2932,7 @@ "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" } @@ -2619,35 +2941,15 @@ "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/camelcase-keys": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", - "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", - "dependencies": { - "camelcase": "^5.3.1", - "map-obj": "^4.0.0", - "quick-lru": "^4.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/camelize": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/camelize/-/camelize-1.0.0.tgz", - "integrity": "sha512-W2lPwkBkMZwFlPCXhIlYgxu+7gC/NUlCtdK652DAJ1JdgV0sTrvuPFshNPrFa1TY2JOkLhgdeEBplB4ezEa+xg==" - }, "node_modules/caniuse-lite": { - "version": "1.0.30001593", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001593.tgz", - "integrity": "sha512-UWM1zlo3cZfkpBysd7AS+z+v007q9G1+fLTUU42rQnY6t2axoogPW/xol6T7juU5EUoOhML4WgBIdG+9yYqAjQ==", + "version": "1.0.30001620", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001620.tgz", + "integrity": "sha512-WJvYsOjd1/BYUY6SNGUosK9DUidBPDTnOARHp3fSmFO1ekdxaY6nKRttEVrfMmYi80ctS0kz1wiWmm14fVc3ew==", "dev": true, "funding": [ { @@ -2675,87 +2977,104 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/cardinal": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/cardinal/-/cardinal-2.1.1.tgz", - "integrity": "sha512-JSr5eOgoEymtYHBjNWyjrMqet9Am2miJhlfKNdqLp6zoeAh0KN5dRAcxlecj5mAJrmQomgiOBj35xHLrFjqBpw==", - "dependencies": { - "ansicolors": "~0.3.2", - "redeyed": "~2.1.0" - }, - "bin": { - "cdl": "bin/cdl.js" - } - }, "node_modules/caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==" + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", + "dev": true }, "node_modules/chai": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.2.0.tgz", - "integrity": "sha512-XQU3bhBukrOsQCuwZndwGcCVQHyZi53fQ6Ys1Fym7E4olpIqqZZhhoFJoaKVvV17lWQoXYwgWN2nF5crA8J2jw==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/chai/-/chai-5.1.1.tgz", + "integrity": "sha512-pT1ZgP8rPNqUgieVaEY+ryQr6Q4HXNg8Ei9UnLUrjN4IA7dvQC5JB+/kxVcPNDHyBcc/26CXPkbNzq3qwrOEKA==", "dev": true, "dependencies": { - "assertion-error": "^1.1.0", - "check-error": "^1.0.2", - "deep-eql": "^3.0.1", - "get-func-name": "^2.0.0", - "pathval": "^1.1.0", - "type-detect": "^4.0.5" + "assertion-error": "^2.0.1", + "check-error": "^2.1.1", + "deep-eql": "^5.0.1", + "loupe": "^3.1.0", + "pathval": "^2.0.0" }, "engines": { - "node": ">=4" + "node": ">=12" } }, "node_modules/chai-as-promised": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/chai-as-promised/-/chai-as-promised-7.1.1.tgz", - "integrity": "sha512-azL6xMoi+uxu6z4rhWQ1jbdUhOMhis2PvscD/xjLqNMkv3BPPp2JyyuTHOrf9BOosGpNQ11v6BKv/g57RXbiaA==", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/chai-as-promised/-/chai-as-promised-7.1.2.tgz", + "integrity": "sha512-aBDHZxRzYnUYuIAIPBH2s511DjlKPzXNlXSGFC8CwmroWQLfrW0LtE1nK3MAwwNhJPa9raEjNCmRoFpG0Hurdw==", "dev": true, "dependencies": { "check-error": "^1.0.2" }, "peerDependencies": { - "chai": ">= 2.1.2 < 5" + "chai": ">= 2.1.2 < 6" + } + }, + "node_modules/chai-as-promised/node_modules/check-error": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", + "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", + "dev": true, + "dependencies": { + "get-func-name": "^2.0.2" + }, + "engines": { + "node": "*" } }, "node_modules/chai-http": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/chai-http/-/chai-http-4.2.1.tgz", - "integrity": "sha512-S2Ezy5uSVuOYleeXppfUKtTU/xbHCZyKkwjheNJ/76SGFTUPDpDkkpVdPNgC3sAO1Ap5J5LJ+/rXdLG8EGhCDA==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/chai-http/-/chai-http-4.4.0.tgz", + "integrity": "sha512-uswN3rZpawlRaa5NiDUHcDZ3v2dw5QgLyAwnQ2tnVNuP7CwIsOFuYJ0xR1WiR7ymD4roBnJIzOUep7w9jQMFJA==", "dev": true, "dependencies": { "@types/chai": "4", - "@types/superagent": "^3.8.3", - "cookiejar": "^2.1.1", + "@types/superagent": "4.1.13", + "charset": "^1.0.1", + "cookiejar": "^2.1.4", "is-ip": "^2.0.0", "methods": "^1.1.2", - "qs": "^6.5.1", - "superagent": "^3.7.0" + "qs": "^6.11.2", + "superagent": "^8.0.9" }, "engines": { - "node": ">=4" + "node": ">=10" } }, "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==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=4" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chalk-template": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/chalk-template/-/chalk-template-0.4.0.tgz", + "integrity": "sha512-/ghrgmhfY8RaSdeo43hNXxpoHAtxdbskUHjPpfqUWGttFgycUhYPGx3YZBCnUCvOa7Doivn1IZec3DEGFoMgLg==", + "dependencies": { + "chalk": "^4.1.2" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/chalk-template?sponsor=1" } }, "node_modules/chardet": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-2.0.0.tgz", + "integrity": "sha512-xVgPpulCooDjY6zH4m9YW3jbkaBe3FKIAvF5sj5t7aBNsVl2ljIE+xwJ4iNgiDZHFQvNIpjdKdVOQvvk5ZfxbQ==", "dev": true }, "node_modules/charenc": { @@ -2777,15 +3096,12 @@ } }, "node_modules/check-error": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", - "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz", + "integrity": "sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==", "dev": true, - "dependencies": { - "get-func-name": "^2.0.2" - }, "engines": { - "node": "*" + "node": ">= 16" } }, "node_modules/child_process": { @@ -2820,6 +3136,18 @@ "fsevents": "~2.3.2" } }, + "node_modules/chokidar/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/chownr": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", @@ -2829,9 +3157,9 @@ } }, "node_modules/chromedriver": { - "version": "122.0.6", - "resolved": "https://registry.npmjs.org/chromedriver/-/chromedriver-122.0.6.tgz", - "integrity": "sha512-Q0r+QlUtiJWMQ5HdYaFa0CtBmLFq3n5JWfmq9mOC00UMBvWxku09gUkvBt457QnYfTM/XHqY/HTFOxHvATnTmA==", + "version": "125.0.0", + "resolved": "https://registry.npmjs.org/chromedriver/-/chromedriver-125.0.0.tgz", + "integrity": "sha512-wWXrxWLWqXRTmRZDtPigs+ys44srlpHTpsL7MHnZc9iaE1oIB0hslSVeem6TcsEb1Ou8nvPx3vs5bPwCI6+VHg==", "hasInstallScript": true, "optional": true, "dependencies": { @@ -2850,15 +3178,18 @@ "node": ">=18" } }, - "node_modules/chromedriver/node_modules/axios": { - "version": "1.6.8", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.8.tgz", - "integrity": "sha512-v/ZHtJDU39mDpyBoFVkETcd/uNdxrWRrg3bKpOKzXFA6Bvqopts6ALSMU3y6ijYxbw2B+wPrIv46egTzJXCLGQ==", - "optional": true, - "dependencies": { - "follow-redirects": "^1.15.6", - "form-data": "^4.0.0", - "proxy-from-env": "^1.1.0" + "node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "engines": { + "node": ">=8" } }, "node_modules/circular-json": { @@ -2876,18 +3207,31 @@ "node": ">=6" } }, + "node_modules/cli-boxes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-3.0.0.tgz", + "integrity": "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/cli-color": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/cli-color/-/cli-color-1.4.0.tgz", - "integrity": "sha512-xu6RvQqqrWEo6MPR1eixqGPywhYBHRs653F9jfXB2Hx4jdM/3WxiNE1vppRmxtMIfl16SFYTpYlrnqH/HsK/2w==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/cli-color/-/cli-color-2.0.4.tgz", + "integrity": "sha512-zlnpg0jNcibNrO7GG9IeHH7maWFeCz+Ja1wx/7tZNU5ASSSSZ+/qZciM0/LHCYxSdqv5h2sdbQ/PXYdOuetXvA==", "dev": true, "dependencies": { - "ansi-regex": "^2.1.1", - "d": "1", - "es5-ext": "^0.10.46", + "d": "^1.0.1", + "es5-ext": "^0.10.64", "es6-iterator": "^2.0.3", - "memoizee": "^0.4.14", - "timers-ext": "^0.1.5" + "memoizee": "^0.4.15", + "timers-ext": "^0.1.7" + }, + "engines": { + "node": ">=0.10" } }, "node_modules/cli-cursor": { @@ -2903,66 +3247,21 @@ } }, "node_modules/cli-progress": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/cli-progress/-/cli-progress-3.10.0.tgz", - "integrity": "sha512-kLORQrhYCAtUPLZxqsAt2YJGOvRdt34+O6jl5cQGb7iF3dM55FQZlTR+rQyIK9JUcO9bBMwZsTlND+3dmFU2Cw==", + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/cli-progress/-/cli-progress-3.12.0.tgz", + "integrity": "sha512-tRkV3HJ1ASwm19THiiLIXLO7Im7wlTuKnvkYaTkyoAPefqjNg7W7DHKUlGRxy9vxDvbyCYQkQozvptuMkGCg8A==", "dev": true, "dependencies": { - "string-width": "^4.2.0" + "string-width": "^4.2.3" }, "engines": { "node": ">=4" } }, - "node_modules/cli-progress/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/cli-progress/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/cli-progress/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/cli-progress/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/cli-table3": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.1.tgz", - "integrity": "sha512-w0q/enDHhPLq44ovMGdQeeDLvwxwavsJX7oQGYt/LrBlYsyaxyDnp6z3QzFut/6kLLKnlcUVJLrpB7KBfgG/RA==", - "dev": true, + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.3.tgz", + "integrity": "sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==", "dependencies": { "string-width": "^4.2.0" }, @@ -2970,51 +3269,7 @@ "node": "10.* || >= 12.*" }, "optionalDependencies": { - "colors": "1.4.0" - } - }, - "node_modules/cli-table3/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/cli-table3/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/cli-table3/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/cli-table3/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" + "@colors/colors": "1.5.0" } }, "node_modules/cli-width": { @@ -3033,64 +3288,42 @@ "wrap-ansi": "^7.0.0" } }, - "node_modules/cliui/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==", - "engines": { - "node": ">=8" - } - }, - "node_modules/cliui/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==", + "node_modules/cliui/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==", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/cliui/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==", + "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==", "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + "color-name": "~1.1.4" }, "engines": { - "node": ">=8" - } - }, - "node_modules/cliui/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==", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "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": ">=7.0.0" } }, "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==" + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "node_modules/color-support": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", - "optional": true, "bin": { "color-support": "bin.js" } @@ -3116,41 +3349,56 @@ } }, "node_modules/command-line-args": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-5.0.2.tgz", - "integrity": "sha512-/qPcbL8zpqg53x4rAaqMFlRV4opN3pbla7I7k9x8kyOBMQoGT6WltjN6sXZuxOXw6DgdK7Ad+ijYS5gjcr7vlA==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-5.2.1.tgz", + "integrity": "sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg==", "dependencies": { - "argv-tools": "^0.1.1", - "array-back": "^2.0.0", - "find-replace": "^2.0.1", + "array-back": "^3.1.0", + "find-replace": "^3.0.0", "lodash.camelcase": "^4.3.0", - "typical": "^2.6.1" + "typical": "^4.0.0" }, "engines": { "node": ">=4.0.0" } }, "node_modules/command-line-usage": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/command-line-usage/-/command-line-usage-5.0.5.tgz", - "integrity": "sha512-d8NrGylA5oCXSbGoKz05FkehDAzSmIm4K03S5VDh4d5lZAtTWfc3D1RuETtuQCn8129nYfJfDdF7P/lwcz1BlA==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/command-line-usage/-/command-line-usage-7.0.1.tgz", + "integrity": "sha512-NCyznE//MuTjwi3y84QVUGEOT+P5oto1e1Pk/jFPVdPPfsG03qpTIl3yw6etR+v73d0lXsoojRpvbru2sqePxQ==", "dependencies": { - "array-back": "^2.0.0", - "chalk": "^2.4.1", - "table-layout": "^0.4.3", - "typical": "^2.6.1" + "array-back": "^6.2.2", + "chalk-template": "^0.4.0", + "table-layout": "^3.0.0", + "typical": "^7.1.1" }, "engines": { - "node": ">=4.0.0" + "node": ">=12.20.0" + } + }, + "node_modules/command-line-usage/node_modules/array-back": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-6.2.2.tgz", + "integrity": "sha512-gUAZ7HPyb4SJczXAMUXMGAvI976JoK3qEx9v1FTmeYuJj0IBiaKttG1ydtGKdkfqWkIkouke7nG8ufGy77+Cvw==", + "engines": { + "node": ">=12.17" + } + }, + "node_modules/command-line-usage/node_modules/typical": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/typical/-/typical-7.1.1.tgz", + "integrity": "sha512-T+tKVNs6Wu7IWiAce5BgMd7OZfNYUndHwc5MknN+UHOudi7sGZzuHdCadllRuqJ3fPtgFtIH9+lt9qRv6lmpfA==", + "engines": { + "node": ">=12.17" } }, "node_modules/commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz", + "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==", "dev": true, "engines": { - "node": ">= 10" + "node": ">=16" } }, "node_modules/commondir": { @@ -3159,15 +3407,6 @@ "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", "dev": true }, - "node_modules/compare-func": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz", - "integrity": "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==", - "dependencies": { - "array-ify": "^1.0.0", - "dot-prop": "^5.1.0" - } - }, "node_modules/compare-versions": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-6.1.0.tgz", @@ -3262,11 +3501,28 @@ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" }, + "node_modules/configstore": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-6.0.0.tgz", + "integrity": "sha512-cD31W1v3GqUlQvbBCGcXmd2Nj9SvLDOP1oQ0YFuLETufzSPaKp11rYBsSOm7rCsW3OnIRAFM3OxRhceaXNYHkA==", + "dependencies": { + "dot-prop": "^6.0.1", + "graceful-fs": "^4.2.6", + "unique-string": "^3.0.0", + "write-file-atomic": "^3.0.3", + "xdg-basedir": "^5.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/yeoman/configstore?sponsor=1" + } + }, "node_modules/console-control-strings": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", - "optional": true + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==" }, "node_modules/contains-path": { "version": "0.1.0", @@ -3288,14 +3544,6 @@ "node": ">= 0.6" } }, - "node_modules/content-security-policy-builder": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/content-security-policy-builder/-/content-security-policy-builder-2.1.0.tgz", - "integrity": "sha512-/MtLWhJVvJNkA9dVLAp6fg9LxD2gfI6R2Fi1hPmfjYXSahJJzcfvoeDOxSyp4NvxMuwWv3WMssE9o31DoULHrQ==", - "engines": { - "node": ">=4.0.0" - } - }, "node_modules/content-type": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", @@ -3304,79 +3552,6 @@ "node": ">= 0.6" } }, - "node_modules/conventional-changelog-angular": { - "version": "5.0.13", - "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.13.tgz", - "integrity": "sha512-i/gipMxs7s8L/QeuavPF2hLnJgH6pEZAttySB6aiQLWcX3puWDL3ACVmvBhJGxnAy52Qc15ua26BufY6KpmrVA==", - "dependencies": { - "compare-func": "^2.0.0", - "q": "^1.5.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/conventional-changelog-writer": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-5.0.1.tgz", - "integrity": "sha512-5WsuKUfxW7suLblAbFnxAcrvf6r+0b7GvNaWUwUIk0bXMnENP/PEieGKVUQrjPqwPT4o3EPAASBXiY6iHooLOQ==", - "dependencies": { - "conventional-commits-filter": "^2.0.7", - "dateformat": "^3.0.0", - "handlebars": "^4.7.7", - "json-stringify-safe": "^5.0.1", - "lodash": "^4.17.15", - "meow": "^8.0.0", - "semver": "^6.0.0", - "split": "^1.0.0", - "through2": "^4.0.0" - }, - "bin": { - "conventional-changelog-writer": "cli.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/conventional-changelog-writer/node_modules/semver": { - "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" - } - }, - "node_modules/conventional-commits-filter": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-2.0.7.tgz", - "integrity": "sha512-ASS9SamOP4TbCClsRHxIHXRfcGCnIoQqkvAzCSbZzTFLfcTqJVugB0agRgsEELsqaeWgsXv513eS116wnlSSPA==", - "dependencies": { - "lodash.ismatch": "^4.4.0", - "modify-values": "^1.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/conventional-commits-parser": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-3.2.4.tgz", - "integrity": "sha512-nK7sAtfi+QXbxHCYfhpZsfRtaitZLIA6889kFIouLvz6repszQDgxBu7wf2WbU+Dco7sAnNCJYERCwt54WPC2Q==", - "dependencies": { - "is-text-path": "^1.0.1", - "JSONStream": "^1.0.4", - "lodash": "^4.17.15", - "meow": "^8.0.0", - "split2": "^3.0.0", - "through2": "^4.0.0" - }, - "bin": { - "conventional-commits-parser": "cli.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/convert-source-map": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", @@ -3384,19 +3559,19 @@ "dev": true }, "node_modules/cookie": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", - "integrity": "sha512-+IJOX0OqlHCszo2mBUq+SrEbCj6w7Kpffqx60zYbPTFaO4+yYgRjHwcZNpWvaTylDHaV7PPmBHzSecZiMhtPgw==", + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz", + "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==", "engines": { "node": ">= 0.6" } }, "node_modules/cookie-parser": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.4.3.tgz", - "integrity": "sha512-EZyO2G+zVFsMjU8jDtxs2iLS1DmryYNjC0s4/IHtsS6pWPUJSr0kt0UPOctRZosebPHYekb7bNcIBt4YW0S9bg==", + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.4.6.tgz", + "integrity": "sha512-z3IzaNjdwUC2olLIB5/ITd0/setiaFMLYiZJle7xg5Fe9KWAceil7xszYfHHBtDFYLSgJduS2Ty0P1uJdPDJeA==", "dependencies": { - "cookie": "0.3.1", + "cookie": "0.4.1", "cookie-signature": "1.0.6" }, "engines": { @@ -3414,13 +3589,6 @@ "integrity": "sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==", "dev": true }, - "node_modules/core-js": { - "version": "2.6.12", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", - "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==", - "deprecated": "core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.", - "hasInstallScript": true - }, "node_modules/core-util-is": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", @@ -3438,34 +3606,17 @@ "node": ">= 0.10" } }, - "node_modules/cosmiconfig": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", - "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", - "dependencies": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "dependencies": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" }, "engines": { - "node": ">=4.8" + "node": ">= 8" } }, "node_modules/crypt": { @@ -3478,11 +3629,28 @@ } }, "node_modules/crypto-random-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", - "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-4.0.0.tgz", + "integrity": "sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==", + "dependencies": { + "type-fest": "^1.0.1" + }, "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/crypto-random-string/node_modules/type-fest": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", + "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/csv-parse": { @@ -3516,6 +3684,7 @@ "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", + "dev": true, "dependencies": { "assert-plus": "^1.0.0" }, @@ -3523,11 +3692,6 @@ "node": ">=0.10" } }, - "node_modules/dasherize": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/dasherize/-/dasherize-2.0.0.tgz", - "integrity": "sha512-APql/TZ6FdLEpf2z7/X2a2zyqK8juYtqaSVqxw9mYoQ64CXkfU15AeLh8pUszT8+fnYjgm6t0aIYpWKJbnLkuA==" - }, "node_modules/data-uri-to-buffer": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-6.0.2.tgz", @@ -3537,12 +3701,55 @@ "node": ">= 14" } }, - "node_modules/dateformat": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", - "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==", + "node_modules/data-view-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", + "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, "engines": { - "node": "*" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", + "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", + "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/debug": { @@ -3566,29 +3773,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/decamelize-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz", - "integrity": "sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==", - "dependencies": { - "decamelize": "^1.1.0", - "map-obj": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/decamelize-keys/node_modules/map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==", + "dev": true, "engines": { "node": ">=0.10.0" } @@ -3608,15 +3793,12 @@ } }, "node_modules/deep-eql": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", - "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.1.tgz", + "integrity": "sha512-nwQCf6ne2gez3o1MxWifqkciwt0zhl0LO1/UwVu4uMBuPmflWM4oQ70XMqHqnBJA+nhzncaqL9HVL6KkHJ28lw==", "dev": true, - "dependencies": { - "type-detect": "^4.0.0" - }, "engines": { - "node": ">=0.12" + "node": ">=6" } }, "node_modules/deep-extend": { @@ -3648,6 +3830,14 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/defer-to-connect": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", + "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", + "engines": { + "node": ">=10" + } + }, "node_modules/define-data-property": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", @@ -3717,59 +3907,52 @@ "uniq": "^1.0.1" } }, + "node_modules/deglob/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/deglob/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/deglob/node_modules/ignore": { "version": "3.3.10", "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==", "dev": true }, - "node_modules/del": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/del/-/del-6.1.1.tgz", - "integrity": "sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==", - "dependencies": { - "globby": "^11.0.1", - "graceful-fs": "^4.2.4", - "is-glob": "^4.0.1", - "is-path-cwd": "^2.2.0", - "is-path-inside": "^3.0.2", - "p-map": "^4.0.0", - "rimraf": "^3.0.2", - "slash": "^3.0.0" + "node_modules/deglob/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": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/del/node_modules/p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "dependencies": { - "aggregate-error": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/del/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": "*" } }, "node_modules/delayed-stream": { @@ -3783,8 +3966,7 @@ "node_modules/delegates": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", - "optional": true + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==" }, "node_modules/denque": { "version": "2.1.0", @@ -3802,10 +3984,15 @@ "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/des.js": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.1.0.tgz", + "integrity": "sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } }, "node_modules/destroy": { "version": "1.2.0", @@ -3817,9 +4004,9 @@ } }, "node_modules/detect-libc": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.2.tgz", - "integrity": "sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", + "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==", "engines": { "node": ">=8" } @@ -3830,6 +4017,15 @@ "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", "dev": true }, + "node_modules/dezalgo": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz", + "integrity": "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==", + "dependencies": { + "asap": "^2.0.0", + "wrappy": "1" + } + }, "node_modules/diff": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", @@ -3850,43 +4046,30 @@ "node": ">=8" } }, - "node_modules/dns-prefetch-control": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/dns-prefetch-control/-/dns-prefetch-control-0.2.0.tgz", - "integrity": "sha512-hvSnros73+qyZXhHFjx2CMLwoj3Fe7eR9EJsFsqmcI1bB2OBWL/+0YzaEaKssCHnj/6crawNnUyw74Gm2EKe+Q==", - "engines": { - "node": ">=4.0.0" - } - }, "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", "dev": true, "dependencies": { "esutils": "^2.0.2" }, "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/dont-sniff-mimetype": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/dont-sniff-mimetype/-/dont-sniff-mimetype-1.1.0.tgz", - "integrity": "sha512-ZjI4zqTaxveH2/tTlzS1wFp+7ncxNZaIEWYg3lzZRHkKf5zPT/MnEG6WL0BhHMJUabkh8GeU5NL5j+rEUCb7Ug==", - "engines": { - "node": ">=4.0.0" + "node": ">=0.10.0" } }, "node_modules/dot-prop": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", - "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz", + "integrity": "sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==", "dependencies": { "is-obj": "^2.0.0" }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/dottie": { @@ -3894,56 +4077,16 @@ "resolved": "https://registry.npmjs.org/dottie/-/dottie-2.0.6.tgz", "integrity": "sha512-iGCHkfUc5kFekGiqhe8B/mdaurD+lakO9txNnTvKtA6PISrw86LgqHvRzWYPyoE2Ph5aMIrCw9/uko6XHTKCwA==" }, - "node_modules/duplexer2": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", - "integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==", - "dependencies": { - "readable-stream": "^2.0.2" - } - }, - "node_modules/duplexer2/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" - }, - "node_modules/duplexer2/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/duplexer2/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==" - }, - "node_modules/duplexer2/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, "node_modules/eastasianwidth": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "dev": true + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" }, "node_modules/ecc-jsbn": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", + "dev": true, "dependencies": { "jsbn": "~0.1.0", "safer-buffer": "^2.1.0" @@ -3952,7 +4095,8 @@ "node_modules/ecc-jsbn/node_modules/jsbn": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==" + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", + "dev": true }, "node_modules/editorconfig": { "version": "1.0.4", @@ -3972,15 +4116,6 @@ "node": ">=14" } }, - "node_modules/editorconfig/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==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, "node_modules/editorconfig/node_modules/commander": { "version": "10.0.1", "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", @@ -3990,18 +4125,6 @@ "node": ">=14" } }, - "node_modules/editorconfig/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/editorconfig/node_modules/minimatch": { "version": "9.0.1", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.1.tgz", @@ -4017,30 +4140,15 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/editorconfig/node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "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/ejs": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.7.tgz", - "integrity": "sha512-BIar7R6abbUxDA3bfXrO4DSgwo8I+fB5/1zgujl3HLLjwd6+9iOnrT+t3grn2qbk9vOgBubXOFwX2m9axoFaGw==", + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz", + "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", "dependencies": { "jake": "^10.8.5" }, @@ -4052,9 +4160,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.4.691", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.691.tgz", - "integrity": "sha512-vJ+/LmKja/St8Ofq4JGMFVZuwG7ECU6akjNSn2/g6nv8xbIBOWGlEs+WA8/3XaWkU0Nlyu0iFGgOxC4mpgFjgA==", + "version": "1.4.772", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.772.tgz", + "integrity": "sha512-jFfEbxR/abTTJA3ci+2ok1NTuOBBtB4jH+UT6PUmRN+DY3WSD4FFRsgoVQ+QNIJ0T7wrXwzsWCI2WKC46b++2A==", "dev": true }, "node_modules/elliptic": { @@ -4071,6 +4179,17 @@ "minimalistic-crypto-utils": "^1.0.1" } }, + "node_modules/emittery": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", + "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", + "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", @@ -4088,7 +4207,6 @@ "version": "0.1.13", "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", - "optional": true, "dependencies": { "iconv-lite": "^0.6.2" } @@ -4097,7 +4215,6 @@ "version": "0.6.3", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "optional": true, "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" }, @@ -4121,155 +4238,10 @@ "wrappy": "1" } }, - "node_modules/env-ci": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/env-ci/-/env-ci-5.5.0.tgz", - "integrity": "sha512-o0JdWIbOLP+WJKIUt36hz1ImQQFuN92nhsfTkHHap+J8CiI8WgGpH/a9jEGHh4/TU5BUUGjlnKXNoDb57+ne+A==", - "dependencies": { - "execa": "^5.0.0", - "fromentries": "^1.3.2", - "java-properties": "^1.0.0" - }, - "engines": { - "node": ">=10.17" - } - }, - "node_modules/env-ci/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==", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/env-ci/node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "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/env-ci/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==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/env-ci/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==", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/env-ci/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==", - "engines": { - "node": ">=6" - } - }, - "node_modules/env-ci/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==", - "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/env-ci/node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/env-ci/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==", - "engines": { - "node": ">=8" - } - }, - "node_modules/env-ci/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==", - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/env-ci/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==", - "engines": { - "node": ">=8" - } - }, - "node_modules/env-ci/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, "node_modules/env-paths": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", - "optional": true, "engines": { "node": ">=6" } @@ -4277,29 +4249,33 @@ "node_modules/err-code": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", - "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", - "optional": true + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==" }, "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" } }, "node_modules/es-abstract": { - "version": "1.22.5", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.5.tgz", - "integrity": "sha512-oW69R+4q2wG+Hc3KZePPZxOiisRIqfKBVo/HLx94QcJeWGU/8sZhCvc829rd1kS366vlJbzBfXf9yWwf0+Ko7w==", + "version": "1.23.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", + "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", "dev": true, "dependencies": { "array-buffer-byte-length": "^1.0.1", "arraybuffer.prototype.slice": "^1.0.3", "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.7", + "data-view-buffer": "^1.0.1", + "data-view-byte-length": "^1.0.1", + "data-view-byte-offset": "^1.0.0", "es-define-property": "^1.0.0", "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", "es-set-tostringtag": "^2.0.3", "es-to-primitive": "^1.2.1", "function.prototype.name": "^1.1.6", @@ -4310,10 +4286,11 @@ "has-property-descriptors": "^1.0.2", "has-proto": "^1.0.3", "has-symbols": "^1.0.3", - "hasown": "^2.0.1", + "hasown": "^2.0.2", "internal-slot": "^1.0.7", "is-array-buffer": "^3.0.4", "is-callable": "^1.2.7", + "is-data-view": "^1.0.1", "is-negative-zero": "^2.0.3", "is-regex": "^1.1.4", "is-shared-array-buffer": "^1.0.3", @@ -4324,17 +4301,17 @@ "object-keys": "^1.1.1", "object.assign": "^4.1.5", "regexp.prototype.flags": "^1.5.2", - "safe-array-concat": "^1.1.0", + "safe-array-concat": "^1.1.2", "safe-regex-test": "^1.0.3", - "string.prototype.trim": "^1.2.8", - "string.prototype.trimend": "^1.0.7", - "string.prototype.trimstart": "^1.0.7", + "string.prototype.trim": "^1.2.9", + "string.prototype.trimend": "^1.0.8", + "string.prototype.trimstart": "^1.0.8", "typed-array-buffer": "^1.0.2", "typed-array-byte-length": "^1.0.1", "typed-array-byte-offset": "^1.0.2", - "typed-array-length": "^1.0.5", + "typed-array-length": "^1.0.6", "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.14" + "which-typed-array": "^1.1.15" }, "engines": { "node": ">= 0.4" @@ -4362,10 +4339,22 @@ "node": ">= 0.4" } }, - "node_modules/es-set-tostringtag": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", - "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", + "node_modules/es-object-atoms": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", + "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", + "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", "dev": true, "dependencies": { "get-intrinsic": "^1.2.4", @@ -4459,17 +4448,32 @@ "node": ">=6" } }, + "node_modules/escape-goat": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-4.0.0.tgz", + "integrity": "sha512-2Sd4ShcWxbx6OY1IHyla/CVNwvg7XwZVoXZHcSu9w9SReNP1EzzD5T8NWKIR38fIqEns9kDWKUQTXXAmlDrdPg==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "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": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "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": ">=0.8.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/escodegen": { @@ -4493,98 +4497,67 @@ "source-map": "~0.6.1" } }, - "node_modules/escodegen/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "optional": true, - "engines": { - "node": ">=4.0" - } - }, "node_modules/eslint": { - "version": "5.14.1", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.14.1.tgz", - "integrity": "sha512-CyUMbmsjxedx8B0mr79mNOqetvkbij/zrXnFeK2zc3pGRn3/tibjiNAv/3UxFEyfMDjh+ZqTrJrEGBFiGfD5Og==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.0.0", - "ajv": "^6.9.1", - "chalk": "^2.1.0", - "cross-spawn": "^6.0.5", - "debug": "^4.0.1", - "doctrine": "^3.0.0", - "eslint-scope": "^4.0.0", - "eslint-utils": "^1.3.1", - "eslint-visitor-keys": "^1.0.0", - "espree": "^5.0.1", - "esquery": "^1.0.1", + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.2.0.tgz", + "integrity": "sha512-0n/I88vZpCOzO+PQpt0lbsqmn9AsnsJAQseIqhZFI8ibQT0U1AkEKRxA3EVMos0BoHSXDQvCXY25TUjB5tr8Og==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^3.0.2", + "@eslint/js": "9.2.0", + "@humanwhocodes/config-array": "^0.13.0", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.2.3", + "@nodelib/fs.walk": "^1.2.8", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^8.0.1", + "eslint-visitor-keys": "^4.0.0", + "espree": "^10.0.1", + "esquery": "^1.4.2", "esutils": "^2.0.2", - "file-entry-cache": "^5.0.1", - "functional-red-black-tree": "^1.0.1", - "glob": "^7.1.2", - "globals": "^11.7.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", "imurmurhash": "^0.1.4", - "inquirer": "^6.2.2", - "js-yaml": "^3.12.0", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.3.0", - "lodash": "^4.17.11", - "minimatch": "^3.0.4", - "mkdirp": "^0.5.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", "natural-compare": "^1.4.0", - "optionator": "^0.8.2", - "path-is-inside": "^1.0.2", - "progress": "^2.0.0", - "regexpp": "^2.0.1", - "semver": "^5.5.1", - "strip-ansi": "^4.0.0", - "strip-json-comments": "^2.0.1", - "table": "^5.2.3", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", "text-table": "^0.2.0" }, "bin": { "eslint": "bin/eslint.js" }, "engines": { - "node": "^6.14.0 || ^8.10.0 || >=9.10.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, "node_modules/eslint-config-google": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/eslint-config-google/-/eslint-config-google-0.12.0.tgz", - "integrity": "sha512-SHDM3nIRCJBACjf8c/H6FvCwRmKbphESNl3gJFBNbw4KYDLCONB3ABYLXDGF+iaVP9XSTND/Q5/PuGoFkp4xbg==", + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/eslint-config-google/-/eslint-config-google-0.14.0.tgz", + "integrity": "sha512-WsbX4WbjuMvTdeVL6+J3rK1RGhCTqjsFjX7UMSMgZiyxxaNLkoJENbrGExzERFeoTpGw3F3FypTiWAP9ZXzkEw==", "dev": true, "engines": { "node": ">=0.10.0" }, "peerDependencies": { - "eslint": ">=5.4.0" - } - }, - "node_modules/eslint-config-standard": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-12.0.0.tgz", - "integrity": "sha512-COUz8FnXhqFitYj4DTqHzidjIL/t4mumGZto5c7DrBpvWoie+Sn3P4sLEzUGeYhRElWuFEf8K1S1EfvD1vixCQ==", - "dev": true, - "peerDependencies": { - "eslint": ">=5.0.0", - "eslint-plugin-import": ">=2.13.0", - "eslint-plugin-node": ">=7.0.0", - "eslint-plugin-promise": ">=4.0.0", - "eslint-plugin-standard": ">=4.0.0" - } - }, - "node_modules/eslint-config-standard-jsx": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/eslint-config-standard-jsx/-/eslint-config-standard-jsx-6.0.2.tgz", - "integrity": "sha512-D+YWAoXw+2GIdbMBRAzWwr1ZtvnSf4n4yL0gKGg7ShUOGXkSOLerI17K4F6LdQMJPNMoWYqepzQD/fKY+tXNSg==", - "dev": true, - "peerDependencies": { - "eslint": ">=5.0.0", - "eslint-plugin-react": ">=7.11.1" + "eslint": ">=5.16.0" } }, "node_modules/eslint-import-resolver-node": { @@ -4661,333 +4634,155 @@ "eslint": ">=4.19.1" } }, - "node_modules/eslint-plugin-import": { - "version": "2.14.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.14.0.tgz", - "integrity": "sha512-FpuRtniD/AY6sXByma2Wr0TXvXJ4nA/2/04VPlfpmUDPOpOY264x+ILiwnrk/k4RINgDAyFZByxqPUbSQ5YE7g==", + "node_modules/eslint-plugin-node": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-7.0.1.tgz", + "integrity": "sha512-lfVw3TEqThwq0j2Ba/Ckn2ABdwmL5dkOgAux1rvOk6CO7A6yGyPI2+zIxN6FyNkp1X1X/BSvKOceD6mBWSj4Yw==", "dev": true, "dependencies": { - "contains-path": "^0.1.0", - "debug": "^2.6.8", - "doctrine": "1.5.0", - "eslint-import-resolver-node": "^0.3.1", - "eslint-module-utils": "^2.2.0", - "has": "^1.0.1", - "lodash": "^4.17.4", - "minimatch": "^3.0.3", - "read-pkg-up": "^2.0.0", - "resolve": "^1.6.0" + "eslint-plugin-es": "^1.3.1", + "eslint-utils": "^1.3.1", + "ignore": "^4.0.2", + "minimatch": "^3.0.4", + "resolve": "^1.8.1", + "semver": "^5.5.0" }, "engines": { - "node": ">=4" + "node": ">=6" }, "peerDependencies": { - "eslint": "2.x - 5.x" + "eslint": ">=4.19.1" } }, - "node_modules/eslint-plugin-import/node_modules/doctrine": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", - "integrity": "sha512-lsGyRuYr4/PIB0txi+Fy2xOMI2dGaTguCaotzFGkVZuKR5usKfcRWIFKNM3QNrU7hh/+w2bwTW+ZeXPK5l8uVg==", + "node_modules/eslint-plugin-node/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": { - "esutils": "^2.0.2", - "isarray": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/eslint-plugin-import/node_modules/find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", + "node_modules/eslint-plugin-node/node_modules/ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", "dev": true, - "dependencies": { - "locate-path": "^2.0.0" - }, "engines": { - "node": ">=4" + "node": ">= 4" } }, - "node_modules/eslint-plugin-import/node_modules/hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "dev": true - }, - "node_modules/eslint-plugin-import/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true - }, - "node_modules/eslint-plugin-import/node_modules/load-json-file": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", - "integrity": "sha512-3p6ZOGNbiX4CdvEd1VcE6yi78UrGNpjHO33noGwHCnT/o2fyllJDepsm8+mFFv/DvtwFHht5HIHSyOy5a+ChVQ==", + "node_modules/eslint-plugin-node/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": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "strip-bom": "^3.0.0" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">=4" + "node": "*" } }, - "node_modules/eslint-plugin-import/node_modules/locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", + "node_modules/eslint-plugin-node/node_modules/semver": { + "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" + } + }, + "node_modules/eslint-plugin-promise": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-4.0.1.tgz", + "integrity": "sha512-Si16O0+Hqz1gDHsys6RtFRrW7cCTB6P7p3OJmKp3Y3dxpQE2qwOA7d3xnV+0mBmrPoi0RBnxlCKvqu70te6wjg==", "dev": true, - "dependencies": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - }, "engines": { - "node": ">=4" + "node": ">=6" } }, - "node_modules/eslint-plugin-import/node_modules/normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "node_modules/eslint-plugin-standard": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-standard/-/eslint-plugin-standard-4.0.2.tgz", + "integrity": "sha512-nKptN8l7jksXkwFk++PhJB3cCDTcXOEyhISIN86Ue2feJ1LFyY3PrY3/xT2keXlJSY5bpmbiTG0f885/YKAvTA==", "dev": true, - "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "peerDependencies": { + "eslint": ">=5.0.0" } }, - "node_modules/eslint-plugin-import/node_modules/p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "node_modules/eslint-scope": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.0.1.tgz", + "integrity": "sha512-pL8XjgP4ZOmmwfFE8mEhSxA7ZY4C+LWyqjQ3o4yWkkmD0qcMT9kkW3zWHOczhWcjTSgqycYAgwSlXvZltv65og==", "dev": true, "dependencies": { - "p-try": "^1.0.0" + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" }, "engines": { - "node": ">=4" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint-plugin-import/node_modules/p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", + "node_modules/eslint-utils": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", + "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", "dev": true, "dependencies": { - "p-limit": "^1.1.0" + "eslint-visitor-keys": "^1.1.0" }, "engines": { - "node": ">=4" + "node": ">=6" } }, - "node_modules/eslint-plugin-import/node_modules/p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", + "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", "dev": true, "engines": { "node": ">=4" } }, - "node_modules/eslint-plugin-import/node_modules/parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==", + "node_modules/eslint-visitor-keys": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.0.0.tgz", + "integrity": "sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==", "dev": true, - "dependencies": { - "error-ex": "^1.2.0" - }, "engines": { - "node": ">=0.10.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint-plugin-import/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==", + "node_modules/eslint/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, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-plugin-import/node_modules/path-type": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", - "integrity": "sha512-dUnb5dXUf+kzhC/W/F4e5/SkluXIFf5VUHolW1Eg1irn1hGWjPGdsRcvYJ1nD6lhk8Ir7VM0bHJKsYTx8Jx9OQ==", - "dev": true, - "dependencies": { - "pify": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-plugin-import/node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eslint-plugin-import/node_modules/read-pkg": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", - "integrity": "sha512-eFIBOPW7FGjzBuk3hdXEuNSiTZS/xEMlH49HxMyzb0hyPfu4EhVjT2DH32K1hSSmVq4sebAWnZuuY5auISUTGA==", - "dev": true, - "dependencies": { - "load-json-file": "^2.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-plugin-import/node_modules/read-pkg-up": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", - "integrity": "sha512-1orxQfbWGUiTn9XsPlChs6rLie/AV9jwZTGmu2NZw/CUDJQchXJFYE0Fq5j7+n558T1JhDWLdhyd1Zj+wLY//w==", - "dev": true, - "dependencies": { - "find-up": "^2.0.0", - "read-pkg": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-plugin-import/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==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-plugin-node": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-7.0.1.tgz", - "integrity": "sha512-lfVw3TEqThwq0j2Ba/Ckn2ABdwmL5dkOgAux1rvOk6CO7A6yGyPI2+zIxN6FyNkp1X1X/BSvKOceD6mBWSj4Yw==", - "dev": true, - "dependencies": { - "eslint-plugin-es": "^1.3.1", - "eslint-utils": "^1.3.1", - "ignore": "^4.0.2", - "minimatch": "^3.0.4", - "resolve": "^1.8.1", - "semver": "^5.5.0" - }, - "engines": { - "node": ">=6" - }, - "peerDependencies": { - "eslint": ">=4.19.1" - } - }, - "node_modules/eslint-plugin-promise": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-4.0.1.tgz", - "integrity": "sha512-Si16O0+Hqz1gDHsys6RtFRrW7cCTB6P7p3OJmKp3Y3dxpQE2qwOA7d3xnV+0mBmrPoi0RBnxlCKvqu70te6wjg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/eslint-plugin-react": { - "version": "7.11.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.11.1.tgz", - "integrity": "sha512-cVVyMadRyW7qsIUh3FHp3u6QHNhOgVrLQYdQEB1bPWBsgbNCHdFAeNMquBMCcZJu59eNthX053L70l7gRt4SCw==", - "dev": true, - "dependencies": { - "array-includes": "^3.0.3", - "doctrine": "^2.1.0", - "has": "^1.0.3", - "jsx-ast-utils": "^2.0.1", - "prop-types": "^15.6.2" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0" - } - }, - "node_modules/eslint-plugin-react/node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eslint-plugin-standard": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-standard/-/eslint-plugin-standard-4.0.2.tgz", - "integrity": "sha512-nKptN8l7jksXkwFk++PhJB3cCDTcXOEyhISIN86Ue2feJ1LFyY3PrY3/xT2keXlJSY5bpmbiTG0f885/YKAvTA==", - "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" - } - ], - "peerDependencies": { - "eslint": ">=5.0.0" - } - }, - "node_modules/eslint-scope": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", - "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", - "dev": true, - "dependencies": { - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/eslint-utils": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", - "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^1.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true, - "engines": { - "node": ">=4" + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, "node_modules/eslint/node_modules/debug": { @@ -5007,6 +4802,18 @@ } } }, + "node_modules/eslint/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/eslint/node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -5029,35 +4836,27 @@ } }, "node_modules/espree": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-5.0.1.tgz", - "integrity": "sha512-qWAZcWh4XE/RwzLJejfcofscgMc9CamR6Tn1+XRXNzrvUSSbiAjGOI/fggztjIi7y9VLPqnICMIPiGyr8JaZ0A==", + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.0.1.tgz", + "integrity": "sha512-MWkrWZbJsL2UwnjxTX3gG8FneachS/Mwg7tdGXce011sJd5b0JG54vat5KHnfSBODZ3Wvzd2WnjxyzsRoVv+ww==", "dev": true, "dependencies": { - "acorn": "^6.0.7", - "acorn-jsx": "^5.0.0", - "eslint-visitor-keys": "^1.0.0" + "acorn": "^8.11.3", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.0.0" }, "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/espree/node_modules/acorn": { - "version": "6.4.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", - "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", - "dev": true, - "bin": { - "acorn": "bin/acorn" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, - "engines": { - "node": ">=0.4.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==", + "devOptional": true, "bin": { "esparse": "bin/esparse.js", "esvalidate": "bin/esvalidate.js" @@ -5078,15 +4877,6 @@ "node": ">=0.10" } }, - "node_modules/esquery/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/esrecurse": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", @@ -5099,20 +4889,11 @@ "node": ">=4.0" } }, - "node_modules/esrecurse/node_modules/estraverse": { + "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/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, + "devOptional": true, "engines": { "node": ">=4.0" } @@ -5144,11 +4925,21 @@ "es5-ext": "~0.10.14" } }, - "node_modules/eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", - "dev": true + "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": "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/eventuate": { "version": "4.0.0", @@ -5185,54 +4976,113 @@ "node": ">=6" } }, - "node_modules/expand-template": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", - "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", + "node_modules/execa/node_modules/cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, "engines": { - "node": ">=6" + "node": ">=4.8" } }, - "node_modules/expect-ct": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/expect-ct/-/expect-ct-0.2.0.tgz", - "integrity": "sha512-6SK3MG/Bbhm8MsgyJAylg+ucIOU71/FzyFalcfu5nY19dH8y/z0tBJU0wrNBXD4B27EoQtqPF/9wqH0iYAd04g==", + "node_modules/execa/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", "engines": { - "node": ">=4.0.0" + "node": ">=4" } }, - "node_modules/express": { - "version": "4.17.3", - "resolved": "https://registry.npmjs.org/express/-/express-4.17.3.tgz", - "integrity": "sha512-yuSQpz5I+Ch7gFrPCk4/c+dIBKlQUxtgwqzph132bsT6qhuzss6I8cLJQz7B3rFblzd6wtcI0ZbGltH/C4LjUg==", + "node_modules/execa/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/execa/node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", "dependencies": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.19.2", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.4.2", + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/execa/node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/execa/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/expand-template": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", + "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/exponential-backoff": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.1.tgz", + "integrity": "sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==" + }, + "node_modules/express": { + "version": "4.19.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", + "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.2", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.6.0", "cookie-signature": "1.0.6", "debug": "2.6.9", - "depd": "~1.1.2", + "depd": "2.0.0", "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "etag": "~1.8.1", - "finalhandler": "~1.1.2", + "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.3.0", + "on-finished": "2.4.1", "parseurl": "~1.3.3", "path-to-regexp": "0.1.7", "proxy-addr": "~2.0.7", - "qs": "6.9.7", + "qs": "6.11.0", "range-parser": "~1.2.1", "safe-buffer": "5.2.1", - "send": "0.17.2", - "serve-static": "1.14.2", + "send": "0.18.0", + "serve-static": "1.15.0", "setprototypeof": "1.2.0", - "statuses": "~1.5.0", + "statuses": "2.0.1", "type-is": "~1.6.18", "utils-merge": "1.0.1", "vary": "~1.1.2" @@ -5272,72 +5122,21 @@ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.7.tgz", "integrity": "sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA==" }, - "node_modules/express/node_modules/body-parser": { - "version": "1.19.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.2.tgz", - "integrity": "sha512-SAAwOxgoCKMGs9uUAUFHygfLAyaniaoun6I8mFY9pRAJL9+Kec34aU+oIjDhTycub1jozEfEwx1W1IuOYxVSFw==", - "dependencies": { - "bytes": "3.1.2", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "1.8.1", - "iconv-lite": "0.4.24", - "on-finished": "~2.3.0", - "qs": "6.9.7", - "raw-body": "2.4.3", - "type-is": "~1.6.18" - }, - "engines": { - "node": ">= 0.8" - } - }, "node_modules/express/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/express/node_modules/depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/express/node_modules/http-errors": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", - "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", - "dependencies": { - "depd": "~1.1.2", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.1" - }, + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", "engines": { "node": ">= 0.6" } }, - "node_modules/express/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==", + "node_modules/express/node_modules/qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", "dependencies": { - "ee-first": "1.1.1" + "side-channel": "^1.0.4" }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/express/node_modules/qs": { - "version": "6.9.7", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.7.tgz", - "integrity": "sha512-IhMFgUmuNpyRfxA90umL7ByLlgRXu6tIfKPpF5TmcfRLlLCckfP/g3IQmju6jjpu+Hh8rA+2p6A27ZSPOOHdKw==", "engines": { "node": ">=0.6" }, @@ -5345,20 +5144,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/express/node_modules/raw-body": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.3.tgz", - "integrity": "sha512-UlTNLIcu0uzb4D2f4WltY6cVjLi+/jEN4lgEUj3E04tpMDpUlkBo/eSn6zou9hum2VMNpCCUone0O0WeJim07g==", - "dependencies": { - "bytes": "3.1.2", - "http-errors": "1.8.1", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, "node_modules/ext": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", @@ -5371,22 +5156,29 @@ "node_modules/extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true }, "node_modules/external-editor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", - "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz", + "integrity": "sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==", "dev": true, "dependencies": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", + "chardet": "^0.4.0", + "iconv-lite": "^0.4.17", "tmp": "^0.0.33" }, "engines": { - "node": ">=4" + "node": ">=0.12" } }, + "node_modules/external-editor/node_modules/chardet": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz", + "integrity": "sha512-j/Toj7f1z98Hh2cYo2BVr85EpIRWqUi7rtRSGxh/cqUjqrnJe9l9UE7IUGd2vQ2p+kSHLkSzObQPZPLUC6TQwg==", + "dev": true + }, "node_modules/extract-zip": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", @@ -5449,20 +5241,16 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", + "dev": true, "engines": [ "node >=0.6.0" ] }, - "node_modules/faker": { - "version": "5.5.3", - "resolved": "https://registry.npmjs.org/faker/-/faker-5.5.3.tgz", - "integrity": "sha512-wLTv2a28wjUyWkbnX7u/ABZBkUkIF2fCd73V6P2oFqEGEktDfzWx4UxrSqtPRw0xPRAcjeAOIiJWqZm3pP4u3g==", - "dev": true - }, "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==" + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true }, "node_modules/fast-glob": { "version": "3.3.2", @@ -5479,10 +5267,22 @@ "node": ">=8.6.0" } }, + "node_modules/fast-glob/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==", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "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==" + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true }, "node_modules/fast-levenshtein": { "version": "2.0.6", @@ -5490,10 +5290,15 @@ "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", "dev": true }, + "node_modules/fast-memoize": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/fast-memoize/-/fast-memoize-2.5.2.tgz", + "integrity": "sha512-Ue0LwpDYErFbmNnZSF0UH6eImUwDmogUO1jyE+JbN2gsQz/jICm1Ve7t9QT0rNSsfJt+Hs4/S3GnsDVjL4HVrw==" + }, "node_modules/fast-redact": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-2.1.0.tgz", - "integrity": "sha512-0LkHpTLyadJavq9sRzzyqIoMZemWli77K2/MGOkafrR64B9ItrvZ9aT+jluvNDsv0YEHjSNhlMBtbokuoqii4A==", + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-3.5.0.tgz", + "integrity": "sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A==", "engines": { "node": ">=6" } @@ -5501,7 +5306,8 @@ "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==" + "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", + "dev": true }, "node_modules/fastq": { "version": "1.17.1", @@ -5520,18 +5326,11 @@ "pend": "~1.2.0" } }, - "node_modules/feature-policy": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/feature-policy/-/feature-policy-0.3.0.tgz", - "integrity": "sha512-ZtijOTFN7TzCujt1fnNhfWPFPSHeZkesff9AXZj+UEjYBynWNUIYpC87Ve4wHzyexQsImicLu7WsC2LHq7/xrQ==", - "engines": { - "node": ">=4.0.0" - } - }, "node_modules/figures": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", "integrity": "sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==", + "dev": true, "dependencies": { "escape-string-regexp": "^1.0.5" }, @@ -5539,16 +5338,25 @@ "node": ">=4" } }, + "node_modules/figures/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/file-entry-cache": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", - "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", "dev": true, "dependencies": { - "flat-cache": "^2.0.1" + "flat-cache": "^4.0.0" }, "engines": { - "node": ">=4" + "node": ">=16.0.0" } }, "node_modules/file-type": { @@ -5573,14 +5381,6 @@ "minimatch": "^5.0.1" } }, - "node_modules/filelist/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/filelist/node_modules/minimatch": { "version": "5.1.6", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", @@ -5593,12 +5393,12 @@ } }, "node_modules/filesize": { - "version": "8.0.7", - "resolved": "https://registry.npmjs.org/filesize/-/filesize-8.0.7.tgz", - "integrity": "sha512-pjmC+bkIF8XI7fWaH8KxHcZL3DPybs1roSKP4rKDvy20tAWwIObE4+JIseG2byfGKhud5ZnM4YSGKBz7Sh0ndQ==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/filesize/-/filesize-10.1.0.tgz", + "integrity": "sha512-GTLKYyBSDz3nPhlLVPjPWZCnhkd9TrrRArNcy8Z+J2cqScB7h2McAzR6NBX6nYOoWafql0roY8hrocxnZBv9CQ==", "dev": true, "engines": { - "node": ">= 0.4.0" + "node": ">= 10.4.0" } }, "node_modules/fill-range": { @@ -5613,33 +5413,22 @@ } }, "node_modules/finalhandler": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "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.3.0", + "on-finished": "2.4.1", "parseurl": "~1.3.3", - "statuses": "~1.5.0", + "statuses": "2.0.1", "unpipe": "~1.0.0" }, "engines": { "node": ">= 0.8" } }, - "node_modules/finalhandler/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==", - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, "node_modules/find-cache-dir": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", @@ -5658,12 +5447,11 @@ } }, "node_modules/find-replace": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-2.0.1.tgz", - "integrity": "sha512-LzDo3Fpa30FLIBsh6DCDnMN1KW2g4QKkqKmejlImgWY67dDFPX/x9Kh/op/GK522DchQXEvDi/wD48HKW49XOQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-3.0.0.tgz", + "integrity": "sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==", "dependencies": { - "array-back": "^2.0.0", - "test-value": "^3.0.0" + "array-back": "^3.0.1" }, "engines": { "node": ">=4.0.0" @@ -5679,7 +5467,6 @@ "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" @@ -5691,20 +5478,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/find-versions": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/find-versions/-/find-versions-4.0.0.tgz", - "integrity": "sha512-wgpWy002tA+wgmO27buH/9KzyEOQnKsG/R0yrcjPT9BOFm0zRBVQbZ95nRGXWMywS8YR5knRbpohio0bcJABxQ==", - "dependencies": { - "semver-regex": "^3.1.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/flat": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", @@ -5715,28 +5488,22 @@ } }, "node_modules/flat-cache": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", - "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", "dev": true, "dependencies": { - "flatted": "^2.0.0", - "rimraf": "2.6.3", - "write": "1.0.3" + "flatted": "^3.2.9", + "keyv": "^4.5.4" }, "engines": { - "node": ">=4" + "node": ">=16" } }, - "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": "2.0.2", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", - "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", + "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", "dev": true }, "node_modules/follow-redirects": { @@ -5780,69 +5547,11 @@ "node": ">=8.0.0" } }, - "node_modules/foreground-child/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/foreground-child/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/foreground-child/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/foreground-child/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/foreground-child/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/forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", + "dev": true, "engines": { "node": "*" } @@ -5860,26 +5569,49 @@ "node": ">= 6" } }, - "node_modules/formidable": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.1.tgz", - "integrity": "sha512-Fs9VRguL0gqGHkXS5GQiMCr1VhZBxz0JnJs4JmMp/2jL18Fmbzvv7vOFRU+U8TBkHEE/CX1qDXzJplVULgsLeg==", - "deprecated": "Please upgrade to latest, formidable@v2 or formidable@v3! Check these notes: https://bit.ly/2ZEqIau" + "node_modules/form-data-encoder": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-2.1.4.tgz", + "integrity": "sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==", + "engines": { + "node": ">= 14.17" + } }, - "node_modules/forwarded": { - "version": "0.2.0", + "node_modules/formidable": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/formidable/-/formidable-3.5.1.tgz", + "integrity": "sha512-WJWKelbRHN41m5dumb0/k8TeAx7Id/y3a+Z7QfhxP/htI9Js5zYaEDtG8uMgG0vM0lOlqnmjE99/kfpOYi/0Og==", + "dependencies": { + "dezalgo": "^1.0.4", + "hexoid": "^1.0.0", + "once": "^1.4.0" + }, + "funding": { + "url": "https://ko-fi.com/tunnckoCore/commissions" + } + }, + "node_modules/formidable/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/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/frameguard": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/frameguard/-/frameguard-3.1.0.tgz", - "integrity": "sha512-TxgSKM+7LTA6sidjOiSZK9wxY0ffMPY3Wta//MqwmX0nZuEHc8QrkV8Fh3ZhMJeiH+Uyh/tcaarImRy8u77O7g==", + "node_modules/fp-and-or": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/fp-and-or/-/fp-and-or-0.1.4.tgz", + "integrity": "sha512-+yRYRhpnFPWXSly/6V4Lw9IfOV26uu30kynGJ03PW+MnjOEQe45RZ141QcS0aJehYBYA50GfCDnsRbFJdhssRw==", "engines": { - "node": ">=4.0.0" + "node": ">=10" } }, "node_modules/fresh": { @@ -5890,51 +5622,11 @@ "node": ">= 0.6" } }, - "node_modules/from2": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", - "integrity": "sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==", - "dependencies": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.0" - } - }, - "node_modules/from2/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" - }, - "node_modules/from2/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/from2/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==" - }, - "node_modules/from2/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, "node_modules/fromentries": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/fromentries/-/fromentries-1.3.2.tgz", "integrity": "sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg==", + "dev": true, "funding": [ { "type": "github", @@ -5959,6 +5651,7 @@ "version": "11.2.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "optional": true, "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", @@ -5968,15 +5661,32 @@ "node": ">=14.14" } }, + "node_modules/fs-extra/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "optional": true, + "engines": { + "node": ">= 10.0.0" + } + }, "node_modules/fs-minipass": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz", + "integrity": "sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==", "dependencies": { - "minipass": "^3.0.0" + "minipass": "^7.0.3" }, "engines": { - "node": ">= 8" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/fs-minipass/node_modules/minipass": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.1.tgz", + "integrity": "sha512-UZ7eQ+h8ywIRAW1hIEl2AqdwzJucU/Kp59+8kkZeSvafXhZjul247BvIJjEVFVeON6d7lM46XX1HXCduKAS8VA==", + "engines": { + "node": ">=16 || 14 >=14.17" } }, "node_modules/fs.realpath": { @@ -6055,7 +5765,6 @@ "version": "4.0.4", "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", - "optional": true, "dependencies": { "aproba": "^1.0.3 || ^2.0.0", "color-support": "^1.1.3", @@ -6070,50 +5779,6 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/gauge/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==", - "optional": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/gauge/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==", - "optional": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/gauge/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==", - "optional": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/gauge/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==", - "optional": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/generate-function": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz", @@ -6176,12 +5841,14 @@ } }, "node_modules/get-stdin": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz", - "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==", - "dev": true, + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-8.0.0.tgz", + "integrity": "sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==", "engines": { - "node": ">=4" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/get-stream": { @@ -6254,105 +5921,57 @@ "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", + "dev": true, "dependencies": { "assert-plus": "^1.0.0" } }, - "node_modules/git-log-parser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/git-log-parser/-/git-log-parser-1.2.0.tgz", - "integrity": "sha512-rnCVNfkTL8tdNryFuaY0fYiBWEBcgF748O6ZI61rslBvr2o7U65c2/6npCRqH40vuAhtgtDiqLTJjBVdrejCzA==", - "dependencies": { - "argv-formatter": "~1.0.0", - "spawn-error-forwarder": "~1.0.0", - "split2": "~1.0.0", - "stream-combiner2": "~1.1.1", - "through2": "~2.0.0", - "traverse": "~0.6.6" - } - }, - "node_modules/git-log-parser/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" - }, - "node_modules/git-log-parser/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/git-log-parser/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==" - }, - "node_modules/git-log-parser/node_modules/split2": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/split2/-/split2-1.0.0.tgz", - "integrity": "sha512-NKywug4u4pX/AZBB1FCPzZ6/7O+Xhz1qMVbzTvvKvikjO99oPN87SkK08mEY9P63/5lWjK+wgOOgApnTg5r6qg==", - "dependencies": { - "through2": "~2.0.0" - } - }, - "node_modules/git-log-parser/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/git-log-parser/node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, "node_modules/github-from-package": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==" }, "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "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" + "minimatch": "^5.0.1", + "once": "^1.3.0" }, "engines": { - "node": "*" + "node": ">=12" }, "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==", + "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.1" + "is-glob": "^4.0.3" }, "engines": { - "node": ">= 6" + "node": ">=10.13.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==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" } }, "node_modules/global-agent": { @@ -6372,49 +5991,45 @@ "node": ">=10.0" } }, - "node_modules/global-agent/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, + "node_modules/global-dirs": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz", + "integrity": "sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==", "dependencies": { - "yallist": "^4.0.0" + "ini": "2.0.0" }, "engines": { "node": ">=10" - } - }, - "node_modules/global-agent/node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" }, - "engines": { - "node": ">=10" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/globally": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/globally/-/globally-0.0.0.tgz", + "integrity": "sha512-tYG+DbE1S3kqNI4Cy7ZZ3hrniG9uOAlOWnqZVg952NFIktni+UUGSYbuwdPDuykfh/xy3G0h+OXpgqsVsJN6gQ==" + }, "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==", + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", "dev": true, "engines": { - "node": ">=4" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/globalthis": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", - "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", "dev": true, "dependencies": { - "define-properties": "^1.1.3" + "define-properties": "^1.2.1", + "gopd": "^1.0.1" }, "engines": { "node": ">= 0.4" @@ -6442,14 +6057,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/globby/node_modules/ignore": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", - "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", - "engines": { - "node": ">= 4" - } - }, "node_modules/gopd": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", @@ -6461,32 +6068,59 @@ "url": "https://github.com/sponsors/ljharb" } }, - "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/growl": { - "version": "1.10.5", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", - "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", - "dev": true, - "engines": { - "node": ">=4.x" - } - }, - "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==", + "node_modules/got": { + "version": "12.6.1", + "resolved": "https://registry.npmjs.org/got/-/got-12.6.1.tgz", + "integrity": "sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ==", "dependencies": { - "minimist": "^1.2.5", - "neo-async": "^2.6.0", - "source-map": "^0.6.1", - "wordwrap": "^1.0.0" - }, - "bin": { - "handlebars": "bin/handlebars" + "@sindresorhus/is": "^5.2.0", + "@szmarczak/http-timer": "^5.0.1", + "cacheable-lookup": "^7.0.0", + "cacheable-request": "^10.2.8", + "decompress-response": "^6.0.0", + "form-data-encoder": "^2.1.2", + "get-stream": "^6.0.1", + "http2-wrapper": "^2.1.10", + "lowercase-keys": "^3.0.0", + "p-cancelable": "^3.0.0", + "responselike": "^3.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sindresorhus/got?sponsor=1" + } + }, + "node_modules/got/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==", + "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/handlebars": { + "version": "4.7.8", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", + "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5", + "neo-async": "^2.6.2", + "source-map": "^0.6.1", + "wordwrap": "^1.0.0" + }, + "bin": { + "handlebars": "bin/handlebars" }, "engines": { "node": ">=0.4.7" @@ -6499,6 +6133,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", + "dev": true, "engines": { "node": ">=4" } @@ -6508,6 +6143,7 @@ "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", "deprecated": "this library is no longer supported", + "dev": true, "dependencies": { "ajv": "^6.12.3", "har-schema": "^2.0.0" @@ -6516,14 +6152,6 @@ "node": ">=6" } }, - "node_modules/hard-rejection": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", - "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", - "engines": { - "node": ">=6" - } - }, "node_modules/has": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/has/-/has-1.0.4.tgz", @@ -6545,6 +6173,15 @@ "node": ">=0.10.0" } }, + "node_modules/has-ansi/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/has-bigints": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", @@ -6555,11 +6192,11 @@ } }, "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==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/has-property-descriptors": { @@ -6613,8 +6250,18 @@ "node_modules/has-unicode": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", - "optional": true + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==" + }, + "node_modules/has-yarn": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-3.0.0.tgz", + "integrity": "sha512-IrsVwUHhEULx3R8f/aA8AHuEzAorplsab/v8HBzEiIukwq5i/EC+xmOW+HfP1OaDP+2JkgT1yILHN2O3UFIbcA==", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, "node_modules/hash.js": { "version": "1.1.7", @@ -6654,9 +6301,9 @@ } }, "node_modules/hasown": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.1.tgz", - "integrity": "sha512-1/th4MHjnwncwXsIW6QMzlvYL9kG5e/CpVvLRZe4XPa8TOUNbCELqmvhDmnkNsAjwaG4+I8gJJL0JBvTTLO9qA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", "dependencies": { "function-bind": "^1.1.2" }, @@ -6674,58 +6321,19 @@ } }, "node_modules/helmet": { - "version": "3.21.2", - "resolved": "https://registry.npmjs.org/helmet/-/helmet-3.21.2.tgz", - "integrity": "sha512-okUo+MeWgg00cKB8Csblu8EXgcIoDyb5ZS/3u0W4spCimeVuCUvVZ6Vj3O2VJ1Sxpyb8jCDvzu0L1KKT11pkIg==", - "dependencies": { - "depd": "2.0.0", - "dns-prefetch-control": "0.2.0", - "dont-sniff-mimetype": "1.1.0", - "expect-ct": "0.2.0", - "feature-policy": "0.3.0", - "frameguard": "3.1.0", - "helmet-crossdomain": "0.4.0", - "helmet-csp": "2.9.4", - "hide-powered-by": "1.1.0", - "hpkp": "2.0.0", - "hsts": "2.2.0", - "ienoopen": "1.1.0", - "nocache": "2.1.0", - "referrer-policy": "1.2.0", - "x-xss-protection": "1.3.0" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/helmet-crossdomain": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/helmet-crossdomain/-/helmet-crossdomain-0.4.0.tgz", - "integrity": "sha512-AB4DTykRw3HCOxovD1nPR16hllrVImeFp5VBV9/twj66lJ2nU75DP8FPL0/Jp4jj79JhTfG+pFI2MD02kWJ+fA==", - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/helmet-csp": { - "version": "2.9.4", - "resolved": "https://registry.npmjs.org/helmet-csp/-/helmet-csp-2.9.4.tgz", - "integrity": "sha512-qUgGx8+yk7Xl8XFEGI4MFu1oNmulxhQVTlV8HP8tV3tpfslCs30OZz/9uQqsWPvDISiu/NwrrCowsZBhFADYqg==", - "dependencies": { - "bowser": "^2.7.0", - "camelize": "1.0.0", - "content-security-policy-builder": "2.1.0", - "dasherize": "2.0.0" - }, + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/helmet/-/helmet-7.1.0.tgz", + "integrity": "sha512-g+HZqgfbpXdCkme/Cd/mZkV0aV3BZZZSugecH03kl38m/Kmdx8jKjBikpDj2cr+Iynv4KpYEviojNdTJActJAg==", "engines": { - "node": ">=4.0.0" + "node": ">=16.0.0" } }, - "node_modules/hide-powered-by": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/hide-powered-by/-/hide-powered-by-1.1.0.tgz", - "integrity": "sha512-Io1zA2yOA1YJslkr+AJlWSf2yWFkKjvkcL9Ni1XSUqnGLr/qRQe2UI3Cn/J9MsJht7yEVCe0SscY1HgVMujbgg==", + "node_modules/hexoid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hexoid/-/hexoid-1.0.0.tgz", + "integrity": "sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g==", "engines": { - "node": ">=4.0.0" + "node": ">=8" } }, "node_modules/hmac-drbg": { @@ -6738,50 +6346,23 @@ "minimalistic-crypto-utils": "^1.0.1" } }, - "node_modules/hook-std": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/hook-std/-/hook-std-2.0.0.tgz", - "integrity": "sha512-zZ6T5WcuBMIUVh49iPQS9t977t7C0l7OtHrpeMb5uk48JdflRX0NSFvCekfYNmGQETnLq9W/isMyHl69kxGi8g==", - "engines": { - "node": ">=8" - } - }, "node_modules/hosted-git-info": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", - "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.2.1.tgz", + "integrity": "sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw==", "dependencies": { - "lru-cache": "^6.0.0" + "lru-cache": "^7.5.1" }, "engines": { - "node": ">=10" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, "node_modules/hosted-git-info/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/hpkp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/hpkp/-/hpkp-2.0.0.tgz", - "integrity": "sha512-TaZpC6cO/k3DFsjfzz1LnOobbVSq+J+7WpJxrVtN4L+8+BPQj8iBDRB2Dx49613N+e7/+ZSQ9ra+xZm7Blf4wg==" - }, - "node_modules/hsts": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/hsts/-/hsts-2.2.0.tgz", - "integrity": "sha512-ToaTnQ2TbJkochoVcdXYm4HOCliNozlviNsg+X2XQLQvZNI/kCHR9rZxVYpJB3UPcHz80PgxRyWQ7PdU1r+VBQ==", - "dependencies": { - "depd": "2.0.0" - }, + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", "engines": { - "node": ">=4.0.0" + "node": ">=12" } }, "node_modules/html-escaper": { @@ -6793,8 +6374,7 @@ "node_modules/http-cache-semantics": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", - "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", - "optional": true + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==" }, "node_modules/http-errors": { "version": "2.0.0", @@ -6811,24 +6391,17 @@ "node": ">= 0.8" } }, - "node_modules/http-errors/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/http-proxy-agent": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", - "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", "dependencies": { - "agent-base": "^7.1.0", - "debug": "^4.3.4" + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" }, "engines": { - "node": ">= 14" + "node": ">= 6" } }, "node_modules/http-proxy-agent/node_modules/debug": { @@ -6872,17 +6445,41 @@ "node": ">=0.10" } }, + "node_modules/http2-wrapper": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.2.1.tgz", + "integrity": "sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==", + "dependencies": { + "quick-lru": "^5.1.1", + "resolve-alpn": "^1.2.0" + }, + "engines": { + "node": ">=10.19.0" + } + }, "node_modules/httpntlm": { - "version": "1.7.7", - "resolved": "https://registry.npmjs.org/httpntlm/-/httpntlm-1.7.7.tgz", - "integrity": "sha512-Pv2Rvrz8H0qv1Dne5mAdZ9JegG1uc6Vu5lwLflIY6s8RKHdZQbW39L4dYswSgqMDT0pkJILUTKjeyU0VPNRZjA==", + "version": "1.8.13", + "resolved": "https://registry.npmjs.org/httpntlm/-/httpntlm-1.8.13.tgz", + "integrity": "sha512-2F2FDPiWT4rewPzNMg3uPhNkP3NExENlUGADRUDPQvuftuUTGW98nLZtGemCIW3G40VhWZYgkIDcQFAwZ3mf2Q==", "dev": true, + "funding": [ + { + "type": "paypal", + "url": "https://www.paypal.com/donate/?hosted_button_id=2CKNJLZJBW8ZC" + }, + { + "type": "buymeacoffee", + "url": "https://www.buymeacoffee.com/samdecrock" + } + ], "dependencies": { + "des.js": "^1.0.1", "httpreq": ">=0.4.22", + "js-md4": "^0.3.2", "underscore": "~1.12.1" }, "engines": { - "node": ">=0.8.0" + "node": ">=10.4.0" } }, "node_modules/httpntlm/node_modules/underscore": { @@ -6906,15 +6503,15 @@ "integrity": "sha512-4EC57ddXrkaF0x83Oj8sM6SLQHAWXw90Skqu2M4AEWENZ3F02dFJE/GARA8igO79tcgYqGrD7ae4f5L3um2lgg==" }, "node_modules/https-proxy-agent": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz", - "integrity": "sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==", + "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": "^7.0.2", + "agent-base": "6", "debug": "4" }, "engines": { - "node": ">= 14" + "node": ">= 6" } }, "node_modules/https-proxy-agent/node_modules/debug": { @@ -6938,19 +6535,10 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, - "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==", - "engines": { - "node": ">=10.17.0" - } - }, "node_modules/humanize-ms": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", - "optional": true, "dependencies": { "ms": "^2.0.0" } @@ -6985,27 +6573,36 @@ } ] }, - "node_modules/ienoopen": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/ienoopen/-/ienoopen-1.1.0.tgz", - "integrity": "sha512-MFs36e/ca6ohEKtinTJ5VvAJ6oDRAYFdYXweUnGY9L9vcoqFOU4n2ZhmJ0C4z/cwGZ3YIQRSB3XZ1+ghZkY5NQ==", + "node_modules/ignore": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", + "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", "engines": { - "node": ">=4.0.0" + "node": ">= 4" } }, - "node_modules/ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true, + "node_modules/ignore-walk": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-6.0.5.tgz", + "integrity": "sha512-VuuG0wCnjhnylG1ABXT3dAuIpTNDs/G8jlpmwXY03fXoXy/8ZK8/T+hMzt8L4WnrLCJgdybqgPagnF/f97cg3A==", + "dependencies": { + "minimatch": "^9.0.0" + }, "engines": { - "node": ">= 4" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, + "node_modules/immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==", + "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" @@ -7017,22 +6614,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/import-from": { + "node_modules/import-lazy": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/import-from/-/import-from-4.0.0.tgz", - "integrity": "sha512-P9J71vT5nLlDeV8FHs5nNxaLbrpfAV5cF5srvbZfpwpcJoM/xZR3hiv+q+SAnuSmuGbXMWud063iIMx/V/EWZQ==", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz", + "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==", "engines": { - "node": ">=12.2" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, "node_modules/imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "devOptional": true, "engines": { "node": ">=0.8.19" } @@ -7048,8 +6641,7 @@ "node_modules/infer-owner": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", - "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", - "optional": true + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==" }, "node_modules/inflection": { "version": "1.13.4", @@ -7082,23 +6674,23 @@ } }, "node_modules/inquirer": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz", - "integrity": "sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-5.2.0.tgz", + "integrity": "sha512-E9BmnJbAKLPGonz0HeWHtbKf+EeSP93paWO3ZYoUpq/aowXvYGjjCSuashhXPpzbArIjBbji39THkxTz9ZeEUQ==", "dev": true, "dependencies": { - "ansi-escapes": "^3.2.0", - "chalk": "^2.4.2", + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.0", "cli-cursor": "^2.1.0", "cli-width": "^2.0.0", - "external-editor": "^3.0.3", + "external-editor": "^2.1.0", "figures": "^2.0.0", - "lodash": "^4.17.12", + "lodash": "^4.3.0", "mute-stream": "0.0.7", "run-async": "^2.2.0", - "rxjs": "^6.4.0", + "rxjs": "^5.5.2", "string-width": "^2.1.0", - "strip-ansi": "^5.1.0", + "strip-ansi": "^4.0.0", "through": "^2.3.6" }, "engines": { @@ -7106,74 +6698,145 @@ } }, "node_modules/inquirer/node_modules/ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", "dev": true, "engines": { - "node": ">=6" + "node": ">=4" } }, - "node_modules/inquirer/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "node_modules/inquirer/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": { - "ansi-regex": "^4.1.0" + "color-convert": "^1.9.0" }, "engines": { - "node": ">=6" + "node": ">=4" } }, - "node_modules/internal-slot": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", - "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", + "node_modules/inquirer/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": { - "es-errors": "^1.3.0", - "hasown": "^2.0.0", - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/into-stream": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-6.0.0.tgz", - "integrity": "sha512-XHbaOAvP+uFKUFsOgoNPRjLkwB+I22JFPFe5OjTkQ0nwgj6+pSjb4NmB6VMxaPshLiOf+zcpOCBQuLwC1KHhZA==", - "dependencies": { - "from2": "^2.3.0", - "p-is-promise": "^3.0.0" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=4" } }, - "node_modules/ip-address": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", - "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", - "optional": true, + "node_modules/inquirer/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": { - "jsbn": "1.1.0", - "sprintf-js": "^1.1.3" - }, - "engines": { - "node": ">= 12" + "color-name": "1.1.3" } }, - "node_modules/ip-address/node_modules/sprintf-js": { + "node_modules/inquirer/node_modules/color-name": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", - "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", - "optional": true - }, + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/inquirer/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/inquirer/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/inquirer/node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/inquirer/node_modules/string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "dependencies": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/inquirer/node_modules/strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", + "dev": true, + "dependencies": { + "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/inquirer/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/internal-slot": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", + "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0", + "hasown": "^2.0.0", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/ip-address": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", + "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", + "dependencies": { + "jsbn": "1.1.0", + "sprintf-js": "^1.1.3" + }, + "engines": { + "node": ">= 12" + } + }, "node_modules/ip-regex": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", @@ -7221,7 +6884,8 @@ "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==" + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true }, "node_modules/is-bigint": { "version": "1.0.4", @@ -7281,6 +6945,17 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-ci": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz", + "integrity": "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==", + "dependencies": { + "ci-info": "^3.2.0" + }, + "bin": { + "is-ci": "bin.js" + } + }, "node_modules/is-core-module": { "version": "2.13.1", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", @@ -7292,6 +6967,21 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-data-view": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", + "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", + "dev": true, + "dependencies": { + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-date-object": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", @@ -7328,12 +7018,11 @@ } }, "node_modules/is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", - "devOptional": true, + "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==", "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/is-glob": { @@ -7347,6 +7036,21 @@ "node": ">=0.10.0" } }, + "node_modules/is-installed-globally": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", + "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", + "dependencies": { + "global-dirs": "^3.0.0", + "is-path-inside": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-ip": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-ip/-/is-ip-2.0.0.tgz", @@ -7362,8 +7066,7 @@ "node_modules/is-lambda": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", - "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", - "optional": true + "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==" }, "node_modules/is-negative-zero": { "version": "2.0.3", @@ -7377,6 +7080,17 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-npm": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-6.0.0.tgz", + "integrity": "sha512-JEjxbSmtPSt1c8XTkVrlujcXdKV1/tvuQ7GwKcAlyiVLeYFQ2VHat8xfrDJsIkhCdF/tZ7CiIR3sy141c6+gPQ==", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", @@ -7416,14 +7130,6 @@ "node": ">=8" } }, - "node_modules/is-path-cwd": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", - "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", - "engines": { - "node": ">=6" - } - }, "node_modules/is-path-inside": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", @@ -7433,19 +7139,12 @@ } }, "node_modules/is-plain-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", - "engines": { - "node": ">=0.10.0" - } - }, - "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==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, "node_modules/is-promise": { @@ -7542,17 +7241,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-text-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-1.0.1.tgz", - "integrity": "sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w==", - "dependencies": { - "text-extensions": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/is-typed-array": { "version": "1.1.13", "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", @@ -7612,6 +7300,14 @@ "node": ">=0.10.0" } }, + "node_modules/is-yarn-global": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.4.1.tgz", + "integrity": "sha512-/kppl+R+LO5VmhYSEWARUFjodS25D68gvj8W7z0I7OWhUla5xWu8KL6CtB2V0R6yqhnRgbcaREMr4EEM6htLPQ==", + "engines": { + "node": ">=12" + } + }, "node_modules/is2": { "version": "2.0.9", "resolved": "https://registry.npmjs.org/is2/-/is2-2.0.9.tgz", @@ -7648,22 +7344,8 @@ "node_modules/isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==" - }, - "node_modules/issue-parser": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/issue-parser/-/issue-parser-6.0.0.tgz", - "integrity": "sha512-zKa/Dxq2lGsBIXQ7CUZWTHfvxPC2ej0KfO7fIPqLlHB9J2hJ7rGhZ5rilhuufylr4RXYPzJUeFjKxz305OsNlA==", - "dependencies": { - "lodash.capitalize": "^4.2.1", - "lodash.escaperegexp": "^4.1.2", - "lodash.isplainobject": "^4.0.6", - "lodash.isstring": "^4.0.1", - "lodash.uniqby": "^4.7.0" - }, - "engines": { - "node": ">=10.13" - } + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", + "dev": true }, "node_modules/istanbul-lib-coverage": { "version": "3.2.2", @@ -7727,87 +7409,73 @@ "node": ">=8" } }, - "node_modules/istanbul-lib-processinfo/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==", + "node_modules/istanbul-lib-processinfo/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": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/istanbul-lib-processinfo/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" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/istanbul-lib-processinfo/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "node_modules/istanbul-lib-processinfo/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": { - "glob": "^7.1.3" + "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" }, - "bin": { - "rimraf": "bin.js" + "engines": { + "node": "*" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/istanbul-lib-processinfo/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==", + "node_modules/istanbul-lib-processinfo/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": { - "shebang-regex": "^3.0.0" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">=8" + "node": "*" } }, - "node_modules/istanbul-lib-processinfo/node_modules/shebang-regex": { + "node_modules/istanbul-lib-processinfo/node_modules/p-map": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", + "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", "dev": true, + "dependencies": { + "aggregate-error": "^3.0.0" + }, "engines": { "node": ">=8" } }, - "node_modules/istanbul-lib-processinfo/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==", - "dev": true, - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/istanbul-lib-processinfo/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "node_modules/istanbul-lib-processinfo/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": { - "isexe": "^2.0.0" + "glob": "^7.1.3" }, "bin": { - "node-which": "bin/node-which" + "rimraf": "bin.js" }, - "engines": { - "node": ">= 8" + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/istanbul-lib-report": { @@ -7824,31 +7492,10 @@ "node": ">=10" } }, - "node_modules/istanbul-lib-report/node_modules/has-flag": { + "node_modules/istanbul-lib-report/node_modules/make-dir": { "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/istanbul-lib-report/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/istanbul-lib-report/node_modules/make-dir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", - "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", "dev": true, "dependencies": { "semver": "^7.5.3" @@ -7860,33 +7507,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/istanbul-lib-report/node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-lib-report/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/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", @@ -7941,7 +7561,6 @@ "version": "2.3.6", "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", - "dev": true, "dependencies": { "@isaacs/cliui": "^8.0.2" }, @@ -7956,9 +7575,9 @@ } }, "node_modules/jake": { - "version": "10.8.7", - "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.7.tgz", - "integrity": "sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w==", + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.1.tgz", + "integrity": "sha512-61btcOHNnLnsOdtLgA5efqQWjnSi/vow5HbI7HMdKKWqvrKR1bLK3BPlJn9gcSaP2ewuamUSMB5XEy76KUIS2w==", "dependencies": { "async": "^3.2.3", "chalk": "^4.0.2", @@ -7972,76 +7591,38 @@ "node": ">=10" } }, - "node_modules/jake/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==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jake/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/jake/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==", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/jake/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==", + "node_modules/jake/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dependencies": { - "color-name": "~1.1.4" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jake/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==" - }, - "node_modules/jake/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==", - "engines": { - "node": ">=8" + "node": "*" } }, - "node_modules/jake/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==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } + "node_modules/jju": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/jju/-/jju-1.4.0.tgz", + "integrity": "sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==" }, - "node_modules/java-properties": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/java-properties/-/java-properties-1.0.2.tgz", - "integrity": "sha512-qjdpeo2yKlYTH7nFdK0vbZWuTCesk4o63v5iVOlhMQPfuIZQfW/HI35SjfhA+4qpg36rnFSvUK5b1m+ckIblQQ==", - "engines": { - "node": ">= 0.6.0" + "node_modules/jose": { + "version": "4.14.4", + "resolved": "https://registry.npmjs.org/jose/-/jose-4.14.4.tgz", + "integrity": "sha512-j8GhLiKmUAh+dsFXlX1aJCbt5KMibuKb+d7j1JaOJG6s2UjX1PQlW+OKB/sD4a/5ZYF4RcmYmLSndOoU3Lt/3g==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/panva" } }, "node_modules/js-beautify": { @@ -8065,27 +7646,13 @@ "node": ">=14" } }, - "node_modules/js-beautify/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==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/js-beautify/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==", + "node_modules/js-beautify/node_modules/abbrev": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-2.0.0.tgz", + "integrity": "sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==", "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, "engines": { - "node": ">= 8" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/js-beautify/node_modules/foreground-child": { @@ -8105,79 +7672,49 @@ } }, "node_modules/js-beautify/node_modules/glob": { - "version": "10.3.10", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", - "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "version": "10.3.15", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.15.tgz", + "integrity": "sha512-0c6RlJt1TICLyvJYIApxb8GsXoai0KUP7AxKKAtsYXdgJR1mGEUa7DgwShbdk1nly0PYoZj01xd4hzbq3fsjpw==", "dev": true, "dependencies": { "foreground-child": "^3.1.0", - "jackspeak": "^2.3.5", + "jackspeak": "^2.3.6", "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" + "minipass": "^7.0.4", + "path-scurry": "^1.11.0" }, "bin": { "glob": "dist/esm/bin.mjs" }, "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/js-beautify/node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" + "node": ">=16 || 14 >=14.18" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/js-beautify/node_modules/minipass": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", - "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.1.tgz", + "integrity": "sha512-UZ7eQ+h8ywIRAW1hIEl2AqdwzJucU/Kp59+8kkZeSvafXhZjul247BvIJjEVFVeON6d7lM46XX1HXCduKAS8VA==", "dev": true, "engines": { "node": ">=16 || 14 >=14.17" } }, - "node_modules/js-beautify/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/js-beautify/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==", + "node_modules/js-beautify/node_modules/nopt": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-7.2.1.tgz", + "integrity": "sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w==", "dev": true, "dependencies": { - "shebang-regex": "^3.0.0" + "abbrev": "^2.0.0" + }, + "bin": { + "nopt": "bin/nopt.js" }, "engines": { - "node": ">=8" - } - }, - "node_modules/js-beautify/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": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/js-beautify/node_modules/signal-exit": { @@ -8192,21 +7729,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/js-beautify/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/js-cookie": { "version": "3.0.5", "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-3.0.5.tgz", @@ -8216,24 +7738,30 @@ "node": ">=14" } }, + "node_modules/js-md4": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/js-md4/-/js-md4-0.3.2.tgz", + "integrity": "sha512-/GDnfQYsltsjRswQhN9fhv3EMw2sCpUdrdxyWDOUK7eyD++r3gRhzgiQgc/x4MAv2i1iuQ4lxO5mvqM3vj4bwA==", + "dev": true + }, "node_modules/js-sha512": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/js-sha512/-/js-sha512-0.8.0.tgz", - "integrity": "sha512-PWsmefG6Jkodqt+ePTvBZCSMFgN7Clckjd0O7su3I0+BW2QWUTJNzjktHsztGLhncP2h8mcF9V9Y2Ha59pAViQ==", + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/js-sha512/-/js-sha512-0.9.0.tgz", + "integrity": "sha512-mirki9WS/SUahm+1TbAPkqvbCiCfOAAsyXeHxK1UkullnJVVqoJG2pL9ObvT05CN+tM7fxhfYm0NbXn+1hWoZg==", "dev": true }, "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==" + "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==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" @@ -8242,8 +7770,7 @@ "node_modules/jsbn": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", - "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==", - "optional": true + "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==" }, "node_modules/jsesc": { "version": "2.5.2", @@ -8257,25 +7784,43 @@ "node": ">=4" } }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==" + }, "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==" + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.2.tgz", + "integrity": "sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ==", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/json-parse-helpfulerror": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/json-parse-helpfulerror/-/json-parse-helpfulerror-1.0.3.tgz", + "integrity": "sha512-XgP0FGR77+QhUxjXkwOMkC94k3WtqEBfcnjWqhRd82qTat4SWKRE+9kUnynz/shm3I4ea2+qISvTIeGTNU7kJg==", + "dependencies": { + "jju": "^1.1.0" + } }, "node_modules/json-schema": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", - "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", + "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==" + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true }, "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", @@ -8286,13 +7831,13 @@ "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==" + "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" }, @@ -8304,6 +7849,7 @@ "version": "6.1.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "devOptional": true, "dependencies": { "universalify": "^2.0.0" }, @@ -8311,6 +7857,20 @@ "graceful-fs": "^4.1.6" } }, + "node_modules/jsonfile/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "devOptional": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/jsonlines": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsonlines/-/jsonlines-0.1.1.tgz", + "integrity": "sha512-ekDrAGso79Cvf+dtm+mL8OBI2bmAOt3gssYs833De/C9NmIpWDWyUO4zPgB5x2/OhY366dkhgfPMYfwZF7yOZA==" + }, "node_modules/jsonparse": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", @@ -8320,24 +7880,9 @@ ] }, "node_modules/jsonschema": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/jsonschema/-/jsonschema-1.2.5.tgz", - "integrity": "sha512-kVTF+08x25PQ0CjuVc0gRM9EUPb0Fe9Ln/utFOgcdxEIOHuU7ooBk/UPTd7t1M91pP35m0MU1T8M5P7vP1bRRw==", - "engines": { - "node": "*" - } - }, - "node_modules/JSONStream": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", - "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", - "dependencies": { - "jsonparse": "^1.2.0", - "through": ">=2.2.7 <3" - }, - "bin": { - "JSONStream": "bin.js" - }, + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsonschema/-/jsonschema-1.4.1.tgz", + "integrity": "sha512-S6cATIPVv1z0IlxdN+zUk5EPjkGCdnhN4wVSBlvoUO1tOLJootbo9CquNJmbIh4yikWHiUedhRYrNPn1arpEmQ==", "engines": { "node": "*" } @@ -8371,9 +7916,9 @@ } }, "node_modules/just-extend": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-4.2.1.tgz", - "integrity": "sha512-g3UB796vUFIY90VIv/WX3L2c8CS2MdWUww3CNrYmqza1Fg0DURc2K/O4YrnklBdQarSJ/y8JnJYDGc+1iumQjg==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-6.2.0.tgz", + "integrity": "sha512-cYofQu2Xpom82S6qD778jBDpwvvy39s1l/hrYij2u9AMdQcGRpaBu6kY4mVhuno5kJVi1DAz4aiphA2WI1/OAw==", "dev": true }, "node_modules/jwk-to-pem": { @@ -8387,9 +7932,9 @@ } }, "node_modules/keycloak-connect": { - "version": "24.0.1", - "resolved": "https://registry.npmjs.org/keycloak-connect/-/keycloak-connect-24.0.1.tgz", - "integrity": "sha512-DlXI6fPR+t58pKVECxvOua5S/rws0CU3yz2juxKQor4b8PKoY0sN/QZ2vxBGPHmvMKtH8VodmPJA2k/VoiD5uw==", + "version": "24.0.4", + "resolved": "https://registry.npmjs.org/keycloak-connect/-/keycloak-connect-24.0.4.tgz", + "integrity": "sha512-MaXcNEvvNM7z4QBw2oBAj7iAkH8BFMIO3REP6eXok5C6CfKC0ljS4byeXic6EQ0tBT5OtV9s4Xcv4aCqSWHtZA==", "dependencies": { "jwk-to-pem": "^2.0.0" }, @@ -8400,31 +7945,57 @@ "chromedriver": "latest" } }, - "node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/kleur": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", + "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "node_modules/levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", - "dev": true, + "node_modules/latest-version": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-7.0.0.tgz", + "integrity": "sha512-KvNT4XqAMzdcL6ka6Tl3i2lYeFDgXNCuIX+xNx6ZMVR1dFq+idXd9FLKNMOIx0t9mJ9/HudyX4oZWXZQ0UJHeg==", "dependencies": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" + "package-json": "^8.1.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==" + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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/lie": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.1.1.tgz", + "integrity": "sha512-RiNhHysUjhrDQntfYSfY4MU24coXXdEOgw9WGcKHNeEwffDYbF//u87M1EWaMGzuFoSbqW0C9C6lEEhDOAswfw==", + "dev": true, + "dependencies": { + "immediate": "~3.0.5" + } }, "node_modules/liquid-json": { "version": "0.3.1", @@ -8439,6 +8010,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==", + "dev": true, "dependencies": { "graceful-fs": "^4.1.2", "parse-json": "^4.0.0", @@ -8449,31 +8021,28 @@ "node": ">=4" } }, - "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==", + "dev": true, "engines": { "node": ">=4" } }, + "node_modules/localforage": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/localforage/-/localforage-1.10.0.tgz", + "integrity": "sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg==", + "dev": true, + "dependencies": { + "lie": "3.1.1" + } + }, "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" }, @@ -8489,56 +8058,42 @@ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, + "node_modules/lodash.assignwith": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.assignwith/-/lodash.assignwith-4.2.0.tgz", + "integrity": "sha512-ZznplvbvtjK2gMvnQ1BR/zqPFZmS6jbK4p+6Up4xcRYA7yMIwxHCfbTcrYxXKzzqLsQ05eJPVznEW3tuwV7k1g==" + }, "node_modules/lodash.camelcase": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==" }, - "node_modules/lodash.capitalize": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/lodash.capitalize/-/lodash.capitalize-4.2.1.tgz", - "integrity": "sha512-kZzYOKspf8XVX5AvmQF94gQW0lejFVgb80G85bU4ZWzoJ6C03PQg3coYAUpSTpQWelrZELd3XWgHzw4Ck5kaIw==" - }, - "node_modules/lodash.escaperegexp": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz", - "integrity": "sha512-TM9YBvyC84ZxE3rgfefxUWiQKLilstD6k7PTGt6wfbtXF8ixIJLOL3VYyV/z+ZiPLsVxAsKAFVwWlWeb2Y8Yyw==" - }, "node_modules/lodash.flattendeep": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", "integrity": "sha512-uHaJFihxmJcEX3kT4I23ABqKKalJ/zDrDg0lsFtc1h+3uw49SIJ5beyhx5ExVRti3AvKoOJngIj7xz3oylPdWQ==", "dev": true }, + "node_modules/lodash.get": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==" + }, + "node_modules/lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==" + }, "node_modules/lodash.isfinite": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/lodash.isfinite/-/lodash.isfinite-3.3.2.tgz", "integrity": "sha512-7FGG40uhC8Mm633uKW1r58aElFlBlxCrg9JfSi3P6aYiWmfiWF0PgMd86ZUsxE5GwWPdHoS2+48bwTh2VPkIQA==" }, - "node_modules/lodash.ismatch": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz", - "integrity": "sha512-fPMfXjGQEV9Xsq/8MTSgUf255gawYRbjwMyDbcvDhXgV7enSZA0hynz6vMPnpAb5iONEzBHBPsT+0zes5Z301g==" - }, - "node_modules/lodash.isplainobject": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==" - }, - "node_modules/lodash.isstring": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", - "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==" - }, - "node_modules/lodash.padend": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/lodash.padend/-/lodash.padend-4.6.1.tgz", - "integrity": "sha512-sOQs2aqGpbl27tmCS1QNZA09Uqp01ZzWfDUoD+xzTii0E7dSQfRKcRetFwa+uXaxaqL+TKm7CgD2JdKP7aZBSw==" - }, - "node_modules/lodash.uniqby": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz", - "integrity": "sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww==" + "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/log-symbols": { "version": "4.1.0", @@ -8556,82 +8111,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/log-symbols/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/log-symbols/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/log-symbols/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/log-symbols/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/log-symbols/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/log-symbols/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/lolex": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lolex/-/lolex-4.2.0.tgz", - "integrity": "sha512-gKO5uExCXvSm6zbF562EvM+rd1kQDnB9AZBbiQVzf1ZmdDpxUSvpnAaVOP83N/31mRK8Ml8/VE8DMvsAZQ+7wg==", - "dev": true - }, "node_modules/long": { "version": "5.2.3", "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz", @@ -8649,6 +8128,26 @@ "loose-envify": "cli.js" } }, + "node_modules/loupe": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.1.tgz", + "integrity": "sha512-edNu/8D5MKVfGVFRhFf8aAxiTM6Wumfz5XsaatSxlD3w4R1d/WEKUTydCdPGbl9K7QG/Ca3GnDV2sIKIpXRQcw==", + "dev": true, + "dependencies": { + "get-func-name": "^2.0.1" + } + }, + "node_modules/lowercase-keys": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz", + "integrity": "sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/lru-cache": { "version": "8.0.5", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-8.0.5.tgz", @@ -8691,345 +8190,94 @@ } }, "node_modules/make-fetch-happen": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz", - "integrity": "sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==", - "optional": true, + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz", + "integrity": "sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==", "dependencies": { - "agentkeepalive": "^4.1.3", - "cacache": "^15.2.0", - "http-cache-semantics": "^4.1.0", - "http-proxy-agent": "^4.0.1", + "agentkeepalive": "^4.2.1", + "cacache": "^17.0.0", + "http-cache-semantics": "^4.1.1", + "http-proxy-agent": "^5.0.0", "https-proxy-agent": "^5.0.0", "is-lambda": "^1.0.1", - "lru-cache": "^6.0.0", - "minipass": "^3.1.3", - "minipass-collect": "^1.0.2", - "minipass-fetch": "^1.3.2", + "lru-cache": "^7.7.1", + "minipass": "^5.0.0", + "minipass-fetch": "^3.0.0", "minipass-flush": "^1.0.5", "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.2", + "negotiator": "^0.6.3", "promise-retry": "^2.0.1", - "socks-proxy-agent": "^6.0.0", - "ssri": "^8.0.0" + "socks-proxy-agent": "^7.0.0", + "ssri": "^10.0.0" }, "engines": { - "node": ">= 10" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/make-fetch-happen/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==", - "optional": true, - "dependencies": { - "debug": "4" - }, + "node_modules/make-fetch-happen/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", "engines": { - "node": ">= 6.0.0" + "node": ">=12" } }, - "node_modules/make-fetch-happen/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "optional": true, + "node_modules/matcher": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/matcher/-/matcher-3.0.0.tgz", + "integrity": "sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==", + "dev": true, "dependencies": { - "ms": "2.1.2" + "escape-string-regexp": "^4.0.0" }, "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "node": ">=10" } }, - "node_modules/make-fetch-happen/node_modules/http-proxy-agent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", - "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", - "optional": true, + "node_modules/md5": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz", + "integrity": "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==", + "dev": true, "dependencies": { - "@tootallnate/once": "1", - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" + "charenc": "0.0.2", + "crypt": "0.0.2", + "is-buffer": "~1.1.6" } }, - "node_modules/make-fetch-happen/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==", - "optional": true, - "dependencies": { - "agent-base": "6", - "debug": "4" - }, + "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": ">= 6" + "node": ">= 0.6" } }, - "node_modules/make-fetch-happen/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==", - "optional": true, + "node_modules/memoizee": { + "version": "0.4.15", + "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.15.tgz", + "integrity": "sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ==", + "dev": true, "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" + "d": "^1.0.1", + "es5-ext": "^0.10.53", + "es6-weak-map": "^2.0.3", + "event-emitter": "^0.3.5", + "is-promise": "^2.2.2", + "lru-queue": "^0.1.0", + "next-tick": "^1.1.0", + "timers-ext": "^0.1.7" } }, - "node_modules/make-fetch-happen/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==", - "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/map-obj": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", - "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/marked": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/marked/-/marked-4.3.0.tgz", - "integrity": "sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==", - "bin": { - "marked": "bin/marked.js" - }, - "engines": { - "node": ">= 12" - } - }, - "node_modules/marked-terminal": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/marked-terminal/-/marked-terminal-5.2.0.tgz", - "integrity": "sha512-Piv6yNwAQXGFjZSaiNljyNFw7jKDdGrw70FSbtxEyldLsyeuV5ZHm/1wW++kWbrOF1VPnUgYOhB2oLL0ZpnekA==", - "dependencies": { - "ansi-escapes": "^6.2.0", - "cardinal": "^2.1.1", - "chalk": "^5.2.0", - "cli-table3": "^0.6.3", - "node-emoji": "^1.11.0", - "supports-hyperlinks": "^2.3.0" - }, - "engines": { - "node": ">=14.13.1 || >=16.0.0" - }, - "peerDependencies": { - "marked": "^1.0.0 || ^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0" - } - }, - "node_modules/marked-terminal/node_modules/ansi-escapes": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-6.2.0.tgz", - "integrity": "sha512-kzRaCqXnpzWs+3z5ABPQiVke+iq0KXkHo8xiWV4RPTi5Yli0l97BEQuhXV1s7+aSU/fu1kUuxgS4MsQ0fRuygw==", - "dependencies": { - "type-fest": "^3.0.0" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/marked-terminal/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==", - "engines": { - "node": ">=8" - } - }, - "node_modules/marked-terminal/node_modules/chalk": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", - "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/marked-terminal/node_modules/cli-table3": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.3.tgz", - "integrity": "sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==", - "dependencies": { - "string-width": "^4.2.0" - }, - "engines": { - "node": "10.* || >= 12.*" - }, - "optionalDependencies": { - "@colors/colors": "1.5.0" - } - }, - "node_modules/marked-terminal/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==", - "engines": { - "node": ">=8" - } - }, - "node_modules/marked-terminal/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==", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/marked-terminal/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==", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/marked-terminal/node_modules/type-fest": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.13.1.tgz", - "integrity": "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==", - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/matcher": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/matcher/-/matcher-3.0.0.tgz", - "integrity": "sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==", - "dev": true, - "dependencies": { - "escape-string-regexp": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/matcher/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/md5": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz", - "integrity": "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==", - "dev": true, - "dependencies": { - "charenc": "0.0.2", - "crypt": "0.0.2", - "is-buffer": "~1.1.6" - } - }, - "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/memoizee": { - "version": "0.4.15", - "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.15.tgz", - "integrity": "sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ==", - "dev": true, - "dependencies": { - "d": "^1.0.1", - "es5-ext": "^0.10.53", - "es6-weak-map": "^2.0.3", - "event-emitter": "^0.3.5", - "is-promise": "^2.2.2", - "lru-queue": "^0.1.0", - "next-tick": "^1.1.0", - "timers-ext": "^0.1.7" - } - }, - "node_modules/meow": { - "version": "8.1.2", - "resolved": "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz", - "integrity": "sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==", - "dependencies": { - "@types/minimist": "^1.2.0", - "camelcase-keys": "^6.2.2", - "decamelize-keys": "^1.1.0", - "hard-rejection": "^2.1.0", - "minimist-options": "4.1.0", - "normalize-package-data": "^3.0.0", - "read-pkg-up": "^7.0.1", - "redent": "^3.0.0", - "trim-newlines": "^3.0.0", - "type-fest": "^0.18.0", - "yargs-parser": "^20.2.3" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/meow/node_modules/type-fest": { - "version": "0.18.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", - "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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==" - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", "engines": { "node": ">= 8" } @@ -9055,14 +8303,14 @@ } }, "node_modules/mime": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", - "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", + "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": ">=10.0.0" + "node": ">=4" } }, "node_modules/mime-db": { @@ -9113,14 +8361,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/min-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", - "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", - "engines": { - "node": ">=4" - } - }, "node_modules/minimalistic-assert": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", @@ -9132,14 +8372,17 @@ "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==" }, "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", "dependencies": { - "brace-expansion": "^1.1.7" + "brace-expansion": "^2.0.1" }, "engines": { - "node": "*" + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/minimist": { @@ -9150,26 +8393,10 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/minimist-options": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", - "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", - "dependencies": { - "arrify": "^1.0.1", - "is-plain-obj": "^1.1.0", - "kind-of": "^6.0.3" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "dependencies": { - "yallist": "^4.0.0" - }, + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", "engines": { "node": ">=8" } @@ -9178,7 +8405,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", - "optional": true, "dependencies": { "minipass": "^3.0.0" }, @@ -9186,28 +8412,45 @@ "node": ">= 8" } }, + "node_modules/minipass-collect/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/minipass-fetch": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.4.1.tgz", - "integrity": "sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==", - "optional": true, + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.5.tgz", + "integrity": "sha512-2N8elDQAtSnFV0Dk7gt15KHsS0Fyz6CbYZ360h0WTYV1Ty46li3rAXVOQj1THMNLdmrD9Vt5pBPtWtVkpwGBqg==", "dependencies": { - "minipass": "^3.1.0", + "minipass": "^7.0.3", "minipass-sized": "^1.0.3", - "minizlib": "^2.0.0" + "minizlib": "^2.1.2" }, "engines": { - "node": ">=8" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" }, "optionalDependencies": { - "encoding": "^0.1.12" + "encoding": "^0.1.13" + } + }, + "node_modules/minipass-fetch/node_modules/minipass": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.1.tgz", + "integrity": "sha512-UZ7eQ+h8ywIRAW1hIEl2AqdwzJucU/Kp59+8kkZeSvafXhZjul247BvIJjEVFVeON6d7lM46XX1HXCduKAS8VA==", + "engines": { + "node": ">=16 || 14 >=14.17" } }, "node_modules/minipass-flush": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", - "optional": true, "dependencies": { "minipass": "^3.0.0" }, @@ -9215,11 +8458,41 @@ "node": ">= 8" } }, - "node_modules/minipass-pipeline": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", - "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", - "optional": true, + "node_modules/minipass-flush/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-json-stream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz", + "integrity": "sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg==", + "dependencies": { + "jsonparse": "^1.3.1", + "minipass": "^3.0.0" + } + }, + "node_modules/minipass-json-stream/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-pipeline": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", "dependencies": { "minipass": "^3.0.0" }, @@ -9227,11 +8500,21 @@ "node": ">=8" } }, + "node_modules/minipass-pipeline/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/minipass-sized": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", - "optional": true, "dependencies": { "minipass": "^3.0.0" }, @@ -9239,6 +8522,17 @@ "node": ">=8" } }, + "node_modules/minipass-sized/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/minizlib": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", @@ -9251,15 +8545,30 @@ "node": ">= 8" } }, - "node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "node_modules/minizlib/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dependencies": { - "minimist": "^1.2.6" + "yallist": "^4.0.0" }, + "engines": { + "node": ">=8" + } + }, + "node_modules/mkdirp": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz", + "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==", + "dev": true, "bin": { - "mkdirp": "bin/cmd.js" + "mkdirp": "dist/cjs/src/bin.js" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/mkdirp-classic": { @@ -9268,74 +8577,60 @@ "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" }, "node_modules/mocha": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-9.2.2.tgz", - "integrity": "sha512-L6XC3EdwT6YrIk0yXpavvLkn8h+EU+Y5UcCHKECyMbdUIxyMuZj4bX4U9e1nvnvUUvQVsV2VHQr5zLdcUkhW/g==", + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.4.0.tgz", + "integrity": "sha512-eqhGB8JKapEYcC4ytX/xrzKforgEc3j1pGlAXVy3eRwrtAy5/nIfT1SvgGzfN0XZZxeLq0aQWkOUAmqIJiv+bA==", "dev": true, "dependencies": { - "@ungap/promise-all-settled": "1.1.2", "ansi-colors": "4.1.1", "browser-stdout": "1.3.1", "chokidar": "3.5.3", - "debug": "4.3.3", + "debug": "4.3.4", "diff": "5.0.0", "escape-string-regexp": "4.0.0", "find-up": "5.0.0", - "glob": "7.2.0", - "growl": "1.10.5", + "glob": "8.1.0", "he": "1.2.0", "js-yaml": "4.1.0", "log-symbols": "4.1.0", - "minimatch": "4.2.1", + "minimatch": "5.0.1", "ms": "2.1.3", - "nanoid": "3.3.1", "serialize-javascript": "6.0.0", "strip-json-comments": "3.1.1", "supports-color": "8.1.1", - "which": "2.0.2", - "workerpool": "6.2.0", + "workerpool": "6.2.1", "yargs": "16.2.0", "yargs-parser": "20.2.4", "yargs-unparser": "2.0.0" }, "bin": { "_mocha": "bin/_mocha", - "mocha": "bin/mocha" + "mocha": "bin/mocha.js" }, "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mochajs" + "node": ">= 14.0.0" } }, "node_modules/mocha-junit-reporter": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mocha-junit-reporter/-/mocha-junit-reporter-2.0.0.tgz", - "integrity": "sha512-20HoWh2HEfhqmigfXOKUhZQyX23JImskc37ZOhIjBKoBEsb+4cAFRJpAVhFpnvsztLklW/gFVzsrobjLwmX4lA==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/mocha-junit-reporter/-/mocha-junit-reporter-2.2.1.tgz", + "integrity": "sha512-iDn2tlKHn8Vh8o4nCzcUVW4q7iXp7cC4EB78N0cDHIobLymyHNwe0XG8HEHHjc3hJlXm0Vy6zcrxaIhnI2fWmw==", "dev": true, "dependencies": { - "debug": "^2.2.0", - "md5": "^2.1.0", - "mkdirp": "~0.5.1", - "strip-ansi": "^4.0.0", - "xml": "^1.0.0" + "debug": "^4.3.4", + "md5": "^2.3.0", + "mkdirp": "^3.0.0", + "strip-ansi": "^6.0.1", + "xml": "^1.0.1" }, "peerDependencies": { "mocha": ">=2.2.5" } }, - "node_modules/mocha/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/mocha/node_modules/debug": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", - "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "node_modules/mocha-junit-reporter/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, "dependencies": { "ms": "2.1.2" @@ -9349,84 +8644,42 @@ } } }, - "node_modules/mocha/node_modules/debug/node_modules/ms": { + "node_modules/mocha-junit-reporter/node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, - "node_modules/mocha/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/mocha/node_modules/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "node_modules/mocha/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "ms": "2.1.2" }, "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/mocha/node_modules/glob/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" + "node": ">=6.0" }, - "engines": { - "node": "*" - } - }, - "node_modules/mocha/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" + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/mocha/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/mocha/node_modules/debug/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true }, "node_modules/mocha/node_modules/minimatch": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-4.2.1.tgz", - "integrity": "sha512-9Uq1ChtSZO+Mxa/CL1eGizn2vRn3MlLgzhT0Iz8zaY8NdvxvB0d5QdPFmCKf7JKA9Lerx5vRrnwO03jsSfGG9g==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", + "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", "dev": true, "dependencies": { - "brace-expansion": "^1.1.7" + "brace-expansion": "^2.0.1" }, "engines": { "node": ">=10" @@ -9438,18 +8691,6 @@ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true }, - "node_modules/mocha/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==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/mocha/node_modules/supports-color": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", @@ -9465,71 +8706,40 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/mocha/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/modify-values": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/modify-values/-/modify-values-1.0.1.tgz", - "integrity": "sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/moment": { - "version": "2.29.4", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", - "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==", + "version": "2.30.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz", + "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==", "engines": { "node": "*" } }, "node_modules/moment-timezone": { - "version": "0.5.38", - "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.38.tgz", - "integrity": "sha512-nMIrzGah4+oYZPflDvLZUgoVUO4fvAqHstvG3xAUnMolWncuAiLDWNnJZj6EwJGMGfb1ZcuTFE6GI3hNOVWI/Q==", + "version": "0.5.45", + "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.45.tgz", + "integrity": "sha512-HIWmqA86KcmCAhnMAN0wuDOARV/525R2+lOLotuGFzn4HO+FH+/645z2wx0Dt3iDv6/p61SIvKnDstISainhLQ==", "dependencies": { - "moment": ">= 2.9.0" + "moment": "^2.29.4" }, "engines": { "node": "*" } }, "node_modules/morgan": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.9.1.tgz", - "integrity": "sha512-HQStPIV4y3afTiCYVxirakhlCfGkI161c76kKFca7Fk1JusM//Qeo1ej2XaMniiNeaZklMVrh3vTtIzpzwbpmA==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.10.0.tgz", + "integrity": "sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==", "dependencies": { - "basic-auth": "~2.0.0", + "basic-auth": "~2.0.1", "debug": "2.6.9", - "depd": "~1.1.2", + "depd": "~2.0.0", "on-finished": "~2.3.0", - "on-headers": "~1.0.1" + "on-headers": "~1.0.2" }, "engines": { "node": ">= 0.8.0" } }, - "node_modules/morgan/node_modules/depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", - "engines": { - "node": ">= 0.6" - } - }, "node_modules/morgan/node_modules/on-finished": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", @@ -9563,6 +8773,17 @@ "node": ">= 6.0.0" } }, + "node_modules/multer/node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, "node_modules/multer/node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -9578,9 +8799,9 @@ "dev": true }, "node_modules/mysql2": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.2.2.tgz", - "integrity": "sha512-h+MYStGolwzn9bNpnq3WtwQar6XVPZKbsMdkIbZ9xTH27BSMpzBdZiilALI9LP2MO1Ky1LlgcWPLRM/e6Eilqg==", + "version": "3.9.7", + "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.9.7.tgz", + "integrity": "sha512-KnJT8vYRcNAZv73uf9zpXqNbvBG7DJrs+1nACsjZP1HMJ1TgXEy8wnNilXAn/5i57JizXKtrUtwDB7HxT9DDpw==", "dependencies": { "denque": "^2.1.0", "generate-function": "^2.3.1", @@ -9625,18 +8846,6 @@ "node": ">=12" } }, - "node_modules/nanoid": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.1.tgz", - "integrity": "sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==", - "dev": true, - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, "node_modules/napi-build-utils": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", @@ -9649,9 +8858,9 @@ "dev": true }, "node_modules/nconf": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/nconf/-/nconf-0.12.0.tgz", - "integrity": "sha512-T3fZPw3c7Dfrz8JBQEbEcZJ2s8f7cUMpKuyBtsGQe0b71pcXx6gNh4oti2xh5dxB+gO9ufNfISBlGvvWtfyMcA==", + "version": "0.12.1", + "resolved": "https://registry.npmjs.org/nconf/-/nconf-0.12.1.tgz", + "integrity": "sha512-p2cfF+B3XXacQdswUYWZ0w6Vld0832A/tuqjLBu3H1sfUcby4N2oVbGhyuCkZv+t3iY3aiFEj7gZGqax9Q2c1w==", "dependencies": { "async": "^3.0.0", "ini": "^2.0.0", @@ -9673,12 +8882,8 @@ "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/nerf-dart": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/nerf-dart/-/nerf-dart-1.0.0.tgz", - "integrity": "sha512-EZSPZB70jiVsivaBLYDCyntd5eH8NTSMOn3rB+HxwdmKThGELLdYv8qVIMWvZEFy9w8ZZpW9h9OB32l1rGtj7g==" + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true }, "node_modules/netmask": { "version": "2.0.2", @@ -9690,38 +8895,38 @@ } }, "node_modules/newman": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/newman/-/newman-5.3.2.tgz", - "integrity": "sha512-cWy8pV0iwvMOZLTw3hkAHcwo2ZA0GKkXm8oUMn1Ltii3ZI2nKpnrg9QGdIT0hGHChRkX6prY5e3Aar7uykMGNg==", + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/newman/-/newman-6.1.2.tgz", + "integrity": "sha512-VyaXFguIYM7QUWXHQlHtkj3axzZQFHgj9OYkhbKpq4iphKAJckHFstltacSBtgpeiGp5SKk9FBdCYVbJXcLvnQ==", "dev": true, "dependencies": { - "async": "3.2.3", - "chardet": "1.4.0", - "cli-progress": "3.10.0", - "cli-table3": "0.6.1", + "@postman/tough-cookie": "4.1.3-postman.1", + "async": "3.2.5", + "chardet": "2.0.0", + "cli-progress": "3.12.0", + "cli-table3": "0.6.3", "colors": "1.4.0", - "commander": "7.2.0", + "commander": "11.1.0", "csv-parse": "4.16.3", - "eventemitter3": "4.0.7", - "filesize": "8.0.7", + "filesize": "10.1.0", + "liquid-json": "0.3.1", "lodash": "4.17.21", - "mkdirp": "1.0.4", - "postman-collection": "4.1.1", - "postman-collection-transformer": "4.1.6", - "postman-request": "2.88.1-postman.31", - "postman-runtime": "7.29.0", + "mkdirp": "3.0.1", + "postman-collection": "4.4.0", + "postman-collection-transformer": "4.1.8", + "postman-request": "2.88.1-postman.33", + "postman-runtime": "7.37.1", "pretty-ms": "7.0.1", - "semver": "7.3.5", + "semver": "7.6.0", "serialised-error": "1.1.3", - "tough-cookie": "3.0.1", - "word-wrap": "1.2.3", + "word-wrap": "1.2.5", "xmlbuilder": "15.1.1" }, "bin": { "newman": "bin/newman.js" }, "engines": { - "node": ">=10" + "node": ">=16" } }, "node_modules/newman-reporter-junitfull": { @@ -9750,240 +8955,305 @@ "node": ">=4.0" } }, - "node_modules/newman/node_modules/async": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.3.tgz", - "integrity": "sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==", + "node_modules/next-tick": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", + "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==", "dev": true }, - "node_modules/newman/node_modules/chardet": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-1.4.0.tgz", - "integrity": "sha512-NpwMDdSIprbYx1CLnfbxEIarI0Z+s9MssEgggMNheGM+WD68yOhV7IEA/3r6tr0yTRgQD0HuZJDw32s99i6L+A==", - "dev": true + "node_modules/nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" }, - "node_modules/newman/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==", + "node_modules/nise": { + "version": "5.1.9", + "resolved": "https://registry.npmjs.org/nise/-/nise-5.1.9.tgz", + "integrity": "sha512-qOnoujW4SV6e40dYxJOb3uvuoPHtmLzIk4TFo+j0jPJoC+5Z9xja5qH5JZobEPsa8+YYphMrOSwnrshEhG2qww==", "dev": true, "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" + "@sinonjs/commons": "^3.0.0", + "@sinonjs/fake-timers": "^11.2.2", + "@sinonjs/text-encoding": "^0.7.2", + "just-extend": "^6.2.0", + "path-to-regexp": "^6.2.1" } }, - "node_modules/newman/node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true, - "bin": { - "mkdirp": "bin/cmd.js" + "node_modules/nise/node_modules/path-to-regexp": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.2.tgz", + "integrity": "sha512-GQX3SSMokngb36+whdpRXE+3f9V8UzyAorlYvOGx87ufGHehNTn5lCxrKtLyZ4Yl/wEKnNnr98ZzOwwDZV5ogw==", + "dev": true + }, + "node_modules/node-abi": { + "version": "3.62.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.62.0.tgz", + "integrity": "sha512-CPMcGa+y33xuL1E0TcNIu4YyaZCxnnvkVaEXrsosR3FxN+fV8xvb7Mzpb7IgKler10qeMkE6+Dp8qJhpzdq35g==", + "dependencies": { + "semver": "^7.3.5" }, "engines": { "node": ">=10" } }, - "node_modules/newman/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, + "node_modules/node-addon-api": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.0.tgz", + "integrity": "sha512-mNcltoe1R8o7STTegSOHdnJNN7s5EUvhoS7ShnTHDyOSd+8H+UdWODq6qSv67PjC8Zc5JRT8+oLAMCr0SIXw7g==", "engines": { - "node": ">=10" + "node": "^16 || ^18 || >= 20" } }, - "node_modules/next-tick": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", - "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==", - "dev": true - }, - "node_modules/nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" + "node_modules/node-fetch-npm": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/node-fetch-npm/-/node-fetch-npm-2.0.4.tgz", + "integrity": "sha512-iOuIQDWDyjhv9qSDrj9aq/klt6F9z1p2otB3AV7v3zBDcL/x+OfGsvGQZZCcMZbUf4Ujw1xGNQkjvGnVT22cKg==", + "deprecated": "This module is not used anymore, npm uses minipass-fetch for its fetch implementation now", + "dependencies": { + "encoding": "^0.1.11", + "json-parse-better-errors": "^1.0.0", + "safe-buffer": "^5.1.1" + }, + "engines": { + "node": ">=4" + } }, - "node_modules/nise": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/nise/-/nise-1.5.3.tgz", - "integrity": "sha512-Ymbac/94xeIrMf59REBPOv0thr+CJVFMhrlAkW/gjCIE58BGQdCj0x7KRCb3yz+Ga2Rz3E9XXSvUyyxqqhjQAQ==", + "node_modules/node-forge": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", "dev": true, + "engines": { + "node": ">= 6.13.0" + } + }, + "node_modules/node-gyp": { + "version": "9.4.1", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-9.4.1.tgz", + "integrity": "sha512-OQkWKbjQKbGkMf/xqI1jjy3oCTgMKJac58G2+bjZb3fza6gW2YrCSdMQYaoTb70crvE//Gngr4f0AgVHmqHvBQ==", "dependencies": { - "@sinonjs/formatio": "^3.2.1", - "@sinonjs/text-encoding": "^0.7.1", - "just-extend": "^4.0.2", - "lolex": "^5.0.1", - "path-to-regexp": "^1.7.0" + "env-paths": "^2.2.0", + "exponential-backoff": "^3.1.1", + "glob": "^7.1.4", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^10.0.3", + "nopt": "^6.0.0", + "npmlog": "^6.0.0", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.2", + "which": "^2.0.2" + }, + "bin": { + "node-gyp": "bin/node-gyp.js" + }, + "engines": { + "node": "^12.13 || ^14.13 || >=16" } }, - "node_modules/nise/node_modules/lolex": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/lolex/-/lolex-5.1.2.tgz", - "integrity": "sha512-h4hmjAvHTmd+25JSwrtTIuwbKdwg5NzZVRMLn9saij4SZaepCrTCxPr35H/3bjwfMJtN+t3CX8672UIkglz28A==", - "dev": true, + "node_modules/node-gyp/node_modules/@npmcli/fs": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.2.tgz", + "integrity": "sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==", "dependencies": { - "@sinonjs/commons": "^1.7.0" + "@gar/promisify": "^1.1.3", + "semver": "^7.3.5" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/nise/node_modules/path-to-regexp": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", - "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", - "dev": true, + "node_modules/node-gyp/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==", "dependencies": { - "isarray": "0.0.1" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/nocache": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/nocache/-/nocache-2.1.0.tgz", - "integrity": "sha512-0L9FvHG3nfnnmaEQPjT9xhfN4ISk0A8/2j4M37Np4mcDesJjHgEUfgPhdCyZuFI954tjokaIj/A3NdpFNdEh4Q==", + "node_modules/node-gyp/node_modules/cacache": { + "version": "16.1.3", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.1.3.tgz", + "integrity": "sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==", + "dependencies": { + "@npmcli/fs": "^2.1.0", + "@npmcli/move-file": "^2.0.0", + "chownr": "^2.0.0", + "fs-minipass": "^2.1.0", + "glob": "^8.0.1", + "infer-owner": "^1.0.4", + "lru-cache": "^7.7.1", + "minipass": "^3.1.6", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "mkdirp": "^1.0.4", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^9.0.0", + "tar": "^6.1.11", + "unique-filename": "^2.0.0" + }, "engines": { - "node": ">=4.0.0" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/node-abi": { - "version": "3.56.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.56.0.tgz", - "integrity": "sha512-fZjdhDOeRcaS+rcpve7XuwHBmktS1nS1gzgghwKUQQ8nTy2FdSDr6ZT8k6YhvlJeHmmQMYiT/IH9hfco5zeW2Q==", + "node_modules/node-gyp/node_modules/cacache/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": { - "semver": "^7.3.5" + "balanced-match": "^1.0.0" + } + }, + "node_modules/node-gyp/node_modules/cacache/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": ">=10" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/node-abi/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==", + "node_modules/node-gyp/node_modules/cacache/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "dependencies": { - "yallist": "^4.0.0" + "brace-expansion": "^2.0.1" }, "engines": { "node": ">=10" } }, - "node_modules/node-abi/node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "node_modules/node-gyp/node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" + "minipass": "^3.0.0" }, "engines": { - "node": ">=10" + "node": ">= 8" } }, - "node_modules/node-addon-api": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.0.tgz", - "integrity": "sha512-mNcltoe1R8o7STTegSOHdnJNN7s5EUvhoS7ShnTHDyOSd+8H+UdWODq6qSv67PjC8Zc5JRT8+oLAMCr0SIXw7g==", + "node_modules/node-gyp/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "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": "^16 || ^18 || >= 20" + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/node-emoji": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz", - "integrity": "sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==", - "dependencies": { - "lodash": "^4.17.21" + "node_modules/node-gyp/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "engines": { + "node": ">=12" } }, - "node_modules/node-fetch": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", - "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "node_modules/node-gyp/node_modules/make-fetch-happen": { + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz", + "integrity": "sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==", "dependencies": { - "whatwg-url": "^5.0.0" + "agentkeepalive": "^4.2.1", + "cacache": "^16.1.0", + "http-cache-semantics": "^4.1.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^7.7.1", + "minipass": "^3.1.6", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^2.0.3", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^7.0.0", + "ssri": "^9.0.0" }, "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/node-gyp": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-8.4.1.tgz", - "integrity": "sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w==", - "optional": true, + "node_modules/node-gyp/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dependencies": { - "env-paths": "^2.2.0", - "glob": "^7.1.4", - "graceful-fs": "^4.2.6", - "make-fetch-happen": "^9.1.0", - "nopt": "^5.0.0", - "npmlog": "^6.0.0", - "rimraf": "^3.0.2", - "semver": "^7.3.5", - "tar": "^6.1.2", - "which": "^2.0.2" - }, - "bin": { - "node-gyp": "bin/node-gyp.js" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">= 10.12.0" + "node": "*" } }, - "node_modules/node-gyp/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==", - "optional": true - }, - "node_modules/node-gyp/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==", - "optional": true, + "node_modules/node-gyp/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dependencies": { "yallist": "^4.0.0" }, "engines": { - "node": ">=10" + "node": ">=8" } }, - "node_modules/node-gyp/node_modules/nopt": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", - "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", - "optional": true, + "node_modules/node-gyp/node_modules/minipass-fetch": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.2.tgz", + "integrity": "sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==", "dependencies": { - "abbrev": "1" + "minipass": "^3.1.6", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + }, + "optionalDependencies": { + "encoding": "^0.1.13" + } + }, + "node_modules/node-gyp/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", "bin": { - "nopt": "bin/nopt.js" + "mkdirp": "bin/cmd.js" }, "engines": { - "node": ">=6" + "node": ">=10" } }, "node_modules/node-gyp/node_modules/rimraf": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "optional": true, "dependencies": { "glob": "^7.1.3" }, @@ -9994,34 +9264,37 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/node-gyp/node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", - "optional": true, + "node_modules/node-gyp/node_modules/ssri": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz", + "integrity": "sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==", "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" + "minipass": "^3.1.1" }, "engines": { - "node": ">=10" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/node-gyp/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "optional": true, + "node_modules/node-gyp/node_modules/unique-filename": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-2.0.1.tgz", + "integrity": "sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A==", "dependencies": { - "isexe": "^2.0.0" + "unique-slug": "^3.0.0" }, - "bin": { - "node-which": "bin/node-which" + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/node-gyp/node_modules/unique-slug": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-3.0.0.tgz", + "integrity": "sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w==", + "dependencies": { + "imurmurhash": "^0.1.4" }, "engines": { - "node": ">= 8" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, "node_modules/node-oauth1": { @@ -10048,94 +9321,51 @@ "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", "dev": true }, - "node_modules/nodemailer": { - "version": "6.7.3", - "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.7.3.tgz", - "integrity": "sha512-KUdDsspqx89sD4UUyUKzdlUOper3hRkDVkrKh/89G+d9WKsU5ox51NWS4tB1XR5dPUdR4SP0E3molyEfOvSa3g==", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/nodemailer-fetch": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/nodemailer-fetch/-/nodemailer-fetch-1.3.0.tgz", - "integrity": "sha512-5P5+lR0+sWvk1UZGFoTida33dG0xAqk1Pv0t7cPlrJ09dLdZWh/kenxb0vOoUoNVOci4gmSYOnMHzvheSBeFag==" - }, - "node_modules/nodemailer-shared": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/nodemailer-shared/-/nodemailer-shared-1.0.4.tgz", - "integrity": "sha512-tfqdDPbj6L3PywhNqCa988bDxxnffo3Gw0DZkaYwOYVsnMZFgF7LoffS4FAFbiGb1M+mcNBPX/Vy9l0A95fJAg==", - "dependencies": { - "nodemailer-fetch": "1.3.0" - } - }, - "node_modules/nodemailer-smtp-transport": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/nodemailer-smtp-transport/-/nodemailer-smtp-transport-2.4.2.tgz", - "integrity": "sha512-VD3oQ5Xzgszg+2f0H3qAnXhciF6pZ9j2hHNaJqHEzh+caEs/cU1dDmCbpdN2bJxPYBeCilA2XshhtEnvxJgZGQ==", - "dependencies": { - "nodemailer-shared": "1.0.4", - "nodemailer-wellknown": "0.1.8", - "smtp-connection": "2.3.2" - } - }, - "node_modules/nodemailer-wellknown": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/nodemailer-wellknown/-/nodemailer-wellknown-0.1.8.tgz", - "integrity": "sha512-kxDRGWY6ZYtcKsCr4IMw5B9nST0EKK8Ay/JjgK96lBEdpt6nRl2ds5khTVv/BGLECbLIAzOsmIwP7KUt1C9frA==" - }, "node_modules/nopt": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-7.2.0.tgz", - "integrity": "sha512-CVDtwCdhYIvnAzFoJ6NJ6dX3oga9/HyciQDnG1vQDjSLMeKLJ4A93ZqYKDrgYSr1FBY5/hMYC+2VCi24pgpkGA==", - "dev": true, + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz", + "integrity": "sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==", "dependencies": { - "abbrev": "^2.0.0" + "abbrev": "^1.0.0" }, "bin": { "nopt": "bin/nopt.js" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, "node_modules/normalize-package-data": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", - "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-5.0.0.tgz", + "integrity": "sha512-h9iPVIfrVZ9wVYQnxFgtw1ugSvGEMOlyPWWtm8BMJhnwyEL/FLbYbTY3V3PpjI/BUK67n9PEWDu6eHzu1fB15Q==", "dependencies": { - "hosted-git-info": "^4.0.1", - "is-core-module": "^2.5.0", - "semver": "^7.3.4", - "validate-npm-package-license": "^3.0.1" + "hosted-git-info": "^6.0.0", + "is-core-module": "^2.8.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" }, "engines": { - "node": ">=10" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/normalize-package-data/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==", + "node_modules/normalize-package-data/node_modules/hosted-git-info": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.1.tgz", + "integrity": "sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==", "dependencies": { - "yallist": "^4.0.0" + "lru-cache": "^7.5.1" }, "engines": { - "node": ">=10" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/normalize-package-data/node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, + "node_modules/normalize-package-data/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", "engines": { - "node": ">=10" + "node": ">=12" } }, "node_modules/normalize-path": { @@ -10148,3850 +9378,3587 @@ } }, "node_modules/normalize-url": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", - "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.1.tgz", + "integrity": "sha512-IO9QvjUMWxPQQhs60oOu10CRkWCiZzSUkzbXGGV9pviYl1fXYcvkzQ5jV9z8Y6un8ARoVRl4EtC6v6jNqbaJ/w==", "engines": { - "node": ">=10" + "node": ">=14.16" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/npm": { - "version": "8.19.4", - "resolved": "https://registry.npmjs.org/npm/-/npm-8.19.4.tgz", - "integrity": "sha512-3HANl8i9DKnUA89P4KEgVNN28EjSeDCmvEqbzOAuxCFDzdBZzjUl99zgnGpOUumvW5lvJo2HKcjrsc+tfyv1Hw==", - "bundleDependencies": [ - "@isaacs/string-locale-compare", - "@npmcli/arborist", - "@npmcli/ci-detect", - "@npmcli/config", - "@npmcli/fs", - "@npmcli/map-workspaces", - "@npmcli/package-json", - "@npmcli/run-script", - "abbrev", - "archy", - "cacache", - "chalk", - "chownr", - "cli-columns", - "cli-table3", - "columnify", - "fastest-levenshtein", - "fs-minipass", - "glob", - "graceful-fs", - "hosted-git-info", - "ini", - "init-package-json", - "is-cidr", - "json-parse-even-better-errors", - "libnpmaccess", - "libnpmdiff", - "libnpmexec", - "libnpmfund", - "libnpmhook", - "libnpmorg", - "libnpmpack", - "libnpmpublish", - "libnpmsearch", - "libnpmteam", - "libnpmversion", - "make-fetch-happen", - "minimatch", - "minipass", - "minipass-pipeline", - "mkdirp", - "mkdirp-infer-owner", - "ms", - "node-gyp", - "nopt", - "npm-audit-report", - "npm-install-checks", - "npm-package-arg", - "npm-pick-manifest", - "npm-profile", - "npm-registry-fetch", - "npm-user-validate", - "npmlog", - "opener", - "p-map", - "pacote", - "parse-conflict-json", - "proc-log", - "qrcode-terminal", - "read", - "read-package-json", - "read-package-json-fast", - "readdir-scoped-modules", - "rimraf", - "semver", - "ssri", - "tar", - "text-table", - "tiny-relative-date", - "treeverse", - "validate-npm-package-name", - "which", - "write-file-atomic" - ], + "node_modules/npm-bundled": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-3.0.1.tgz", + "integrity": "sha512-+AvaheE/ww1JEwRHOrn4WHNzOxGtVp+adrg2AeZS/7KuxGUYFuBta98wYpfHBbJp6Tg6j1NKSEVHNcfZzJHQwQ==", "dependencies": { - "@isaacs/string-locale-compare": "^1.1.0", - "@npmcli/arborist": "^5.6.3", - "@npmcli/ci-detect": "^2.0.0", - "@npmcli/config": "^4.2.1", - "@npmcli/fs": "^2.1.0", - "@npmcli/map-workspaces": "^2.0.3", - "@npmcli/package-json": "^2.0.0", - "@npmcli/run-script": "^4.2.1", - "abbrev": "~1.1.1", - "archy": "~1.0.0", - "cacache": "^16.1.3", - "chalk": "^4.1.2", - "chownr": "^2.0.0", - "cli-columns": "^4.0.0", - "cli-table3": "^0.6.2", - "columnify": "^1.6.0", - "fastest-levenshtein": "^1.0.12", - "fs-minipass": "^2.1.0", - "glob": "^8.0.1", - "graceful-fs": "^4.2.10", - "hosted-git-info": "^5.2.1", - "ini": "^3.0.1", - "init-package-json": "^3.0.2", - "is-cidr": "^4.0.2", - "json-parse-even-better-errors": "^2.3.1", - "libnpmaccess": "^6.0.4", - "libnpmdiff": "^4.0.5", - "libnpmexec": "^4.0.14", - "libnpmfund": "^3.0.5", - "libnpmhook": "^8.0.4", - "libnpmorg": "^4.0.4", - "libnpmpack": "^4.1.3", - "libnpmpublish": "^6.0.5", - "libnpmsearch": "^5.0.4", - "libnpmteam": "^4.0.4", - "libnpmversion": "^3.0.7", - "make-fetch-happen": "^10.2.0", - "minimatch": "^5.1.0", - "minipass": "^3.1.6", - "minipass-pipeline": "^1.2.4", - "mkdirp": "^1.0.4", - "mkdirp-infer-owner": "^2.0.0", - "ms": "^2.1.2", - "node-gyp": "^9.1.0", - "nopt": "^6.0.0", - "npm-audit-report": "^3.0.0", - "npm-install-checks": "^5.0.0", - "npm-package-arg": "^9.1.0", - "npm-pick-manifest": "^7.0.2", - "npm-profile": "^6.2.0", - "npm-registry-fetch": "^13.3.1", - "npm-user-validate": "^1.0.1", - "npmlog": "^6.0.2", - "opener": "^1.5.2", - "p-map": "^4.0.0", - "pacote": "^13.6.2", - "parse-conflict-json": "^2.0.2", - "proc-log": "^2.0.1", - "qrcode-terminal": "^0.12.0", - "read": "~1.0.7", - "read-package-json": "^5.0.2", - "read-package-json-fast": "^2.0.3", - "readdir-scoped-modules": "^1.1.0", - "rimraf": "^3.0.2", - "semver": "^7.3.7", - "ssri": "^9.0.1", - "tar": "^6.1.11", - "text-table": "~0.2.0", - "tiny-relative-date": "^1.3.0", - "treeverse": "^2.0.0", - "validate-npm-package-name": "^4.0.0", - "which": "^2.0.2", - "write-file-atomic": "^4.0.1" - }, - "bin": { - "npm": "bin/npm-cli.js", - "npx": "bin/npx-cli.js" + "npm-normalize-package-bin": "^3.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", + "node_modules/npm-check-updates": { + "version": "16.14.20", + "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-16.14.20.tgz", + "integrity": "sha512-sYbIhun4DrjO7NFOTdvs11nCar0etEhZTsEjL47eM0TuiGMhmYughRCxG2SpGRmGAQ7AkwN7bw2lWzoE7q6yOQ==", "dependencies": { - "path-key": "^2.0.0" + "@types/semver-utils": "^1.1.1", + "chalk": "^5.3.0", + "cli-table3": "^0.6.3", + "commander": "^10.0.1", + "fast-memoize": "^2.5.2", + "find-up": "5.0.0", + "fp-and-or": "^0.1.4", + "get-stdin": "^8.0.0", + "globby": "^11.0.4", + "hosted-git-info": "^5.1.0", + "ini": "^4.1.1", + "js-yaml": "^4.1.0", + "json-parse-helpfulerror": "^1.0.3", + "jsonlines": "^0.1.1", + "lodash": "^4.17.21", + "make-fetch-happen": "^11.1.1", + "minimatch": "^9.0.3", + "p-map": "^4.0.0", + "pacote": "15.2.0", + "parse-github-url": "^1.0.2", + "progress": "^2.0.3", + "prompts-ncu": "^3.0.0", + "rc-config-loader": "^4.1.3", + "remote-git-tags": "^3.0.0", + "rimraf": "^5.0.5", + "semver": "^7.5.4", + "semver-utils": "^1.1.4", + "source-map-support": "^0.5.21", + "spawn-please": "^2.0.2", + "strip-ansi": "^7.1.0", + "strip-json-comments": "^5.0.1", + "untildify": "^4.0.0", + "update-notifier": "^6.0.2" + }, + "bin": { + "ncu": "build/src/bin/cli.js", + "npm-check-updates": "build/src/bin/cli.js" }, "engines": { - "node": ">=4" + "node": ">=14.14" } }, - "node_modules/npm/node_modules/@colors/colors": { - "version": "1.5.0", - "inBundle": true, - "license": "MIT", - "optional": true, + "node_modules/npm-check-updates/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", "engines": { - "node": ">=0.1.90" - } - }, - "node_modules/npm/node_modules/@gar/promisify": { - "version": "1.1.3", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/@isaacs/string-locale-compare": { - "version": "1.1.0", - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/@npmcli/arborist": { - "version": "5.6.3", - "inBundle": true, - "license": "ISC", - "dependencies": { - "@isaacs/string-locale-compare": "^1.1.0", - "@npmcli/installed-package-contents": "^1.0.7", - "@npmcli/map-workspaces": "^2.0.3", - "@npmcli/metavuln-calculator": "^3.0.1", - "@npmcli/move-file": "^2.0.0", - "@npmcli/name-from-folder": "^1.0.1", - "@npmcli/node-gyp": "^2.0.0", - "@npmcli/package-json": "^2.0.0", - "@npmcli/query": "^1.2.0", - "@npmcli/run-script": "^4.1.3", - "bin-links": "^3.0.3", - "cacache": "^16.1.3", - "common-ancestor-path": "^1.0.1", - "hosted-git-info": "^5.2.1", - "json-parse-even-better-errors": "^2.3.1", - "json-stringify-nice": "^1.1.4", - "minimatch": "^5.1.0", - "mkdirp": "^1.0.4", - "mkdirp-infer-owner": "^2.0.0", - "nopt": "^6.0.0", - "npm-install-checks": "^5.0.0", - "npm-package-arg": "^9.0.0", - "npm-pick-manifest": "^7.0.2", - "npm-registry-fetch": "^13.0.0", - "npmlog": "^6.0.2", - "pacote": "^13.6.1", - "parse-conflict-json": "^2.0.1", - "proc-log": "^2.0.0", - "promise-all-reject-late": "^1.0.0", - "promise-call-limit": "^1.0.1", - "read-package-json-fast": "^2.0.2", - "readdir-scoped-modules": "^1.1.0", - "rimraf": "^3.0.2", - "semver": "^7.3.7", - "ssri": "^9.0.0", - "treeverse": "^2.0.0", - "walk-up-path": "^1.0.0" - }, - "bin": { - "arborist": "bin/index.js" + "node": ">=12" }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/npm/node_modules/@npmcli/ci-detect": { - "version": "2.0.0", - "inBundle": true, - "license": "ISC", + "node_modules/npm-check-updates/node_modules/chalk": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16" + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/npm/node_modules/@npmcli/config": { - "version": "4.2.2", - "inBundle": true, - "license": "ISC", - "dependencies": { - "@npmcli/map-workspaces": "^2.0.2", - "ini": "^3.0.0", - "mkdirp-infer-owner": "^2.0.0", - "nopt": "^6.0.0", - "proc-log": "^2.0.0", - "read-package-json-fast": "^2.0.3", - "semver": "^7.3.5", - "walk-up-path": "^1.0.0" - }, + "node_modules/npm-check-updates/node_modules/commander": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=14" } }, - "node_modules/npm/node_modules/@npmcli/disparity-colors": { - "version": "2.0.0", - "inBundle": true, - "license": "ISC", - "dependencies": { - "ansi-styles": "^4.3.0" - }, + "node_modules/npm-check-updates/node_modules/ini": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.2.tgz", + "integrity": "sha512-AMB1mvwR1pyBFY/nSevUX6y8nJWS63/SzUKD3JyQn97s4xgIdgQPT75IRouIiBAN4yLQBUShNYVW0+UG25daCw==", "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/npm/node_modules/@npmcli/fs": { - "version": "2.1.2", - "inBundle": true, - "license": "ISC", + "node_modules/npm-check-updates/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", "dependencies": { - "@gar/promisify": "^1.1.3", - "semver": "^7.3.5" + "ansi-regex": "^6.0.1" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/npm/node_modules/@npmcli/git": { - "version": "3.0.2", - "inBundle": true, - "license": "ISC", - "dependencies": { - "@npmcli/promise-spawn": "^3.0.0", - "lru-cache": "^7.4.4", - "mkdirp": "^1.0.4", - "npm-pick-manifest": "^7.0.0", - "proc-log": "^2.0.0", - "promise-inflight": "^1.0.1", - "promise-retry": "^2.0.1", - "semver": "^7.3.5", - "which": "^2.0.2" - }, + "node_modules/npm-check-updates/node_modules/strip-json-comments": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-5.0.1.tgz", + "integrity": "sha512-0fk9zBqO67Nq5M/m45qHCJxylV/DhBlIOVExqgOMiCCrzrhU6tCibRXNqE3jwJLftzE9SNuZtYbpzcO+i9FiKw==", "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/npm/node_modules/@npmcli/installed-package-contents": { - "version": "1.0.7", - "inBundle": true, - "license": "ISC", + "node_modules/npm-install-checks": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-6.3.0.tgz", + "integrity": "sha512-W29RiK/xtpCGqn6f3ixfRYGk+zRyr+Ew9F2E20BfXxT5/euLdA/Nm7fO7OeTGuAmTs30cpgInyJ0cYe708YTZw==", "dependencies": { - "npm-bundled": "^1.1.1", - "npm-normalize-package-bin": "^1.0.1" - }, - "bin": { - "installed-package-contents": "index.js" + "semver": "^7.1.1" }, "engines": { - "node": ">= 10" - } - }, - "node_modules/npm/node_modules/@npmcli/installed-package-contents/node_modules/npm-bundled": { - "version": "1.1.2", - "inBundle": true, - "license": "ISC", - "dependencies": { - "npm-normalize-package-bin": "^1.0.1" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/npm/node_modules/@npmcli/map-workspaces": { - "version": "2.0.4", - "inBundle": true, - "license": "ISC", - "dependencies": { - "@npmcli/name-from-folder": "^1.0.1", - "glob": "^8.0.1", - "minimatch": "^5.0.1", - "read-package-json-fast": "^2.0.3" - }, + "node_modules/npm-normalize-package-bin": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-3.0.1.tgz", + "integrity": "sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ==", "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/npm/node_modules/@npmcli/metavuln-calculator": { - "version": "3.1.1", - "inBundle": true, - "license": "ISC", + "node_modules/npm-package-arg": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-10.1.0.tgz", + "integrity": "sha512-uFyyCEmgBfZTtrKk/5xDfHp6+MdrqGotX/VoOyEEl3mBwiEE5FlBaePanazJSVMPT7vKepcjYBY2ztg9A3yPIA==", "dependencies": { - "cacache": "^16.0.0", - "json-parse-even-better-errors": "^2.3.1", - "pacote": "^13.0.3", - "semver": "^7.3.5" + "hosted-git-info": "^6.0.0", + "proc-log": "^3.0.0", + "semver": "^7.3.5", + "validate-npm-package-name": "^5.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/npm/node_modules/@npmcli/move-file": { - "version": "2.0.1", - "inBundle": true, - "license": "MIT", + "node_modules/npm-package-arg/node_modules/hosted-git-info": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.1.tgz", + "integrity": "sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==", "dependencies": { - "mkdirp": "^1.0.4", - "rimraf": "^3.0.2" + "lru-cache": "^7.5.1" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/npm/node_modules/@npmcli/name-from-folder": { - "version": "1.0.1", - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/@npmcli/node-gyp": { - "version": "2.0.0", - "inBundle": true, - "license": "ISC", + "node_modules/npm-package-arg/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=12" } }, - "node_modules/npm/node_modules/@npmcli/package-json": { - "version": "2.0.0", - "inBundle": true, - "license": "ISC", + "node_modules/npm-packlist": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-7.0.4.tgz", + "integrity": "sha512-d6RGEuRrNS5/N84iglPivjaJPxhDbZmlbTwTDX2IbcRHG5bZCdtysYMhwiPvcF4GisXHGn7xsxv+GQ7T/02M5Q==", "dependencies": { - "json-parse-even-better-errors": "^2.3.1" + "ignore-walk": "^6.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/npm/node_modules/@npmcli/promise-spawn": { - "version": "3.0.0", - "inBundle": true, - "license": "ISC", + "node_modules/npm-pick-manifest": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-8.0.2.tgz", + "integrity": "sha512-1dKY+86/AIiq1tkKVD3l0WI+Gd3vkknVGAggsFeBkTvbhMQ1OND/LKkYv4JtXPKUJ8bOTCyLiqEg2P6QNdK+Gg==", "dependencies": { - "infer-owner": "^1.0.4" + "npm-install-checks": "^6.0.0", + "npm-normalize-package-bin": "^3.0.0", + "npm-package-arg": "^10.0.0", + "semver": "^7.3.5" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/npm/node_modules/@npmcli/query": { - "version": "1.2.0", - "inBundle": true, - "license": "ISC", + "node_modules/npm-registry-fetch": { + "version": "14.0.5", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-14.0.5.tgz", + "integrity": "sha512-kIDMIo4aBm6xg7jOttupWZamsZRkAqMqwqqbVXnUqstY5+tapvv6bkH/qMR76jdgV+YljEUCyWx3hRYMrJiAgA==", "dependencies": { - "npm-package-arg": "^9.1.0", - "postcss-selector-parser": "^6.0.10", - "semver": "^7.3.7" + "make-fetch-happen": "^11.0.0", + "minipass": "^5.0.0", + "minipass-fetch": "^3.0.0", + "minipass-json-stream": "^1.0.1", + "minizlib": "^2.1.2", + "npm-package-arg": "^10.0.0", + "proc-log": "^3.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/npm/node_modules/@npmcli/run-script": { - "version": "4.2.1", - "inBundle": true, - "license": "ISC", + "node_modules/npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", "dependencies": { - "@npmcli/node-gyp": "^2.0.0", - "@npmcli/promise-spawn": "^3.0.0", - "node-gyp": "^9.0.0", - "read-package-json-fast": "^2.0.3", - "which": "^2.0.2" + "path-key": "^2.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=4" } }, - "node_modules/npm/node_modules/@tootallnate/once": { - "version": "2.0.0", - "inBundle": true, - "license": "MIT", + "node_modules/npm-run-path/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", "engines": { - "node": ">= 10" + "node": ">=4" } }, - "node_modules/npm/node_modules/abbrev": { - "version": "1.1.1", - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/agent-base": { + "node_modules/npmlog": { "version": "6.0.2", - "inBundle": true, - "license": "MIT", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", + "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", "dependencies": { - "debug": "4" + "are-we-there-yet": "^3.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^4.0.3", + "set-blocking": "^2.0.0" }, "engines": { - "node": ">= 6.0.0" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/npm/node_modules/agentkeepalive": { - "version": "4.2.1", - "inBundle": true, - "license": "MIT", + "node_modules/nyc": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/nyc/-/nyc-15.1.0.tgz", + "integrity": "sha512-jMW04n9SxKdKi1ZMGhvUTHBN0EICCRkHemEoE5jm6mTYcqcdas0ATzgUgejlQUHMvpnOZqGB5Xxsv9KxJW1j8A==", + "dev": true, "dependencies": { - "debug": "^4.1.0", - "depd": "^1.1.2", - "humanize-ms": "^1.2.1" + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "caching-transform": "^4.0.0", + "convert-source-map": "^1.7.0", + "decamelize": "^1.2.0", + "find-cache-dir": "^3.2.0", + "find-up": "^4.1.0", + "foreground-child": "^2.0.0", + "get-package-type": "^0.1.0", + "glob": "^7.1.6", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-hook": "^3.0.0", + "istanbul-lib-instrument": "^4.0.0", + "istanbul-lib-processinfo": "^2.0.2", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.0.2", + "make-dir": "^3.0.0", + "node-preload": "^0.2.1", + "p-map": "^3.0.0", + "process-on-spawn": "^1.0.0", + "resolve-from": "^5.0.0", + "rimraf": "^3.0.0", + "signal-exit": "^3.0.2", + "spawn-wrap": "^2.0.0", + "test-exclude": "^6.0.0", + "yargs": "^15.0.2" + }, + "bin": { + "nyc": "bin/nyc.js" }, "engines": { - "node": ">= 8.0.0" + "node": ">=8.9" } }, - "node_modules/npm/node_modules/aggregate-error": { - "version": "3.1.0", - "inBundle": true, - "license": "MIT", + "node_modules/nyc/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": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - }, - "engines": { - "node": ">=8" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/npm/node_modules/ansi-regex": { - "version": "5.0.1", - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=8" + "node_modules/nyc/node_modules/cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" } }, - "node_modules/npm/node_modules/ansi-styles": { - "version": "4.3.0", - "inBundle": true, - "license": "MIT", + "node_modules/nyc/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": { - "color-convert": "^2.0.1" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" }, "engines": { "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/npm/node_modules/aproba": { - "version": "2.0.0", - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/archy": { - "version": "1.0.0", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/are-we-there-yet": { - "version": "3.0.1", - "inBundle": true, - "license": "ISC", + "node_modules/nyc/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": { - "delegates": "^1.0.0", - "readable-stream": "^3.6.0" + "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": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/npm/node_modules/asap": { - "version": "2.0.6", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/balanced-match": { - "version": "1.0.2", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/bin-links": { - "version": "3.0.3", - "inBundle": true, - "license": "ISC", + "node_modules/nyc/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": { - "cmd-shim": "^5.0.0", - "mkdirp-infer-owner": "^2.0.0", - "npm-normalize-package-bin": "^2.0.0", - "read-cmd-shim": "^3.0.0", - "rimraf": "^3.0.0", - "write-file-atomic": "^4.0.0" + "p-locate": "^4.1.0" }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/npm/node_modules/bin-links/node_modules/npm-normalize-package-bin": { - "version": "2.0.0", - "inBundle": true, - "license": "ISC", - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/npm/node_modules/binary-extensions": { - "version": "2.2.0", - "inBundle": true, - "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/npm/node_modules/brace-expansion": { - "version": "2.0.1", - "inBundle": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/npm/node_modules/builtins": { - "version": "5.0.1", - "inBundle": true, - "license": "MIT", - "dependencies": { - "semver": "^7.0.0" - } - }, - "node_modules/npm/node_modules/cacache": { - "version": "16.1.3", - "inBundle": true, - "license": "ISC", + "node_modules/nyc/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": { - "@npmcli/fs": "^2.1.0", - "@npmcli/move-file": "^2.0.0", - "chownr": "^2.0.0", - "fs-minipass": "^2.1.0", - "glob": "^8.0.1", - "infer-owner": "^1.0.4", - "lru-cache": "^7.7.1", - "minipass": "^3.1.6", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "mkdirp": "^1.0.4", - "p-map": "^4.0.0", - "promise-inflight": "^1.0.1", - "rimraf": "^3.0.2", - "ssri": "^9.0.0", - "tar": "^6.1.11", - "unique-filename": "^2.0.0" + "brace-expansion": "^1.1.7" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "*" } }, - "node_modules/npm/node_modules/chalk": { - "version": "4.1.2", - "inBundle": true, - "license": "MIT", + "node_modules/nyc/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": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "p-try": "^2.0.0" }, "engines": { - "node": ">=10" + "node": ">=6" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/npm/node_modules/chownr": { - "version": "2.0.0", - "inBundle": true, - "license": "ISC", + "node_modules/nyc/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": ">=10" + "node": ">=8" } }, - "node_modules/npm/node_modules/cidr-regex": { - "version": "3.1.1", - "inBundle": true, - "license": "BSD-2-Clause", + "node_modules/nyc/node_modules/p-map": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", + "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", + "dev": true, "dependencies": { - "ip-regex": "^4.1.0" + "aggregate-error": "^3.0.0" }, "engines": { - "node": ">=10" + "node": ">=8" } }, - "node_modules/npm/node_modules/clean-stack": { - "version": "2.2.0", - "inBundle": true, - "license": "MIT", + "node_modules/nyc/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": ">=6" + "node": ">=8" } }, - "node_modules/npm/node_modules/cli-columns": { - "version": "4.0.0", - "inBundle": true, - "license": "MIT", + "node_modules/nyc/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": { - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1" + "glob": "^7.1.3" }, - "engines": { - "node": ">= 10" + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/npm/node_modules/cli-table3": { - "version": "0.6.2", - "inBundle": true, - "license": "MIT", + "node_modules/nyc/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, "dependencies": { - "string-width": "^4.2.0" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" }, "engines": { - "node": "10.* || >= 12.*" - }, - "optionalDependencies": { - "@colors/colors": "1.5.0" + "node": ">=8" } }, - "node_modules/npm/node_modules/clone": { - "version": "1.0.4", - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=0.8" - } + "node_modules/nyc/node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "dev": true }, - "node_modules/npm/node_modules/cmd-shim": { - "version": "5.0.0", - "inBundle": true, - "license": "ISC", + "node_modules/nyc/node_modules/yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "dev": true, "dependencies": { - "mkdirp-infer-owner": "^2.0.0" + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=8" } }, - "node_modules/npm/node_modules/color-convert": { - "version": "2.0.1", - "inBundle": true, - "license": "MIT", + "node_modules/nyc/node_modules/yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dev": true, "dependencies": { - "color-name": "~1.1.4" + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" }, "engines": { - "node": ">=7.0.0" + "node": ">=6" } }, - "node_modules/npm/node_modules/color-name": { - "version": "1.1.4", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/color-support": { - "version": "1.1.3", - "inBundle": true, - "license": "ISC", - "bin": { - "color-support": "bin.js" + "node_modules/oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "dev": true, + "engines": { + "node": "*" } }, - "node_modules/npm/node_modules/columnify": { - "version": "1.6.0", - "inBundle": true, - "license": "MIT", - "dependencies": { - "strip-ansi": "^6.0.1", - "wcwidth": "^1.0.0" - }, + "node_modules/object-assign": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.0.1.tgz", + "integrity": "sha512-c6legOHWepAbWnp3j5SRUMpxCXBKI4rD7A5Osn9IzZ8w4O/KccXdW0lqdkQKbpk0eHGjNgKihgzY6WuEq99Tfw==", "engines": { - "node": ">=8.0.0" + "node": ">=0.10.0" } }, - "node_modules/npm/node_modules/common-ancestor-path": { - "version": "1.0.1", - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/concat-map": { - "version": "0.0.1", - "inBundle": true, - "license": "MIT" + "node_modules/object-hash": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-1.3.1.tgz", + "integrity": "sha512-OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA==", + "dev": true, + "engines": { + "node": ">= 0.10.0" + } }, - "node_modules/npm/node_modules/console-control-strings": { - "version": "1.1.0", - "inBundle": true, - "license": "ISC" + "node_modules/object-inspect": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "node_modules/npm/node_modules/cssesc": { - "version": "3.0.0", - "inBundle": true, - "license": "MIT", - "bin": { - "cssesc": "bin/cssesc" - }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, "engines": { - "node": ">=4" + "node": ">= 0.4" } }, - "node_modules/npm/node_modules/debug": { - "version": "4.3.4", - "inBundle": true, - "license": "MIT", + "node_modules/object.assign": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", + "dev": true, "dependencies": { - "ms": "2.1.2" + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" }, "engines": { - "node": ">=6.0" + "node": ">= 0.4" }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/npm/node_modules/debug/node_modules/ms": { - "version": "2.1.2", - "inBundle": true, - "license": "MIT" + "node_modules/on-error": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/on-error/-/on-error-2.1.0.tgz", + "integrity": "sha512-wpKXxCW2wXLI+9DB9DDBVuOCN9C5rjyaP4GWwqhgrSd2ys1Vyc9yGaPmC5HSOdQ30x9zCLozi9mHx3lm01E+LQ==" }, - "node_modules/npm/node_modules/debuglog": { - "version": "1.0.1", - "inBundle": true, - "license": "MIT", + "node_modules/on-exit-leak-free": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/on-exit-leak-free/-/on-exit-leak-free-2.1.2.tgz", + "integrity": "sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==", "engines": { - "node": "*" + "node": ">=14.0.0" } }, - "node_modules/npm/node_modules/defaults": { - "version": "1.0.3", - "inBundle": true, - "license": "MIT", + "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": { - "clone": "^1.0.2" + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" } }, - "node_modules/npm/node_modules/delegates": { - "version": "1.0.0", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/depd": { - "version": "1.1.2", - "inBundle": true, - "license": "MIT", + "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==", "engines": { - "node": ">= 0.6" + "node": ">= 0.8" } }, - "node_modules/npm/node_modules/dezalgo": { - "version": "1.0.4", - "inBundle": true, - "license": "ISC", + "node_modules/once": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", + "integrity": "sha512-6vaNInhu+CHxtONf3zw3vq4SP2DOQhjBvIa3rNcG0+P7eKWlYH6Peu7rHizSloRU2EwMz6GraLieis9Ac9+p1w==", "dependencies": { - "asap": "^2.0.0", "wrappy": "1" } }, - "node_modules/npm/node_modules/diff": { - "version": "5.1.0", - "inBundle": true, - "license": "BSD-3-Clause", + "node_modules/onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==", + "dev": true, + "dependencies": { + "mimic-fn": "^1.0.0" + }, "engines": { - "node": ">=0.3.1" + "node": ">=4" } }, - "node_modules/npm/node_modules/emoji-regex": { - "version": "8.0.0", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/encoding": { - "version": "0.1.13", - "inBundle": true, - "license": "MIT", - "optional": true, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, "dependencies": { - "iconv-lite": "^0.6.2" - } - }, - "node_modules/npm/node_modules/env-paths": { - "version": "2.2.1", - "inBundle": true, - "license": "MIT", + "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.5" + }, "engines": { - "node": ">=6" + "node": ">= 0.8.0" } }, - "node_modules/npm/node_modules/err-code": { - "version": "2.0.3", - "inBundle": true, - "license": "MIT" + "node_modules/os": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/os/-/os-0.1.2.tgz", + "integrity": "sha512-ZoXJkvAnljwvc56MbvhtKVWmSkzV712k42Is2mA0+0KTSRakq5XXuXpjZjgAt9ctzl51ojhQWakQQpmOvXWfjQ==" }, - "node_modules/npm/node_modules/fastest-levenshtein": { - "version": "1.0.12", - "inBundle": true, - "license": "MIT" + "node_modules/os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "node_modules/npm/node_modules/fs-minipass": { - "version": "2.1.0", - "inBundle": true, - "license": "ISC", - "dependencies": { - "minipass": "^3.0.0" - }, + "node_modules/p-cancelable": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz", + "integrity": "sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==", "engines": { - "node": ">= 8" + "node": ">=12.20" } }, - "node_modules/npm/node_modules/fs.realpath": { + "node_modules/p-finally": { "version": "1.0.0", - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/function-bind": { - "version": "1.1.1", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/gauge": { - "version": "4.0.4", - "inBundle": true, - "license": "ISC", - "dependencies": { - "aproba": "^1.0.3 || ^2.0.0", - "color-support": "^1.1.3", - "console-control-strings": "^1.1.0", - "has-unicode": "^2.0.1", - "signal-exit": "^3.0.7", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "wide-align": "^1.1.5" - }, + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=4" } }, - "node_modules/npm/node_modules/glob": { - "version": "8.0.3", - "inBundle": true, - "license": "ISC", + "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==", "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" + "yocto-queue": "^0.1.0" }, "engines": { - "node": ">=12" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/npm/node_modules/graceful-fs": { - "version": "4.2.10", - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/has": { - "version": "1.0.3", - "inBundle": true, - "license": "MIT", + "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==", "dependencies": { - "function-bind": "^1.1.1" + "p-limit": "^3.0.2" }, "engines": { - "node": ">= 0.4.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/npm/node_modules/has-flag": { + "node_modules/p-map": { "version": "4.0.0", - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/has-unicode": { - "version": "2.0.1", - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/hosted-git-info": { - "version": "5.2.1", - "inBundle": true, - "license": "ISC", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", "dependencies": { - "lru-cache": "^7.5.1" + "aggregate-error": "^3.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/npm/node_modules/http-cache-semantics": { - "version": "4.1.1", - "inBundle": true, - "license": "BSD-2-Clause" - }, - "node_modules/npm/node_modules/http-proxy-agent": { - "version": "5.0.0", - "inBundle": true, - "license": "MIT", - "dependencies": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" - }, + "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" + "node": ">=6" } }, - "node_modules/npm/node_modules/https-proxy-agent": { - "version": "5.0.1", - "inBundle": true, - "license": "MIT", + "node_modules/pac-proxy-agent": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-7.0.1.tgz", + "integrity": "sha512-ASV8yU4LLKBAjqIPMbrgtaKIvxQri/yh2OpI+S6hVa9JRkUI3Y3NPFbfngDtY7oFtSMD3w31Xns89mDa3Feo5A==", + "optional": true, "dependencies": { - "agent-base": "6", - "debug": "4" + "@tootallnate/quickjs-emscripten": "^0.23.0", + "agent-base": "^7.0.2", + "debug": "^4.3.4", + "get-uri": "^6.0.1", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.2", + "pac-resolver": "^7.0.0", + "socks-proxy-agent": "^8.0.2" }, "engines": { - "node": ">= 6" - } - }, - "node_modules/npm/node_modules/humanize-ms": { - "version": "1.2.1", - "inBundle": true, - "license": "MIT", - "dependencies": { - "ms": "^2.0.0" + "node": ">= 14" } }, - "node_modules/npm/node_modules/iconv-lite": { - "version": "0.6.3", - "inBundle": true, - "license": "MIT", + "node_modules/pac-proxy-agent/node_modules/agent-base": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", "optional": true, "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" + "debug": "^4.3.4" }, "engines": { - "node": ">=0.10.0" + "node": ">= 14" } }, - "node_modules/npm/node_modules/ignore-walk": { - "version": "5.0.1", - "inBundle": true, - "license": "ISC", + "node_modules/pac-proxy-agent/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "optional": true, "dependencies": { - "minimatch": "^5.0.1" + "ms": "2.1.2" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/npm/node_modules/imurmurhash": { - "version": "0.1.4", - "inBundle": true, - "license": "MIT", + "node_modules/pac-proxy-agent/node_modules/http-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "optional": true, + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, "engines": { - "node": ">=0.8.19" + "node": ">= 14" } }, - "node_modules/npm/node_modules/indent-string": { - "version": "4.0.0", - "inBundle": true, - "license": "MIT", + "node_modules/pac-proxy-agent/node_modules/https-proxy-agent": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz", + "integrity": "sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==", + "optional": true, + "dependencies": { + "agent-base": "^7.0.2", + "debug": "4" + }, "engines": { - "node": ">=8" + "node": ">= 14" } }, - "node_modules/npm/node_modules/infer-owner": { - "version": "1.0.4", - "inBundle": true, - "license": "ISC" + "node_modules/pac-proxy-agent/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==", + "optional": true }, - "node_modules/npm/node_modules/inflight": { - "version": "1.0.6", - "inBundle": true, - "license": "ISC", + "node_modules/pac-proxy-agent/node_modules/socks-proxy-agent": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.3.tgz", + "integrity": "sha512-VNegTZKhuGq5vSD6XNKlbqWhyt/40CgoEw8XxD6dhnm8Jq9IEa3nIa4HwnM8XOqU0CdB0BwWVXusqiFXfHB3+A==", + "optional": true, "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/npm/node_modules/inherits": { - "version": "2.0.4", - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/ini": { - "version": "3.0.1", - "inBundle": true, - "license": "ISC", + "agent-base": "^7.1.1", + "debug": "^4.3.4", + "socks": "^2.7.1" + }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">= 14" } }, - "node_modules/npm/node_modules/init-package-json": { - "version": "3.0.2", - "inBundle": true, - "license": "ISC", + "node_modules/pac-resolver": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-7.0.1.tgz", + "integrity": "sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==", + "optional": true, "dependencies": { - "npm-package-arg": "^9.0.1", - "promzard": "^0.3.0", - "read": "^1.0.7", - "read-package-json": "^5.0.0", - "semver": "^7.3.5", - "validate-npm-package-license": "^3.0.4", - "validate-npm-package-name": "^4.0.0" + "degenerator": "^5.0.0", + "netmask": "^2.0.2" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">= 14" } }, - "node_modules/npm/node_modules/ip": { - "version": "2.0.0", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/ip-regex": { - "version": "4.3.0", - "inBundle": true, - "license": "MIT", + "node_modules/package-hash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-4.0.0.tgz", + "integrity": "sha512-whdkPIooSu/bASggZ96BWVvZTRMOFxnyUG5PnTSGKoJE2gd5mbVNmR2Nj20QFzxYYgAXpoqC+AiXzl+UMRh7zQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.15", + "hasha": "^5.0.0", + "lodash.flattendeep": "^4.4.0", + "release-zalgo": "^1.0.0" + }, "engines": { "node": ">=8" } }, - "node_modules/npm/node_modules/is-cidr": { - "version": "4.0.2", - "inBundle": true, - "license": "BSD-2-Clause", + "node_modules/package-json": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-8.1.1.tgz", + "integrity": "sha512-cbH9IAIJHNj9uXi196JVsRlt7cHKak6u/e6AkL/bkRelZ7rlL3X1YKxsZwa36xipOEKAsdtmaG6aAJoM1fx2zA==", "dependencies": { - "cidr-regex": "^3.1.1" + "got": "^12.1.0", + "registry-auth-token": "^5.0.1", + "registry-url": "^6.0.0", + "semver": "^7.3.7" }, "engines": { - "node": ">=10" - } - }, - "node_modules/npm/node_modules/is-core-module": { - "version": "2.10.0", - "inBundle": true, - "license": "MIT", - "dependencies": { - "has": "^1.0.3" + "node": ">=14.16" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/npm/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "inBundle": true, - "license": "MIT", + "node_modules/pacote": { + "version": "15.2.0", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-15.2.0.tgz", + "integrity": "sha512-rJVZeIwHTUta23sIZgEIM62WYwbmGbThdbnkt81ravBplQv+HjyroqnLRNH2+sLJHcGZmLRmhPwACqhfTcOmnA==", + "dependencies": { + "@npmcli/git": "^4.0.0", + "@npmcli/installed-package-contents": "^2.0.1", + "@npmcli/promise-spawn": "^6.0.1", + "@npmcli/run-script": "^6.0.0", + "cacache": "^17.0.0", + "fs-minipass": "^3.0.0", + "minipass": "^5.0.0", + "npm-package-arg": "^10.0.0", + "npm-packlist": "^7.0.0", + "npm-pick-manifest": "^8.0.0", + "npm-registry-fetch": "^14.0.0", + "proc-log": "^3.0.0", + "promise-retry": "^2.0.1", + "read-package-json": "^6.0.0", + "read-package-json-fast": "^3.0.0", + "sigstore": "^1.3.0", + "ssri": "^10.0.0", + "tar": "^6.1.11" + }, + "bin": { + "pacote": "lib/bin.js" + }, "engines": { - "node": ">=8" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/npm/node_modules/is-lambda": { + "node_modules/parent-module": { "version": "1.0.1", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/isexe": { - "version": "2.0.0", - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/json-stringify-nice": { - "version": "1.1.4", - "inBundle": true, - "license": "ISC", - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/npm/node_modules/jsonparse": { - "version": "1.3.1", - "engines": [ - "node >= 0.2.0" - ], - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/just-diff": { - "version": "5.1.1", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/just-diff-apply": { - "version": "5.4.1", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/libnpmaccess": { - "version": "6.0.4", - "inBundle": true, - "license": "ISC", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, "dependencies": { - "aproba": "^2.0.0", - "minipass": "^3.1.1", - "npm-package-arg": "^9.0.1", - "npm-registry-fetch": "^13.0.0" + "callsites": "^3.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=6" } }, - "node_modules/npm/node_modules/libnpmdiff": { - "version": "4.0.5", - "inBundle": true, - "license": "ISC", - "dependencies": { - "@npmcli/disparity-colors": "^2.0.0", - "@npmcli/installed-package-contents": "^1.0.7", - "binary-extensions": "^2.2.0", - "diff": "^5.1.0", - "minimatch": "^5.0.1", - "npm-package-arg": "^9.0.1", - "pacote": "^13.6.1", - "tar": "^6.1.0" + "node_modules/parse-github-url": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/parse-github-url/-/parse-github-url-1.0.2.tgz", + "integrity": "sha512-kgBf6avCbO3Cn6+RnzRGLkUsv4ZVqv/VfAYkRsyBcgkshNvVBkRn1FEZcW0Jb+npXQWm2vHPnnOqFteZxRRGNw==", + "bin": { + "parse-github-url": "cli.js" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=0.10.0" } }, - "node_modules/npm/node_modules/libnpmexec": { - "version": "4.0.14", - "inBundle": true, - "license": "ISC", + "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==", + "dev": true, "dependencies": { - "@npmcli/arborist": "^5.6.3", - "@npmcli/ci-detect": "^2.0.0", - "@npmcli/fs": "^2.1.1", - "@npmcli/run-script": "^4.2.0", - "chalk": "^4.1.0", - "mkdirp-infer-owner": "^2.0.0", - "npm-package-arg": "^9.0.1", - "npmlog": "^6.0.2", - "pacote": "^13.6.1", - "proc-log": "^2.0.0", - "read": "^1.0.7", - "read-package-json-fast": "^2.0.2", - "semver": "^7.3.7", - "walk-up-path": "^1.0.0" + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=4" } }, - "node_modules/npm/node_modules/libnpmfund": { - "version": "3.0.5", - "inBundle": true, - "license": "ISC", - "dependencies": { - "@npmcli/arborist": "^5.6.3" - }, + "node_modules/parse-ms": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-2.1.0.tgz", + "integrity": "sha512-kHt7kzLoS9VBZfUsiKjv43mr91ea+U05EyKkEtqp7vNbHxmaVuEqN7XxeEVnGrMtYOAxGrDElSi96K7EgO1zCA==", + "dev": true, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=6" } }, - "node_modules/npm/node_modules/libnpmhook": { - "version": "8.0.4", - "inBundle": true, - "license": "ISC", - "dependencies": { - "aproba": "^2.0.0", - "npm-registry-fetch": "^13.0.0" - }, + "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": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">= 0.8" } }, - "node_modules/npm/node_modules/libnpmorg": { - "version": "4.0.4", - "inBundle": true, - "license": "ISC", + "node_modules/path": { + "version": "0.12.7", + "resolved": "https://registry.npmjs.org/path/-/path-0.12.7.tgz", + "integrity": "sha512-aXXC6s+1w7otVF9UletFkFcDsJeO7lSZBPUQhtb5O0xJe8LtYhj/GxldoL09bBj9+ZmE2hNoHqQSFMN5fikh4Q==", "dependencies": { - "aproba": "^2.0.0", - "npm-registry-fetch": "^13.0.0" - }, + "process": "^0.11.1", + "util": "^0.10.3" + } + }, + "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==", "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=8" } }, - "node_modules/npm/node_modules/libnpmpack": { - "version": "4.1.3", - "inBundle": true, - "license": "ISC", - "dependencies": { - "@npmcli/run-script": "^4.1.3", - "npm-package-arg": "^9.0.1", - "pacote": "^13.6.1" - }, + "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==", "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=0.10.0" } }, - "node_modules/npm/node_modules/libnpmpublish": { - "version": "6.0.5", - "inBundle": true, - "license": "ISC", - "dependencies": { - "normalize-package-data": "^4.0.0", - "npm-package-arg": "^9.0.1", - "npm-registry-fetch": "^13.0.0", - "semver": "^7.3.7", - "ssri": "^9.0.0" - }, + "node_modules/path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==", + "dev": true + }, + "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==", "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=8" } }, - "node_modules/npm/node_modules/libnpmsearch": { - "version": "5.0.4", - "inBundle": true, - "license": "ISC", + "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-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", "dependencies": { - "npm-registry-fetch": "^13.0.0" + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/npm/node_modules/libnpmteam": { - "version": "4.0.4", - "inBundle": true, - "license": "ISC", - "dependencies": { - "aproba": "^2.0.0", - "npm-registry-fetch": "^13.0.0" - }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz", + "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==", "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "14 || >=16.14" } }, - "node_modules/npm/node_modules/libnpmversion": { - "version": "3.0.7", - "inBundle": true, - "license": "ISC", - "dependencies": { - "@npmcli/git": "^3.0.0", - "@npmcli/run-script": "^4.1.3", - "json-parse-even-better-errors": "^2.3.1", - "proc-log": "^2.0.0", - "semver": "^7.3.7" - }, + "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==", "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=8" } }, - "node_modules/npm/node_modules/lru-cache": { - "version": "7.13.2", - "inBundle": true, - "license": "ISC", + "node_modules/pathval": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.0.tgz", + "integrity": "sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==", + "dev": true, "engines": { - "node": ">=12" + "node": ">= 14.16" } }, - "node_modules/npm/node_modules/make-fetch-happen": { - "version": "10.2.1", - "inBundle": true, - "license": "ISC", - "dependencies": { - "agentkeepalive": "^4.2.1", - "cacache": "^16.1.0", - "http-cache-semantics": "^4.1.0", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^7.7.1", - "minipass": "^3.1.6", - "minipass-collect": "^1.0.2", - "minipass-fetch": "^2.0.3", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.3", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^7.0.0", - "ssri": "^9.0.0" - }, + "node_modules/pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", + "optional": true + }, + "node_modules/performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", + "dev": true + }, + "node_modules/pg-connection-string": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.6.4.tgz", + "integrity": "sha512-v+Z7W/0EO707aNMaAEfiGnGL9sxxumwLl2fJvCQtMn9Fxsg+lPpPkdcyBSv/KFgpGdYkMfn+EI1Or2EHjpgLCA==" + }, + "node_modules/picocolors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", + "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/npm/node_modules/minimatch": { - "version": "5.1.0", - "inBundle": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, + "node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "dev": true, "engines": { - "node": ">=10" + "node": ">=4" } }, - "node_modules/npm/node_modules/minipass": { - "version": "3.3.4", - "inBundle": true, - "license": "ISC", + "node_modules/pino": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/pino/-/pino-9.1.0.tgz", + "integrity": "sha512-qUcgfrlyOtjwhNLdbhoL7NR4NkHjzykAPw0V2QLFbvu/zss29h4NkRnibyFzBrNCbzCOY3WZ9hhKSwfOkNggYA==", "dependencies": { - "yallist": "^4.0.0" + "atomic-sleep": "^1.0.0", + "fast-redact": "^3.1.1", + "on-exit-leak-free": "^2.1.0", + "pino-abstract-transport": "^1.2.0", + "pino-std-serializers": "^7.0.0", + "process-warning": "^3.0.0", + "quick-format-unescaped": "^4.0.3", + "real-require": "^0.2.0", + "safe-stable-stringify": "^2.3.1", + "sonic-boom": "^4.0.1", + "thread-stream": "^3.0.0" }, - "engines": { - "node": ">=8" + "bin": { + "pino": "bin.js" } }, - "node_modules/npm/node_modules/minipass-collect": { - "version": "1.0.2", - "inBundle": true, - "license": "ISC", + "node_modules/pino-abstract-transport": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pino-abstract-transport/-/pino-abstract-transport-1.2.0.tgz", + "integrity": "sha512-Guhh8EZfPCfH+PMXAb6rKOjGQEoy0xlAIn+irODG5kgfYV+BQ0rGYYWTIel3P5mmyXqkYkPmdIkywsn6QKUR1Q==", "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" + "readable-stream": "^4.0.0", + "split2": "^4.0.0" } }, - "node_modules/npm/node_modules/minipass-fetch": { - "version": "2.1.1", - "inBundle": true, - "license": "MIT", + "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": { - "minipass": "^3.1.6", - "minipass-sized": "^1.0.3", - "minizlib": "^2.1.2" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - }, - "optionalDependencies": { - "encoding": "^0.1.13" + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" } }, - "node_modules/npm/node_modules/minipass-flush": { - "version": "1.0.5", - "inBundle": true, - "license": "ISC", + "node_modules/pino-abstract-transport/node_modules/readable-stream": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz", + "integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==", "dependencies": { - "minipass": "^3.0.0" + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" }, "engines": { - "node": ">= 8" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, - "node_modules/npm/node_modules/minipass-json-stream": { - "version": "1.0.1", - "inBundle": true, - "license": "MIT", + "node_modules/pino-abstract-transport/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": { - "jsonparse": "^1.3.1", - "minipass": "^3.0.0" + "safe-buffer": "~5.2.0" } }, - "node_modules/npm/node_modules/minipass-pipeline": { - "version": "1.2.4", - "inBundle": true, - "license": "ISC", + "node_modules/pino-std-serializers": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-7.0.0.tgz", + "integrity": "sha512-e906FRY0+tV27iq4juKzSYPbUj2do2X2JX4EzSca1631EB2QJQUqGbDuERal7LCtOpxl6x3+nvo9NPZcmjkiFA==" + }, + "node_modules/pkg-conf": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-2.1.0.tgz", + "integrity": "sha512-C+VUP+8jis7EsQZIhDYmS5qlNtjv2yP4SNtjXK9AP1ZcTRlnSfuumaTnRfYZnYgUUYVIKqL0fRvmUGDV2fmp6g==", + "dev": true, "dependencies": { - "minipass": "^3.0.0" + "find-up": "^2.0.0", + "load-json-file": "^4.0.0" }, "engines": { - "node": ">=8" + "node": ">=4" } }, - "node_modules/npm/node_modules/minipass-sized": { - "version": "1.0.3", - "inBundle": true, - "license": "ISC", + "node_modules/pkg-conf/node_modules/find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", + "dev": true, "dependencies": { - "minipass": "^3.0.0" + "locate-path": "^2.0.0" }, "engines": { - "node": ">=8" + "node": ">=4" } }, - "node_modules/npm/node_modules/minizlib": { - "version": "2.1.2", - "inBundle": true, - "license": "MIT", + "node_modules/pkg-conf/node_modules/locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", + "dev": true, "dependencies": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" }, "engines": { - "node": ">= 8" + "node": ">=4" } }, - "node_modules/npm/node_modules/mkdirp": { - "version": "1.0.4", - "inBundle": true, - "license": "MIT", - "bin": { - "mkdirp": "bin/cmd.js" + "node_modules/pkg-conf/node_modules/p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "dependencies": { + "p-try": "^1.0.0" }, "engines": { - "node": ">=10" + "node": ">=4" } }, - "node_modules/npm/node_modules/mkdirp-infer-owner": { + "node_modules/pkg-conf/node_modules/p-locate": { "version": "2.0.0", - "inBundle": true, - "license": "ISC", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", + "dev": true, "dependencies": { - "chownr": "^2.0.0", - "infer-owner": "^1.0.4", - "mkdirp": "^1.0.3" + "p-limit": "^1.1.0" }, "engines": { - "node": ">=10" + "node": ">=4" } }, - "node_modules/npm/node_modules/ms": { - "version": "2.1.3", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/mute-stream": { - "version": "0.0.8", - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/negotiator": { - "version": "0.6.3", - "inBundle": true, - "license": "MIT", + "node_modules/pkg-conf/node_modules/p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", + "dev": true, "engines": { - "node": ">= 0.6" + "node": ">=4" } }, - "node_modules/npm/node_modules/node-gyp": { - "version": "9.1.0", - "inBundle": true, - "license": "MIT", - "dependencies": { - "env-paths": "^2.2.0", - "glob": "^7.1.4", - "graceful-fs": "^4.2.6", - "make-fetch-happen": "^10.0.3", - "nopt": "^5.0.0", - "npmlog": "^6.0.0", - "rimraf": "^3.0.2", - "semver": "^7.3.5", - "tar": "^6.1.2", - "which": "^2.0.2" - }, - "bin": { - "node-gyp": "bin/node-gyp.js" - }, + "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==", + "dev": true, "engines": { - "node": "^12.22 || ^14.13 || >=16" + "node": ">=4" } }, - "node_modules/npm/node_modules/node-gyp/node_modules/brace-expansion": { - "version": "1.1.11", - "inBundle": true, - "license": "MIT", + "node_modules/pkg-config": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pkg-config/-/pkg-config-1.1.1.tgz", + "integrity": "sha512-ft/WI9YK6FuTuw4Ql+QUaNXtm/ASQNqDUUsZEgFZKyFpW6amyP8Gx01xrRs8KdiNbbqXfYxkOXplpq1euWbOjw==", + "dev": true, "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "debug-log": "^1.0.0", + "find-root": "^1.0.0", + "xtend": "^4.0.1" + }, + "engines": { + "node": ">=0.10" } }, - "node_modules/npm/node_modules/node-gyp/node_modules/glob": { - "version": "7.2.3", - "inBundle": true, - "license": "ISC", + "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": { - "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" + "find-up": "^4.0.0" }, "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=8" } }, - "node_modules/npm/node_modules/node-gyp/node_modules/minimatch": { - "version": "3.1.2", - "inBundle": true, - "license": "ISC", + "node_modules/pkg-dir/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": { - "brace-expansion": "^1.1.7" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": "*" + "node": ">=8" } }, - "node_modules/npm/node_modules/node-gyp/node_modules/nopt": { + "node_modules/pkg-dir/node_modules/locate-path": { "version": "5.0.0", - "inBundle": true, - "license": "ISC", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, "dependencies": { - "abbrev": "1" - }, - "bin": { - "nopt": "bin/nopt.js" + "p-locate": "^4.1.0" }, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/npm/node_modules/nopt": { - "version": "6.0.0", - "inBundle": true, - "license": "ISC", + "node_modules/pkg-dir/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": { - "abbrev": "^1.0.0" - }, - "bin": { - "nopt": "bin/nopt.js" + "p-try": "^2.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/npm/node_modules/normalize-package-data": { - "version": "4.0.1", - "inBundle": true, - "license": "BSD-2-Clause", - "dependencies": { - "hosted-git-info": "^5.0.0", - "is-core-module": "^2.8.1", - "semver": "^7.3.5", - "validate-npm-package-license": "^3.0.4" + "node": ">=6" }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/npm/node_modules/npm-audit-report": { - "version": "3.0.0", - "inBundle": true, - "license": "ISC", + "node_modules/pkg-dir/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": { - "chalk": "^4.0.0" + "p-limit": "^2.2.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=8" } }, - "node_modules/npm/node_modules/npm-bundled": { - "version": "2.0.1", - "inBundle": true, - "license": "ISC", - "dependencies": { - "npm-normalize-package-bin": "^2.0.0" - }, + "node_modules/pluralize": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz", + "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", + "dev": true, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=4" } }, - "node_modules/npm/node_modules/npm-bundled/node_modules/npm-normalize-package-bin": { - "version": "2.0.0", - "inBundle": true, - "license": "ISC", + "node_modules/pony-cause": { + "version": "2.1.11", + "resolved": "https://registry.npmjs.org/pony-cause/-/pony-cause-2.1.11.tgz", + "integrity": "sha512-M7LhCsdNbNgiLYiP4WjsfLUuFmCfnjdF6jKe2R9NKl4WFN+HZPGHJZ9lnLP7f9ZnKe3U9nuWD0szirmj+migUg==", "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=12.0.0" } }, - "node_modules/npm/node_modules/npm-install-checks": { - "version": "5.0.0", - "inBundle": true, - "license": "BSD-2-Clause", + "node_modules/portscanner": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/portscanner/-/portscanner-2.2.0.tgz", + "integrity": "sha512-IFroCz/59Lqa2uBvzK3bKDbDDIEaAY8XJ1jFxcLWTqosrsc32//P4VuSB2vZXoHiHqOmx8B5L5hnKOxL/7FlPw==", "dependencies": { - "semver": "^7.1.1" + "async": "^2.6.0", + "is-number-like": "^1.0.3" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=0.4", + "npm": ">=1.0.0" } }, - "node_modules/npm/node_modules/npm-normalize-package-bin": { - "version": "1.0.1", - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/npm-package-arg": { - "version": "9.1.0", - "inBundle": true, - "license": "ISC", + "node_modules/portscanner/node_modules/async": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", "dependencies": { - "hosted-git-info": "^5.0.0", - "proc-log": "^2.0.1", - "semver": "^7.3.5", - "validate-npm-package-name": "^4.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "lodash": "^4.17.14" } }, - "node_modules/npm/node_modules/npm-packlist": { - "version": "5.1.3", - "inBundle": true, - "license": "ISC", - "dependencies": { - "glob": "^8.0.1", - "ignore-walk": "^5.0.1", - "npm-bundled": "^2.0.0", - "npm-normalize-package-bin": "^2.0.0" - }, - "bin": { - "npm-packlist": "bin/index.js" - }, + "node_modules/possible-typed-array-names": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "dev": true, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">= 0.4" } }, - "node_modules/npm/node_modules/npm-packlist/node_modules/npm-normalize-package-bin": { - "version": "2.0.0", - "inBundle": true, - "license": "ISC", + "node_modules/postman-collection": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/postman-collection/-/postman-collection-4.4.0.tgz", + "integrity": "sha512-2BGDFcUwlK08CqZFUlIC8kwRJueVzPjZnnokWPtJCd9f2J06HBQpGL7t2P1Ud1NEsK9NHq9wdipUhWLOPj5s/Q==", + "dev": true, + "dependencies": { + "@faker-js/faker": "5.5.3", + "file-type": "3.9.0", + "http-reasons": "0.1.0", + "iconv-lite": "0.6.3", + "liquid-json": "0.3.1", + "lodash": "4.17.21", + "mime-format": "2.0.1", + "mime-types": "2.1.35", + "postman-url-encoder": "3.0.5", + "semver": "7.5.4", + "uuid": "8.3.2" + }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=10" } }, - "node_modules/npm/node_modules/npm-pick-manifest": { - "version": "7.0.2", - "inBundle": true, - "license": "ISC", + "node_modules/postman-collection-transformer": { + "version": "4.1.8", + "resolved": "https://registry.npmjs.org/postman-collection-transformer/-/postman-collection-transformer-4.1.8.tgz", + "integrity": "sha512-smJ6X7Z7kbg6hp7JZPFixrSN3J3WkQed7DrWCC5tF7IxOMpFLqhtTtGssY8nD1inP8+mJf+N72Pf2ttUAHgBKw==", + "dev": true, "dependencies": { - "npm-install-checks": "^5.0.0", - "npm-normalize-package-bin": "^2.0.0", - "npm-package-arg": "^9.0.0", - "semver": "^7.3.5" + "commander": "8.3.0", + "inherits": "2.0.4", + "lodash": "4.17.21", + "semver": "7.5.4", + "strip-json-comments": "3.1.1" + }, + "bin": { + "postman-collection-transformer": "bin/transform-collection.js" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=10" } }, - "node_modules/npm/node_modules/npm-pick-manifest/node_modules/npm-normalize-package-bin": { - "version": "2.0.0", - "inBundle": true, - "license": "ISC", + "node_modules/postman-collection-transformer/node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "dev": true, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">= 12" } }, - "node_modules/npm/node_modules/npm-profile": { - "version": "6.2.1", - "inBundle": true, - "license": "ISC", + "node_modules/postman-collection-transformer/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": { - "npm-registry-fetch": "^13.0.1", - "proc-log": "^2.0.0" + "yallist": "^4.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=10" } }, - "node_modules/npm/node_modules/npm-registry-fetch": { - "version": "13.3.1", - "inBundle": true, - "license": "ISC", + "node_modules/postman-collection-transformer/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, "dependencies": { - "make-fetch-happen": "^10.0.6", - "minipass": "^3.1.6", - "minipass-fetch": "^2.0.3", - "minipass-json-stream": "^1.0.1", - "minizlib": "^2.1.2", - "npm-package-arg": "^9.0.1", - "proc-log": "^2.0.0" + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=10" } }, - "node_modules/npm/node_modules/npm-user-validate": { - "version": "1.0.1", - "inBundle": true, - "license": "BSD-2-Clause" - }, - "node_modules/npm/node_modules/npmlog": { - "version": "6.0.2", - "inBundle": true, - "license": "ISC", + "node_modules/postman-collection/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, "dependencies": { - "are-we-there-yet": "^3.0.0", - "console-control-strings": "^1.1.0", - "gauge": "^4.0.3", - "set-blocking": "^2.0.0" + "safer-buffer": ">= 2.1.2 < 3.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/npm/node_modules/once": { - "version": "1.4.0", - "inBundle": true, - "license": "ISC", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/npm/node_modules/opener": { - "version": "1.5.2", - "inBundle": true, - "license": "(WTFPL OR MIT)", - "bin": { - "opener": "bin/opener-bin.js" + "node": ">=0.10.0" } }, - "node_modules/npm/node_modules/p-map": { - "version": "4.0.0", - "inBundle": true, - "license": "MIT", + "node_modules/postman-collection/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": { - "aggregate-error": "^3.0.0" + "yallist": "^4.0.0" }, "engines": { "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/npm/node_modules/pacote": { - "version": "13.6.2", - "inBundle": true, - "license": "ISC", + "node_modules/postman-collection/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, "dependencies": { - "@npmcli/git": "^3.0.0", - "@npmcli/installed-package-contents": "^1.0.7", - "@npmcli/promise-spawn": "^3.0.0", - "@npmcli/run-script": "^4.1.0", - "cacache": "^16.0.0", - "chownr": "^2.0.0", - "fs-minipass": "^2.1.0", - "infer-owner": "^1.0.4", - "minipass": "^3.1.6", - "mkdirp": "^1.0.4", - "npm-package-arg": "^9.0.0", - "npm-packlist": "^5.1.0", - "npm-pick-manifest": "^7.0.0", - "npm-registry-fetch": "^13.0.1", - "proc-log": "^2.0.0", - "promise-retry": "^2.0.1", - "read-package-json": "^5.0.0", - "read-package-json-fast": "^2.0.3", - "rimraf": "^3.0.2", - "ssri": "^9.0.0", - "tar": "^6.1.11" + "lru-cache": "^6.0.0" }, "bin": { - "pacote": "lib/bin.js" + "semver": "bin/semver.js" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=10" } }, - "node_modules/npm/node_modules/parse-conflict-json": { - "version": "2.0.2", - "inBundle": true, - "license": "ISC", + "node_modules/postman-request": { + "version": "2.88.1-postman.33", + "resolved": "https://registry.npmjs.org/postman-request/-/postman-request-2.88.1-postman.33.tgz", + "integrity": "sha512-uL9sCML4gPH6Z4hreDWbeinKU0p0Ke261nU7OvII95NU22HN6Dk7T/SaVPaj6T4TsQqGKIFw6/woLZnH7ugFNA==", + "dev": true, "dependencies": { - "json-parse-even-better-errors": "^2.3.1", - "just-diff": "^5.0.1", - "just-diff-apply": "^5.2.0" + "@postman/form-data": "~3.1.1", + "@postman/tough-cookie": "~4.1.3-postman.1", + "@postman/tunnel-agent": "^0.6.3", + "aws-sign2": "~0.7.0", + "aws4": "^1.12.0", + "brotli": "^1.3.3", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "har-validator": "~5.1.3", + "http-signature": "~1.3.1", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "^2.1.35", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.3", + "safe-buffer": "^5.1.2", + "stream-length": "^1.0.2", + "uuid": "^8.3.2" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">= 6" } }, - "node_modules/npm/node_modules/path-is-absolute": { - "version": "1.0.1", - "inBundle": true, - "license": "MIT", + "node_modules/postman-request/node_modules/qs": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", + "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", + "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=0.6" } }, - "node_modules/npm/node_modules/postcss-selector-parser": { - "version": "6.0.10", - "inBundle": true, - "license": "MIT", - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" + "node_modules/postman-runtime": { + "version": "7.37.1", + "resolved": "https://registry.npmjs.org/postman-runtime/-/postman-runtime-7.37.1.tgz", + "integrity": "sha512-yqKN/p6Ba8+yq9iZsxJLkMPko3lKvs3hixkiPy5O7bapFQWgX6jWhny4W2O8BzE5T8KzE8s1HAgT2gi7e2Y5Jg==", + "dev": true, + "dependencies": { + "@postman/tough-cookie": "4.1.3-postman.1", + "async": "3.2.5", + "aws4": "1.12.0", + "handlebars": "4.7.8", + "httpntlm": "1.8.13", + "jose": "4.14.4", + "js-sha512": "0.9.0", + "lodash": "4.17.21", + "mime-types": "2.1.35", + "node-forge": "1.3.1", + "node-oauth1": "1.3.0", + "performance-now": "2.1.0", + "postman-collection": "4.4.0", + "postman-request": "2.88.1-postman.33", + "postman-sandbox": "4.6.0", + "postman-url-encoder": "3.0.5", + "serialised-error": "1.1.3", + "strip-json-comments": "3.1.1", + "uuid": "8.3.2" }, "engines": { - "node": ">=4" + "node": ">=12" } }, - "node_modules/npm/node_modules/proc-log": { - "version": "2.0.1", - "inBundle": true, - "license": "ISC", + "node_modules/postman-sandbox": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/postman-sandbox/-/postman-sandbox-4.6.0.tgz", + "integrity": "sha512-+tCUEhiFAV6saqMEetRzLmSWt4/9kgVagtnrVgyqVgIGdPBIaq1p3aay54bOzYW7/QjIIz0xPF3YkJA8Olt3LQ==", + "dev": true, + "dependencies": { + "lodash": "4.17.21", + "postman-collection": "4.4.0", + "teleport-javascript": "1.0.0", + "uvm": "2.1.1" + }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/npm/node_modules/promise-all-reject-late": { - "version": "1.0.1", - "inBundle": true, - "license": "ISC", - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/npm/node_modules/promise-call-limit": { - "version": "1.0.1", - "inBundle": true, - "license": "ISC", - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=10" } }, - "node_modules/npm/node_modules/promise-inflight": { - "version": "1.0.1", - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/promise-retry": { - "version": "2.0.1", - "inBundle": true, - "license": "MIT", + "node_modules/postman-url-encoder": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/postman-url-encoder/-/postman-url-encoder-3.0.5.tgz", + "integrity": "sha512-jOrdVvzUXBC7C+9gkIkpDJ3HIxOHTIqjpQ4C1EMt1ZGeMvSEpbFCKq23DEfgsj46vMnDgyQf+1ZLp2Wm+bKSsA==", + "dev": true, "dependencies": { - "err-code": "^2.0.2", - "retry": "^0.12.0" + "punycode": "^2.1.1" }, "engines": { "node": ">=10" } }, - "node_modules/npm/node_modules/promzard": { - "version": "0.3.0", - "inBundle": true, - "license": "ISC", + "node_modules/prebuild-install": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.2.tgz", + "integrity": "sha512-UnNke3IQb6sgarcZIDU3gbMeTp/9SSU1DAIkil7PrqG1vZlBtY5msYccSKSHDqa3hNg436IXK+SNImReuA1wEQ==", "dependencies": { - "read": "1" - } - }, - "node_modules/npm/node_modules/qrcode-terminal": { - "version": "0.12.0", - "inBundle": true, + "detect-libc": "^2.0.0", + "expand-template": "^2.0.3", + "github-from-package": "0.0.0", + "minimist": "^1.2.3", + "mkdirp-classic": "^0.5.3", + "napi-build-utils": "^1.0.1", + "node-abi": "^3.3.0", + "pump": "^3.0.0", + "rc": "^1.2.7", + "simple-get": "^4.0.0", + "tar-fs": "^2.0.0", + "tunnel-agent": "^0.6.0" + }, "bin": { - "qrcode-terminal": "bin/qrcode-terminal.js" + "prebuild-install": "bin.js" + }, + "engines": { + "node": ">=10" } }, - "node_modules/npm/node_modules/read": { - "version": "1.0.7", - "inBundle": true, - "license": "ISC", + "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-ms": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-7.0.1.tgz", + "integrity": "sha512-973driJZvxiGOQ5ONsFhOF/DtzPMOMtgC11kCpUrPGMTgqp2q/1gwzCquocrN33is0VZ5GFHXZYMM9l6h67v2Q==", + "dev": true, "dependencies": { - "mute-stream": "~0.0.4" + "parse-ms": "^2.1.0" }, "engines": { - "node": ">=0.8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/npm/node_modules/read-cmd-shim": { + "node_modules/proc-log": { "version": "3.0.0", - "inBundle": true, - "license": "ISC", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", + "integrity": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==", "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/npm/node_modules/read-package-json": { - "version": "5.0.2", - "inBundle": true, - "license": "ISC", + "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-on-spawn": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/process-on-spawn/-/process-on-spawn-1.0.0.tgz", + "integrity": "sha512-1WsPDsUSMmZH5LeMLegqkPDrsGgsWwk1Exipy2hvB0o/F0ASzbpIctSCcZIK1ykJvtTJULEH+20WOFjMvGnCTg==", + "dev": true, "dependencies": { - "glob": "^8.0.1", - "json-parse-even-better-errors": "^2.3.1", - "normalize-package-data": "^4.0.0", - "npm-normalize-package-bin": "^2.0.0" + "fromentries": "^1.2.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=8" } }, - "node_modules/npm/node_modules/read-package-json-fast": { + "node_modules/process-warning": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-3.0.0.tgz", + "integrity": "sha512-mqn0kFRl0EoqhnL0GQ0veqFHyIN1yig9RHh/InzORTUiZHFRAur+aMtRkELNwGs9aNwKS6tg/An4NYBPGwvtzQ==" + }, + "node_modules/progress": { "version": "2.0.3", - "inBundle": true, - "license": "ISC", - "dependencies": { - "json-parse-even-better-errors": "^2.3.0", - "npm-normalize-package-bin": "^1.0.1" - }, + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", "engines": { - "node": ">=10" + "node": ">=0.4.0" } }, - "node_modules/npm/node_modules/read-package-json/node_modules/npm-normalize-package-bin": { - "version": "2.0.0", - "inBundle": true, - "license": "ISC", + "node_modules/promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==" + }, + "node_modules/promise-polyfill": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/promise-polyfill/-/promise-polyfill-2.1.4.tgz", + "integrity": "sha512-/DVUJXyaiYr7Pu0q2qPV/OtABpiukAHswJb9VV/tUVFsvC5iZUTyVPxfEr8cIVatGa5/Mxeli8QMyzAMBmoiYg==" + }, + "node_modules/promise-retry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", + "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", + "dependencies": { + "err-code": "^2.0.2", + "retry": "^0.12.0" + }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=10" } }, - "node_modules/npm/node_modules/readable-stream": { - "version": "3.6.0", - "inBundle": true, - "license": "MIT", + "node_modules/prompts-ncu": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/prompts-ncu/-/prompts-ncu-3.0.0.tgz", + "integrity": "sha512-qyz9UxZ5MlPKWVhWrCmSZ1ahm2GVYdjLb8og2sg0IPth1KRuhcggHGuijz0e41dkx35p1t1q3GRISGH7QGALFA==", "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "kleur": "^4.0.1", + "sisteransi": "^1.0.5" }, "engines": { - "node": ">= 6" + "node": ">= 14" } }, - "node_modules/npm/node_modules/readdir-scoped-modules": { - "version": "1.1.0", - "inBundle": true, - "license": "ISC", + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "dev": true, "dependencies": { - "debuglog": "^1.0.1", - "dezalgo": "^1.0.0", - "graceful-fs": "^4.1.2", - "once": "^1.3.0" + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" } }, - "node_modules/npm/node_modules/retry": { - "version": "0.12.0", - "inBundle": true, - "license": "MIT", + "node_modules/prop-types/node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, "engines": { - "node": ">= 4" + "node": ">=0.10.0" } }, - "node_modules/npm/node_modules/rimraf": { - "version": "3.0.2", - "inBundle": true, - "license": "ISC", + "node_modules/proto-list": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", + "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==" + }, + "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": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "engines": { + "node": ">= 0.10" } }, - "node_modules/npm/node_modules/rimraf/node_modules/brace-expansion": { - "version": "1.1.11", - "inBundle": true, - "license": "MIT", + "node_modules/proxy-agent": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.4.0.tgz", + "integrity": "sha512-u0piLU+nCOHMgGjRbimiXmA9kM/L9EHh3zL81xCdp7m+Y2pHIsnmbdDoEDoAz5geaonNR6q6+yOPQs6n4T6sBQ==", + "optional": true, "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "agent-base": "^7.0.2", + "debug": "^4.3.4", + "http-proxy-agent": "^7.0.1", + "https-proxy-agent": "^7.0.3", + "lru-cache": "^7.14.1", + "pac-proxy-agent": "^7.0.1", + "proxy-from-env": "^1.1.0", + "socks-proxy-agent": "^8.0.2" + }, + "engines": { + "node": ">= 14" } }, - "node_modules/npm/node_modules/rimraf/node_modules/glob": { - "version": "7.2.3", - "inBundle": true, - "license": "ISC", + "node_modules/proxy-agent/node_modules/agent-base": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", + "optional": 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" + "debug": "^4.3.4" }, "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">= 14" } }, - "node_modules/npm/node_modules/rimraf/node_modules/minimatch": { - "version": "3.1.2", - "inBundle": true, - "license": "ISC", + "node_modules/proxy-agent/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "optional": true, "dependencies": { - "brace-expansion": "^1.1.7" + "ms": "2.1.2" }, "engines": { - "node": "*" - } - }, - "node_modules/npm/node_modules/safe-buffer": { - "version": "5.2.1", - "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": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true } - ], - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/safer-buffer": { - "version": "2.1.2", - "inBundle": true, - "license": "MIT", - "optional": true + } }, - "node_modules/npm/node_modules/semver": { - "version": "7.3.7", - "inBundle": true, - "license": "ISC", + "node_modules/proxy-agent/node_modules/http-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "optional": true, "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" + "agent-base": "^7.1.0", + "debug": "^4.3.4" }, "engines": { - "node": ">=10" + "node": ">= 14" } }, - "node_modules/npm/node_modules/semver/node_modules/lru-cache": { - "version": "6.0.0", - "inBundle": true, - "license": "ISC", + "node_modules/proxy-agent/node_modules/https-proxy-agent": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz", + "integrity": "sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==", + "optional": true, "dependencies": { - "yallist": "^4.0.0" + "agent-base": "^7.0.2", + "debug": "4" }, "engines": { - "node": ">=10" + "node": ">= 14" } }, - "node_modules/npm/node_modules/set-blocking": { - "version": "2.0.0", - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/signal-exit": { - "version": "3.0.7", - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/smart-buffer": { - "version": "4.2.0", - "inBundle": true, - "license": "MIT", + "node_modules/proxy-agent/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "optional": true, "engines": { - "node": ">= 6.0.0", - "npm": ">= 3.0.0" + "node": ">=12" } }, - "node_modules/npm/node_modules/socks": { - "version": "2.7.0", - "inBundle": true, - "license": "MIT", + "node_modules/proxy-agent/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==", + "optional": true + }, + "node_modules/proxy-agent/node_modules/socks-proxy-agent": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.3.tgz", + "integrity": "sha512-VNegTZKhuGq5vSD6XNKlbqWhyt/40CgoEw8XxD6dhnm8Jq9IEa3nIa4HwnM8XOqU0CdB0BwWVXusqiFXfHB3+A==", + "optional": true, "dependencies": { - "ip": "^2.0.0", - "smart-buffer": "^4.2.0" + "agent-base": "^7.1.1", + "debug": "^4.3.4", + "socks": "^2.7.1" }, "engines": { - "node": ">= 10.13.0", - "npm": ">= 3.0.0" + "node": ">= 14" } }, - "node_modules/npm/node_modules/socks-proxy-agent": { - "version": "7.0.0", - "inBundle": true, - "license": "MIT", - "dependencies": { - "agent-base": "^6.0.2", - "debug": "^4.3.3", - "socks": "^2.6.2" - }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, + "node_modules/psl": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", + "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.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, "engines": { - "node": ">= 10" + "node": ">=6" } }, - "node_modules/npm/node_modules/spdx-correct": { - "version": "3.1.1", - "inBundle": true, - "license": "Apache-2.0", + "node_modules/pupa": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/pupa/-/pupa-3.1.0.tgz", + "integrity": "sha512-FLpr4flz5xZTSJxSeaheeMKN/EDzMdK7b8PTOC6a5PYFKTucWbdqjgqaEyH0shFiSJrVB1+Qqi4Tk19ccU6Aug==", "dependencies": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" + "escape-goat": "^4.0.0" + }, + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/npm/node_modules/spdx-exceptions": { - "version": "2.3.0", - "inBundle": true, - "license": "CC-BY-3.0" - }, - "node_modules/npm/node_modules/spdx-expression-parse": { - "version": "3.0.1", - "inBundle": true, - "license": "MIT", + "node_modules/qs": { + "version": "6.12.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.12.1.tgz", + "integrity": "sha512-zWmv4RSuB9r2mYQw3zxQuHWeU+42aKi1wWig/j4ele4ygELZ7PEO6MM7rim9oAQH2A5MWfsAVf/jPvTPgCbvUQ==", "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" + "side-channel": "^1.0.6" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/npm/node_modules/spdx-license-ids": { - "version": "3.0.11", - "inBundle": true, - "license": "CC0-1.0" + "node_modules/querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "dev": true }, - "node_modules/npm/node_modules/ssri": { - "version": "9.0.1", - "inBundle": true, - "license": "ISC", - "dependencies": { - "minipass": "^3.1.1" + "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==", + "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/quick-lru": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", + "engines": { + "node": ">=10" }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/random-bytes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz", + "integrity": "sha512-iv7LhNVO047HzYR3InF6pUcUsPQiHTM1Qal51DcGSuZFBil1aBBWG5eHPNek7bvILMaYJ/8RU1e8w1AMdHmLQQ==", "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">= 0.8" } }, - "node_modules/npm/node_modules/string_decoder": { - "version": "1.3.0", - "inBundle": true, - "license": "MIT", + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, "dependencies": { - "safe-buffer": "~5.2.0" + "safe-buffer": "^5.1.0" } }, - "node_modules/npm/node_modules/string-width": { - "version": "4.2.3", - "inBundle": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, + "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": ">=8" + "node": ">= 0.6" } }, - "node_modules/npm/node_modules/strip-ansi": { - "version": "6.0.1", - "inBundle": true, - "license": "MIT", + "node_modules/raw-body": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", "dependencies": { - "ansi-regex": "^5.0.1" + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" }, "engines": { - "node": ">=8" + "node": ">= 0.8" } }, - "node_modules/npm/node_modules/supports-color": { - "version": "7.2.0", - "inBundle": true, - "license": "MIT", + "node_modules/rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", "dependencies": { - "has-flag": "^4.0.0" + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" }, - "engines": { - "node": ">=8" + "bin": { + "rc": "cli.js" } }, - "node_modules/npm/node_modules/tar": { - "version": "6.1.11", - "inBundle": true, - "license": "ISC", + "node_modules/rc-config-loader": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/rc-config-loader/-/rc-config-loader-4.1.3.tgz", + "integrity": "sha512-kD7FqML7l800i6pS6pvLyIE2ncbk9Du8Q0gp/4hMPhJU6ZxApkoLcGD8ZeqgiAlfwZ6BlETq6qqe+12DUL207w==", "dependencies": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^3.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" + "debug": "^4.3.4", + "js-yaml": "^4.1.0", + "json5": "^2.2.2", + "require-from-string": "^2.0.2" + } + }, + "node_modules/rc-config-loader/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": ">= 10" + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/npm/node_modules/text-table": { - "version": "0.2.0", - "inBundle": true, - "license": "MIT" + "node_modules/rc-config-loader/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/npm/node_modules/tiny-relative-date": { - "version": "1.3.0", - "inBundle": true, - "license": "MIT" + "node_modules/rc/node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" }, - "node_modules/npm/node_modules/treeverse": { - "version": "2.0.0", - "inBundle": true, - "license": "ISC", + "node_modules/rc/node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=0.10.0" } }, - "node_modules/npm/node_modules/unique-filename": { - "version": "2.0.1", - "inBundle": true, - "license": "ISC", + "node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "dev": true + }, + "node_modules/read-package-json": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-6.0.4.tgz", + "integrity": "sha512-AEtWXYfopBj2z5N5PbkAOeNHRPUg5q+Nen7QLxV8M2zJq1ym6/lCz3fYNTCXe19puu2d06jfHhrP7v/S2PtMMw==", "dependencies": { - "unique-slug": "^3.0.0" + "glob": "^10.2.2", + "json-parse-even-better-errors": "^3.0.0", + "normalize-package-data": "^5.0.0", + "npm-normalize-package-bin": "^3.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/npm/node_modules/unique-slug": { - "version": "3.0.0", - "inBundle": true, - "license": "ISC", + "node_modules/read-package-json-fast": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-3.0.2.tgz", + "integrity": "sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw==", "dependencies": { - "imurmurhash": "^0.1.4" + "json-parse-even-better-errors": "^3.0.0", + "npm-normalize-package-bin": "^3.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/npm/node_modules/util-deprecate": { - "version": "1.0.2", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/validate-npm-package-license": { - "version": "3.0.4", - "inBundle": true, - "license": "Apache-2.0", - "dependencies": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/npm/node_modules/validate-npm-package-name": { - "version": "4.0.0", - "inBundle": true, - "license": "ISC", + "node_modules/read-package-json/node_modules/foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", "dependencies": { - "builtins": "^5.0.0" + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/npm/node_modules/walk-up-path": { - "version": "1.0.0", - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/wcwidth": { - "version": "1.0.1", - "inBundle": true, - "license": "MIT", - "dependencies": { - "defaults": "^1.0.3" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/npm/node_modules/which": { - "version": "2.0.2", - "inBundle": true, - "license": "ISC", + "node_modules/read-package-json/node_modules/glob": { + "version": "10.3.15", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.15.tgz", + "integrity": "sha512-0c6RlJt1TICLyvJYIApxb8GsXoai0KUP7AxKKAtsYXdgJR1mGEUa7DgwShbdk1nly0PYoZj01xd4hzbq3fsjpw==", "dependencies": { - "isexe": "^2.0.0" + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.6", + "minimatch": "^9.0.1", + "minipass": "^7.0.4", + "path-scurry": "^1.11.0" }, "bin": { - "node-which": "bin/node-which" + "glob": "dist/esm/bin.mjs" }, "engines": { - "node": ">= 8" + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/npm/node_modules/wide-align": { - "version": "1.1.5", - "inBundle": true, - "license": "ISC", - "dependencies": { - "string-width": "^1.0.2 || 2 || 3 || 4" + "node_modules/read-package-json/node_modules/minipass": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.1.tgz", + "integrity": "sha512-UZ7eQ+h8ywIRAW1hIEl2AqdwzJucU/Kp59+8kkZeSvafXhZjul247BvIJjEVFVeON6d7lM46XX1HXCduKAS8VA==", + "engines": { + "node": ">=16 || 14 >=14.17" } }, - "node_modules/npm/node_modules/wrappy": { - "version": "1.0.2", - "inBundle": true, - "license": "ISC" + "node_modules/read-package-json/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } }, - "node_modules/npm/node_modules/write-file-atomic": { - "version": "4.0.2", - "inBundle": true, - "license": "ISC", + "node_modules/read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha512-eFIBOPW7FGjzBuk3hdXEuNSiTZS/xEMlH49HxMyzb0hyPfu4EhVjT2DH32K1hSSmVq4sebAWnZuuY5auISUTGA==", + "dev": true, "dependencies": { - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.7" + "load-json-file": "^2.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^2.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=4" } }, - "node_modules/npm/node_modules/yallist": { - "version": "4.0.0", - "inBundle": true, - "license": "ISC" - }, - "node_modules/npmlog": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", - "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", - "optional": true, + "node_modules/read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha512-1orxQfbWGUiTn9XsPlChs6rLie/AV9jwZTGmu2NZw/CUDJQchXJFYE0Fq5j7+n558T1JhDWLdhyd1Zj+wLY//w==", + "dev": true, "dependencies": { - "are-we-there-yet": "^3.0.0", - "console-control-strings": "^1.1.0", - "gauge": "^4.0.3", - "set-blocking": "^2.0.0" + "find-up": "^2.0.0", + "read-pkg": "^2.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=4" } }, - "node_modules/nyc": { - "version": "15.0.0", - "resolved": "https://registry.npmjs.org/nyc/-/nyc-15.0.0.tgz", - "integrity": "sha512-qcLBlNCKMDVuKb7d1fpxjPR8sHeMVX0CHarXAVzrVWoFrigCkYR8xcrjfXSPi5HXM7EU78L6ywO7w1c5rZNCNg==", + "node_modules/read-pkg-up/node_modules/find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", "dev": true, "dependencies": { - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "caching-transform": "^4.0.0", - "convert-source-map": "^1.7.0", - "decamelize": "^1.2.0", - "find-cache-dir": "^3.2.0", - "find-up": "^4.1.0", - "foreground-child": "^2.0.0", - "glob": "^7.1.6", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-hook": "^3.0.0", - "istanbul-lib-instrument": "^4.0.0", - "istanbul-lib-processinfo": "^2.0.2", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.0.0", - "js-yaml": "^3.13.1", - "make-dir": "^3.0.0", - "node-preload": "^0.2.0", - "p-map": "^3.0.0", - "process-on-spawn": "^1.0.0", - "resolve-from": "^5.0.0", - "rimraf": "^3.0.0", - "signal-exit": "^3.0.2", - "spawn-wrap": "^2.0.0", - "test-exclude": "^6.0.0", - "uuid": "^3.3.3", - "yargs": "^15.0.2" - }, - "bin": { - "nyc": "bin/nyc.js" + "locate-path": "^2.0.0" }, "engines": { - "node": ">=8.9" - } - }, - "node_modules/nyc/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": ">=4" } }, - "node_modules/nyc/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==", + "node_modules/read-pkg-up/node_modules/locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", "dev": true, "dependencies": { - "color-convert": "^2.0.1" + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=4" } }, - "node_modules/nyc/node_modules/cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "node_modules/read-pkg-up/node_modules/p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", "dev": true, "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" + "p-try": "^1.0.0" + }, + "engines": { + "node": ">=4" } }, - "node_modules/nyc/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==", + "node_modules/read-pkg-up/node_modules/p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", "dev": true, "dependencies": { - "color-name": "~1.1.4" + "p-limit": "^1.1.0" }, "engines": { - "node": ">=7.0.0" + "node": ">=4" } }, - "node_modules/nyc/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/nyc/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==", + "node_modules/read-pkg-up/node_modules/p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, "engines": { - "node": ">=8" + "node": ">=4" } }, - "node_modules/nyc/node_modules/is-fullwidth-code-point": { + "node_modules/read-pkg-up/node_modules/path-exists": { "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==", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", "dev": true, "engines": { - "node": ">=8" + "node": ">=4" } }, - "node_modules/nyc/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==", + "node_modules/read-pkg/node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "node_modules/read-pkg/node_modules/load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha512-3p6ZOGNbiX4CdvEd1VcE6yi78UrGNpjHO33noGwHCnT/o2fyllJDepsm8+mFFv/DvtwFHht5HIHSyOy5a+ChVQ==", "dev": true, "dependencies": { - "p-locate": "^4.1.0" + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "strip-bom": "^3.0.0" }, "engines": { - "node": ">=8" + "node": ">=4" } }, - "node_modules/nyc/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==", + "node_modules/read-pkg/node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", "dev": true, "dependencies": { - "p-try": "^2.0.0" + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/read-pkg/node_modules/parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==", + "dev": true, + "dependencies": { + "error-ex": "^1.2.0" }, "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.10.0" } }, - "node_modules/nyc/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==", + "node_modules/read-pkg/node_modules/path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha512-dUnb5dXUf+kzhC/W/F4e5/SkluXIFf5VUHolW1Eg1irn1hGWjPGdsRcvYJ1nD6lhk8Ir7VM0bHJKsYTx8Jx9OQ==", "dev": true, "dependencies": { - "p-limit": "^2.2.0" + "pify": "^2.0.0" }, "engines": { - "node": ">=8" + "node": ">=4" } }, - "node_modules/nyc/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==", + "node_modules/read-pkg/node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", "dev": true, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/nyc/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "node_modules/read-pkg/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "semver": "bin/semver" } }, - "node_modules/nyc/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==", + "node_modules/read-pkg/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==", "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, "engines": { - "node": ">=8" + "node": ">=4" } }, - "node_modules/nyc/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, + "node_modules/readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==", "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" } }, - "node_modules/nyc/node_modules/wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "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": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" + "picomatch": "^2.2.1" }, "engines": { - "node": ">=8" + "node": ">=8.10.0" } }, - "node_modules/nyc/node_modules/y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "dev": true - }, - "node_modules/nyc/node_modules/yargs": { - "version": "15.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", - "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", - "dev": true, - "dependencies": { - "cliui": "^6.0.0", - "decamelize": "^1.2.0", - "find-up": "^4.1.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^4.2.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^18.1.2" - }, + "node_modules/real-require": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/real-require/-/real-require-0.2.0.tgz", + "integrity": "sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==", "engines": { - "node": ">=8" + "node": ">= 12.13.0" } }, - "node_modules/nyc/node_modules/yargs-parser": { - "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "node_modules/regexp.prototype.flags": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", + "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", "dev": true, "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" + "call-bind": "^1.0.6", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "set-function-name": "^2.0.1" }, "engines": { - "node": ">=6" - } - }, - "node_modules/oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", - "engines": { - "node": "*" - } - }, - "node_modules/object-assign": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.0.1.tgz", - "integrity": "sha512-c6legOHWepAbWnp3j5SRUMpxCXBKI4rD7A5Osn9IzZ8w4O/KccXdW0lqdkQKbpk0eHGjNgKihgzY6WuEq99Tfw==", - "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/object-hash": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-1.3.1.tgz", - "integrity": "sha512-OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA==", + "node_modules/regexpp": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", + "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", "dev": true, "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/object-inspect": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", - "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=6.5.0" } }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true, + "node_modules/registry-auth-token": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-5.0.2.tgz", + "integrity": "sha512-o/3ikDxtXaA59BmZuZrJZDJv8NMDGSj+6j6XaeBmHw8eY1i1qd9+6H+LjVvQXx3HN6aRCGa1cUdJ9RaJZUugnQ==", + "dependencies": { + "@pnpm/npm-conf": "^2.1.0" + }, "engines": { - "node": ">= 0.4" + "node": ">=14" } }, - "node_modules/object.assign": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", - "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", - "dev": true, + "node_modules/registry-url": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-6.0.1.tgz", + "integrity": "sha512-+crtS5QjFRqFCoQmvGduwYWEBng99ZvmFvF+cUJkGYF1L1BfU8C6Zp9T7f5vPAwyLkUExpvK+ANVZmGU49qi4Q==", "dependencies": { - "call-bind": "^1.0.5", - "define-properties": "^1.2.1", - "has-symbols": "^1.0.3", - "object-keys": "^1.1.1" + "rc": "1.2.8" }, "engines": { - "node": ">= 0.4" + "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/on-error": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/on-error/-/on-error-2.1.0.tgz", - "integrity": "sha512-wpKXxCW2wXLI+9DB9DDBVuOCN9C5rjyaP4GWwqhgrSd2ys1Vyc9yGaPmC5HSOdQ30x9zCLozi9mHx3lm01E+LQ==" - }, - "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==", + "node_modules/release-zalgo": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz", + "integrity": "sha512-gUAyHVHPPC5wdqX/LG4LWtRYtgjxyX78oanFNTMMyFEfOqdC54s3eE82imuWKbOeqYht2CrNf64Qb8vgmmtZGA==", + "dev": true, "dependencies": { - "ee-first": "1.1.1" + "es6-error": "^4.0.1" }, "engines": { - "node": ">= 0.8" + "node": ">=4" } }, - "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==", + "node_modules/remote-git-tags": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/remote-git-tags/-/remote-git-tags-3.0.0.tgz", + "integrity": "sha512-C9hAO4eoEsX+OXA4rla66pXZQ+TLQ8T9dttgQj18yuKlPMTVkIkdYXvlMC55IuUsIkV6DpmQYi10JKFLaU+l7w==", "engines": { - "node": ">= 0.8" + "node": ">=8" } }, - "node_modules/once": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "integrity": "sha512-6vaNInhu+CHxtONf3zw3vq4SP2DOQhjBvIa3rNcG0+P7eKWlYH6Peu7rHizSloRU2EwMz6GraLieis9Ac9+p1w==", - "dependencies": { - "wrappy": "1" + "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==", + "engines": { + "node": ">=0.10.0" } }, - "node_modules/onetime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==", - "dev": true, - "dependencies": { - "mimic-fn": "^1.0.0" - }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", "engines": { - "node": ">=4" + "node": ">=0.10.0" } }, - "node_modules/optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "node_modules/require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, + "node_modules/require-uncached": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", + "integrity": "sha512-Xct+41K3twrbBHdxAgMoOS+cNcoqIjfM2/VxBF4LL2hVph7YsF8VSKyQ3BDFZwEVbok9yeDl2le/qo0S77WG2w==", "dev": true, "dependencies": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" + "caller-path": "^0.1.0", + "resolve-from": "^1.0.0" }, "engines": { - "node": ">= 0.8.0" + "node": ">=0.10.0" } }, - "node_modules/os": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/os/-/os-0.1.1.tgz", - "integrity": "sha512-jg06S2xr5De63mLjZVJDf3/k37tpjppr2LR7MUOsxv8XuUCVpCnvbCksXCBcB5gQqQf/K0+87WGTRlAj5q7r1A==" - }, - "node_modules/os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "node_modules/require-uncached/node_modules/resolve-from": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", + "integrity": "sha512-kT10v4dhrlLNcnO084hEjvXCI1wUG9qZLoz2RogxqDQQYy7IxjI/iMUkOtQTNEh6rzHxvdQWHsJyel1pKOVCxg==", "dev": true, "engines": { "node": ">=0.10.0" } }, - "node_modules/p-each-series": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-2.2.0.tgz", - "integrity": "sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA==", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true }, - "node_modules/p-filter": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-filter/-/p-filter-2.1.0.tgz", - "integrity": "sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==", + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", "dependencies": { - "p-map": "^2.0.0" + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" }, - "engines": { - "node": ">=8" + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/p-filter/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/resolve-alpn": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", + "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==" }, - "node_modules/p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", + "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/p-is-promise": { + "node_modules/responselike": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-3.0.0.tgz", - "integrity": "sha512-Wo8VsW4IRQSKVXsJCn7TomUaVtyfjVDn3nUP7kE967BQk0CwFpdbZs0X0uk5sW9mkBa9eNM7hCMaG93WUAwxYQ==", - "engines": { - "node": ">=8" - } - }, - "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, + "resolved": "https://registry.npmjs.org/responselike/-/responselike-3.0.0.tgz", + "integrity": "sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==", "dependencies": { - "yocto-queue": "^0.1.0" + "lowercase-keys": "^3.0.0" }, "engines": { - "node": ">=10" + "node": ">=14.16" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "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==", + "node_modules/restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==", "dev": true, "dependencies": { - "p-limit": "^3.0.2" + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=4" } }, - "node_modules/p-map": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", - "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", - "dev": true, - "dependencies": { - "aggregate-error": "^3.0.0" - }, + "node_modules/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", "engines": { - "node": ">=8" + "node": ">= 4" } }, - "node_modules/p-reduce": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-2.1.0.tgz", - "integrity": "sha512-2USApvnsutq8uoxZBGbbWM0JIYLiEMJ9RlaN7fAzVNb9OZN0SHjjTTfIcb667XynS5Y1VhwDJVDa72TnPzAYWw==", - "engines": { - "node": ">=8" - } + "node_modules/retry-as-promised": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/retry-as-promised/-/retry-as-promised-7.0.4.tgz", + "integrity": "sha512-XgmCoxKWkDofwH8WddD0w85ZfqYz+ZHlr5yo+3YUCfycWawU56T5ckWXsScsj5B8tqUcIG67DxXByo3VUgiAdA==" }, - "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==", + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", "engines": { - "node": ">=6" + "iojs": ">=1.0.0", + "node": ">=0.10.0" } }, - "node_modules/pac-proxy-agent": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-7.0.1.tgz", - "integrity": "sha512-ASV8yU4LLKBAjqIPMbrgtaKIvxQri/yh2OpI+S6hVa9JRkUI3Y3NPFbfngDtY7oFtSMD3w31Xns89mDa3Feo5A==", - "optional": true, + "node_modules/rimraf": { + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.7.tgz", + "integrity": "sha512-nV6YcJo5wbLW77m+8KjH8aB/7/rxQy9SZ0HY5shnwULfS+9nmTtVXAJET5NdZmCzA4fPI/Hm1wo/Po/4mopOdg==", "dependencies": { - "@tootallnate/quickjs-emscripten": "^0.23.0", - "agent-base": "^7.0.2", - "debug": "^4.3.4", - "get-uri": "^6.0.1", - "http-proxy-agent": "^7.0.0", - "https-proxy-agent": "^7.0.2", - "pac-resolver": "^7.0.0", - "socks-proxy-agent": "^8.0.2" + "glob": "^10.3.7" }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/pac-proxy-agent/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "optional": true, - "dependencies": { - "ms": "2.1.2" + "bin": { + "rimraf": "dist/esm/bin.mjs" }, "engines": { - "node": ">=6.0" + "node": ">=14.18" }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/pac-proxy-agent/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==", - "optional": true - }, - "node_modules/pac-proxy-agent/node_modules/socks-proxy-agent": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.2.tgz", - "integrity": "sha512-8zuqoLv1aP/66PHF5TqwJ7Czm3Yv32urJQHrVyhD7mmA6d61Zv8cIXQYPTWwmg6qlupnPvs/QKDmfa4P/qct2g==", - "optional": true, + "node_modules/rimraf/node_modules/foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", "dependencies": { - "agent-base": "^7.0.2", - "debug": "^4.3.4", - "socks": "^2.7.1" + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" }, "engines": { - "node": ">= 14" - } - }, - "node_modules/pac-resolver": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-7.0.1.tgz", - "integrity": "sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==", - "optional": true, - "dependencies": { - "degenerator": "^5.0.0", - "netmask": "^2.0.2" + "node": ">=14" }, - "engines": { - "node": ">= 14" + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/package-hash": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-4.0.0.tgz", - "integrity": "sha512-whdkPIooSu/bASggZ96BWVvZTRMOFxnyUG5PnTSGKoJE2gd5mbVNmR2Nj20QFzxYYgAXpoqC+AiXzl+UMRh7zQ==", - "dev": true, + "node_modules/rimraf/node_modules/glob": { + "version": "10.3.15", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.15.tgz", + "integrity": "sha512-0c6RlJt1TICLyvJYIApxb8GsXoai0KUP7AxKKAtsYXdgJR1mGEUa7DgwShbdk1nly0PYoZj01xd4hzbq3fsjpw==", "dependencies": { - "graceful-fs": "^4.1.15", - "hasha": "^5.0.0", - "lodash.flattendeep": "^4.4.0", - "release-zalgo": "^1.0.0" + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.6", + "minimatch": "^9.0.1", + "minipass": "^7.0.4", + "path-scurry": "^1.11.0" + }, + "bin": { + "glob": "dist/esm/bin.mjs" }, "engines": { - "node": ">=8" + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "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==", - "dependencies": { - "callsites": "^3.0.0" - }, + "node_modules/rimraf/node_modules/minipass": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.1.tgz", + "integrity": "sha512-UZ7eQ+h8ywIRAW1hIEl2AqdwzJucU/Kp59+8kkZeSvafXhZjul247BvIJjEVFVeON6d7lM46XX1HXCduKAS8VA==", "engines": { - "node": ">=6" + "node": ">=16 || 14 >=14.17" } }, - "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==", - "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" - }, + "node_modules/rimraf/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "engines": { - "node": ">=8" + "node": ">=14" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/parse-ms": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-2.1.0.tgz", - "integrity": "sha512-kHt7kzLoS9VBZfUsiKjv43mr91ea+U05EyKkEtqp7vNbHxmaVuEqN7XxeEVnGrMtYOAxGrDElSi96K7EgO1zCA==", + "node_modules/roarr": { + "version": "2.15.4", + "resolved": "https://registry.npmjs.org/roarr/-/roarr-2.15.4.tgz", + "integrity": "sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==", "dev": true, + "dependencies": { + "boolean": "^3.0.1", + "detect-node": "^2.0.4", + "globalthis": "^1.0.1", + "json-stringify-safe": "^5.0.1", + "semver-compare": "^1.0.0", + "sprintf-js": "^1.1.2" + }, "engines": { - "node": ">=6" + "node": ">=8.0" } }, - "node_modules/parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "node_modules/run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "dev": true, "engines": { - "node": ">= 0.8" + "node": ">=0.12.0" } }, - "node_modules/path": { - "version": "0.12.7", - "resolved": "https://registry.npmjs.org/path/-/path-0.12.7.tgz", - "integrity": "sha512-aXXC6s+1w7otVF9UletFkFcDsJeO7lSZBPUQhtb5O0xJe8LtYhj/GxldoL09bBj9+ZmE2hNoHqQSFMN5fikh4Q==", + "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==", + "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": { - "process": "^0.11.1", - "util": "^0.10.3" - } - }, - "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==", - "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==", - "engines": { - "node": ">=0.10.0" + "queue-microtask": "^1.2.2" } }, - "node_modules/path-is-inside": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==", - "dev": true - }, - "node_modules/path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "node_modules/rxjs": { + "version": "5.5.12", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.12.tgz", + "integrity": "sha512-xx2itnL5sBbqeeiVgNPVuQQ1nC8Jp2WfNJhXWHmElW9YmrpS9UVnNzhP3EH3HFqexO5Tlp8GhYY+WEcqcVMvGw==", + "dev": true, + "dependencies": { + "symbol-observable": "1.0.1" + }, "engines": { - "node": ">=4" + "npm": ">=2.0.0" } }, - "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-scurry": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", - "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", + "node_modules/safe-array-concat": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", + "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", "dev": true, "dependencies": { - "lru-cache": "^9.1.1 || ^10.0.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": ">=0.4" }, "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/path-scurry/node_modules/lru-cache": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", - "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==", - "dev": true, - "engines": { - "node": "14 || >=16.14" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/path-scurry/node_modules/minipass": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", - "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", - "dev": true, - "engines": { - "node": ">=16 || 14 >=14.17" - } + "node_modules/safe-array-concat/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true }, - "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/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/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "node_modules/safe-regex-test": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", + "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-regex": "^1.1.4" + }, "engines": { - "node": ">=8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/pathval": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", - "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", - "dev": true, + "node_modules/safe-stable-stringify": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz", + "integrity": "sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==", "engines": { - "node": "*" + "node": ">=10" } }, - "node_modules/pend": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", - "optional": true + "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/performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==" + "node_modules/secure-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/secure-keys/-/secure-keys-1.0.0.tgz", + "integrity": "sha512-nZi59hW3Sl5P3+wOO89eHBAAGwmCPd2aE1+dLZV5MO+ItQctIvAqihzaAXIQhvtH4KJPxM080HsnqltR2y8cWg==" }, - "node_modules/pg-connection-string": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.6.2.tgz", - "integrity": "sha512-ch6OwaeaPYcova4kKZ15sbJ2hKb/VP48ZD2gE7i1J+L4MspCtBMAx8nMgz7bksc7IojCIIWuEhHibSMFH8m8oA==" + "node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } }, - "node_modules/picocolors": { + "node_modules/semver-compare": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", + "integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==", "dev": true }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "node_modules/semver-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-4.0.0.tgz", + "integrity": "sha512-0Ju4+6A8iOnpL/Thra7dZsSlOHYAHIeMxfhWQRI1/VLcT3WDBZKKtQt/QkBOsiIN9ZpuvHE6cGZ0x4glCMmfiA==", + "dependencies": { + "semver": "^7.3.5" + }, "engines": { - "node": ">=8.6" + "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", - "engines": { - "node": ">=4" - } + "node_modules/semver-utils": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/semver-utils/-/semver-utils-1.1.4.tgz", + "integrity": "sha512-EjnoLE5OGmDAVV/8YDoN5KiajNadjzIp9BAHOhYeQHt7j0UWxjmgsx4YD48wp4Ue1Qogq38F1GNUJNqF1kKKxA==" }, - "node_modules/pino": { - "version": "6.6.1", - "resolved": "https://registry.npmjs.org/pino/-/pino-6.6.1.tgz", - "integrity": "sha512-DOgm7rn6ctBkBYemHXSLj7+j3o3U1q1FWBXbHcprur8mA93QcJSycEkEqhqKiFB9Mx/3Qld2FGr6+9yfQza0kA==", + "node_modules/semver/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": { - "fast-redact": "^2.0.0", - "fast-safe-stringify": "^2.0.7", - "flatstr": "^1.0.12", - "pino-std-serializers": "^2.4.2", - "quick-format-unescaped": "^4.0.1", - "sonic-boom": "^1.0.2" + "yallist": "^4.0.0" }, - "bin": { - "pino": "bin.js" + "engines": { + "node": ">=10" } }, - "node_modules/pino-std-serializers": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-2.5.0.tgz", - "integrity": "sha512-wXqbqSrIhE58TdrxxlfLwU9eDhrzppQDvGhBEr1gYbzzM4KKo3Y63gSjiDXRKLVS2UOXdPNR2v+KnQgNrs+xUg==" - }, - "node_modules/pkg-conf": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-2.1.0.tgz", - "integrity": "sha512-C+VUP+8jis7EsQZIhDYmS5qlNtjv2yP4SNtjXK9AP1ZcTRlnSfuumaTnRfYZnYgUUYVIKqL0fRvmUGDV2fmp6g==", + "node_modules/send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", "dependencies": { - "find-up": "^2.0.0", - "load-json-file": "^4.0.0" + "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": ">=4" + "node": ">= 0.8.0" } }, - "node_modules/pkg-conf/node_modules/find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", + "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/seq-queue": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/seq-queue/-/seq-queue-0.0.5.tgz", + "integrity": "sha512-hr3Wtp/GZIc/6DAGPDcV4/9WoZhjrkXsi5B/07QgX8tsdc6ilr7BFM6PM6rbdAX1kFSDYeZGLipIZZKyQP0O5Q==" + }, + "node_modules/sequelize": { + "version": "6.37.3", + "resolved": "https://registry.npmjs.org/sequelize/-/sequelize-6.37.3.tgz", + "integrity": "sha512-V2FTqYpdZjPy3VQrZvjTPnOoLm0KudCRXfGWp48QwhyPPp2yW8z0p0sCYZd/em847Tl2dVxJJ1DR+hF+O77T7A==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/sequelize" + } + ], "dependencies": { - "locate-path": "^2.0.0" + "@types/debug": "^4.1.8", + "@types/validator": "^13.7.17", + "debug": "^4.3.4", + "dottie": "^2.0.6", + "inflection": "^1.13.4", + "lodash": "^4.17.21", + "moment": "^2.29.4", + "moment-timezone": "^0.5.43", + "pg-connection-string": "^2.6.1", + "retry-as-promised": "^7.0.4", + "semver": "^7.5.4", + "sequelize-pool": "^7.1.0", + "toposort-class": "^1.0.1", + "uuid": "^8.3.2", + "validator": "^13.9.0", + "wkx": "^0.5.0" }, "engines": { - "node": ">=4" + "node": ">=10.0.0" + }, + "peerDependenciesMeta": { + "ibm_db": { + "optional": true + }, + "mariadb": { + "optional": true + }, + "mysql2": { + "optional": true + }, + "oracledb": { + "optional": true + }, + "pg": { + "optional": true + }, + "pg-hstore": { + "optional": true + }, + "snowflake-sdk": { + "optional": true + }, + "sqlite3": { + "optional": true + }, + "tedious": { + "optional": true + } } }, - "node_modules/pkg-conf/node_modules/locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", + "node_modules/sequelize-cli": { + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/sequelize-cli/-/sequelize-cli-6.6.2.tgz", + "integrity": "sha512-V8Oh+XMz2+uquLZltZES6MVAD+yEnmMfwfn+gpXcDiwE3jyQygLt4xoI0zG8gKt6cRcs84hsKnXAKDQjG/JAgg==", + "dev": true, "dependencies": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" + "cli-color": "^2.0.3", + "fs-extra": "^9.1.0", + "js-beautify": "^1.14.5", + "lodash": "^4.17.21", + "resolve": "^1.22.1", + "umzug": "^2.3.0", + "yargs": "^16.2.0" + }, + "bin": { + "sequelize": "lib/sequelize", + "sequelize-cli": "lib/sequelize" }, "engines": { - "node": ">=4" + "node": ">=10.0.0" } }, - "node_modules/pkg-conf/node_modules/p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "node_modules/sequelize-cli/node_modules/bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true + }, + "node_modules/sequelize-cli/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, "dependencies": { - "p-try": "^1.0.0" + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" }, "engines": { - "node": ">=4" + "node": ">=10" } }, - "node_modules/pkg-conf/node_modules/p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", + "node_modules/sequelize-cli/node_modules/umzug": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/umzug/-/umzug-2.3.0.tgz", + "integrity": "sha512-Z274K+e8goZK8QJxmbRPhl89HPO1K+ORFtm6rySPhFKfKc5GHhqdzD0SGhSWHkzoXasqJuItdhorSvY7/Cgflw==", + "dev": true, "dependencies": { - "p-limit": "^1.1.0" + "bluebird": "^3.7.2" }, "engines": { - "node": ">=4" + "node": ">=6.0.0" } }, - "node_modules/pkg-conf/node_modules/p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", + "node_modules/sequelize-cli/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, "engines": { - "node": ">=4" + "node": ">= 10.0.0" } }, - "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==", + "node_modules/sequelize-pool": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/sequelize-pool/-/sequelize-pool-7.1.0.tgz", + "integrity": "sha512-G9c0qlIWQSK29pR/5U2JF5dDQeqqHRragoyahj/Nx4KOOQ3CPPfzxnfqFPCSB7x5UgjOgnZ61nSxz+fjDpRlJg==", "engines": { - "node": ">=4" + "node": ">= 10.0.0" } }, - "node_modules/pkg-config": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/pkg-config/-/pkg-config-1.1.1.tgz", - "integrity": "sha512-ft/WI9YK6FuTuw4Ql+QUaNXtm/ASQNqDUUsZEgFZKyFpW6amyP8Gx01xrRs8KdiNbbqXfYxkOXplpq1euWbOjw==", - "dev": true, + "node_modules/sequelize/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dependencies": { - "debug-log": "^1.0.0", - "find-root": "^1.0.0", - "xtend": "^4.0.1" + "ms": "2.1.2" }, "engines": { - "node": ">=0.10" - } - }, - "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" + "node": ">=6.0" }, - "engines": { - "node": ">=8" + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/pkg-dir/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==", + "node_modules/sequelize/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/serialised-error": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/serialised-error/-/serialised-error-1.1.3.tgz", + "integrity": "sha512-vybp3GItaR1ZtO2nxZZo8eOo7fnVaNtP3XE2vJKgzkKR2bagCkdJ1EpYYhEMd3qu/80DwQk9KjsNSxE3fXWq0g==", "dev": true, "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" + "object-hash": "^1.1.2", + "stack-trace": "0.0.9", + "uuid": "^3.0.0" } }, - "node_modules/pkg-dir/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==", + "node_modules/serialised-error/node_modules/uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", "dev": true, - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" + "bin": { + "uuid": "bin/uuid" } }, - "node_modules/pkg-dir/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==", + "node_modules/serialize-error": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-7.0.1.tgz", + "integrity": "sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==", "dev": true, "dependencies": { - "p-try": "^2.0.0" + "type-fest": "^0.13.1" }, "engines": { - "node": ">=6" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/pkg-dir/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==", + "node_modules/serialize-error/node_modules/type-fest": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", + "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==", "dev": true, - "dependencies": { - "p-limit": "^2.2.0" - }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/pluralize": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz", - "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", + "node_modules/serialize-javascript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", "dev": true, - "engines": { - "node": ">=4" + "dependencies": { + "randombytes": "^2.1.0" } }, - "node_modules/portscanner": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/portscanner/-/portscanner-2.2.0.tgz", - "integrity": "sha512-IFroCz/59Lqa2uBvzK3bKDbDDIEaAY8XJ1jFxcLWTqosrsc32//P4VuSB2vZXoHiHqOmx8B5L5hnKOxL/7FlPw==", + "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": { - "async": "^2.6.0", - "is-number-like": "^1.0.3" + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" }, "engines": { - "node": ">=0.4", - "npm": ">=1.0.0" - } - }, - "node_modules/portscanner/node_modules/async": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", - "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", - "dependencies": { - "lodash": "^4.17.14" + "node": ">= 0.8.0" } }, - "node_modules/possible-typed-array-names": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", - "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", - "dev": true, - "engines": { - "node": ">= 0.4" - } + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" }, - "node_modules/postman-collection": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/postman-collection/-/postman-collection-4.1.1.tgz", - "integrity": "sha512-ODpJtlf8r99DMcTU7gFmi/yvQYckFzcuE6zL/fWnyrFT34ugdCBFlX+DN7M+AnP6lmR822fv5s60H4DnL4+fAg==", - "dev": true, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", "dependencies": { - "faker": "5.5.3", - "file-type": "3.9.0", - "http-reasons": "0.1.0", - "iconv-lite": "0.6.3", - "liquid-json": "0.3.1", - "lodash": "4.17.21", - "mime-format": "2.0.1", - "mime-types": "2.1.34", - "postman-url-encoder": "3.0.5", - "semver": "7.3.5", - "uuid": "8.3.2" + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" }, "engines": { - "node": ">=10" + "node": ">= 0.4" } }, - "node_modules/postman-collection-transformer": { - "version": "4.1.6", - "resolved": "https://registry.npmjs.org/postman-collection-transformer/-/postman-collection-transformer-4.1.6.tgz", - "integrity": "sha512-xvdQb6sZoWcG9xZXUPSuxocjcd6WCZlINlGGiuHdSfxhgiwQhj9qhF0JRFbagZ8xB0+pYUairD5MiCENc6DEVA==", + "node_modules/set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", "dev": true, "dependencies": { - "commander": "8.3.0", - "inherits": "2.0.4", - "lodash": "4.17.21", - "semver": "7.3.5", - "strip-json-comments": "3.1.1" - }, - "bin": { - "postman-collection-transformer": "bin/transform-collection.js" + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" }, "engines": { - "node": ">=10" + "node": ">= 0.4" } }, - "node_modules/postman-collection-transformer/node_modules/commander": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", - "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", - "dev": true, - "engines": { - "node": ">= 12" - } + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" }, - "node_modules/postman-collection-transformer/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, + "node_modules/shallow-copy": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/shallow-copy/-/shallow-copy-0.0.1.tgz", + "integrity": "sha512-b6i4ZpVuUxB9h5gfCxPiusKYkqTMOjEbBs4wMaFbkfia4yFv92UKZ6Df8WXcKbn08JNL/abvg3FnMAOfakDvUw==" + }, + "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==", "dependencies": { - "yallist": "^4.0.0" + "shebang-regex": "^3.0.0" }, "engines": { - "node": ">=10" + "node": ">=8" } }, - "node_modules/postman-collection-transformer/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, + "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==", "engines": { - "node": ">=10" + "node": ">=8" } }, - "node_modules/postman-collection-transformer/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==", - "dev": true, + "node_modules/side-channel": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, "engines": { - "node": ">=8" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/postman-collection/node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dev": true, + "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==" + }, + "node_modules/sigstore": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/sigstore/-/sigstore-1.9.0.tgz", + "integrity": "sha512-0Zjz0oe37d08VeOtBIuB6cRriqXse2e8w+7yIy2XSXjshRKxbc2KkhXjL229jXSxEm7UbcjS76wcJDGQddVI9A==", "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" + "@sigstore/bundle": "^1.1.0", + "@sigstore/protobuf-specs": "^0.2.0", + "@sigstore/sign": "^1.0.0", + "@sigstore/tuf": "^1.0.3", + "make-fetch-happen": "^11.0.1" + }, + "bin": { + "sigstore": "bin/sigstore.js" }, "engines": { - "node": ">=0.10.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/postman-collection/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==", + "node_modules/simple-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", + "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", + "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/simple-get": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", + "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", + "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": { + "decompress-response": "^6.0.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" + } + }, + "node_modules/sinon": { + "version": "17.0.1", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-17.0.1.tgz", + "integrity": "sha512-wmwE19Lie0MLT+ZYNpDymasPHUKTaZHUH/pKEubRXIzySv9Atnlw+BUMGCzWgV7b7wO+Hw6f1TEOr0IUnmU8/g==", "dev": true, "dependencies": { - "yallist": "^4.0.0" + "@sinonjs/commons": "^3.0.0", + "@sinonjs/fake-timers": "^11.2.2", + "@sinonjs/samsam": "^8.0.0", + "diff": "^5.1.0", + "nise": "^5.1.5", + "supports-color": "^7.2.0" }, - "engines": { - "node": ">=10" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/sinon" } }, - "node_modules/postman-collection/node_modules/mime-db": { - "version": "1.51.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", - "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==", + "node_modules/sinon-chai": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/sinon-chai/-/sinon-chai-3.7.0.tgz", + "integrity": "sha512-mf5NURdUaSdnatJx3uhoBOrY9dtL19fiOtAdT1Azxg3+lNJFiuN0uzaU3xX1LeAfL17kHQhTAJgpsfhbMJMY2g==", "dev": true, - "engines": { - "node": ">= 0.6" + "peerDependencies": { + "chai": "^4.0.0", + "sinon": ">=4.0.0" } }, - "node_modules/postman-collection/node_modules/mime-types": { - "version": "2.1.34", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", - "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", + "node_modules/sinon/node_modules/diff": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", + "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", "dev": true, - "dependencies": { - "mime-db": "1.51.0" - }, "engines": { - "node": ">= 0.6" + "node": ">=0.3.1" } }, - "node_modules/postman-collection/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==" + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/slice-ansi": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz", + "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==", "dev": true, "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" + "is-fullwidth-code-point": "^2.0.0" }, "engines": { - "node": ">=10" + "node": ">=4" } }, - "node_modules/postman-collection/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==", + "node_modules/slice-ansi/node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", "dev": true, - "bin": { - "uuid": "dist/bin/uuid" + "engines": { + "node": ">=4" } }, - "node_modules/postman-request": { - "version": "2.88.1-postman.31", - "resolved": "https://registry.npmjs.org/postman-request/-/postman-request-2.88.1-postman.31.tgz", - "integrity": "sha512-OJbYqP7ItxQ84yHyuNpDywCZB0HYbpHJisMQ9lb1cSL3N5H3Td6a2+3l/a74UMd3u82BiGC5yQyYmdOIETP/nQ==", + "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/snyk": { + "version": "1.1291.0", + "resolved": "https://registry.npmjs.org/snyk/-/snyk-1.1291.0.tgz", + "integrity": "sha512-CNm2VGBLMACNfmPcM1ByF9tpGlJUL7AlPFpwqqVKlLNnFIQk6o7EjmYJtQZzV6xbBy3+h2jWVh/OwfhFV/BeFg==", "dev": true, + "hasInstallScript": true, "dependencies": { - "@postman/form-data": "~3.1.1", - "@postman/tunnel-agent": "^0.6.3", - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "brotli": "~1.3.2", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "har-validator": "~5.1.3", - "http-signature": "~1.3.1", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "stream-length": "^1.0.2", - "tough-cookie": "~2.5.0", - "uuid": "^3.3.2" + "@sentry/node": "^7.36.0", + "global-agent": "^3.0.0" + }, + "bin": { + "snyk": "bin/snyk" }, "engines": { - "node": ">= 6" + "node": ">=12" } }, - "node_modules/postman-request/node_modules/qs": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", - "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", - "dev": true, + "node_modules/socks": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.3.tgz", + "integrity": "sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==", + "dependencies": { + "ip-address": "^9.0.5", + "smart-buffer": "^4.2.0" + }, "engines": { - "node": ">=0.6" + "node": ">= 10.0.0", + "npm": ">= 3.0.0" } }, - "node_modules/postman-request/node_modules/tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "dev": true, + "node_modules/socks-proxy-agent": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz", + "integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==", "dependencies": { - "psl": "^1.1.28", - "punycode": "^2.1.1" + "agent-base": "^6.0.2", + "debug": "^4.3.3", + "socks": "^2.6.2" }, "engines": { - "node": ">=0.8" + "node": ">= 10" } }, - "node_modules/postman-runtime": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/postman-runtime/-/postman-runtime-7.29.0.tgz", - "integrity": "sha512-eXxHREE/fUpohkGPRgBY1YccSGx9cyW3mtGiPyIE4zD5fYzasgBHqW6kbEND3Xrd3yf/uht/YI1H8O7J1+A1+w==", - "dev": true, + "node_modules/socks-proxy-agent/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dependencies": { - "async": "3.2.3", - "aws4": "1.11.0", - "handlebars": "4.7.7", - "httpntlm": "1.7.7", - "js-sha512": "0.8.0", - "lodash": "4.17.21", - "mime-types": "2.1.34", - "node-oauth1": "1.3.0", - "performance-now": "2.1.0", - "postman-collection": "4.1.1", - "postman-request": "2.88.1-postman.31", - "postman-sandbox": "4.0.6", - "postman-url-encoder": "3.0.5", - "serialised-error": "1.1.3", - "tough-cookie": "3.0.1", - "uuid": "8.3.2" + "ms": "2.1.2" }, "engines": { - "node": ">=10" + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/postman-runtime/node_modules/async": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.3.tgz", - "integrity": "sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==", - "dev": true + "node_modules/socks-proxy-agent/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/postman-runtime/node_modules/aws4": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", - "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", - "dev": true + "node_modules/sonic-boom": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-4.0.1.tgz", + "integrity": "sha512-hTSD/6JMLyT4r9zeof6UtuBDpjJ9sO08/nmS5djaA9eozT9oOlNdpXSnzcgj4FTqpk3nkLrs61l4gip9r1HCrQ==", + "dependencies": { + "atomic-sleep": "^1.0.0" + } }, - "node_modules/postman-runtime/node_modules/mime-db": { - "version": "1.51.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", - "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==", - "dev": true, + "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.6" + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/spawn-please": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/spawn-please/-/spawn-please-2.0.2.tgz", + "integrity": "sha512-KM8coezO6ISQ89c1BzyWNtcn2V2kAVtwIXd3cN/V5a0xPYc1F/vydrRc01wsKFEQ/p+V1a4sw4z2yMITIXrgGw==", + "dependencies": { + "cross-spawn": "^7.0.3" + }, + "engines": { + "node": ">=14" } }, - "node_modules/postman-runtime/node_modules/mime-types": { - "version": "2.1.34", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", - "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", + "node_modules/spawn-wrap": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-2.0.0.tgz", + "integrity": "sha512-EeajNjfN9zMnULLwhZZQU3GWBoFNkbngTUPfaawT4RkMiviTxcX0qfhVbGey39mfctfDHkWtuecgQ8NJcyQWHg==", "dev": true, "dependencies": { - "mime-db": "1.51.0" + "foreground-child": "^2.0.0", + "is-windows": "^1.0.2", + "make-dir": "^3.0.0", + "rimraf": "^3.0.0", + "signal-exit": "^3.0.2", + "which": "^2.0.1" }, "engines": { - "node": ">= 0.6" + "node": ">=8" } }, - "node_modules/postman-runtime/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==", + "node_modules/spawn-wrap/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, - "bin": { - "uuid": "dist/bin/uuid" + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/postman-sandbox": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/postman-sandbox/-/postman-sandbox-4.0.6.tgz", - "integrity": "sha512-PPRanSNEE4zy3kO7CeSBHmAfJnGdD9ecHY/Mjh26CQuZZarGkNO8c0U/n+xX3+5M1BRNc82UYq6YCtdsSDqcng==", + "node_modules/spawn-wrap/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": { - "lodash": "4.17.21", - "teleport-javascript": "1.0.0", - "uvm": "2.0.2" + "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": ">=10" + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/postman-url-encoder": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/postman-url-encoder/-/postman-url-encoder-3.0.5.tgz", - "integrity": "sha512-jOrdVvzUXBC7C+9gkIkpDJ3HIxOHTIqjpQ4C1EMt1ZGeMvSEpbFCKq23DEfgsj46vMnDgyQf+1ZLp2Wm+bKSsA==", + "node_modules/spawn-wrap/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": { - "punycode": "^2.1.1" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">=10" + "node": "*" } }, - "node_modules/prebuild-install": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.2.tgz", - "integrity": "sha512-UnNke3IQb6sgarcZIDU3gbMeTp/9SSU1DAIkil7PrqG1vZlBtY5msYccSKSHDqa3hNg436IXK+SNImReuA1wEQ==", + "node_modules/spawn-wrap/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": { - "detect-libc": "^2.0.0", - "expand-template": "^2.0.3", - "github-from-package": "0.0.0", - "minimist": "^1.2.3", - "mkdirp-classic": "^0.5.3", - "napi-build-utils": "^1.0.1", - "node-abi": "^3.3.0", - "pump": "^3.0.0", - "rc": "^1.2.7", - "simple-get": "^4.0.0", - "tar-fs": "^2.0.0", - "tunnel-agent": "^0.6.0" + "glob": "^7.1.3" }, "bin": { - "prebuild-install": "bin.js" + "rimraf": "bin.js" }, - "engines": { - "node": ">=10" + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", - "dev": true, - "engines": { - "node": ">= 0.8.0" + "node_modules/spdx-correct": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", + "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" } }, - "node_modules/pretty-ms": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-7.0.1.tgz", - "integrity": "sha512-973driJZvxiGOQ5ONsFhOF/DtzPMOMtgC11kCpUrPGMTgqp2q/1gwzCquocrN33is0VZ5GFHXZYMM9l6h67v2Q==", - "dev": true, + "node_modules/spdx-exceptions": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", + "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==" + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", "dependencies": { - "parse-ms": "^2.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" } }, - "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==", + "node_modules/spdx-license-ids": { + "version": "3.0.17", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.17.tgz", + "integrity": "sha512-sh8PWc/ftMqAAdFiBu6Fy6JUOYjqDJBJvIhpfDMyHrr0Rbp5liZqd4TjtQ/RgfLjKFZb+LMx5hpml5qOWy0qvg==" + }, + "node_modules/split2": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", + "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", "engines": { - "node": ">= 0.6.0" + "node": ">= 10.x" } }, - "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/sprintf-js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", + "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==" }, - "node_modules/process-on-spawn": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/process-on-spawn/-/process-on-spawn-1.0.0.tgz", - "integrity": "sha512-1WsPDsUSMmZH5LeMLegqkPDrsGgsWwk1Exipy2hvB0o/F0ASzbpIctSCcZIK1ykJvtTJULEH+20WOFjMvGnCTg==", - "dev": true, + "node_modules/sqlite3": { + "version": "5.1.7", + "resolved": "https://registry.npmjs.org/sqlite3/-/sqlite3-5.1.7.tgz", + "integrity": "sha512-GGIyOiFaG+TUra3JIfkI/zGP8yZYLPQ0pl1bH+ODjiX57sPhrLU5sQJn1y9bDKZUFYkX1crlrPfSYt0BKKdkog==", + "hasInstallScript": true, "dependencies": { - "fromentries": "^1.2.0" + "bindings": "^1.5.0", + "node-addon-api": "^7.0.0", + "prebuild-install": "^7.1.1", + "tar": "^6.1.11" }, - "engines": { - "node": ">=8" + "optionalDependencies": { + "node-gyp": "8.x" + }, + "peerDependencies": { + "node-gyp": "8.x" + }, + "peerDependenciesMeta": { + "node-gyp": { + "optional": true + } } }, - "node_modules/progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true, - "engines": { - "node": ">=0.4.0" + "node_modules/sqlite3/node_modules/@npmcli/fs": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz", + "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==", + "optional": true, + "dependencies": { + "@gar/promisify": "^1.0.1", + "semver": "^7.3.5" } }, - "node_modules/promise-inflight": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", - "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", - "optional": true - }, - "node_modules/promise-polyfill": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/promise-polyfill/-/promise-polyfill-2.1.4.tgz", - "integrity": "sha512-/DVUJXyaiYr7Pu0q2qPV/OtABpiukAHswJb9VV/tUVFsvC5iZUTyVPxfEr8cIVatGa5/Mxeli8QMyzAMBmoiYg==" - }, - "node_modules/promise-retry": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", - "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", + "node_modules/sqlite3/node_modules/@npmcli/move-file": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", + "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", + "deprecated": "This functionality has been moved to @npmcli/fs", "optional": true, "dependencies": { - "err-code": "^2.0.2", - "retry": "^0.12.0" + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" }, "engines": { "node": ">=10" } }, - "node_modules/prop-types": { - "version": "15.8.1", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", - "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", - "dev": true, - "dependencies": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.13.1" - } - }, - "node_modules/prop-types/node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "dev": true, + "node_modules/sqlite3/node_modules/@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "optional": true, "engines": { - "node": ">=0.10.0" + "node": ">= 6" } }, - "node_modules/proto-list": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", - "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==" - }, - "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==", + "node_modules/sqlite3/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==", + "optional": true, "dependencies": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - }, - "engines": { - "node": ">= 0.10" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/proxy-agent": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.4.0.tgz", - "integrity": "sha512-u0piLU+nCOHMgGjRbimiXmA9kM/L9EHh3zL81xCdp7m+Y2pHIsnmbdDoEDoAz5geaonNR6q6+yOPQs6n4T6sBQ==", + "node_modules/sqlite3/node_modules/cacache": { + "version": "15.3.0", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", + "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", "optional": true, "dependencies": { - "agent-base": "^7.0.2", - "debug": "^4.3.4", - "http-proxy-agent": "^7.0.1", - "https-proxy-agent": "^7.0.3", - "lru-cache": "^7.14.1", - "pac-proxy-agent": "^7.0.1", - "proxy-from-env": "^1.1.0", - "socks-proxy-agent": "^8.0.2" + "@npmcli/fs": "^1.0.0", + "@npmcli/move-file": "^1.0.1", + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "glob": "^7.1.4", + "infer-owner": "^1.0.4", + "lru-cache": "^6.0.0", + "minipass": "^3.1.1", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.2", + "mkdirp": "^1.0.3", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^8.0.1", + "tar": "^6.0.2", + "unique-filename": "^1.1.1" }, "engines": { - "node": ">= 14" + "node": ">= 10" } }, - "node_modules/proxy-agent/node_modules/debug": { + "node_modules/sqlite3/node_modules/debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", @@ -14008,1899 +12975,194 @@ } } }, - "node_modules/proxy-agent/node_modules/lru-cache": { - "version": "7.18.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", - "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "node_modules/sqlite3/node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", "optional": true, + "dependencies": { + "minipass": "^3.0.0" + }, "engines": { - "node": ">=12" + "node": ">= 8" } }, - "node_modules/proxy-agent/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==", - "optional": true - }, - "node_modules/proxy-agent/node_modules/socks-proxy-agent": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.2.tgz", - "integrity": "sha512-8zuqoLv1aP/66PHF5TqwJ7Czm3Yv32urJQHrVyhD7mmA6d61Zv8cIXQYPTWwmg6qlupnPvs/QKDmfa4P/qct2g==", + "node_modules/sqlite3/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "optional": true, "dependencies": { - "agent-base": "^7.0.2", - "debug": "^4.3.4", - "socks": "^2.7.1" + "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": ">= 14" - } - }, - "node_modules/proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" - }, - "node_modules/psl": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", - "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==" - }, - "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.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "engines": { - "node": ">=6" - } - }, - "node_modules/q": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==", - "engines": { - "node": ">=0.6.0", - "teleport": ">=0.2.0" - } - }, - "node_modules/qs": { - "version": "6.10.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", - "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", - "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==", - "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/quick-lru": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", - "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", - "engines": { - "node": ">=8" - } - }, - "node_modules/random-bytes": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz", - "integrity": "sha512-iv7LhNVO047HzYR3InF6pUcUsPQiHTM1Qal51DcGSuZFBil1aBBWG5eHPNek7bvILMaYJ/8RU1e8w1AMdHmLQQ==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "dependencies": { - "safe-buffer": "^5.1.0" - } - }, - "node_modules/range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/raw-body": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", - "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", - "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/rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "dependencies": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "bin": { - "rc": "cli.js" - } - }, - "node_modules/rc/node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" - }, - "node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", - "dev": true - }, - "node_modules/read-pkg": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", - "dependencies": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/read-pkg-up": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", - "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", - "dependencies": { - "find-up": "^4.1.0", - "read-pkg": "^5.2.0", - "type-fest": "^0.8.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/read-pkg-up/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==", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/read-pkg-up/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==", - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/read-pkg-up/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/read-pkg-up/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==", - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/read-pkg/node_modules/hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" - }, - "node_modules/read-pkg/node_modules/normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "node_modules/read-pkg/node_modules/type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", - "engines": { - "node": ">=8" - } - }, - "node_modules/readable-stream": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "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/redent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", - "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", - "dependencies": { - "indent-string": "^4.0.0", - "strip-indent": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/redeyed": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/redeyed/-/redeyed-2.1.1.tgz", - "integrity": "sha512-FNpGGo1DycYAdnrKFxCMmKYgo/mILAqtRYbkdQD8Ep/Hk2PQ5+aEAEx+IU713RTDmuBaH0c8P5ZozurNu5ObRQ==", - "dependencies": { - "esprima": "~4.0.0" - } - }, - "node_modules/reduce-flatten": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-1.0.1.tgz", - "integrity": "sha512-j5WfFJfc9CoXv/WbwVLHq74i/hdTUpy+iNC534LxczMRP67vJeK3V9JOdnL0N1cIRbn9mYhE2yVjvvKXDxvNXQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/referrer-policy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/referrer-policy/-/referrer-policy-1.2.0.tgz", - "integrity": "sha512-LgQJIuS6nAy1Jd88DCQRemyE3mS+ispwlqMk3b0yjZ257fI1v9c+/p6SD5gP5FGyXUIgrNOAfmyioHwZtYv2VA==", - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/regenerator-runtime": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" - }, - "node_modules/regexp.prototype.flags": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", - "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.6", - "define-properties": "^1.2.1", - "es-errors": "^1.3.0", - "set-function-name": "^2.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/regexpp": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", - "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", - "dev": true, - "engines": { - "node": ">=6.5.0" - } - }, - "node_modules/registry-auth-token": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-5.0.2.tgz", - "integrity": "sha512-o/3ikDxtXaA59BmZuZrJZDJv8NMDGSj+6j6XaeBmHw8eY1i1qd9+6H+LjVvQXx3HN6aRCGa1cUdJ9RaJZUugnQ==", - "dependencies": { - "@pnpm/npm-conf": "^2.1.0" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/release-zalgo": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz", - "integrity": "sha512-gUAyHVHPPC5wdqX/LG4LWtRYtgjxyX78oanFNTMMyFEfOqdC54s3eE82imuWKbOeqYht2CrNf64Qb8vgmmtZGA==", - "dev": true, - "dependencies": { - "es6-error": "^4.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/request": { - "version": "2.88.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", - "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", - "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", - "dependencies": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.0", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.4.3", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - }, - "engines": { - "node": ">= 4" - } - }, - "node_modules/request-promise": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/request-promise/-/request-promise-4.2.4.tgz", - "integrity": "sha512-8wgMrvE546PzbR5WbYxUQogUnUDfM0S7QIFZMID+J73vdFARkFy+HElj4T+MWYhpXwlLp0EQ8Zoj8xUA0he4Vg==", - "deprecated": "request-promise has been deprecated because it extends the now deprecated request package, see https://github.com/request/request/issues/3142", - "dependencies": { - "bluebird": "^3.5.0", - "request-promise-core": "1.1.2", - "stealthy-require": "^1.1.1", - "tough-cookie": "^2.3.3" - }, - "engines": { - "node": ">=0.10.0" - }, - "peerDependencies": { - "request": "^2.34" - } - }, - "node_modules/request-promise-core": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.2.tgz", - "integrity": "sha512-UHYyq1MO8GsefGEt7EprS8UrXsm1TxEvFUX1IMTuSLU2Rh7fTIdFtl8xD7JiEYiWU2dl+NYAjCTksTehQUxPag==", - "dependencies": { - "lodash": "^4.17.11" - }, - "engines": { - "node": ">=0.10.0" - }, - "peerDependencies": { - "request": "^2.34" - } - }, - "node_modules/request-promise/node_modules/tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "dependencies": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/request/node_modules/form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 0.12" - } - }, - "node_modules/request/node_modules/http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", - "dependencies": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - }, - "engines": { - "node": ">=0.8", - "npm": ">=1.3.7" - } - }, - "node_modules/request/node_modules/jsprim": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", - "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", - "dependencies": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.4.0", - "verror": "1.10.0" - }, - "engines": { - "node": ">=0.6.0" - } - }, - "node_modules/request/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/request/node_modules/qs": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", - "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/request/node_modules/tough-cookie": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", - "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", - "dependencies": { - "psl": "^1.1.24", - "punycode": "^1.4.1" - }, - "engines": { - "node": ">=0.8" - } - }, - "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==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true - }, - "node_modules/require-uncached": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", - "integrity": "sha512-Xct+41K3twrbBHdxAgMoOS+cNcoqIjfM2/VxBF4LL2hVph7YsF8VSKyQ3BDFZwEVbok9yeDl2le/qo0S77WG2w==", - "dev": true, - "dependencies": { - "caller-path": "^0.1.0", - "resolve-from": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/require-uncached/node_modules/resolve-from": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", - "integrity": "sha512-kT10v4dhrlLNcnO084hEjvXCI1wUG9qZLoz2RogxqDQQYy7IxjI/iMUkOtQTNEh6rzHxvdQWHsJyel1pKOVCxg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/resolve": { - "version": "1.22.8", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", - "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", - "dependencies": { - "is-core-module": "^2.13.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-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "engines": { - "node": ">=4" - } - }, - "node_modules/restore-cursor": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==", - "dev": true, - "dependencies": { - "onetime": "^2.0.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", - "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", - "optional": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/retry-as-promised": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/retry-as-promised/-/retry-as-promised-3.1.0.tgz", - "integrity": "sha512-g6T9rr5G4AfRVJZcnCbbmpcTDw8NJSnmVrvrJ9Pm9OWAzigocIcFp4+ItwHGJIr0wx0YzwlCJOvvEKQrZhzPOw==", - "dependencies": { - "any-promise": "^1.3.0" - } - }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, - "node_modules/roarr": { - "version": "2.15.4", - "resolved": "https://registry.npmjs.org/roarr/-/roarr-2.15.4.tgz", - "integrity": "sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==", - "dev": true, - "dependencies": { - "boolean": "^3.0.1", - "detect-node": "^2.0.4", - "globalthis": "^1.0.1", - "json-stringify-safe": "^5.0.1", - "semver-compare": "^1.0.0", - "sprintf-js": "^1.1.2" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/roarr/node_modules/sprintf-js": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", - "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", - "dev": true - }, - "node_modules/run-async": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", - "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "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==", - "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/rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "dev": true, - "dependencies": { - "tslib": "^1.9.0" - }, - "engines": { - "npm": ">=2.0.0" - } - }, - "node_modules/safe-array-concat": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.0.tgz", - "integrity": "sha512-ZdQ0Jeb9Ofti4hbt5lX3T2JcAamT9hfzYU1MNB+z/jaEbB6wfFfPIR/zEORmZqobkCCJhSjodobH6WHNmJ97dg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.5", - "get-intrinsic": "^1.2.2", - "has-symbols": "^1.0.3", - "isarray": "^2.0.5" - }, - "engines": { - "node": ">=0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safe-array-concat/node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true - }, - "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/safe-regex-test": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", - "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.6", - "es-errors": "^1.3.0", - "is-regex": "^1.1.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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/secure-keys": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/secure-keys/-/secure-keys-1.0.0.tgz", - "integrity": "sha512-nZi59hW3Sl5P3+wOO89eHBAAGwmCPd2aE1+dLZV5MO+ItQctIvAqihzaAXIQhvtH4KJPxM080HsnqltR2y8cWg==" - }, - "node_modules/semantic-release": { - "version": "19.0.3", - "resolved": "https://registry.npmjs.org/semantic-release/-/semantic-release-19.0.3.tgz", - "integrity": "sha512-HaFbydST1cDKZHuFZxB8DTrBLJVK/AnDExpK0s3EqLIAAUAHUgnd+VSJCUtTYQKkAkauL8G9CucODrVCc7BuAA==", - "dependencies": { - "@semantic-release/commit-analyzer": "^9.0.2", - "@semantic-release/error": "^3.0.0", - "@semantic-release/github": "^8.0.0", - "@semantic-release/npm": "^9.0.0", - "@semantic-release/release-notes-generator": "^10.0.0", - "aggregate-error": "^3.0.0", - "cosmiconfig": "^7.0.0", - "debug": "^4.0.0", - "env-ci": "^5.0.0", - "execa": "^5.0.0", - "figures": "^3.0.0", - "find-versions": "^4.0.0", - "get-stream": "^6.0.0", - "git-log-parser": "^1.2.0", - "hook-std": "^2.0.0", - "hosted-git-info": "^4.0.0", - "lodash": "^4.17.21", - "marked": "^4.0.10", - "marked-terminal": "^5.0.0", - "micromatch": "^4.0.2", - "p-each-series": "^2.1.0", - "p-reduce": "^2.0.0", - "read-pkg-up": "^7.0.0", - "resolve-from": "^5.0.0", - "semver": "^7.3.2", - "semver-diff": "^3.1.1", - "signale": "^1.2.1", - "yargs": "^16.2.0" - }, - "bin": { - "semantic-release": "bin/semantic-release.js" - }, - "engines": { - "node": ">=16 || ^14.17" - } - }, - "node_modules/semantic-release/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==", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/semantic-release/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/semantic-release/node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "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/semantic-release/node_modules/figures": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", - "dependencies": { - "escape-string-regexp": "^1.0.5" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/semantic-release/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==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/semantic-release/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==", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/semantic-release/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/semantic-release/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==", - "engines": { - "node": ">=6" - } - }, - "node_modules/semantic-release/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/semantic-release/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==", - "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/semantic-release/node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/semantic-release/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==", - "engines": { - "node": ">=8" - } - }, - "node_modules/semantic-release/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==", - "engines": { - "node": ">=8" - } - }, - "node_modules/semantic-release/node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/semantic-release/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==", - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/semantic-release/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==", - "engines": { - "node": ">=8" - } - }, - "node_modules/semantic-release/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/semver": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", - "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==", - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/semver-compare": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", - "integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==", - "dev": true - }, - "node_modules/semver-diff": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz", - "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==", - "dependencies": { - "semver": "^6.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/semver-diff/node_modules/semver": { - "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" - } - }, - "node_modules/semver-regex": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/semver-regex/-/semver-regex-3.1.4.tgz", - "integrity": "sha512-6IiqeZNgq01qGf0TId0t3NvKzSvUsjcpdEO3AQNeIjR6A2+ckTnQlDpl4qu1bjRv0RzN3FP9hzFmws3lKqRWkA==", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/send": { - "version": "0.17.2", - "resolved": "https://registry.npmjs.org/send/-/send-0.17.2.tgz", - "integrity": "sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww==", - "dependencies": { - "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "1.8.1", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "~2.3.0", - "range-parser": "~1.2.1", - "statuses": "~1.5.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/send/node_modules/depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/send/node_modules/destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha512-3NdhDuEXnfun/z7x9GOElY49LoqVHoGScmOKwmxhsS8N5Y+Z8KyPPDnaSzqWgYt/ji4mqwfTS34Htrk0zPIXVg==" - }, - "node_modules/send/node_modules/http-errors": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", - "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", - "dependencies": { - "depd": "~1.1.2", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.1" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/send/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/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/send/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==", - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/seq-queue": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/seq-queue/-/seq-queue-0.0.5.tgz", - "integrity": "sha512-hr3Wtp/GZIc/6DAGPDcV4/9WoZhjrkXsi5B/07QgX8tsdc6ilr7BFM6PM6rbdAX1kFSDYeZGLipIZZKyQP0O5Q==" - }, - "node_modules/sequelize": { - "version": "6.29.0", - "resolved": "https://registry.npmjs.org/sequelize/-/sequelize-6.29.0.tgz", - "integrity": "sha512-m8Wi90rs3NZP9coXE52c7PL4Q078nwYZXqt1IxPvgki7nOFn0p/F0eKsYDBXCPw9G8/BCEa6zZNk0DQUAT4ypA==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/sequelize" - } - ], - "dependencies": { - "@types/debug": "^4.1.7", - "@types/validator": "^13.7.1", - "debug": "^4.3.3", - "dottie": "^2.0.2", - "inflection": "^1.13.2", - "lodash": "^4.17.21", - "moment": "^2.29.1", - "moment-timezone": "^0.5.35", - "pg-connection-string": "^2.5.0", - "retry-as-promised": "^7.0.3", - "semver": "^7.3.5", - "sequelize-pool": "^7.1.0", - "toposort-class": "^1.0.1", - "uuid": "^8.3.2", - "validator": "^13.7.0", - "wkx": "^0.5.0" - }, - "engines": { - "node": ">=10.0.0" - }, - "peerDependenciesMeta": { - "ibm_db": { - "optional": true - }, - "mariadb": { - "optional": true - }, - "mysql2": { - "optional": true - }, - "oracledb": { - "optional": true - }, - "pg": { - "optional": true - }, - "pg-hstore": { - "optional": true - }, - "snowflake-sdk": { - "optional": true - }, - "sqlite3": { - "optional": true - }, - "tedious": { - "optional": true - } - } - }, - "node_modules/sequelize-cli": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/sequelize-cli/-/sequelize-cli-5.5.0.tgz", - "integrity": "sha512-twVQ02alCpr2XvxNmpi32C48WZs6xHTH1OFTfTS5Meg3BVqOM8ghiZoml4FITFjlD8sAJSQjlAHTwqTbuolA6Q==", - "dev": true, - "dependencies": { - "bluebird": "^3.5.3", - "cli-color": "^1.4.0", - "fs-extra": "^7.0.1", - "js-beautify": "^1.8.8", - "lodash": "^4.17.5", - "resolve": "^1.5.0", - "umzug": "^2.1.0", - "yargs": "^13.1.0" - }, - "bin": { - "sequelize": "lib/sequelize" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/sequelize-cli/node_modules/ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/sequelize-cli/node_modules/cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", - "dev": true, - "dependencies": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" - } - }, - "node_modules/sequelize-cli/node_modules/emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true - }, - "node_modules/sequelize-cli/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==", - "dev": true, - "dependencies": { - "locate-path": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/sequelize-cli/node_modules/fs-extra": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", - "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - }, - "engines": { - "node": ">=6 <7 || >=8" - } - }, - "node_modules/sequelize-cli/node_modules/jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", - "dev": true, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/sequelize-cli/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==", - "dev": true, - "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/sequelize-cli/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/sequelize-cli/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==", - "dev": true, - "dependencies": { - "p-limit": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/sequelize-cli/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==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/sequelize-cli/node_modules/string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "dependencies": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/sequelize-cli/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/sequelize-cli/node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/sequelize-cli/node_modules/wrap-ansi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/sequelize-cli/node_modules/y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "dev": true - }, - "node_modules/sequelize-cli/node_modules/yargs": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", - "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", - "dev": true, - "dependencies": { - "cliui": "^5.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^13.1.2" - } - }, - "node_modules/sequelize-cli/node_modules/yargs-parser": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", - "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", - "dev": true, - "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - }, - "node_modules/sequelize-pool": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/sequelize-pool/-/sequelize-pool-7.1.0.tgz", - "integrity": "sha512-G9c0qlIWQSK29pR/5U2JF5dDQeqqHRragoyahj/Nx4KOOQ3CPPfzxnfqFPCSB7x5UgjOgnZ61nSxz+fjDpRlJg==", - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/sequelize/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/sequelize/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/sequelize/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/sequelize/node_modules/retry-as-promised": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/retry-as-promised/-/retry-as-promised-7.0.4.tgz", - "integrity": "sha512-XgmCoxKWkDofwH8WddD0w85ZfqYz+ZHlr5yo+3YUCfycWawU56T5ckWXsScsj5B8tqUcIG67DxXByo3VUgiAdA==" - }, - "node_modules/sequelize/node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/sequelize/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/serialised-error": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/serialised-error/-/serialised-error-1.1.3.tgz", - "integrity": "sha512-vybp3GItaR1ZtO2nxZZo8eOo7fnVaNtP3XE2vJKgzkKR2bagCkdJ1EpYYhEMd3qu/80DwQk9KjsNSxE3fXWq0g==", - "dev": true, - "dependencies": { - "object-hash": "^1.1.2", - "stack-trace": "0.0.9", - "uuid": "^3.0.0" - } - }, - "node_modules/serialize-error": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-7.0.1.tgz", - "integrity": "sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==", - "dev": true, - "dependencies": { - "type-fest": "^0.13.1" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/serialize-error/node_modules/type-fest": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", - "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", - "dev": true, - "dependencies": { - "randombytes": "^2.1.0" - } - }, - "node_modules/serve-static": { - "version": "1.14.2", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.2.tgz", - "integrity": "sha512-+TMNA9AFxUEGuC0z2mevogSnn9MXKb4fa7ngeRMJaaGv8vTwnIEkKi+QGvPt33HSnf8pRS+WGM0EbMtCJLKMBQ==", - "dependencies": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.17.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", - "devOptional": true - }, - "node_modules/set-function-length": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.1.tgz", - "integrity": "sha512-j4t6ccc+VsKwYHso+kElc5neZpjtq9EnRICFZtWyBsLojhmeF/ZBd/elqm22WJh/BziDe/SBiOeAt0m2mfLD0g==", - "dependencies": { - "define-data-property": "^1.1.2", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.3", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/set-function-name": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", - "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", - "dev": true, - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "functions-have-names": "^1.2.3", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" - }, - "node_modules/shallow-copy": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/shallow-copy/-/shallow-copy-0.0.1.tgz", - "integrity": "sha512-b6i4ZpVuUxB9h5gfCxPiusKYkqTMOjEbBs4wMaFbkfia4yFv92UKZ6Df8WXcKbn08JNL/abvg3FnMAOfakDvUw==" - }, - "node_modules/shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", - "dependencies": { - "shebang-regex": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/side-channel": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", - "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", - "dependencies": { - "call-bind": "^1.0.7", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4", - "object-inspect": "^1.13.1" - }, - "engines": { - "node": ">= 0.4" + "node": "*" }, "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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==" - }, - "node_modules/signale": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/signale/-/signale-1.4.0.tgz", - "integrity": "sha512-iuh+gPf28RkltuJC7W5MRi6XAjTDCAPC/prJUpQoG4vIP3MJZ+GTydVnodXA7pwvTKb2cA0m9OFZW/cdWy/I/w==", - "dependencies": { - "chalk": "^2.3.2", - "figures": "^2.0.0", - "pkg-conf": "^2.1.0" - }, - "engines": { - "node": ">=6" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/simple-concat": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", - "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", - "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/simple-get": { + "node_modules/sqlite3/node_modules/http-proxy-agent": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", - "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", - "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": { - "decompress-response": "^6.0.0", - "once": "^1.3.1", - "simple-concat": "^1.0.0" - } - }, - "node_modules/sinon": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-7.5.0.tgz", - "integrity": "sha512-AoD0oJWerp0/rY9czP/D6hDTTUYGpObhZjMpd7Cl/A6+j0xBE+ayL/ldfggkBXUs0IkvIiM1ljM8+WkOc5k78Q==", - "deprecated": "16.1.1", - "dev": true, - "dependencies": { - "@sinonjs/commons": "^1.4.0", - "@sinonjs/formatio": "^3.2.1", - "@sinonjs/samsam": "^3.3.3", - "diff": "^3.5.0", - "lolex": "^4.2.0", - "nise": "^1.5.2", - "supports-color": "^5.5.0" - } - }, - "node_modules/sinon-chai": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/sinon-chai/-/sinon-chai-3.3.0.tgz", - "integrity": "sha512-r2JhDY7gbbmh5z3Q62pNbrjxZdOAjpsqW/8yxAZRSqLZqowmfGZPGUZPFf3UX36NLis0cv8VEM5IJh9HgkSOAA==", - "dev": true, - "peerDependencies": { - "chai": "^4.0.0", - "sinon": ">=4.0.0 <8.0.0" - } - }, - "node_modules/sinon/node_modules/diff": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", - "dev": true, - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "engines": { - "node": ">=8" - } - }, - "node_modules/slice-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", - "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", - "dev": true, + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "optional": true, "dependencies": { - "ansi-styles": "^3.2.0", - "astral-regex": "^1.0.0", - "is-fullwidth-code-point": "^2.0.0" + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" }, "engines": { - "node": ">=6" - } - }, - "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==", - "optional": true, - "engines": { - "node": ">= 6.0.0", - "npm": ">= 3.0.0" + "node": ">= 6" } }, - "node_modules/smtp-connection": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/smtp-connection/-/smtp-connection-2.3.2.tgz", - "integrity": "sha512-ORefDrSgddCYkJE7oH3jB6WRv2Z7laZLCMRYD4GFFB8oaZw/hnil7exDBP4yBYs3OgschOuvVdCauUQAblTWvQ==", + "node_modules/sqlite3/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==", + "optional": true, "dependencies": { - "nodemailer-shared": "1.0.4" + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" } }, - "node_modules/snyk": { - "version": "1.1281.0", - "resolved": "https://registry.npmjs.org/snyk/-/snyk-1.1281.0.tgz", - "integrity": "sha512-I+oVDXOF+nFTpFnRkP985x6xMlXzGzojHsC3F4YeT+NPfsn5mfmnx0NVY4tSXBoENqWGYzBw3M2adeLcbamx4Q==", - "dev": true, - "hasInstallScript": true, + "node_modules/sqlite3/node_modules/make-fetch-happen": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz", + "integrity": "sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==", + "optional": true, "dependencies": { - "@sentry/node": "^7.36.0", - "global-agent": "^3.0.0" - }, - "bin": { - "snyk": "bin/snyk" + "agentkeepalive": "^4.1.3", + "cacache": "^15.2.0", + "http-cache-semantics": "^4.1.0", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^6.0.0", + "minipass": "^3.1.3", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^1.3.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.2", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^6.0.0", + "ssri": "^8.0.0" }, "engines": { - "node": ">=12" + "node": ">= 10" } }, - "node_modules/socks": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.1.tgz", - "integrity": "sha512-B6w7tkwNid7ToxjZ08rQMT8M9BJAf8DKx8Ft4NivzH0zBUfd6jldGcisJn/RLgxcX3FPNDdNQCUEMMT79b+oCQ==", + "node_modules/sqlite3/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "optional": true, "dependencies": { - "ip-address": "^9.0.5", - "smart-buffer": "^4.2.0" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">= 10.0.0", - "npm": ">= 3.0.0" + "node": "*" } }, - "node_modules/socks-proxy-agent": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.2.1.tgz", - "integrity": "sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ==", + "node_modules/sqlite3/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "optional": true, "dependencies": { - "agent-base": "^6.0.2", - "debug": "^4.3.3", - "socks": "^2.6.2" + "yallist": "^4.0.0" }, "engines": { - "node": ">= 10" + "node": ">=8" } }, - "node_modules/socks-proxy-agent/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==", + "node_modules/sqlite3/node_modules/minipass-fetch": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.4.1.tgz", + "integrity": "sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==", "optional": true, "dependencies": { - "debug": "4" + "minipass": "^3.1.0", + "minipass-sized": "^1.0.3", + "minizlib": "^2.0.0" }, "engines": { - "node": ">= 6.0.0" + "node": ">=8" + }, + "optionalDependencies": { + "encoding": "^0.1.12" } }, - "node_modules/socks-proxy-agent/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "node_modules/sqlite3/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", "optional": true, - "dependencies": { - "ms": "2.1.2" + "bin": { + "mkdirp": "bin/cmd.js" }, "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "node": ">=10" } }, - "node_modules/socks-proxy-agent/node_modules/ms": { + "node_modules/sqlite3/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==", "optional": true }, - "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==", + "node_modules/sqlite3/node_modules/node-gyp": { + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-8.4.1.tgz", + "integrity": "sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w==", + "optional": true, "dependencies": { - "atomic-sleep": "^1.0.0", - "flatstr": "^1.0.12" - } - }, - "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==", + "env-paths": "^2.2.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^9.1.0", + "nopt": "^5.0.0", + "npmlog": "^6.0.0", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.2", + "which": "^2.0.2" + }, + "bin": { + "node-gyp": "bin/node-gyp.js" + }, "engines": { - "node": ">=0.10.0" + "node": ">= 10.12.0" } }, - "node_modules/spawn-error-forwarder": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/spawn-error-forwarder/-/spawn-error-forwarder-1.0.0.tgz", - "integrity": "sha512-gRjMgK5uFjbCvdibeGJuy3I5OYz6VLoVdsOJdA6wV0WlfQVLFueoqMxwwYD9RODdgb6oUIvlRlsyFSiQkMKu0g==" - }, - "node_modules/spawn-wrap": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-2.0.0.tgz", - "integrity": "sha512-EeajNjfN9zMnULLwhZZQU3GWBoFNkbngTUPfaawT4RkMiviTxcX0qfhVbGey39mfctfDHkWtuecgQ8NJcyQWHg==", - "dev": true, + "node_modules/sqlite3/node_modules/nopt": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", + "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "optional": true, "dependencies": { - "foreground-child": "^2.0.0", - "is-windows": "^1.0.2", - "make-dir": "^3.0.0", - "rimraf": "^3.0.0", - "signal-exit": "^3.0.2", - "which": "^2.0.1" + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" }, "engines": { - "node": ">=8" + "node": ">=6" } }, - "node_modules/spawn-wrap/node_modules/rimraf": { + "node_modules/sqlite3/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, + "optional": true, "dependencies": { "glob": "^7.1.3" }, @@ -15911,115 +13173,48 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/spawn-wrap/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/spdx-correct": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", - "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", - "dependencies": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-exceptions": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", - "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==" - }, - "node_modules/spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-license-ids": { - "version": "3.0.17", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.17.tgz", - "integrity": "sha512-sh8PWc/ftMqAAdFiBu6Fy6JUOYjqDJBJvIhpfDMyHrr0Rbp5liZqd4TjtQ/RgfLjKFZb+LMx5hpml5qOWy0qvg==" - }, - "node_modules/split": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", - "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", + "node_modules/sqlite3/node_modules/socks-proxy-agent": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.2.1.tgz", + "integrity": "sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ==", + "optional": true, "dependencies": { - "through": "2" + "agent-base": "^6.0.2", + "debug": "^4.3.3", + "socks": "^2.6.2" }, "engines": { - "node": "*" - } - }, - "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": ">= 10" } }, - "node_modules/split2/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==", + "node_modules/sqlite3/node_modules/ssri": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", + "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", + "optional": true, "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "minipass": "^3.1.1" }, "engines": { - "node": ">= 6" - } - }, - "node_modules/split2/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": ">= 8" } }, - "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/sqlite3": { - "version": "5.1.7", - "resolved": "https://registry.npmjs.org/sqlite3/-/sqlite3-5.1.7.tgz", - "integrity": "sha512-GGIyOiFaG+TUra3JIfkI/zGP8yZYLPQ0pl1bH+ODjiX57sPhrLU5sQJn1y9bDKZUFYkX1crlrPfSYt0BKKdkog==", - "hasInstallScript": true, + "node_modules/sqlite3/node_modules/unique-filename": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "optional": true, "dependencies": { - "bindings": "^1.5.0", - "node-addon-api": "^7.0.0", - "prebuild-install": "^7.1.1", - "tar": "^6.1.11" - }, - "optionalDependencies": { - "node-gyp": "8.x" - }, - "peerDependencies": { - "node-gyp": "8.x" - }, - "peerDependenciesMeta": { - "node-gyp": { - "optional": true - } + "unique-slug": "^2.0.0" + } + }, + "node_modules/sqlite3/node_modules/unique-slug": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "optional": true, + "dependencies": { + "imurmurhash": "^0.1.4" } }, "node_modules/sqlstring": { @@ -16034,6 +13229,7 @@ "version": "1.18.0", "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.18.0.tgz", "integrity": "sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==", + "dev": true, "dependencies": { "asn1": "~0.2.3", "assert-plus": "^1.0.0", @@ -16057,18 +13253,26 @@ "node_modules/sshpk/node_modules/jsbn": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==" + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", + "dev": true }, "node_modules/ssri": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", - "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", - "optional": true, + "version": "10.0.6", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.6.tgz", + "integrity": "sha512-MGrFH9Z4NP9Iyhqn16sDtBpRRNJ0Y2hNa6D65h736fVSaPCHr4DM4sWUNvVaSuC+0OBGhwsrydQwmgfg5LncqQ==", "dependencies": { - "minipass": "^3.1.1" + "minipass": "^7.0.3" }, "engines": { - "node": ">= 8" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/ssri/node_modules/minipass": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.1.tgz", + "integrity": "sha512-UZ7eQ+h8ywIRAW1hIEl2AqdwzJucU/Kp59+8kkZeSvafXhZjul247BvIJjEVFVeON6d7lM46XX1HXCduKAS8VA==", + "engines": { + "node": ">=16 || 14 >=14.17" } }, "node_modules/stack-trace": { @@ -16115,6 +13319,15 @@ "pkg-conf": "^2.0.0" } }, + "node_modules/standard-engine/node_modules/get-stdin": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz", + "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/standard/node_modules/acorn": { "version": "6.4.2", "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", @@ -16127,83 +13340,260 @@ "node": ">=0.4.0" } }, - "node_modules/standard/node_modules/chardet": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz", - "integrity": "sha512-j/Toj7f1z98Hh2cYo2BVr85EpIRWqUi7rtRSGxh/cqUjqrnJe9l9UE7IUGd2vQ2p+kSHLkSzObQPZPLUC6TQwg==", + "node_modules/standard/node_modules/ansi-regex": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/standard/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/standard/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/standard/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/standard/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/standard/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/standard/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/standard/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "node_modules/standard/node_modules/cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", "dev": true, "dependencies": { - "ms": "^2.1.1" + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" } }, - "node_modules/standard/node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "node_modules/standard/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/standard/node_modules/eslint": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.4.0.tgz", + "integrity": "sha512-UIpL91XGex3qtL6qwyCQJar2j3osKxK9e3ano3OcGEIRM4oWIpCkDg9x95AXEC2wMs7PnxzOkPZ2gq+tsMS9yg==", "dev": true, "dependencies": { - "esutils": "^2.0.2" + "ajv": "^6.5.0", + "babel-code-frame": "^6.26.0", + "chalk": "^2.1.0", + "cross-spawn": "^6.0.5", + "debug": "^3.1.0", + "doctrine": "^2.1.0", + "eslint-scope": "^4.0.0", + "eslint-utils": "^1.3.1", + "eslint-visitor-keys": "^1.0.0", + "espree": "^4.0.0", + "esquery": "^1.0.1", + "esutils": "^2.0.2", + "file-entry-cache": "^2.0.0", + "functional-red-black-tree": "^1.0.1", + "glob": "^7.1.2", + "globals": "^11.7.0", + "ignore": "^4.0.2", + "imurmurhash": "^0.1.4", + "inquirer": "^5.2.0", + "is-resolvable": "^1.1.0", + "js-yaml": "^3.11.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.3.0", + "lodash": "^4.17.5", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "optionator": "^0.8.2", + "path-is-inside": "^1.0.2", + "pluralize": "^7.0.0", + "progress": "^2.0.0", + "regexpp": "^2.0.0", + "require-uncached": "^1.0.3", + "semver": "^5.5.0", + "strip-ansi": "^4.0.0", + "strip-json-comments": "^2.0.1", + "table": "^4.0.3", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^6.14.0 || ^8.10.0 || >=9.10.0" + } + }, + "node_modules/standard/node_modules/eslint-config-standard": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-12.0.0.tgz", + "integrity": "sha512-COUz8FnXhqFitYj4DTqHzidjIL/t4mumGZto5c7DrBpvWoie+Sn3P4sLEzUGeYhRElWuFEf8K1S1EfvD1vixCQ==", + "dev": true, + "peerDependencies": { + "eslint": ">=5.0.0", + "eslint-plugin-import": ">=2.13.0", + "eslint-plugin-node": ">=7.0.0", + "eslint-plugin-promise": ">=4.0.0", + "eslint-plugin-standard": ">=4.0.0" + } + }, + "node_modules/standard/node_modules/eslint-config-standard-jsx": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/eslint-config-standard-jsx/-/eslint-config-standard-jsx-6.0.2.tgz", + "integrity": "sha512-D+YWAoXw+2GIdbMBRAzWwr1ZtvnSf4n4yL0gKGg7ShUOGXkSOLerI17K4F6LdQMJPNMoWYqepzQD/fKY+tXNSg==", + "dev": true, + "peerDependencies": { + "eslint": ">=5.0.0", + "eslint-plugin-react": ">=7.11.1" + } + }, + "node_modules/standard/node_modules/eslint-plugin-import": { + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.14.0.tgz", + "integrity": "sha512-FpuRtniD/AY6sXByma2Wr0TXvXJ4nA/2/04VPlfpmUDPOpOY264x+ILiwnrk/k4RINgDAyFZByxqPUbSQ5YE7g==", + "dev": true, + "dependencies": { + "contains-path": "^0.1.0", + "debug": "^2.6.8", + "doctrine": "1.5.0", + "eslint-import-resolver-node": "^0.3.1", + "eslint-module-utils": "^2.2.0", + "has": "^1.0.1", + "lodash": "^4.17.4", + "minimatch": "^3.0.3", + "read-pkg-up": "^2.0.0", + "resolve": "^1.6.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "2.x - 5.x" + } + }, + "node_modules/standard/node_modules/eslint-plugin-import/node_modules/doctrine": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", + "integrity": "sha512-lsGyRuYr4/PIB0txi+Fy2xOMI2dGaTguCaotzFGkVZuKR5usKfcRWIFKNM3QNrU7hh/+w2bwTW+ZeXPK5l8uVg==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2", + "isarray": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/standard/node_modules/eslint-plugin-react": { + "version": "7.11.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.11.1.tgz", + "integrity": "sha512-cVVyMadRyW7qsIUh3FHp3u6QHNhOgVrLQYdQEB1bPWBsgbNCHdFAeNMquBMCcZJu59eNthX053L70l7gRt4SCw==", + "dev": true, + "dependencies": { + "array-includes": "^3.0.3", + "doctrine": "^2.1.0", + "has": "^1.0.3", + "jsx-ast-utils": "^2.0.1", + "prop-types": "^15.6.2" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0" + } + }, + "node_modules/standard/node_modules/eslint-scope": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", + "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", + "dev": true, + "dependencies": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=4.0.0" + } + }, + "node_modules/standard/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true, + "engines": { + "node": ">=4" } }, - "node_modules/standard/node_modules/eslint": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.4.0.tgz", - "integrity": "sha512-UIpL91XGex3qtL6qwyCQJar2j3osKxK9e3ano3OcGEIRM4oWIpCkDg9x95AXEC2wMs7PnxzOkPZ2gq+tsMS9yg==", + "node_modules/standard/node_modules/eslint/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": { - "ajv": "^6.5.0", - "babel-code-frame": "^6.26.0", - "chalk": "^2.1.0", - "cross-spawn": "^6.0.5", - "debug": "^3.1.0", - "doctrine": "^2.1.0", - "eslint-scope": "^4.0.0", - "eslint-utils": "^1.3.1", - "eslint-visitor-keys": "^1.0.0", - "espree": "^4.0.0", - "esquery": "^1.0.1", - "esutils": "^2.0.2", - "file-entry-cache": "^2.0.0", - "functional-red-black-tree": "^1.0.1", - "glob": "^7.1.2", - "globals": "^11.7.0", - "ignore": "^4.0.2", - "imurmurhash": "^0.1.4", - "inquirer": "^5.2.0", - "is-resolvable": "^1.1.0", - "js-yaml": "^3.11.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.3.0", - "lodash": "^4.17.5", - "minimatch": "^3.0.4", - "mkdirp": "^0.5.1", - "natural-compare": "^1.4.0", - "optionator": "^0.8.2", - "path-is-inside": "^1.0.2", - "pluralize": "^7.0.0", - "progress": "^2.0.0", - "regexpp": "^2.0.0", - "require-uncached": "^1.0.3", - "semver": "^5.5.0", - "strip-ansi": "^4.0.0", - "strip-json-comments": "^2.0.1", - "table": "^4.0.3", - "text-table": "^0.2.0" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^6.14.0 || ^8.10.0 || >=9.10.0" + "ms": "^2.1.1" } }, "node_modules/standard/node_modules/espree": { @@ -16220,18 +13610,13 @@ "node": ">=6.0.0" } }, - "node_modules/standard/node_modules/external-editor": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz", - "integrity": "sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==", + "node_modules/standard/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true, - "dependencies": { - "chardet": "^0.4.0", - "iconv-lite": "^0.4.17", - "tmp": "^0.0.33" - }, "engines": { - "node": ">=0.12" + "node": ">=4.0" } }, "node_modules/standard/node_modules/file-entry-cache": { @@ -16262,28 +13647,107 @@ "node": ">=0.10.0" } }, - "node_modules/standard/node_modules/inquirer": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-5.2.0.tgz", - "integrity": "sha512-E9BmnJbAKLPGonz0HeWHtbKf+EeSP93paWO3ZYoUpq/aowXvYGjjCSuashhXPpzbArIjBbji39THkxTz9ZeEUQ==", + "node_modules/standard/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": { - "ansi-escapes": "^3.0.0", - "chalk": "^2.0.0", - "cli-cursor": "^2.1.0", - "cli-width": "^2.0.0", - "external-editor": "^2.1.0", - "figures": "^2.0.0", - "lodash": "^4.3.0", - "mute-stream": "0.0.7", - "run-async": "^2.2.0", - "rxjs": "^5.5.2", - "string-width": "^2.1.0", - "strip-ansi": "^4.0.0", - "through": "^2.3.6" + "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": ">=6.0.0" + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/standard/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/standard/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/standard/node_modules/ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/standard/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "node_modules/standard/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==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/standard/node_modules/levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", + "dev": true, + "dependencies": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/standard/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/standard/node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" } }, "node_modules/standard/node_modules/ms": { @@ -16292,114 +13756,152 @@ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true }, - "node_modules/standard/node_modules/rxjs": { - "version": "5.5.12", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.12.tgz", - "integrity": "sha512-xx2itnL5sBbqeeiVgNPVuQQ1nC8Jp2WfNJhXWHmElW9YmrpS9UVnNzhP3EH3HFqexO5Tlp8GhYY+WEcqcVMvGw==", + "node_modules/standard/node_modules/optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", "dev": true, "dependencies": { - "symbol-observable": "1.0.1" + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" }, "engines": { - "npm": ">=2.0.0" + "node": ">= 0.8.0" } }, - "node_modules/standard/node_modules/slice-ansi": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz", - "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==", + "node_modules/standard/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", "dev": true, - "dependencies": { - "is-fullwidth-code-point": "^2.0.0" - }, "engines": { "node": ">=4" } }, - "node_modules/standard/node_modules/table": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/table/-/table-4.0.3.tgz", - "integrity": "sha512-S7rnFITmBH1EnyKcvxBh1LjYeQMmnZtCXSEbHcH6S0NoKit24ZuFO/T1vDcLdYsLQkM188PVVhQmzKIuThNkKg==", + "node_modules/standard/node_modules/prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/standard/node_modules/rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", "dev": true, "dependencies": { - "ajv": "^6.0.1", - "ajv-keywords": "^3.0.0", - "chalk": "^2.1.0", - "lodash": "^4.17.4", - "slice-ansi": "1.0.0", - "string-width": "^2.1.1" + "glob": "^7.1.3" }, - "engines": { - "node": ">=4.0.0" + "bin": { + "rimraf": "bin.js" } }, - "node_modules/standard/node_modules/write": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", - "integrity": "sha512-CJ17OoULEKXpA5pef3qLj5AxTJ6mSt7g84he2WIskKwqFO4T97d5V7Tadl0DYDk7qyUOQD5WlUlOMChaYrhxeA==", + "node_modules/standard/node_modules/semver": { + "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" + } + }, + "node_modules/standard/node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", "dev": true, "dependencies": { - "mkdirp": "^0.5.1" + "shebang-regex": "^1.0.0" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "node_modules/standard/node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/standard/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 + }, + "node_modules/standard/node_modules/strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", + "dev": true, + "dependencies": { + "ansi-regex": "^3.0.0" + }, "engines": { - "node": ">= 0.6" + "node": ">=4" } }, - "node_modules/stealthy-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", - "integrity": "sha512-ZnWpYnYugiOVEY5GkcuJK1io5V8QmNYChG62gSit9pQVGErXtrKuPC55ITaVSukmMta5qpMU7vqLt2Lnni4f/g==", + "node_modules/standard/node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "dev": true, "engines": { "node": ">=0.10.0" } }, - "node_modules/stream-combiner2": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz", - "integrity": "sha512-3PnJbYgS56AeWgtKF5jtJRT6uFJe56Z0Hc5Ngg/6sI6rIt8iiMBTa9cvdyFfpMQjaVHr8dusbNeFGIIonxOvKw==", + "node_modules/standard/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": { - "duplexer2": "~0.1.0", - "readable-stream": "^2.0.2" + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" } }, - "node_modules/stream-combiner2/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" - }, - "node_modules/stream-combiner2/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "node_modules/standard/node_modules/type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", + "dev": true, "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "prelude-ls": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" } }, - "node_modules/stream-combiner2/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==" - }, - "node_modules/stream-combiner2/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "node_modules/standard/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, "dependencies": { - "safe-buffer": "~5.1.0" + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "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/stream-length": { @@ -16411,11 +13913,13 @@ "bluebird": "^2.6.2" } }, - "node_modules/stream-length/node_modules/bluebird": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-2.11.0.tgz", - "integrity": "sha512-UfFSr22dmHPQqPP9XWHRhq+gWnHCYguQGkXQlbyPtW5qTnhFWA8/iXg765tH0cAjy7l/zPJ1aBTO0g5XgA7kvQ==", - "dev": true + "node_modules/stream-read-all": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/stream-read-all/-/stream-read-all-3.0.1.tgz", + "integrity": "sha512-EWZT9XOceBPlVJRrYcykW8jyRSZYbkb/0ZK36uLEmoWVO5gxBOnntNTseNzfREsqxqdfEGQrD8SXQ3QWbBmq8A==", + "engines": { + "node": ">=10" + } }, "node_modules/streamsearch": { "version": "1.1.0", @@ -16430,22 +13934,30 @@ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==" }, + "node_modules/string-argv": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.2.tgz", + "integrity": "sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==", + "engines": { + "node": ">=0.6.19" + } + }, "node_modules/string-format": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/string-format/-/string-format-2.0.0.tgz", "integrity": "sha512-bbEs3scLeYNXLecRRuk6uJxdXUSj6le/8rNPHChIJTn2V79aXVTR1EH2OH5zLKKoz0V02fOUKZZcw01pLUShZA==" }, "node_modules/string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "devOptional": true, + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dependencies": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" }, "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/string-width-cjs": { @@ -16453,7 +13965,6 @@ "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", @@ -16463,45 +13974,16 @@ "node": ">=8" } }, - "node_modules/string-width-cjs/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/string-width-cjs/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/string-width-cjs/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/string.prototype.trim": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz", - "integrity": "sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==", + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", + "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.0", + "es-object-atoms": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -16511,43 +13993,45 @@ } }, "node_modules/string.prototype.trimend": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz", - "integrity": "sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", + "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/string.prototype.trimstart": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz", - "integrity": "sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", - "devOptional": true, + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dependencies": { - "ansi-regex": "^3.0.0" + "ansi-regex": "^5.0.1" }, "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/strip-ansi-cjs": { @@ -16555,7 +14039,6 @@ "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" }, @@ -16563,24 +14046,6 @@ "node": ">=8" } }, - "node_modules/strip-ansi-cjs/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/strip-ansi/node_modules/ansi-regex": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", - "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", - "devOptional": true, - "engines": { - "node": ">=4" - } - }, "node_modules/strip-bom": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", @@ -16598,164 +14063,100 @@ "node": ">=0.10.0" } }, - "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==", - "engines": { - "node": ">=6" - } - }, - "node_modules/strip-indent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", - "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", - "dependencies": { - "min-indent": "^1.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/superagent": { - "version": "3.8.3", - "resolved": "https://registry.npmjs.org/superagent/-/superagent-3.8.3.tgz", - "integrity": "sha512-GLQtLMCoEIK4eDv6OGtkOoSMt3D+oq0y3dsxMuYuDvaNUvuT8eFBuLmfR0iYYzHC1e8hpzC6ZsxbuP6DIalMFA==", - "deprecated": "Please upgrade to v7.0.2+ of superagent. We have fixed numerous issues with streams, form-data, attach(), filesystem errors not bubbling up (ENOENT on attach()), and all tests are now passing. See the releases tab for more information at .", - "dev": true, - "dependencies": { - "component-emitter": "^1.2.0", - "cookiejar": "^2.1.0", - "debug": "^3.1.0", - "extend": "^3.0.0", - "form-data": "^2.3.1", - "formidable": "^1.2.0", - "methods": "^1.1.1", - "mime": "^1.4.1", - "qs": "^6.5.1", - "readable-stream": "^2.3.5" - }, - "engines": { - "node": ">= 4.0" - } - }, - "node_modules/superagent/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/superagent/node_modules/form-data": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", - "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", + "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, - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - }, "engines": { - "node": ">= 0.12" - } - }, - "node_modules/superagent/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true - }, - "node_modules/superagent/node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "dev": true, - "bin": { - "mime": "cli.js" + "node": ">=8" }, - "engines": { - "node": ">=4" - } - }, - "node_modules/superagent/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==", - "dev": true - }, - "node_modules/superagent/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "dev": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/superagent/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/superagent/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "node_modules/superagent": { + "version": "8.1.2", + "resolved": "https://registry.npmjs.org/superagent/-/superagent-8.1.2.tgz", + "integrity": "sha512-6WTxW1EB6yCxV5VFOIPQruWGHqc3yI7hEmZK6h+pyk69Lk/Ut7rLUY6W/ONF2MjBuGjvmMiIpsrVJ2vjrHlslA==", + "deprecated": "Please upgrade to v9.0.0+ as we have fixed a public vulnerability with formidable dependency. Note that v9.0.0+ requires Node.js v14.18.0+. See https://github.com/ladjs/superagent/pull/1800 for insight. This project is supported and maintained by the team at Forward Email @ https://forwardemail.net", "dev": true, "dependencies": { - "safe-buffer": "~5.1.0" + "component-emitter": "^1.3.0", + "cookiejar": "^2.1.4", + "debug": "^4.3.4", + "fast-safe-stringify": "^2.1.1", + "form-data": "^4.0.0", + "formidable": "^2.1.2", + "methods": "^1.1.2", + "mime": "2.6.0", + "qs": "^6.11.0", + "semver": "^7.3.8" + }, + "engines": { + "node": ">=6.4.0 <13 || >=14" } }, - "node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "node_modules/superagent/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, "dependencies": { - "has-flag": "^3.0.0" + "ms": "2.1.2" }, "engines": { - "node": ">=4" + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/supports-hyperlinks": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz", - "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==", + "node_modules/superagent/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": { - "has-flag": "^4.0.0", - "supports-color": "^7.0.0" + "dezalgo": "^1.0.4", + "hexoid": "^1.0.0", + "once": "^1.4.0", + "qs": "^6.11.0" }, - "engines": { - "node": ">=8" + "funding": { + "url": "https://ko-fi.com/tunnckoCore/commissions" } }, - "node_modules/supports-hyperlinks/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==", + "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": ">=8" + "node": ">=4.0.0" + } + }, + "node_modules/superagent/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/superagent/node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" } }, - "node_modules/supports-hyperlinks/node_modules/supports-color": { + "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==", @@ -16778,16 +14179,16 @@ } }, "node_modules/swagger-ui-dist": { - "version": "5.11.9", - "resolved": "https://registry.npmjs.org/swagger-ui-dist/-/swagger-ui-dist-5.11.9.tgz", - "integrity": "sha512-e1x1x92wwjBWTjM+P9aH6qRurjFol/y5eCN0U2pK/nrS5mKxZuTsZUqdYya1W+JMom8fbw6/X8Ymp99lHRjBfw==" + "version": "5.17.10", + "resolved": "https://registry.npmjs.org/swagger-ui-dist/-/swagger-ui-dist-5.17.10.tgz", + "integrity": "sha512-fp8SYeEK216KS1/noDvursUOGojEbkvtckOpOmAGZUjlx/ma7VLD2PLQwyermjlzFrlHI5uCt1V+M1C3qBvRyQ==" }, "node_modules/swagger-ui-express": { - "version": "4.6.3", - "resolved": "https://registry.npmjs.org/swagger-ui-express/-/swagger-ui-express-4.6.3.tgz", - "integrity": "sha512-CDje4PndhTD2HkgyKH3pab+LKspDeB/NhPN2OF1j+piYIamQqBYwAXWESOT1Yju2xFg51bRW9sUng2WxDjzArw==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/swagger-ui-express/-/swagger-ui-express-5.0.0.tgz", + "integrity": "sha512-tsU9tODVvhyfkNSvf03E6FAk+z+5cU3lXAzMy6Pv4av2Gt2xA0++fogwC4qo19XuFf6hdxevPuVCSKFuMHJhFA==", "dependencies": { - "swagger-ui-dist": ">=4.11.0" + "swagger-ui-dist": ">=5.0.0" }, "engines": { "node": ">= v0.10.32" @@ -16806,80 +14207,176 @@ } }, "node_modules/table": { - "version": "5.4.6", - "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", - "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/table/-/table-4.0.3.tgz", + "integrity": "sha512-S7rnFITmBH1EnyKcvxBh1LjYeQMmnZtCXSEbHcH6S0NoKit24ZuFO/T1vDcLdYsLQkM188PVVhQmzKIuThNkKg==", "dev": true, "dependencies": { - "ajv": "^6.10.2", - "lodash": "^4.17.14", - "slice-ansi": "^2.1.0", - "string-width": "^3.0.0" + "ajv": "^6.0.1", + "ajv-keywords": "^3.0.0", + "chalk": "^2.1.0", + "lodash": "^4.17.4", + "slice-ansi": "1.0.0", + "string-width": "^2.1.1" }, "engines": { - "node": ">=6.0.0" + "node": ">=4.0.0" } }, "node_modules/table-layout": { - "version": "0.4.5", - "resolved": "https://registry.npmjs.org/table-layout/-/table-layout-0.4.5.tgz", - "integrity": "sha512-zTvf0mcggrGeTe/2jJ6ECkJHAQPIYEwDoqsiqBjI24mvRmQbInK5jq33fyypaCBxX08hMkfmdOqj6haT33EqWw==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/table-layout/-/table-layout-3.0.2.tgz", + "integrity": "sha512-rpyNZYRw+/C+dYkcQ3Pr+rLxW4CfHpXjPDnG7lYhdRoUcZTUt+KEsX+94RGp/aVp/MQU35JCITv2T/beY4m+hw==", "dependencies": { - "array-back": "^2.0.0", - "deep-extend": "~0.6.0", - "lodash.padend": "^4.6.1", - "typical": "^2.6.1", - "wordwrapjs": "^3.0.0" + "@75lb/deep-merge": "^1.1.1", + "array-back": "^6.2.2", + "command-line-args": "^5.2.1", + "command-line-usage": "^7.0.0", + "stream-read-all": "^3.0.1", + "typical": "^7.1.1", + "wordwrapjs": "^5.1.0" + }, + "bin": { + "table-layout": "bin/cli.js" }, "engines": { - "node": ">=4.0.0" + "node": ">=12.17" + } + }, + "node_modules/table-layout/node_modules/array-back": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-6.2.2.tgz", + "integrity": "sha512-gUAZ7HPyb4SJczXAMUXMGAvI976JoK3qEx9v1FTmeYuJj0IBiaKttG1ydtGKdkfqWkIkouke7nG8ufGy77+Cvw==", + "engines": { + "node": ">=12.17" + } + }, + "node_modules/table-layout/node_modules/typical": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/typical/-/typical-7.1.1.tgz", + "integrity": "sha512-T+tKVNs6Wu7IWiAce5BgMd7OZfNYUndHwc5MknN+UHOudi7sGZzuHdCadllRuqJ3fPtgFtIH9+lt9qRv6lmpfA==", + "engines": { + "node": ">=12.17" } }, "node_modules/table/node_modules/ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", "dev": true, "engines": { - "node": ">=6" + "node": ">=4" } }, - "node_modules/table/node_modules/emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "node_modules/table/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/table/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/table/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/table/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/table/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/table/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/table/node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/table/node_modules/string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "dev": true, "dependencies": { - "emoji-regex": "^7.0.1", "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" + "strip-ansi": "^4.0.0" }, "engines": { - "node": ">=6" + "node": ">=4" } }, "node_modules/table/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", "dev": true, "dependencies": { - "ansi-regex": "^4.1.0" + "ansi-regex": "^3.0.0" }, "engines": { - "node": ">=6" + "node": ">=4" + } + }, + "node_modules/table/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/tar": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.0.tgz", - "integrity": "sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", + "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", "dependencies": { "chownr": "^2.0.0", "fs-minipass": "^2.0.0", @@ -16944,10 +14441,24 @@ "safe-buffer": "~5.2.0" } }, - "node_modules/tar/node_modules/minipass": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", - "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "node_modules/tar/node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/tar/node_modules/fs-minipass/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dependencies": { + "yallist": "^4.0.0" + }, "engines": { "node": ">=8" } @@ -17002,54 +14513,6 @@ "integrity": "sha512-j1llvWVFyEn/6XIFDfX5LAU43DXe0GCt3NfXDwJ8XpRRMkS+i50SAkonAONBy+vxwPFBd50MFU8a2uj8R/ccLg==", "dev": true }, - "node_modules/temp-dir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz", - "integrity": "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==", - "engines": { - "node": ">=8" - } - }, - "node_modules/tempy": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tempy/-/tempy-1.0.1.tgz", - "integrity": "sha512-biM9brNqxSc04Ee71hzFbryD11nX7VPhQQY32AdDmjFvodsRFz/3ufeoTZ6uYkRFfGo188tENcASNs3vTdsM0w==", - "dependencies": { - "del": "^6.0.0", - "is-stream": "^2.0.0", - "temp-dir": "^2.0.0", - "type-fest": "^0.16.0", - "unique-string": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/tempy/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==", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/tempy/node_modules/type-fest": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz", - "integrity": "sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/test-exclude": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", @@ -17064,24 +14527,46 @@ "node": ">=8" } }, - "node_modules/test-value": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/test-value/-/test-value-3.0.0.tgz", - "integrity": "sha512-sVACdAWcZkSU9x7AOmJo5TqE+GyNJknHaHsMrR6ZnhjVlVN9Yx6FjHrsKZ3BjIpPCT68zYesPWkakrNupwfOTQ==", + "node_modules/test-exclude/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/test-exclude/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/test-exclude/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": { - "array-back": "^2.0.0", - "typical": "^2.6.1" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/text-extensions": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-1.9.0.tgz", - "integrity": "sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==", - "engines": { - "node": ">=0.10" + "node": "*" } }, "node_modules/text-table": { @@ -17090,39 +14575,19 @@ "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", "dev": true }, - "node_modules/through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" - }, - "node_modules/through2": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", - "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", - "dependencies": { - "readable-stream": "3" - } - }, - "node_modules/through2/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==", + "node_modules/thread-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/thread-stream/-/thread-stream-3.0.0.tgz", + "integrity": "sha512-oUIFjxaUT6knhPtWgDMc29zF1FcSl0yXpapkyrQrCGEfYA2HUZXCilUtKyYIv6HkCyqSPAMkY+EG0GbyIrNDQg==", "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" + "real-require": "^0.2.0" } }, - "node_modules/through2/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/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "dev": true }, "node_modules/timers-ext": { "version": "0.1.7", @@ -17179,49 +14644,45 @@ "resolved": "https://registry.npmjs.org/toposort-class/-/toposort-class-1.0.1.tgz", "integrity": "sha512-OsLcGGbYF3rMjPUf8oKktyvCiUxSbqMMS39m33MAjLTC1DVIH6x3WSt63/M77ihI09+Sdfk1AXvfhCEeUmC7mg==" }, - "node_modules/tough-cookie": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-3.0.1.tgz", - "integrity": "sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg==", - "dev": true, + "node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "optional": true + }, + "node_modules/tuf-js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/tuf-js/-/tuf-js-1.1.7.tgz", + "integrity": "sha512-i3P9Kgw3ytjELUfpuKVDNBJvk4u5bXL6gskv572mcevPbSKCV3zt3djhmlEQ65yERjIbOSncy7U4cQJaB1CBCg==", "dependencies": { - "ip-regex": "^2.1.0", - "psl": "^1.1.28", - "punycode": "^2.1.1" + "@tufjs/models": "1.0.4", + "debug": "^4.3.4", + "make-fetch-happen": "^11.1.1" }, "engines": { - "node": ">=6" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" - }, - "node_modules/traverse": { - "version": "0.6.8", - "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.8.tgz", - "integrity": "sha512-aXJDbk6SnumuaZSANd21XAo15ucCDE38H4fkqiGsc3MhCK+wOlZvLP9cB/TvpHT0mOyWgC4Z8EwRlzqYSUzdsA==", - "engines": { - "node": ">= 0.4" + "node_modules/tuf-js/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" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/trim-newlines": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", - "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", "engines": { - "node": ">=8" + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "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==", - "dev": true + "node_modules/tuf-js/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/tunnel-agent": { "version": "0.6.0", @@ -17237,7 +14698,8 @@ "node_modules/tweetnacl": { "version": "0.14.5", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==" + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", + "dev": true }, "node_modules/type": { "version": "2.7.2", @@ -17246,12 +14708,12 @@ "dev": true }, "node_modules/type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", + "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.1.2" + "prelude-ls": "^1.2.1" }, "engines": { "node": ">= 0.8.0" @@ -17270,6 +14732,7 @@ "version": "0.8.1", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true, "engines": { "node": ">=8" } @@ -17340,9 +14803,9 @@ } }, "node_modules/typed-array-length": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.5.tgz", - "integrity": "sha512-yMi0PlwuznKHxKmcpoOdeLwxBoVPkqZxd7q2FgMkmD3bNwvF5VW0+UlUQ1k1vmktTu4Yu13Q0RIxEP8+B+wloA==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", + "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", "dev": true, "dependencies": { "call-bind": "^1.0.7", @@ -17368,20 +14831,23 @@ "version": "3.1.5", "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", - "dev": true, "dependencies": { "is-typedarray": "^1.0.0" } }, "node_modules/typical": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/typical/-/typical-2.6.1.tgz", - "integrity": "sha512-ofhi8kjIje6npGozTip9Fr8iecmYfEbS06i0JnIg+rh51KakryWF4+jX8lLKZVhy6N+ID45WYSFCxPOdTWCzNg==" + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-4.0.0.tgz", + "integrity": "sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==", + "engines": { + "node": ">=8" + } }, "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==", + "dev": true, "optional": true, "bin": { "uglifyjs": "bin/uglifyjs" @@ -17402,15 +14868,29 @@ } }, "node_modules/umzug": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/umzug/-/umzug-2.2.0.tgz", - "integrity": "sha512-xZLW76ax70pND9bx3wqwb8zqkFGzZIK8dIHD9WdNy/CrNfjWcwQgQkGCuUqcuwEBvUm+g07z+qWvY+pxDmMEEw==", + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/umzug/-/umzug-3.8.0.tgz", + "integrity": "sha512-FRBvdZxllW3eUzsqG3CIfgOVChUONrKNZozNOJfvmcfBn5pMKcJjICuMMEsDLHYa/aqd7a2NtXfYEG86XHe1lQ==", "dependencies": { - "babel-runtime": "^6.23.0", - "bluebird": "^3.5.3" + "@rushstack/ts-command-line": "^4.12.2", + "emittery": "^0.13.0", + "fast-glob": "^3.3.2", + "pony-cause": "^2.1.4", + "type-fest": "^4.0.0" }, "engines": { - "node": ">=6.0.0" + "node": ">=12" + } + }, + "node_modules/umzug/node_modules/type-fest": { + "version": "4.18.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.18.2.tgz", + "integrity": "sha512-+suCYpfJLAe4OXS6+PPXjW3urOS4IoP9waSiLuXfLgqZODKw/aWwASvzqE886wA0kQgGy0mIWyhd87VpqIy6Xg==", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/unbox-primitive": { @@ -17429,9 +14909,9 @@ } }, "node_modules/underscore": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.1.tgz", - "integrity": "sha512-hzSoAVtJF+3ZtiFX0VgfFPHEDRm7Y/QPjGyNo4TVdnDTdft3tr8hEkD25a1jC+TjTuE7tkHGKkhwCgs9dgBB2g==" + "version": "1.13.6", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.6.tgz", + "integrity": "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==" }, "node_modules/undici-types": { "version": "5.26.5", @@ -17445,45 +14925,48 @@ "dev": true }, "node_modules/unique-filename": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", - "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", - "optional": true, + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", + "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==", "dependencies": { - "unique-slug": "^2.0.0" + "unique-slug": "^4.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/unique-slug": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", - "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", - "optional": true, + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz", + "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==", "dependencies": { "imurmurhash": "^0.1.4" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/unique-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", - "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-3.0.0.tgz", + "integrity": "sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==", "dependencies": { - "crypto-random-string": "^2.0.0" + "crypto-random-string": "^4.0.0" }, "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/universal-user-agent": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.1.tgz", - "integrity": "sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ==" - }, "node_modules/universalify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", + "dev": true, "engines": { - "node": ">= 10.0.0" + "node": ">= 4.0.0" } }, "node_modules/unpipe": { @@ -17494,10 +14977,18 @@ "node": ">= 0.8" } }, + "node_modules/untildify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", + "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", + "engines": { + "node": ">=8" + } + }, "node_modules/update-browserslist-db": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", - "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.16.tgz", + "integrity": "sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==", "dev": true, "funding": [ { @@ -17514,8 +15005,8 @@ } ], "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" + "escalade": "^3.1.2", + "picocolors": "^1.0.1" }, "bin": { "update-browserslist-db": "cli.js" @@ -17524,18 +15015,62 @@ "browserslist": ">= 4.21.0" } }, + "node_modules/update-notifier": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-6.0.2.tgz", + "integrity": "sha512-EDxhTEVPZZRLWYcJ4ZXjGFN0oP7qYvbXWzEgRm/Yql4dHX5wDbvh89YHP6PK1lzZJYrMtXUuZZz8XGK+U6U1og==", + "dependencies": { + "boxen": "^7.0.0", + "chalk": "^5.0.1", + "configstore": "^6.0.0", + "has-yarn": "^3.0.0", + "import-lazy": "^4.0.0", + "is-ci": "^3.0.1", + "is-installed-globally": "^0.4.0", + "is-npm": "^6.0.0", + "is-yarn-global": "^0.4.0", + "latest-version": "^7.0.0", + "pupa": "^3.1.0", + "semver": "^7.3.7", + "semver-diff": "^4.0.0", + "xdg-basedir": "^5.1.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/yeoman/update-notifier?sponsor=1" + } + }, + "node_modules/update-notifier/node_modules/chalk": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, "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/url-join": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz", - "integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==" + "node_modules/url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "dev": true, + "dependencies": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } }, "node_modules/util": { "version": "0.10.4", @@ -17564,30 +15099,29 @@ } }, "node_modules/uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", "bin": { - "uuid": "bin/uuid" + "uuid": "dist/bin/uuid" } }, "node_modules/uvm": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/uvm/-/uvm-2.0.2.tgz", - "integrity": "sha512-Ra+aPiS5GXAbwXmyNExqdS42sTqmmx4XWEDF8uJlsTfOkKf9Rd9xNgav1Yckv4HfVEZg4iOFODWHFYuJ+9Fzfg==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/uvm/-/uvm-2.1.1.tgz", + "integrity": "sha512-BZ5w8adTpNNr+zczOBRpaX/hH8UPKAf7fmCnidrcsqt3bn8KT9bDIfuS7hgRU9RXgiN01su2pwysBONY6w8W5w==", "dev": true, "dependencies": { - "flatted": "3.1.1" + "flatted": "3.2.6" }, "engines": { "node": ">=10" } }, "node_modules/uvm/node_modules/flatted": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.1.1.tgz", - "integrity": "sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA==", + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.6.tgz", + "integrity": "sha512-0sQoMh9s0BYsm+12Huy/rkKxVu4R1+r96YX5cG44rHV0pQ6iC3Q+mkoMFaGWObMFYQxCVT+ssG1ksneA2MI9KQ==", "dev": true }, "node_modules/validate-npm-package-license": { @@ -17599,10 +15133,18 @@ "spdx-expression-parse": "^3.0.0" } }, + "node_modules/validate-npm-package-name": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.1.tgz", + "integrity": "sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, "node_modules/validator": { - "version": "13.11.0", - "resolved": "https://registry.npmjs.org/validator/-/validator-13.11.0.tgz", - "integrity": "sha512-Ii+sehpSfZy+At5nPdnyMhx78fEoPDkR2XW/zimHEL3MyGJQOCQ7WeP20jPYRz7ZCpcKLB21NxuXHF3bxjStBQ==", + "version": "13.12.0", + "resolved": "https://registry.npmjs.org/validator/-/validator-13.12.0.tgz", + "integrity": "sha512-c1Q0mCiPlgdTVVVIJIrBuxNicYE+t/7oKeI9MWLj3fh/uq2Pxh/3eeWbVZ4OcGW1TUf53At0njHw5SMdA3tmMg==", "engines": { "node": ">= 0.10" } @@ -17619,6 +15161,7 @@ "version": "1.10.0", "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", + "dev": true, "engines": [ "node >=0.6.0" ], @@ -17631,31 +15174,21 @@ "node_modules/verror/node_modules/core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==" - }, - "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" - } + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", + "dev": true }, "node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dependencies": { "isexe": "^2.0.0" }, "bin": { - "which": "bin/which" + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" } }, "node_modules/which-boxed-primitive": { @@ -17681,16 +15214,16 @@ "dev": true }, "node_modules/which-typed-array": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.14.tgz", - "integrity": "sha512-VnXFiIW8yNn9kIHN88xvZ4yOWchftKDsRJ8fEPacX/wl1lOvBrhsJ/OeJCXq7B0AaijRuqgzSKalJoPk+D8MPg==", + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", + "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", "dev": true, "dependencies": { - "available-typed-arrays": "^1.0.6", - "call-bind": "^1.0.5", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", "for-each": "^0.3.3", "gopd": "^1.0.1", - "has-tostringtag": "^1.0.1" + "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -17703,11 +15236,70 @@ "version": "1.1.5", "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", - "optional": true, "dependencies": { "string-width": "^1.0.2 || 2 || 3 || 4" } }, + "node_modules/widest-line": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-4.0.1.tgz", + "integrity": "sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==", + "dependencies": { + "string-width": "^5.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/widest-line/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/widest-line/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" + }, + "node_modules/widest-line/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/widest-line/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, "node_modules/wkx": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/wkx/-/wkx-0.5.0.tgz", @@ -17717,9 +15309,9 @@ } }, "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==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", "dev": true, "engines": { "node": ">=0.10.0" @@ -17728,37 +15320,34 @@ "node_modules/wordwrap": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==" + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", + "dev": true }, "node_modules/wordwrapjs": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-3.0.0.tgz", - "integrity": "sha512-mO8XtqyPvykVCsrwj5MlOVWvSnCdT+C+QVbm6blradR7JExAhbkZ7hZ9A+9NUtwzSqrlUo9a67ws0EiILrvRpw==", - "dependencies": { - "reduce-flatten": "^1.0.1", - "typical": "^2.6.1" - }, + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-5.1.0.tgz", + "integrity": "sha512-JNjcULU2e4KJwUNv6CHgI46UvDGitb6dGryHajXTDiLgg1/RiGoPSDw4kZfYnwGtEXf2ZMeIewDQgFGzkCB2Sg==", "engines": { - "node": ">=4.0.0" + "node": ">=12.17" } }, "node_modules/workerpool": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.0.tgz", - "integrity": "sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", + "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==", "dev": true }, "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==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" }, "engines": { - "node": ">=10" + "node": ">=12" }, "funding": { "url": "https://github.com/chalk/wrap-ansi?sponsor=1" @@ -17769,7 +15358,6 @@ "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", @@ -17782,151 +15370,61 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/wrap-ansi-cjs/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/wrap-ansi-cjs/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" - }, + "node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", "engines": { - "node": ">=8" + "node": ">=12" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/wrap-ansi-cjs/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/wrap-ansi-cjs/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/wrap-ansi-cjs/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/wrap-ansi-cjs/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/wrap-ansi-cjs/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/wrap-ansi/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==", - "engines": { - "node": ">=8" + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, "node_modules/wrap-ansi/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==", - "dependencies": { - "color-convert": "^2.0.1" - }, + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", "engines": { - "node": ">=8" + "node": ">=12" }, "funding": { "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/wrap-ansi/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==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/wrap-ansi/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==" - }, - "node_modules/wrap-ansi/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==", - "engines": { - "node": ">=8" - } + "node_modules/wrap-ansi/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" }, "node_modules/wrap-ansi/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==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" }, "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/wrap-ansi/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==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", "dependencies": { - "ansi-regex": "^5.0.1" + "ansi-regex": "^6.0.1" }, "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, "node_modules/wrappy": { @@ -17935,22 +15433,21 @@ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, "node_modules/write": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", - "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", + "integrity": "sha512-CJ17OoULEKXpA5pef3qLj5AxTJ6mSt7g84he2WIskKwqFO4T97d5V7Tadl0DYDk7qyUOQD5WlUlOMChaYrhxeA==", "dev": true, "dependencies": { "mkdirp": "^0.5.1" }, "engines": { - "node": ">=4" + "node": ">=0.10.0" } }, "node_modules/write-file-atomic": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", - "dev": true, "dependencies": { "imurmurhash": "^0.1.4", "is-typedarray": "^1.0.0", @@ -17958,12 +15455,27 @@ "typedarray-to-buffer": "^3.1.5" } }, - "node_modules/x-xss-protection": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/x-xss-protection/-/x-xss-protection-1.3.0.tgz", - "integrity": "sha512-kpyBI9TlVipZO4diReZMAHWtS0MMa/7Kgx8hwG/EuZLiA6sg4Ah/4TRdASHhRRN3boobzcYgFRUFSgHRge6Qhg==", + "node_modules/write/node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/xdg-basedir": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-5.1.0.tgz", + "integrity": "sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ==", "engines": { - "node": ">=4.0.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/xml": { @@ -18024,14 +15536,6 @@ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, - "node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "engines": { - "node": ">= 6" - } - }, "node_modules/yargs": { "version": "16.2.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", @@ -18096,55 +15600,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/yargs-unparser/node_modules/is-plain-obj": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", - "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/yargs/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==", - "engines": { - "node": ">=8" - } - }, - "node_modules/yargs/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==", - "engines": { - "node": ">=8" - } - }, - "node_modules/yargs/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==", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/yargs/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==", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/yauzl": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", @@ -18159,13 +15614,40 @@ "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" } + }, + "node_modules/z-schema": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/z-schema/-/z-schema-5.0.5.tgz", + "integrity": "sha512-D7eujBWkLa3p2sIpJA0d1pr7es+a7m0vFAnZLlCEKq/Ij2k0MLi9Br2UPxoxdYystm5K1yeBGzub0FlYUEWj2Q==", + "dependencies": { + "lodash.get": "^4.4.2", + "lodash.isequal": "^4.5.0", + "validator": "^13.7.0" + }, + "bin": { + "z-schema": "bin/z-schema" + }, + "engines": { + "node": ">=8.0.0" + }, + "optionalDependencies": { + "commander": "^9.4.1" + } + }, + "node_modules/z-schema/node_modules/commander": { + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", + "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", + "optional": true, + "engines": { + "node": "^12.20.0 || >=14" + } } } } diff --git a/package.json b/package.json index 5a1d07603..1494bc4ce 100644 --- a/package.json +++ b/package.json @@ -40,7 +40,6 @@ "lint": "npm run standard", "standard": "./node_modules/.bin/standard", "snyk": "./node_modules/.bin/snyk monitor", - "semantic-release": "semantic-release", "pretest": "npm run lint", "test": "node scripts/run-test.js test", "prepostman_test": "npm run lint", @@ -58,69 +57,68 @@ }, "dependencies": { "@datasance/ecn-viewer": "0.1.5", - "axios": "1.0.0-alpha.1", - "body-parser": "^1.20.1", + "axios": "1.6.8", + "body-parser": "^1.20.2", "child_process": "1.0.2", - "command-line-args": "5.0.2", - "command-line-usage": "5.0.5", + "command-line-args": "5.2.1", + "command-line-usage": "7.0.1", "concurrent-queue": "7.0.2", - "cookie-parser": "1.4.3", + "cookie-parser": "1.4.6", "cors": "2.8.5", "daemonize2": "0.4.2", - "ejs": "3.1.7", - "express": "4.17.3", + "ejs": "3.1.10", + "express": "4.19.2", "express-session": "1.18.0", - "formidable": "1.2.1", + "formidable": "3.5.1", "ftp": "0.3.10", - "helmet": "3.21.2", + "globally": "^0.0.0", + "helmet": "7.1.0", "https": "1.0.0", "is-elevated": "3.0.0", - "js-yaml": "3.14.1", - "jsonschema": "1.2.5", - "keycloak-connect": "24.0.1" , - "minimatch": "3.1.2", - "moment": "2.29.4", - "moment-timezone": "0.5.38", - "morgan": "1.9.1", + "js-yaml": "4.1.0", + "jsonschema": "1.4.1", + "keycloak-connect": "24.0.4", + "minimatch": "9.0.4", + "moment": "2.30.1", + "moment-timezone": "0.5.45", + "morgan": "1.10.0", "multer": "1.4.5-lts.1", - "mysql2": "3.2.2", - "nconf": "0.12.0", - "os": "0.1.1", + "mysql2": "3.9.7", + "nconf": "0.12.1", + "node-fetch-npm": "^2.0.4", + "npm-check-updates": "^16.14.20", + "os": "0.1.2", "path": "0.12.7", - "pino": "6.6.1", - "pino-std-serializers": "2.5.0", + "pino": "9.1.0", + "pino-std-serializers": "7.0.0", "portscanner": "2.2.0", - "qs": "6.10.3", - "request": "2.88.0", - "request-promise": "4.2.4", - "retry-as-promised": "3.1.0", - "semantic-release": "19.0.3", - "semver": "5.6.0", - "sequelize": "6.29.0", - "sqlite3": "^5.1.5", + "qs": "6.12.1", + "retry-as-promised": "7.0.4", + "sequelize": "6.37.3", + "sqlite3": "^5.1.7", "string-format": "2.0.0", - "swagger-ui-express": "^4.6.2", - "umzug": "2.2.0", - "underscore": "1.13.1", + "swagger-ui-express": "^5.0.0", + "umzug": "3.8.0", + "underscore": "1.13.6", "xss-clean": "0.1.1" }, "devDependencies": { - "acorn": "7.1.1", - "bdd-lazy-var": "2.5.2", - "chai": "4.2.0", - "chai-as-promised": "7.1.1", - "chai-http": "4.2.1", - "eslint": "5.14.1", - "eslint-config-google": "0.12.0", - "mocha": "9.2.2", - "mocha-junit-reporter": "2.0.0", - "newman": "5.3.2", + "acorn": "8.11.3", + "bdd-lazy-var": "2.6.1", + "chai": "5.1.1", + "chai-as-promised": "7.1.2", + "chai-http": "4.4.0", + "eslint": "9.2.0", + "eslint-config-google": "0.14.0", + "mocha": "10.4.0", + "mocha-junit-reporter": "2.2.1", + "newman": "6.1.2", "newman-reporter-junitfull": "1.1.1", - "nyc": "15.0.0", - "sequelize-cli": "5.5.0", - "sinon": "7.5.0", - "sinon-chai": "3.3.0", - "snyk": "^1.1064.0", + "nyc": "15.1.0", + "sequelize-cli": "6.6.2", + "sinon": "17.0.1", + "sinon-chai": "3.7.0", + "snyk": "^1.1291.0", "standard": "12.0.1" }, "files": [ diff --git a/scripts/postinstall.js b/scripts/postinstall.js index 8acb26bec..9884ab3b2 100644 --- a/scripts/postinstall.js +++ b/scripts/postinstall.js @@ -14,7 +14,7 @@ // const sqlite3 = require('sqlite3') // .verbose() //use verbose in dev to get stack traces const execSync = require('child_process').execSync const fs = require('fs') -const semver = require('semver') +const compareVersions = require('compare-versions') const config = require('../src/config') const currentVersion = require('../package').version @@ -34,16 +34,16 @@ function postinstall () { console.log(`previous version - ${prevVersion}`) console.log(`new version - ${currentVersion}`) - if (semver.satisfies(prevVersion, '<=1.0.0')) { + if (compareVersions(prevVersion, '<=1.0.0')) { console.log('upgrading from version <= 1.0.0 :') insertSeeds() } - if (semver.satisfies(prevVersion, '<=1.0.30')) { + if (compareVersions(prevVersion, '<=1.0.30')) { console.log('upgrading from version <= 1.0.30 :') updateEncryptionMethod() } - if (semver.satisfies(prevVersion, '<=1.0.37')) { + if (compareVersions(prevVersion, '<=1.0.37')) { console.log('upgrading from version <= 1.0.37 :') updateLogName() } @@ -56,8 +56,8 @@ function postinstall () { // init db const options = { env: { - 'NODE_ENV': 'production', - 'PATH': process.env.PATH + NODE_ENV: 'production', + PATH: process.env.PATH }, stdio: [process.stdin, process.stdout, process.stderr] } @@ -184,5 +184,5 @@ function updateLogName () { } module.exports = { - postinstall: postinstall + postinstall } diff --git a/src/main.js b/src/main.js index c79b59e2d..3bbd36938 100644 --- a/src/main.js +++ b/src/main.js @@ -17,7 +17,7 @@ const Cli = require('./cli') const daemon = require('./daemon') const config = require('./config') const isElevated = require('is-elevated') -const request = require('request-promise') +const fetch = require('node-fetch-npm') const isHTTPS = () => { const sslKey = config.get('Server:SslKey', '') @@ -27,10 +27,13 @@ const isHTTPS = () => { return !devMode && sslKey && sslCert && intermedKey } -const getJSONFromURL = async (uri) => request({ - uri, - json: true -}) +const getJSONFromURL = async (uri) => { + const response = await fetch(uri) + if (!response.ok) { + throw new Error(`HTTP error! Status: ${response.status}`) + } + return response.json() +} const apiPort = +(config.get('Server:Port', 51121)) const viewerPort = +(process.env.VIEWER_PORT || config.get('Viewer:Port', 80)) From 03d1ec3474767ba87ee5e1247a37b30364f245f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Tue, 21 May 2024 19:01:45 +0300 Subject: [PATCH 086/146] worflow edited --- .github/workflows/ci.yaml | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index b640804d1..40e5b9509 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -23,15 +23,7 @@ env: jobs: Build: - runs-on: ubuntu-20.04 - strategy: - matrix: - platform: - - linux/amd64 - - linux/386 - - linux/arm/v6 - - linux/arm/v7 - - linux/arm64 + runs-on: ubuntu-20.04 permissions: actions: write checks: write @@ -48,10 +40,10 @@ jobs: statuses: write name: Preflight steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - uses: actions/setup-node@v3 with: - node-version: 18 + node-version: 20 - name: Replace values shell: bash env: @@ -84,10 +76,10 @@ jobs: statuses: write name: Publish Controller steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - uses: actions/setup-node@v3 with: - node-version: 18 + node-version: 20 - name: Replace values shell: bash env: @@ -132,6 +124,12 @@ jobs: VERSION=${{ steps.previoustag.outputs.tag }} echo "VERSION=${VERSION:1}-${{ github.run_number }}" >> "${GITHUB_OUTPUT}" fi + + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + - name: Login to Github Container Registry uses: docker/login-action@v2 @@ -145,6 +143,8 @@ jobs: id: build_push_ghcr with: file: Dockerfile.dev + context: . + platforms: linux/amd64, linux/386, linux/arm/v7, linux/arm64 push: true outputs: type=image,name=target,annotation-index.org.opencontainers.image.description=Controller build-args: GITHUB_TOKEN=${{ secrets.PAT }} From cb7ee0e7a82e00b148745eaa50e7a98cd0c74acc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Tue, 21 May 2024 19:05:12 +0300 Subject: [PATCH 087/146] workflow updated --- .github/workflows/ci.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 40e5b9509..a8a520db2 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -51,7 +51,7 @@ jobs: run: | sed -i.back "s|PAT|${PAT}|g" .npmrc - run: npm config set @datasance:registry https://npm.pkg.github.com/ - - run: npm install + - run: npm install --build-from-source --force - run: npm run standard - run: | npm i -g better-npm-audit @@ -124,7 +124,7 @@ jobs: VERSION=${{ steps.previoustag.outputs.tag }} echo "VERSION=${VERSION:1}-${{ github.run_number }}" >> "${GITHUB_OUTPUT}" fi - + - name: Set up QEMU uses: docker/setup-qemu-action@v3 - name: Set up Docker Buildx From 3ce2f1defe75a9d824074043676528c33e9d53a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Tue, 21 May 2024 19:08:41 +0300 Subject: [PATCH 088/146] workflow fixed --- .github/workflows/ci.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index a8a520db2..bda3d1620 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -87,7 +87,7 @@ jobs: run: | sed -i.back "s|PAT|${PAT}|g" .npmrc - run: npm config set @datasance:registry https://npm.pkg.github.com/ - - run: npm install + - run: npm install --build-from-source --force - name: npm version id: package-version From 005ce6fe7c82e91787e076e73b3413d01042ddaa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Tue, 21 May 2024 19:21:52 +0300 Subject: [PATCH 089/146] pacakge version updated --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 1494bc4ce..7b35f5e8b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@datasance/iofogcontroller", - "version": "3.1.0", + "version": "3.2.0-beta1", "description": "ioFog Controller project for Eclipse IoFog @ iofog.org \\nCopyright (c) 2023 Datasance Teknoloji A.S.", "main": "./src/main.js", "author": "Emirhan Durmus", From 94acf332ac8701ef1ad5c3355c3292ee7fb8ebfe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Tue, 21 May 2024 19:29:11 +0300 Subject: [PATCH 090/146] buildx platfrom edited on workflow --- .github/workflows/ci.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index bda3d1620..5ef18d545 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -144,7 +144,7 @@ jobs: with: file: Dockerfile.dev context: . - platforms: linux/amd64, linux/386, linux/arm/v7, linux/arm64 + platforms: linux/amd64, linux/arm/v7, linux/arm64 push: true outputs: type=image,name=target,annotation-index.org.opencontainers.image.description=Controller build-args: GITHUB_TOKEN=${{ secrets.PAT }} From 821a7148ef0322828e7d3b0f58c53c8f24a8990a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Tue, 21 May 2024 23:06:32 +0300 Subject: [PATCH 091/146] workflow multi arch platform edited --- .github/workflows/ci.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 5ef18d545..bfd1aa366 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -144,7 +144,7 @@ jobs: with: file: Dockerfile.dev context: . - platforms: linux/amd64, linux/arm/v7, linux/arm64 + platforms: linux/amd64, linux/arm64 push: true outputs: type=image,name=target,annotation-index.org.opencontainers.image.description=Controller build-args: GITHUB_TOKEN=${{ secrets.PAT }} From 89211b4f84d1d5562f84445a9cd0e18a84049e2e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Sat, 25 May 2024 16:16:27 +0300 Subject: [PATCH 092/146] req username info inserted into logger and all keycloak protected endpoints --- package.json | 5 ++- src/logger/index.js | 3 +- src/routes/application.js | 32 ++++++++-------- src/routes/applicationTemplate.js | 32 ++++++++-------- src/routes/catalog.js | 20 +++++----- src/routes/config.js | 12 +++--- src/routes/diagnostics.js | 19 ++++----- src/routes/edgeResource.js | 32 ++++++++-------- src/routes/flow.js | 20 +++++----- src/routes/iofog.js | 44 ++++++++++----------- src/routes/microservices.js | 64 +++++++++++++++---------------- src/routes/registries.js | 12 ++++-- src/routes/router.js | 8 ++-- src/routes/routing.js | 20 +++++----- src/routes/tunnel.js | 6 ++- src/routes/user.js | 4 +- 16 files changed, 171 insertions(+), 162 deletions(-) diff --git a/package.json b/package.json index 7b35f5e8b..682e5a370 100644 --- a/package.json +++ b/package.json @@ -1,13 +1,14 @@ { "name": "@datasance/iofogcontroller", - "version": "3.2.0-beta1", + "version": "3.2.0-beta2", "description": "ioFog Controller project for Eclipse IoFog @ iofog.org \\nCopyright (c) 2023 Datasance Teknoloji A.S.", "main": "./src/main.js", "author": "Emirhan Durmus", "contributors": [ "Emirhan Durmus ", "Oguzhan Herkiloglu ", - "Burak Vural " + "Burak Vural ", + "Alpaslan Doğan " ], "license": "EPL-2.0", "bugs": { diff --git a/src/logger/index.js b/src/logger/index.js index d2a10b0dc..453f83ede 100644 --- a/src/logger/index.js +++ b/src/logger/index.js @@ -53,7 +53,8 @@ const defaultFormat = { { params: log.req.params, query: log.req.query, - body: log.req.body + body: log.req.body, + username: log.req.kauth && log.req.kauth.grant && log.req.kauth.grant.access_token && log.req.kauth.grant.access_token.content && log.req.kauth.grant.access_token.content.preferred_username } ) } diff --git a/src/routes/application.js b/src/routes/application.js index 7d6a800ad..89da63f85 100644 --- a/src/routes/application.js +++ b/src/routes/application.js @@ -37,12 +37,12 @@ module.exports = [ // Add keycloak.protect() middleware to protect the route await keycloak.protect(['SRE', 'Developer', 'Viewer'])(req, res, async () => { const responseObject = await getApplicationsByUserEndPoint(req) - + const user = req.kauth.grant.access_token.content.preferred_username res .status(responseObject.code) .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, user: user, res: responseObject }) }) } }, @@ -70,12 +70,12 @@ module.exports = [ // Add keycloak.protect() middleware to protect the route await keycloak.protect(['SRE', 'Developer'])(req, res, async () => { const responseObject = await createApplicationEndPoint(req) - + const user = req.kauth.grant.access_token.content.preferred_username res .status(responseObject.code) .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, user: user, res: responseObject }) }) } }, @@ -103,12 +103,12 @@ module.exports = [ // Add keycloak.protect() middleware to protect the route await keycloak.protect(['SRE', 'Developer'])(req, res, async () => { const responseObject = await createApplicationEndPoint(req) - + const user = req.kauth.grant.access_token.content.preferred_username res .status(responseObject.code) .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, user: user, res: responseObject }) }) } }, @@ -135,12 +135,12 @@ module.exports = [ // Add keycloak.protect() middleware to protect the route await keycloak.protect(['SRE', 'Developer', 'Viewer'])(req, res, async () => { const responseObject = await getApplicationEndPoint(req) - + const user = req.kauth.grant.access_token.content.preferred_username res .status(responseObject.code) .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, user: user, res: responseObject }) return null }) } @@ -173,12 +173,12 @@ module.exports = [ // Add keycloak.protect() middleware to protect the route await keycloak.protect(['SRE', 'Developer'])(req, res, async () => { const responseObject = await updateApplicationEndPoint(req) - + const user = req.kauth.grant.access_token.content.preferred_username res .status(responseObject.code) .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, user: user, res: responseObject }) }) } }, @@ -210,12 +210,12 @@ module.exports = [ // Add keycloak.protect() middleware to protect the route await keycloak.protect(['SRE', 'Developer'])(req, res, async () => { const responseObject = await updateApplicationEndPoint(req) - + const user = req.kauth.grant.access_token.content.preferred_username res .status(responseObject.code) .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, user: user, res: responseObject }) }) } }, @@ -247,12 +247,12 @@ module.exports = [ // Add keycloak.protect() middleware to protect the route await keycloak.protect(['SRE', 'Developer'])(req, res, async () => { const responseObject = await updateApplicationEndPoint(req) - + const user = req.kauth.grant.access_token.content.preferred_username res .status(responseObject.code) .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, user: user, res: responseObject }) }) } }, @@ -279,12 +279,12 @@ module.exports = [ // Add keycloak.protect() middleware to protect the route await keycloak.protect(['SRE', 'Developer'])(req, res, async () => { const responseObject = await deleteApplicationEndPoint(req) - + const user = req.kauth.grant.access_token.content.preferred_username res .status(responseObject.code) .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, user: user, res: responseObject }) }) } } diff --git a/src/routes/applicationTemplate.js b/src/routes/applicationTemplate.js index 830b9074a..59cad674a 100644 --- a/src/routes/applicationTemplate.js +++ b/src/routes/applicationTemplate.js @@ -37,12 +37,12 @@ module.exports = [ // Add keycloak.protect() middleware to protect the route await keycloak.protect(['SRE', 'Developer', 'Viewer'])(req, res, async () => { const responseObject = await getApplicationTemplatesByUserEndPoint(req) - + const user = req.kauth.grant.access_token.content.preferred_username res .status(responseObject.code) .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, user: user, res: responseObject }) }) } }, @@ -69,12 +69,12 @@ module.exports = [ // Add keycloak.protect() middleware to protect the route await keycloak.protect(['SRE', 'Developer'])(req, res, async () => { const responseObject = await createApplicationTemplateEndPoint(req) - + const user = req.kauth.grant.access_token.content.preferred_username res .status(responseObject.code) .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, user: user, res: responseObject }) }) } }, @@ -102,12 +102,12 @@ module.exports = [ // Add keycloak.protect() middleware to protect the route await keycloak.protect(['SRE', 'Developer'])(req, res, async () => { const responseObject = await createApplicationTemplateEndPoint(req) - + const user = req.kauth.grant.access_token.content.preferred_username res .status(responseObject.code) .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, user: user, res: responseObject }) }) } }, @@ -134,12 +134,12 @@ module.exports = [ // Add keycloak.protect() middleware to protect the route await keycloak.protect(['SRE', 'Developer', 'Viewer'])(req, res, async () => { const responseObject = await getApplicationTemplateEndPoint(req) - + const user = req.kauth.grant.access_token.content.preferred_username res .status(responseObject.code) .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, user: user, res: responseObject }) }) } }, @@ -170,12 +170,12 @@ module.exports = [ // Add keycloak.protect() middleware to protect the route await keycloak.protect(['SRE', 'Developer'])(req, res, async () => { const responseObject = await patchApplicationTemplateEndPoint(req) - + const user = req.kauth.grant.access_token.content.preferred_username res .status(responseObject.code) .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, user: user, res: responseObject }) }) } }, @@ -207,12 +207,12 @@ module.exports = [ // Add keycloak.protect() middleware to protect the route await keycloak.protect(['SRE', 'Developer'])(req, res, async () => { const responseObject = await updateApplicationTemplateEndPoint(req) - + const user = req.kauth.grant.access_token.content.preferred_username res .status(responseObject.code) .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, user: user, res: responseObject }) }) } }, @@ -243,12 +243,12 @@ module.exports = [ // Add keycloak.protect() middleware to protect the route await keycloak.protect(['SRE', 'Developer'])(req, res, async () => { const responseObject = await updateApplicationTemplateEndPoint(req) - + const user = req.kauth.grant.access_token.content.preferred_username res .status(responseObject.code) .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, user: user, res: responseObject }) }) } }, @@ -275,12 +275,12 @@ module.exports = [ // Add keycloak.protect() middleware to protect the route await keycloak.protect(['SRE', 'Developer'])(req, res, async () => { const responseObject = await deleteApplicationTemplateEndPoint(req) - + const user = req.kauth.grant.access_token.content.preferred_username res .status(responseObject.code) .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, user: user, res: responseObject }) }) } } diff --git a/src/routes/catalog.js b/src/routes/catalog.js index ce39b0329..3bad359a2 100644 --- a/src/routes/catalog.js +++ b/src/routes/catalog.js @@ -41,12 +41,12 @@ module.exports = [ // Add keycloak.protect() middleware to protect the route await keycloak.protect(['SRE', 'Developer', 'Viewer'])(req, res, async () => { const responseObject = await listCatalogItemsEndPoint(req) - + const user = req.kauth.grant.access_token.content.preferred_username res .status(responseObject.code) .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, user: user, res: responseObject }) }) } }, @@ -82,12 +82,12 @@ module.exports = [ // Add keycloak.protect() middleware to protect the route await keycloak.protect(['SRE', 'Developer'])(req, res, async () => { const responseObject = await createCatalogItemEndpoint(req) - + const user = req.kauth.grant.access_token.content.preferred_username res .status(responseObject.code) .send(responseObject.body) - logger.apiRes({ req, res: responseObject }) + logger.apiRes({ req, user: user, res: responseObject }) }) } }, @@ -118,12 +118,12 @@ module.exports = [ // Add keycloak.protect() middleware to protect the route await keycloak.protect(['SRE', 'Developer', 'Viewer'])(req, res, async () => { const responseObject = await listCatalogItemEndPoint(req) - + const user = req.kauth.grant.access_token.content.preferred_username res .status(responseObject.code) .send(responseObject.body) - logger.apiRes({ req, res: responseObject }) + logger.apiRes({ req, user: user, res: responseObject }) }) } }, @@ -163,12 +163,12 @@ module.exports = [ // Add keycloak.protect() middleware to protect the route for SRE and Developer await keycloak.protect(['SRE', 'Developer'])(req, res, async () => { const responseObject = await updateCatalogItemEndpoint(req) - + const user = req.kauth.grant.access_token.content.preferred_username res .status(responseObject.code) .send(responseObject.body) - logger.apiRes({ req, res: responseObject }) + logger.apiRes({ req, user: user, res: responseObject }) }) } }, @@ -199,12 +199,12 @@ module.exports = [ // Add keycloak.protect() middleware to protect the route await keycloak.protect(['SRE', 'Developer'])(req, res, async () => { const responseObject = await deleteCatalogItemEndPoint(req) - + const user = req.kauth.grant.access_token.content.preferred_username res .status(responseObject.code) .send(responseObject.body) - logger.apiRes({ req, res: responseObject }) + logger.apiRes({ req, user: user, res: responseObject }) }) } } diff --git a/src/routes/config.js b/src/routes/config.js index b0a249d60..b4e2f208b 100644 --- a/src/routes/config.js +++ b/src/routes/config.js @@ -36,12 +36,12 @@ module.exports = [ await keycloak.protect(['SRE', 'Developer', 'Viewer'])(req, res, async () => { const getConfigEndpoint = ResponseDecorator.handleErrors(ConfigController.listConfigEndpoint, successCode, errorCodes) const responseObject = await getConfigEndpoint(req) - + const user = req.kauth.grant.access_token.content.preferred_username res .status(responseObject.code) .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, user: user, res: responseObject }) }) } }, @@ -67,12 +67,12 @@ module.exports = [ await keycloak.protect(['SRE', 'Developer', 'Viewer'])(req, res, async () => { const getConfigEndpoint = ResponseDecorator.handleErrors(ConfigController.getConfigEndpoint, successCode, errorCodes) const responseObject = await getConfigEndpoint(req) - + const user = req.kauth.grant.access_token.content.preferred_username res .status(responseObject.code) .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, user: user, res: responseObject }) }) } }, @@ -99,12 +99,12 @@ module.exports = [ await keycloak.protect(['SRE', 'Developer'])(req, res, async () => { const upsertConfigElementEndpoint = ResponseDecorator.handleErrors(ConfigController.upsertConfigElementEndpoint, successCode, errorCodes) const responseObject = await upsertConfigElementEndpoint(req) - + const user = req.kauth.grant.access_token.content.preferred_username res .status(responseObject.code) .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, user: user, res: responseObject }) }) } } diff --git a/src/routes/diagnostics.js b/src/routes/diagnostics.js index 8dab3ffaf..671000f51 100644 --- a/src/routes/diagnostics.js +++ b/src/routes/diagnostics.js @@ -45,12 +45,12 @@ module.exports = [ errorCodes ) const responseObject = await createMicroserviceImageSnapshotEndPoint(req) - + const user = req.kauth.grant.access_token.content.preferred_username res .status(responseObject.code) .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, user: user, res: responseObject }) }) } }, @@ -80,12 +80,13 @@ module.exports = [ errorCodes ) const responseObject = await getMicroserviceImageSnapshotEndPoint(req) + const user = req.kauth.grant.access_token.content.preferred_username if (responseObject.code !== successCode) { res .status(responseObject.code) .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, user: user, res: responseObject }) } else { res.writeHead(successCode, { 'Content-Length': responseObject.body['Content-Length'], @@ -127,12 +128,12 @@ module.exports = [ errorCodes ) const responseObject = await changeMicroserviceStraceStateEndPoint(req) - + const user = req.kauth.grant.access_token.content.preferred_username res .status(responseObject.code) .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, user: user, res: responseObject }) }) } }, @@ -162,12 +163,12 @@ module.exports = [ errorCodes ) const responseObject = await getMicroserviceStraceDataEndPoint(req) - + const user = req.kauth.grant.access_token.content.preferred_username res .status(responseObject.code) .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, user: user, res: responseObject }) }) } }, @@ -205,12 +206,12 @@ module.exports = [ errorCodes ) const responseObject = await postMicroserviceStraceDataToFtpEndPoint(req) - + const user = req.kauth.grant.access_token.content.preferred_username res .status(responseObject.code) .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, user: user, res: responseObject }) }) } } diff --git a/src/routes/edgeResource.js b/src/routes/edgeResource.js index ebdc65cbf..b6607e243 100644 --- a/src/routes/edgeResource.js +++ b/src/routes/edgeResource.js @@ -36,12 +36,12 @@ module.exports = [ await keycloak.protect(['SRE', 'Developer', 'Viewer'])(req, res, async () => { const getEdgeResourcesEndpoint = ResponseDecorator.handleErrors(EdgeResourceController.listEdgeResourcesEndpoint, successCode, errorCodes) const responseObject = await getEdgeResourcesEndpoint(req) - + const user = req.kauth.grant.access_token.content.preferred_username res .status(responseObject.code) .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, user: user, res: responseObject }) }) } }, @@ -67,12 +67,12 @@ module.exports = [ await keycloak.protect(['SRE', 'Developer', 'Viewer'])(req, res, async () => { const getEdgeResourceEndpoint = ResponseDecorator.handleErrors(EdgeResourceController.getEdgeResourceEndpoint, successCode, errorCodes) const responseObject = await getEdgeResourceEndpoint(req) - + const user = req.kauth.grant.access_token.content.preferred_username res .status(responseObject.code) .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, user: user, res: responseObject }) }) } }, @@ -98,12 +98,12 @@ module.exports = [ await keycloak.protect(['SRE', 'Developer', 'Viewer'])(req, res, async () => { const getEdgeResourceAllVersionsEndpoint = ResponseDecorator.handleErrors(EdgeResourceController.getEdgeResourceAllVersionsEndpoint, successCode, errorCodes) const responseObject = await getEdgeResourceAllVersionsEndpoint(req) - + const user = req.kauth.grant.access_token.content.preferred_username res .status(responseObject.code) .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, user: user, res: responseObject }) }) } }, @@ -134,12 +134,12 @@ module.exports = [ await keycloak.protect(['SRE'])(req, res, async () => { const updateEdgeResourceEndpoint = ResponseDecorator.handleErrors(EdgeResourceController.updateEdgeResourceEndpoint, successCode, errorCodes) const responseObject = await updateEdgeResourceEndpoint(req) - + const user = req.kauth.grant.access_token.content.preferred_username res .status(responseObject.code) .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, user: user, res: responseObject }) }) } }, @@ -169,12 +169,12 @@ module.exports = [ await keycloak.protect(['SRE'])(req, res, async () => { const deleteEdgeResourceEndpoint = ResponseDecorator.handleErrors(EdgeResourceController.deleteEdgeResourceEndpoint, successCode, errorCodes) const responseObject = await deleteEdgeResourceEndpoint(req) - + const user = req.kauth.grant.access_token.content.preferred_username res .status(responseObject.code) .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, user: user, res: responseObject }) }) } }, @@ -201,12 +201,12 @@ module.exports = [ await keycloak.protect(['SRE'])(req, res, async () => { const createEdgeResourceEndpoint = ResponseDecorator.handleErrors(EdgeResourceController.createEdgeResourceEndpoint, successCode, errorCodes) const responseObject = await createEdgeResourceEndpoint(req) - + const user = req.kauth.grant.access_token.content.preferred_username res .status(responseObject.code) .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, user: user, res: responseObject }) }) } }, @@ -232,12 +232,12 @@ module.exports = [ await keycloak.protect(['SRE'])(req, res, async () => { const linkEdgeResourceEndpoint = ResponseDecorator.handleErrors(EdgeResourceController.linkEdgeResourceEndpoint, successCode, errorCodes) const responseObject = await linkEdgeResourceEndpoint(req) - + const user = req.kauth.grant.access_token.content.preferred_username res .status(responseObject.code) .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, user: user, res: responseObject }) }) } }, @@ -263,12 +263,12 @@ module.exports = [ await keycloak.protect(['SRE'])(req, res, async () => { const unlinkEdgeResourceEndpoint = ResponseDecorator.handleErrors(EdgeResourceController.unlinkEdgeResourceEndpoint, successCode, errorCodes) const responseObject = await unlinkEdgeResourceEndpoint(req) - + const user = req.kauth.grant.access_token.content.preferred_username res .status(responseObject.code) .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, user: user, res: responseObject }) }) } } diff --git a/src/routes/flow.js b/src/routes/flow.js index 928cec737..e955df130 100644 --- a/src/routes/flow.js +++ b/src/routes/flow.js @@ -36,12 +36,12 @@ module.exports = [ await keycloak.protect(['SRE', 'Developer', 'Viewer'])(req, res, async () => { const getFlowsByUserEndPoint = ResponseDecorator.handleErrors(FlowController.getApplicationsByUserEndPoint, successCode, errorCodes) const responseObject = await getFlowsByUserEndPoint(req) - + const user = req.kauth.grant.access_token.content.preferred_username res .status(responseObject.code) .send({ flows: responseObject.body.applications }) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, user: user, res: responseObject }) }) } }, @@ -67,12 +67,12 @@ module.exports = [ await keycloak.protect(['SRE', 'Developer'])(req, res, async () => { const createFlowEndPoint = ResponseDecorator.handleErrors(FlowController.createApplicationEndPoint, successCode, errorCodes) const responseObject = await createFlowEndPoint(req) - + const user = req.kauth.grant.access_token.content.preferred_username res .status(responseObject.code) .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, user: user, res: responseObject }) }) } }, @@ -98,12 +98,12 @@ module.exports = [ await keycloak.protect(['SRE', 'Developer', 'Viewer'])(req, res, async () => { const getFlowEndPoint = ResponseDecorator.handleErrors(FlowController.getApplicationByIdEndPoint, successCode, errorCodes) const responseObject = await getFlowEndPoint(req) - + const user = req.kauth.grant.access_token.content.preferred_username res .status(responseObject.code) .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, user: user, res: responseObject }) }) } }, @@ -133,12 +133,12 @@ module.exports = [ await keycloak.protect(['SRE', 'Developer'])(req, res, async () => { const updateFlowEndPoint = ResponseDecorator.handleErrors(FlowController.patchApplicationByIdEndPoint, successCode, errorCodes) const responseObject = await updateFlowEndPoint(req) - + const user = req.kauth.grant.access_token.content.preferred_username res .status(responseObject.code) .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, user: user, res: responseObject }) }) } }, @@ -164,12 +164,12 @@ module.exports = [ await keycloak.protect(['SRE', 'Developer'])(req, res, async () => { const deleteFlowEndPoint = ResponseDecorator.handleErrors(FlowController.deleteApplicationByIdEndPoint, successCode, errorCodes) const responseObject = await deleteFlowEndPoint(req) - + const user = req.kauth.grant.access_token.content.preferred_username res .status(responseObject.code) .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, user: user, res: responseObject }) }) } } diff --git a/src/routes/iofog.js b/src/routes/iofog.js index 3271101d3..9431cc4b6 100644 --- a/src/routes/iofog.js +++ b/src/routes/iofog.js @@ -40,12 +40,12 @@ module.exports = [ await keycloak.protect(['SRE', 'Developer', 'Viewer'])(req, res, async () => { const getFogList = ResponseDecorator.handleErrors(FogController.getFogListEndPoint, successCode, errCodes) const responseObject = await getFogList(req) - + const user = req.kauth.grant.access_token.content.preferred_username res .status(responseObject.code) .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, user: user, res: responseObject }) }) } }, @@ -72,12 +72,12 @@ module.exports = [ await keycloak.protect('SRE')(req, res, async () => { const createFog = ResponseDecorator.handleErrors(FogController.createFogEndPoint, successCode, errCodes) const responseObject = await createFog(req) - + const user = req.kauth.grant.access_token.content.preferred_username res .status(responseObject.code) .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, user: user, res: responseObject }) }) } }, @@ -108,12 +108,12 @@ module.exports = [ await keycloak.protect('SRE')(req, res, async () => { const updateFog = ResponseDecorator.handleErrors(FogController.updateFogEndPoint, successCode, errCodes) const responseObject = await updateFog(req) - + const user = req.kauth.grant.access_token.content.preferred_username res .status(responseObject.code) .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, user: user, res: responseObject }) }) } }, @@ -139,12 +139,12 @@ module.exports = [ await keycloak.protect('SRE')(req, res, async () => { const deleteFog = ResponseDecorator.handleErrors(FogController.deleteFogEndPoint, successCode, errCodes) const responseObject = await deleteFog(req) - + const user = req.kauth.grant.access_token.content.preferred_username res .status(responseObject.code) .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, user: user, res: responseObject }) }) } }, @@ -170,12 +170,12 @@ module.exports = [ await keycloak.protect(['SRE', 'Developer', 'Viewer'])(req, res, async () => { const getFog = ResponseDecorator.handleErrors(FogController.getFogEndPoint, successCode, errCodes) const responseObject = await getFog(req) - + const user = req.kauth.grant.access_token.content.preferred_username res .status(responseObject.code) .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, user: user, res: responseObject }) }) } }, @@ -201,12 +201,12 @@ module.exports = [ const generateFogProvisioningKey = ResponseDecorator.handleErrors(FogController.generateProvisioningKeyEndPoint, successCode, errCodes) const responseObject = await generateFogProvisioningKey(req) - + const user = req.kauth.grant.access_token.content.preferred_username res .status(responseObject.code) .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, user: user, res: responseObject }) }) } }, @@ -236,12 +236,12 @@ module.exports = [ const setFogVersionCommand = ResponseDecorator.handleErrors(FogController.setFogVersionCommandEndPoint, successCode, errCodes) const responseObject = await setFogVersionCommand(req) - + const user = req.kauth.grant.access_token.content.preferred_username res .status(responseObject.code) .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, user: user, res: responseObject }) }) } }, @@ -271,12 +271,12 @@ module.exports = [ const setFogRebootCommand = ResponseDecorator.handleErrors(FogController.setFogRebootCommandEndPoint, successCode, errCodes) const responseObject = await setFogRebootCommand(req) - + const user = req.kauth.grant.access_token.content.preferred_username res .status(responseObject.code) .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, user: user, res: responseObject }) }) } }, @@ -302,12 +302,12 @@ module.exports = [ const getHalHardwareInfo = ResponseDecorator.handleErrors(FogController.getHalHardwareInfoEndPoint, successCode, errCodes) const responseObject = await getHalHardwareInfo(req) - + const user = req.kauth.grant.access_token.content.preferred_username res .status(responseObject.code) .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, user: user, res: responseObject }) }) } }, @@ -332,12 +332,12 @@ module.exports = [ await keycloak.protect(['SRE', 'Developer', 'Viewer'])(req, res, async () => { const getHalUsbInfo = ResponseDecorator.handleErrors(FogController.getHalUsbInfoEndPoint, successCode, errCodes) const responseObject = await getHalUsbInfo(req) - + const user = req.kauth.grant.access_token.content.preferred_username res .status(responseObject.code) .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, user: user, res: responseObject }) }) } }, @@ -367,12 +367,12 @@ module.exports = [ const setFogPruneCommand = ResponseDecorator.handleErrors(FogController.setFogPruneCommandEndPoint, successCode, errCodes) const responseObject = await setFogPruneCommand(req) - + const user = req.kauth.grant.access_token.content.preferred_username res .status(responseObject.code) .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, user: user, res: responseObject }) }) } } diff --git a/src/routes/microservices.js b/src/routes/microservices.js index 8a15a7438..0afc010fb 100644 --- a/src/routes/microservices.js +++ b/src/routes/microservices.js @@ -39,12 +39,12 @@ module.exports = [ errorCodes ) const responseObject = await listAllPublicPortsEndPoint(req) - + const user = req.kauth.grant.access_token.content.preferred_username res .status(responseObject.code) .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, user: user, res: responseObject }) }) } }, @@ -66,12 +66,12 @@ module.exports = [ const getMicroservicesByApplicationEndPoint = ResponseDecorator.handleErrors(MicroservicesController.getMicroservicesByApplicationEndPoint, successCode, errorCodes) const responseObject = await getMicroservicesByApplicationEndPoint(req) - + const user = req.kauth.grant.access_token.content.preferred_username res .status(responseObject.code) .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, user: user, res: responseObject }) }) } }, @@ -98,12 +98,12 @@ module.exports = [ const createMicroservicesOnFogEndPoint = ResponseDecorator.handleErrors( MicroservicesController.createMicroserviceOnFogEndPoint, successCode, errorCodes) const responseObject = await createMicroservicesOnFogEndPoint(req) - + const user = req.kauth.grant.access_token.content.preferred_username res .status(responseObject.code) .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, user: user, res: responseObject }) }) } }, @@ -131,12 +131,12 @@ module.exports = [ const createMicroservicesYAMLEndPoint = ResponseDecorator.handleErrors( MicroservicesController.createMicroserviceYAMLEndPoint, successCode, errorCodes) const responseObject = await createMicroservicesYAMLEndPoint(req) - + const user = req.kauth.grant.access_token.content.preferred_username res .status(responseObject.code) .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, user: user, res: responseObject }) }) } }, @@ -162,12 +162,12 @@ module.exports = [ const getMicroserviceEndPoint = ResponseDecorator.handleErrors(MicroservicesController.getMicroserviceEndPoint, successCode, errorCodes) const responseObject = await getMicroserviceEndPoint(req) - + const user = req.kauth.grant.access_token.content.preferred_username res .status(responseObject.code) .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, user: user, res: responseObject }) }) } }, @@ -198,12 +198,12 @@ module.exports = [ const updateMicroserviceEndPoint = ResponseDecorator.handleErrors(MicroservicesController.updateMicroserviceEndPoint, successCode, errorCodes) const responseObject = await updateMicroserviceEndPoint(req) - + const user = req.kauth.grant.access_token.content.preferred_username res .status(responseObject.code) .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, user: user, res: responseObject }) }) } }, @@ -236,12 +236,12 @@ module.exports = [ const updateMicroserviceYAMLEndPoint = ResponseDecorator.handleErrors(MicroservicesController.updateMicroserviceYAMLEndPoint, successCode, errorCodes) const responseObject = await updateMicroserviceYAMLEndPoint(req) - + const user = req.kauth.grant.access_token.content.preferred_username res .status(responseObject.code) .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, user: user, res: responseObject }) }) } }, @@ -267,12 +267,12 @@ module.exports = [ const deleteMicroserviceEndPoint = ResponseDecorator.handleErrors(MicroservicesController.deleteMicroserviceEndPoint, successCode, errorCodes) const responseObject = await deleteMicroserviceEndPoint(req) - + const user = req.kauth.grant.access_token.content.preferred_username res .status(responseObject.code) .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, user: user, res: responseObject }) }) } }, @@ -302,12 +302,12 @@ module.exports = [ const createMicroserviceRouteEndPoint = ResponseDecorator.handleErrors( MicroservicesController.createMicroserviceRouteEndPoint, successCode, errorCodes) const responseObject = await createMicroserviceRouteEndPoint(req) - + const user = req.kauth.grant.access_token.content.preferred_username res .status(responseObject.code) .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, user: user, res: responseObject }) }) } }, @@ -337,12 +337,12 @@ module.exports = [ const deleteMicroserviceRouteEndPoint = ResponseDecorator.handleErrors( MicroservicesController.deleteMicroserviceRouteEndPoint, successCode, errorCodes) const responseObject = await deleteMicroserviceRouteEndPoint(req) - + const user = req.kauth.grant.access_token.content.preferred_username res .status(responseObject.code) .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, user: user, res: responseObject }) }) } }, @@ -372,12 +372,12 @@ module.exports = [ const createMicroservicePortMappingEndPoint = ResponseDecorator.handleErrors( MicroservicesController.createMicroservicePortMappingEndPoint, successCode, errorCodes) const responseObject = await createMicroservicePortMappingEndPoint(req) - + const user = req.kauth.grant.access_token.content.preferred_username res .status(responseObject.code) .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, user: user, res: responseObject }) }) } }, @@ -403,12 +403,12 @@ module.exports = [ const deleteMicroservicePortMapping = ResponseDecorator.handleErrors( MicroservicesController.deleteMicroservicePortMappingEndPoint, successCode, errorCodes) const responseObject = await deleteMicroservicePortMapping(req) - + const user = req.kauth.grant.access_token.content.preferred_username res .status(responseObject.code) .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, user: user, res: responseObject }) }) } }, @@ -434,12 +434,12 @@ module.exports = [ const getMicroservicePortMapping = ResponseDecorator.handleErrors( MicroservicesController.getMicroservicePortMappingListEndPoint, successCode, errorCodes) const responseObject = await getMicroservicePortMapping(req) - + const user = req.kauth.grant.access_token.content.preferred_username res .status(responseObject.code) .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, user: user, res: responseObject }) }) } }, @@ -468,12 +468,12 @@ module.exports = [ errorCodes ) const responseObject = await listMicroserviceVolumeMappingEndPoint(req) - + const user = req.kauth.grant.access_token.content.preferred_username res .status(responseObject.code) .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, user: user, res: responseObject }) }) } }, @@ -506,12 +506,12 @@ module.exports = [ errorCodes ) const responseObject = await createMicroserviceVolumeMappingEndPoint(req) - + const user = req.kauth.grant.access_token.content.preferred_username res .status(responseObject.code) .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, user: user, res: responseObject }) }) } }, @@ -544,12 +544,12 @@ module.exports = [ errorCodes ) const responseObject = await deleteMicroserviceVolumeMappingEndPoint(req) - + const user = req.kauth.grant.access_token.content.preferred_username res .status(responseObject.code) .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, user: user, res: responseObject }) }) } } diff --git a/src/routes/registries.js b/src/routes/registries.js index e1369082c..f64b90827 100644 --- a/src/routes/registries.js +++ b/src/routes/registries.js @@ -40,11 +40,12 @@ module.exports = [ await keycloak.protect(['SRE', 'Developer'])(req, res, async () => { const registriesEndPoint = ResponseDecorator.handleErrors(RegistryController.createRegistryEndPoint, successCode, errorCodes) const responseObject = await registriesEndPoint(req) + const user = req.kauth.grant.access_token.content.preferred_username res .status(responseObject.code) .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, user: user, res: responseObject }) }) } }, @@ -69,11 +70,12 @@ module.exports = [ await keycloak.protect(['SRE', 'Developer', 'Viewer'])(req, res, async () => { const registriesEndPoint = ResponseDecorator.handleErrors(RegistryController.getRegistriesEndPoint, successCode, errorCodes) const responseObject = await registriesEndPoint(req) + const user = req.kauth.grant.access_token.content.preferred_username res .status(responseObject.code) .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, user: user, res: responseObject }) }) } }, @@ -102,11 +104,12 @@ module.exports = [ await keycloak.protect('SRE', 'Developer')(req, res, async () => { const registriesEndPoint = ResponseDecorator.handleErrors(RegistryController.deleteRegistryEndPoint, successCode, errorCodes) const responseObject = await registriesEndPoint(req) + const user = req.kauth.grant.access_token.content.preferred_username res .status(responseObject.code) .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, user: user, res: responseObject }) }) } }, @@ -137,11 +140,12 @@ module.exports = [ await keycloak.protect(['SRE', 'Developer'])(req, res, async () => { const updateRegistryEndPoint = ResponseDecorator.handleErrors(RegistryController.updateRegistryEndPoint, successCode, errorCodes) const responseObject = await updateRegistryEndPoint(req) + const user = req.kauth.grant.access_token.content.preferred_username res .status(responseObject.code) .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, user: user, res: responseObject }) }) } } diff --git a/src/routes/router.js b/src/routes/router.js index 88d42e43d..91b2526a8 100644 --- a/src/routes/router.js +++ b/src/routes/router.js @@ -44,12 +44,12 @@ module.exports = [ errorCodes ) const responseObject = await getRouterEndpoint(req) - + const user = req.kauth.grant.access_token.content.preferred_username res .status(responseObject.code) .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, user: user, res: responseObject }) }) } }, @@ -80,12 +80,12 @@ module.exports = [ errorCodes ) const responseObject = await upsertDefaultRouter(req) - + const user = req.kauth.grant.access_token.content.preferred_username res .status(responseObject.code) .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, user: user, res: responseObject }) }) } } diff --git a/src/routes/routing.js b/src/routes/routing.js index a850e685b..b4ef4cba6 100644 --- a/src/routes/routing.js +++ b/src/routes/routing.js @@ -44,12 +44,12 @@ module.exports = [ errorCodes ) const responseObject = await getRouterEndpoint(req) - + const user = req.kauth.grant.access_token.content.preferred_username res .status(responseObject.code) .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, user: user, res: responseObject }) }) } }, @@ -79,12 +79,12 @@ module.exports = [ errorCodes ) const responseObject = await getRouterEndpoint(req) - + const user = req.kauth.grant.access_token.content.preferred_username res .status(responseObject.code) .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, user: user, res: responseObject }) }) } }, @@ -123,12 +123,12 @@ module.exports = [ errorCodes ) const responseObject = await createRoutingEndpoint(req) - + const user = req.kauth.grant.access_token.content.preferred_username res .status(responseObject.code) .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, user: user, res: responseObject }) }) } }, @@ -163,12 +163,12 @@ module.exports = [ errorCodes ) const responseObject = await updateRoutingEndpoint(req) - + const user = req.kauth.grant.access_token.content.preferred_username res .status(responseObject.code) .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, user: user, res: responseObject }) }) } }, @@ -198,12 +198,12 @@ module.exports = [ errorCodes ) const responseObject = await deleteRoutingEndpoint(req) - + const user = req.kauth.grant.access_token.content.preferred_username res .status(responseObject.code) .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, user: user, res: responseObject }) }) } } diff --git a/src/routes/tunnel.js b/src/routes/tunnel.js index 823e630f8..3a3961ebf 100644 --- a/src/routes/tunnel.js +++ b/src/routes/tunnel.js @@ -48,11 +48,12 @@ module.exports = [ errorCodes ) const responseObject = await tunnelEndPoint(req) + const user = req.kauth.grant.access_token.content.preferred_username res .status(responseObject.code) .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, user: user, res: responseObject }) }) } }, @@ -82,11 +83,12 @@ module.exports = [ errorCodes ) const responseObject = await tunnelEndPoint(req) + const user = req.kauth.grant.access_token.content.preferred_username res .status(responseObject.code) .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, user: user, res: responseObject }) }) } } diff --git a/src/routes/user.js b/src/routes/user.js index 39d9dab86..6be5f155e 100644 --- a/src/routes/user.js +++ b/src/routes/user.js @@ -66,12 +66,12 @@ module.exports = [ errorCodes ) const responseObject = await getUserProfileEndPoint(req) - + const user = req.kauth.grant.access_token.content.preferred_username res .status(responseObject.code) .send(responseObject.body) - logger.apiRes({ req: req, res: responseObject }) + logger.apiRes({ req: req, user: user, res: responseObject }) } }, { From a298a7e18f94974e43ff5030610768f3cabb5c59 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Mon, 27 May 2024 19:51:19 +0300 Subject: [PATCH 093/146] cli config dev-mode fixed and package version updated for release --- package.json | 2 +- src/cli/config.js | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 682e5a370..e22ae6007 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@datasance/iofogcontroller", - "version": "3.2.0-beta2", + "version": "3.2.0", "description": "ioFog Controller project for Eclipse IoFog @ iofog.org \\nCopyright (c) 2023 Datasance Teknoloji A.S.", "main": "./src/main.js", "author": "Emirhan Durmus", diff --git a/src/cli/config.js b/src/cli/config.js index 748acf367..3c5af3cd9 100644 --- a/src/cli/config.js +++ b/src/cli/config.js @@ -79,6 +79,20 @@ class Config extends BaseCLIHandler { type: CliDataTypes.Integer, description: 'Log files count', group: constants.CMD_ADD + }, + { + name: 'on', + alias: 'o', + type: Boolean, + description: 'Enable', + group: [constants.CMD_DEV_MODE] + }, + { + name: 'off', + alias: 'f', + type: Boolean, + description: 'Disable', + group: [constants.CMD_DEV_MODE] } ] this.commands = { From 90f2be117de0cc1c03734f6d7c15192101498965 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Sat, 15 Jun 2024 17:26:34 +0300 Subject: [PATCH 094/146] swagger yaml edited --- docs/swagger.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/swagger.yaml b/docs/swagger.yaml index 1cd9a0005..4784938ce 100755 --- a/docs/swagger.yaml +++ b/docs/swagger.yaml @@ -3826,6 +3826,9 @@ components: accessMode: type: string example: rw + type: + type: string + example: bind PortMappingsResponse: type: object properties: From a60eb01dd330ef8e149bf15dc6f04672ea32f943 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Sat, 15 Jun 2024 17:31:26 +0300 Subject: [PATCH 095/146] viewer update --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index e22ae6007..2ce5cd98a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@datasance/iofogcontroller", - "version": "3.2.0", + "version": "3.2.1-beta", "description": "ioFog Controller project for Eclipse IoFog @ iofog.org \\nCopyright (c) 2023 Datasance Teknoloji A.S.", "main": "./src/main.js", "author": "Emirhan Durmus", @@ -57,7 +57,7 @@ "iofog-controller": "src/main.js" }, "dependencies": { - "@datasance/ecn-viewer": "0.1.5", + "@datasance/ecn-viewer": "0.1.6", "axios": "1.6.8", "body-parser": "^1.20.2", "child_process": "1.0.2", From 2eb4e760572da4ae51d1ecf1897690d0ee73d9f3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Sat, 15 Jun 2024 17:52:10 +0300 Subject: [PATCH 096/146] package updates --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 2ce5cd98a..706f3cf22 100644 --- a/package.json +++ b/package.json @@ -84,7 +84,7 @@ "moment-timezone": "0.5.45", "morgan": "1.10.0", "multer": "1.4.5-lts.1", - "mysql2": "3.9.7", + "mysql2": "3.9.8", "nconf": "0.12.1", "node-fetch-npm": "^2.0.4", "npm-check-updates": "^16.14.20", @@ -99,7 +99,7 @@ "sqlite3": "^5.1.7", "string-format": "2.0.0", "swagger-ui-express": "^5.0.0", - "umzug": "3.8.0", + "umzug": "3.8.1", "underscore": "1.13.6", "xss-clean": "0.1.1" }, From c101d8e468590a1b5daa4a141bc22cb8e83845e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Sat, 15 Jun 2024 18:06:04 +0300 Subject: [PATCH 097/146] commit --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 706f3cf22..29f491ff7 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@datasance/iofogcontroller", - "version": "3.2.1-beta", + "version": "3.2.1-beta0", "description": "ioFog Controller project for Eclipse IoFog @ iofog.org \\nCopyright (c) 2023 Datasance Teknoloji A.S.", "main": "./src/main.js", "author": "Emirhan Durmus", From 395020243655b9977c4fa6863f328fc99aef1cb4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Sat, 15 Jun 2024 18:16:36 +0300 Subject: [PATCH 098/146] commit --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 29f491ff7..fabd41db8 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@datasance/iofogcontroller", - "version": "3.2.1-beta0", + "version": "3.2.1-beta1", "description": "ioFog Controller project for Eclipse IoFog @ iofog.org \\nCopyright (c) 2023 Datasance Teknoloji A.S.", "main": "./src/main.js", "author": "Emirhan Durmus", From d962e94280aefaa33e6ba73aea9a5135a0f100ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Sat, 15 Jun 2024 18:53:45 +0300 Subject: [PATCH 099/146] package updates --- .github/workflows/ci.yaml | 4 ++-- .nsprc | 6 +++++- package-lock.json | 29 +++++++++++++++-------------- 3 files changed, 22 insertions(+), 17 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index bfd1aa366..94f9e403e 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -23,7 +23,7 @@ env: jobs: Build: - runs-on: ubuntu-20.04 + runs-on: ubuntu-22.04 permissions: actions: write checks: write @@ -59,7 +59,7 @@ jobs: Publish: needs: [Build] - runs-on: ubuntu-20.04 + runs-on: ubuntu-22.04 permissions: actions: write checks: write diff --git a/.nsprc b/.nsprc index 9e26dfeeb..b15291f0e 100644 --- a/.nsprc +++ b/.nsprc @@ -1 +1,5 @@ -{} \ No newline at end of file +{ + "1097496": { + "notes": "" + } + } \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 444a4b4d4..927a29eb4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,16 +1,16 @@ { "name": "@datasance/iofogcontroller", - "version": "3.1.0", + "version": "3.2.1-beta1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@datasance/iofogcontroller", - "version": "3.1.0", + "version": "3.2.1-beta1", "hasInstallScript": true, "license": "EPL-2.0", "dependencies": { - "@datasance/ecn-viewer": "0.1.5", + "@datasance/ecn-viewer": "0.1.6", "axios": "1.6.8", "body-parser": "^1.20.2", "child_process": "1.0.2", @@ -37,7 +37,7 @@ "moment-timezone": "0.5.45", "morgan": "1.10.0", "multer": "1.4.5-lts.1", - "mysql2": "3.9.7", + "mysql2": "3.9.8", "nconf": "0.12.1", "node-fetch-npm": "^2.0.4", "npm-check-updates": "^16.14.20", @@ -52,7 +52,7 @@ "sqlite3": "^5.1.7", "string-format": "2.0.0", "swagger-ui-express": "^5.0.0", - "umzug": "3.8.0", + "umzug": "3.8.1", "underscore": "1.13.6", "xss-clean": "0.1.1" }, @@ -576,9 +576,10 @@ } }, "node_modules/@datasance/ecn-viewer": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@datasance/ecn-viewer/-/ecn-viewer-0.1.5.tgz", - "integrity": "sha512-6RtIBh9FX63+mA6pqlcnA5g91vNEkMIg2JMEQkPJYjmNUH/8Zk3qlf6kmsqnaPaAawkbECtwn+RFMLCVhd2Btw==" + "version": "0.1.6", + "resolved": "https://npm.pkg.github.com/download/@datasance/ecn-viewer/0.1.6/16b8ab2bb99ee23b0942e463639d7e924edcf036", + "integrity": "sha512-5DozJKJ00SQA4xLVtrjRbnD0/CnV1ch5f8dnJKOmiWPk06EeBy8ANH/VzbOaSzNYXHN93fCllJKEq9AK8/qZpQ==", + "license": "EPL-2.0" }, "node_modules/@eslint-community/eslint-utils": { "version": "4.4.0", @@ -8799,9 +8800,9 @@ "dev": true }, "node_modules/mysql2": { - "version": "3.9.7", - "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.9.7.tgz", - "integrity": "sha512-KnJT8vYRcNAZv73uf9zpXqNbvBG7DJrs+1nACsjZP1HMJ1TgXEy8wnNilXAn/5i57JizXKtrUtwDB7HxT9DDpw==", + "version": "3.9.8", + "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.9.8.tgz", + "integrity": "sha512-+5JKNjPuks1FNMoy9TYpl77f+5frbTklz7eb3XDwbpsERRLEeXiW2PDEkakYF50UuKU2qwfGnyXpKYvukv8mGA==", "dependencies": { "denque": "^2.1.0", "generate-function": "^2.3.1", @@ -14868,9 +14869,9 @@ } }, "node_modules/umzug": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/umzug/-/umzug-3.8.0.tgz", - "integrity": "sha512-FRBvdZxllW3eUzsqG3CIfgOVChUONrKNZozNOJfvmcfBn5pMKcJjICuMMEsDLHYa/aqd7a2NtXfYEG86XHe1lQ==", + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/umzug/-/umzug-3.8.1.tgz", + "integrity": "sha512-k0HjOc3b/s8vH24BUTvnaFiKhfWI9UQAGpqHDG+3866CGlBTB83Xs5wZ1io1mwYLj/GHvQ34AxKhbpYnWtkRJg==", "dependencies": { "@rushstack/ts-command-line": "^4.12.2", "emittery": "^0.13.0", From cfc92defb8e71613d895c36602b8a002bd1a67ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Sat, 29 Jun 2024 14:43:37 +0300 Subject: [PATCH 100/146] package versions updated --- .github/workflows/ci.yaml | 4 +- package-lock.json | 2577 +++---------------------------------- package.json | 13 +- 3 files changed, 179 insertions(+), 2415 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 94f9e403e..63cb78bc6 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -41,7 +41,7 @@ jobs: name: Preflight steps: - uses: actions/checkout@v4 - - uses: actions/setup-node@v3 + - uses: actions/setup-node@v4 with: node-version: 20 - name: Replace values @@ -77,7 +77,7 @@ jobs: name: Publish Controller steps: - uses: actions/checkout@v4 - - uses: actions/setup-node@v3 + - uses: actions/setup-node@v4 with: node-version: 20 - name: Replace values diff --git a/package-lock.json b/package-lock.json index 927a29eb4..29d0fd375 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,17 +1,17 @@ { "name": "@datasance/iofogcontroller", - "version": "3.2.1-beta1", + "version": "3.2.1-beta2", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@datasance/iofogcontroller", - "version": "3.2.1-beta1", + "version": "3.2.1-beta2", "hasInstallScript": true, "license": "EPL-2.0", "dependencies": { - "@datasance/ecn-viewer": "0.1.6", - "axios": "1.6.8", + "@datasance/ecn-viewer": "0.1.7", + "axios": "1.7.2", "body-parser": "^1.20.2", "child_process": "1.0.2", "command-line-args": "5.2.1", @@ -31,16 +31,15 @@ "is-elevated": "3.0.0", "js-yaml": "4.1.0", "jsonschema": "1.4.1", - "keycloak-connect": "24.0.4", + "keycloak-connect": "25.0.1", "minimatch": "9.0.4", "moment": "2.30.1", "moment-timezone": "0.5.45", "morgan": "1.10.0", "multer": "1.4.5-lts.1", - "mysql2": "3.9.8", + "mysql2": "3.10.1", "nconf": "0.12.1", "node-fetch-npm": "^2.0.4", - "npm-check-updates": "^16.14.20", "os": "0.1.2", "path": "0.12.7", "pino": "9.1.0", @@ -67,7 +66,7 @@ "chai-http": "4.4.0", "eslint": "9.2.0", "eslint-config-google": "0.14.0", - "mocha": "10.4.0", + "mocha": "10.5.2", "mocha-junit-reporter": "2.2.1", "newman": "6.1.2", "newman-reporter-junitfull": "1.1.1", @@ -570,15 +569,16 @@ "version": "1.5.0", "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", + "dev": true, "optional": true, "engines": { "node": ">=0.1.90" } }, "node_modules/@datasance/ecn-viewer": { - "version": "0.1.6", - "resolved": "https://npm.pkg.github.com/download/@datasance/ecn-viewer/0.1.6/16b8ab2bb99ee23b0942e463639d7e924edcf036", - "integrity": "sha512-5DozJKJ00SQA4xLVtrjRbnD0/CnV1ch5f8dnJKOmiWPk06EeBy8ANH/VzbOaSzNYXHN93fCllJKEq9AK8/qZpQ==", + "version": "0.1.7", + "resolved": "https://npm.pkg.github.com/download/@datasance/ecn-viewer/0.1.7/c8adebf78e1f9d6f51c94e6560c13e31057873c6", + "integrity": "sha512-51zzl9vPevuyW5APcCGgTmBrFYoKbZbSzJeNhKZ7HZSjfSWfEPrB58dj7myvMK0vSEtgGXgAXdrmmyHmc2InDQ==", "license": "EPL-2.0" }, "node_modules/@eslint-community/eslint-utils": { @@ -703,7 +703,8 @@ "node_modules/@gar/promisify": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", - "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==" + "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", + "optional": true }, "node_modules/@humanwhocodes/config-array": { "version": "0.13.0", @@ -800,6 +801,7 @@ "version": "8.0.2", "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, "dependencies": { "string-width": "^5.1.2", "string-width-cjs": "npm:string-width@^4.2.0", @@ -816,6 +818,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, "engines": { "node": ">=12" }, @@ -826,12 +829,14 @@ "node_modules/@isaacs/cliui/node_modules/emoji-regex": { "version": "9.2.2", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true }, "node_modules/@isaacs/cliui/node_modules/string-width": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, "dependencies": { "eastasianwidth": "^0.2.0", "emoji-regex": "^9.2.2", @@ -848,6 +853,7 @@ "version": "7.1.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, "dependencies": { "ansi-regex": "^6.0.1" }, @@ -1052,211 +1058,6 @@ "node": ">= 8" } }, - "node_modules/@npmcli/fs": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.1.tgz", - "integrity": "sha512-q9CRWjpHCMIh5sVyefoD1cA7PkvILqCZsnSOEUUivORLjxCO/Irmue2DprETiNgEqktDBZaM1Bi+jrarx1XdCg==", - "dependencies": { - "semver": "^7.3.5" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/@npmcli/git": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-4.1.0.tgz", - "integrity": "sha512-9hwoB3gStVfa0N31ymBmrX+GuDGdVA/QWShZVqE0HK2Af+7QGGrCTbZia/SW0ImUTjTne7SP91qxDmtXvDHRPQ==", - "dependencies": { - "@npmcli/promise-spawn": "^6.0.0", - "lru-cache": "^7.4.4", - "npm-pick-manifest": "^8.0.0", - "proc-log": "^3.0.0", - "promise-inflight": "^1.0.1", - "promise-retry": "^2.0.1", - "semver": "^7.3.5", - "which": "^3.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/@npmcli/git/node_modules/lru-cache": { - "version": "7.18.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", - "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", - "engines": { - "node": ">=12" - } - }, - "node_modules/@npmcli/git/node_modules/which": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/which/-/which-3.0.1.tgz", - "integrity": "sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/which.js" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/@npmcli/installed-package-contents": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-2.1.0.tgz", - "integrity": "sha512-c8UuGLeZpm69BryRykLuKRyKFZYJsZSCT4aVY5ds4omyZqJ172ApzgfKJ5eV/r3HgLdUYgFVe54KSFVjKoe27w==", - "dependencies": { - "npm-bundled": "^3.0.0", - "npm-normalize-package-bin": "^3.0.0" - }, - "bin": { - "installed-package-contents": "bin/index.js" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/@npmcli/move-file": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.1.tgz", - "integrity": "sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==", - "deprecated": "This functionality has been moved to @npmcli/fs", - "dependencies": { - "mkdirp": "^1.0.4", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/@npmcli/move-file/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==", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/@npmcli/move-file/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "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/@npmcli/move-file/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/@npmcli/move-file/node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@npmcli/move-file/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@npmcli/node-gyp": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-3.0.0.tgz", - "integrity": "sha512-gp8pRXC2oOxu0DUE1/M3bYtb1b3/DbJ5aM113+XJBgfXdussRAsX0YOrOhdd8WvnAR6auDBvJomGAkLKA5ydxA==", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/@npmcli/promise-spawn": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-6.0.2.tgz", - "integrity": "sha512-gGq0NJkIGSwdbUt4yhdF8ZrmkGKVz9vAdVzpOfnom+V8PLSmSOVhZwbNvZZS1EYcJN5hzzKBxmmVVAInM6HQLg==", - "dependencies": { - "which": "^3.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/@npmcli/promise-spawn/node_modules/which": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/which/-/which-3.0.1.tgz", - "integrity": "sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/which.js" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/@npmcli/run-script": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-6.0.2.tgz", - "integrity": "sha512-NCcr1uQo1k5U+SYlnIrbAh3cxy+OQT1VtqiAbxdymSlptbzBb62AjH2xXgjNCoP073hoa1CfCAcwoZ8k96C4nA==", - "dependencies": { - "@npmcli/node-gyp": "^3.0.0", - "@npmcli/promise-spawn": "^6.0.0", - "node-gyp": "^9.0.0", - "read-package-json-fast": "^3.0.0", - "which": "^3.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/@npmcli/run-script/node_modules/which": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/which/-/which-3.0.1.tgz", - "integrity": "sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/which.js" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, "node_modules/@one-ini/wasm": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/@one-ini/wasm/-/wasm-0.1.1.tgz", @@ -1267,48 +1068,12 @@ "version": "0.11.0", "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, "optional": true, "engines": { "node": ">=14" } }, - "node_modules/@pnpm/config.env-replace": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@pnpm/config.env-replace/-/config.env-replace-1.1.0.tgz", - "integrity": "sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==", - "engines": { - "node": ">=12.22.0" - } - }, - "node_modules/@pnpm/network.ca-file": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@pnpm/network.ca-file/-/network.ca-file-1.0.2.tgz", - "integrity": "sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==", - "dependencies": { - "graceful-fs": "4.2.10" - }, - "engines": { - "node": ">=12.22.0" - } - }, - "node_modules/@pnpm/network.ca-file/node_modules/graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" - }, - "node_modules/@pnpm/npm-conf": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/@pnpm/npm-conf/-/npm-conf-2.2.2.tgz", - "integrity": "sha512-UA91GwWPhFExt3IizW6bOeY/pQ0BkuNwKjk9iQW9KqxluGCrg4VenZ0/L+2Y0+ZOtme72EVvg6v0zo3AMQRCeA==", - "dependencies": { - "@pnpm/config.env-replace": "^1.1.0", - "@pnpm/network.ca-file": "^1.0.1", - "config-chain": "^1.1.11" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/@postman/form-data": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/@postman/form-data/-/form-data-3.1.1.tgz", @@ -1559,61 +1324,6 @@ "node": ">=8" } }, - "node_modules/@sigstore/bundle": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@sigstore/bundle/-/bundle-1.1.0.tgz", - "integrity": "sha512-PFutXEy0SmQxYI4texPw3dd2KewuNqv7OuK1ZFtY2fM754yhvG2KdgwIhRnoEE2uHdtdGNQ8s0lb94dW9sELog==", - "dependencies": { - "@sigstore/protobuf-specs": "^0.2.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/@sigstore/protobuf-specs": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/@sigstore/protobuf-specs/-/protobuf-specs-0.2.1.tgz", - "integrity": "sha512-XTWVxnWJu+c1oCshMLwnKvz8ZQJJDVOlciMfgpJBQbThVjKTCG8dwyhgLngBD2KN0ap9F/gOV8rFDEx8uh7R2A==", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/@sigstore/sign": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@sigstore/sign/-/sign-1.0.0.tgz", - "integrity": "sha512-INxFVNQteLtcfGmcoldzV6Je0sbbfh9I16DM4yJPw3j5+TFP8X6uIiA18mvpEa9yyeycAKgPmOA3X9hVdVTPUA==", - "dependencies": { - "@sigstore/bundle": "^1.1.0", - "@sigstore/protobuf-specs": "^0.2.0", - "make-fetch-happen": "^11.0.1" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/@sigstore/tuf": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@sigstore/tuf/-/tuf-1.0.3.tgz", - "integrity": "sha512-2bRovzs0nJZFlCN3rXirE4gwxCn97JNjMmwpecqlbgV9WcxX7WRuIrgzx/X7Ib7MYRbyUTpBYE0s2x6AmZXnlg==", - "dependencies": { - "@sigstore/protobuf-specs": "^0.2.0", - "tuf-js": "^1.1.7" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/@sindresorhus/is": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-5.6.0.tgz", - "integrity": "sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==", - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sindresorhus/is?sponsor=1" - } - }, "node_modules/@sinonjs/commons": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", @@ -1658,57 +1368,18 @@ "integrity": "sha512-sXXKG+uL9IrKqViTtao2Ws6dy0znu9sOaP1di/jKGW1M6VssO8vlpXCQcpZ+jisQ1tTFAC5Jo/EOzFbggBagFQ==", "dev": true }, - "node_modules/@szmarczak/http-timer": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-5.0.1.tgz", - "integrity": "sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==", - "dependencies": { - "defer-to-connect": "^2.0.1" - }, - "engines": { - "node": ">=14.16" - } - }, "node_modules/@testim/chrome-version": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/@testim/chrome-version/-/chrome-version-1.1.4.tgz", "integrity": "sha512-kIhULpw9TrGYnHp/8VfdcneIcxKnLixmADtukQRtJUmsVlMg0niMkwV0xZmi8hqa57xqilIHjWFA0GKvEjVU5g==", "optional": true }, - "node_modules/@tootallnate/once": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", - "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", - "engines": { - "node": ">= 10" - } - }, "node_modules/@tootallnate/quickjs-emscripten": { "version": "0.23.0", "resolved": "https://registry.npmjs.org/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz", "integrity": "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==", "optional": true }, - "node_modules/@tufjs/canonical-json": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@tufjs/canonical-json/-/canonical-json-1.0.0.tgz", - "integrity": "sha512-QTnf++uxunWvG2z3UFNzAoQPHxnSXOwtaI3iJ+AohhV+5vONuArPjJE7aPXPVXfXJsqrVbZBu9b81AJoSd09IQ==", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/@tufjs/models": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@tufjs/models/-/models-1.0.4.tgz", - "integrity": "sha512-qaGV9ltJP0EO25YfFUPhxRVK0evXFIAGicsVXuRim4Ed9cjPxYhNnNJ49SFmbeLgtxpslIkX317IgpfcHPVj/A==", - "dependencies": { - "@tufjs/canonical-json": "1.0.0", - "minimatch": "^9.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, "node_modules/@types/argparse": { "version": "1.0.38", "resolved": "https://registry.npmjs.org/@types/argparse/-/argparse-1.0.38.tgz", @@ -1734,11 +1405,6 @@ "@types/ms": "*" } }, - "node_modules/@types/http-cache-semantics": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz", - "integrity": "sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==" - }, "node_modules/@types/ms": { "version": "0.7.34", "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz", @@ -1752,11 +1418,6 @@ "undici-types": "~5.26.4" } }, - "node_modules/@types/semver-utils": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@types/semver-utils/-/semver-utils-1.1.3.tgz", - "integrity": "sha512-T+YwkslhsM+CeuhYUxyAjWm7mJ5am/K10UX40RuA6k6Lc7eGtq8iY2xOzy7Vq0GOqhl/xZl5l2FwURZMTPTUww==" - }, "node_modules/@types/superagent": { "version": "4.1.13", "resolved": "https://registry.npmjs.org/@types/superagent/-/superagent-4.1.13.tgz", @@ -1784,7 +1445,8 @@ "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==" + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "optional": true }, "node_modules/abort-controller": { "version": "3.0.0", @@ -1842,6 +1504,7 @@ "version": "6.0.2", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "optional": true, "dependencies": { "debug": "4" }, @@ -1853,6 +1516,7 @@ "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "optional": true, "dependencies": { "ms": "2.1.2" }, @@ -1868,12 +1532,14 @@ "node_modules/agent-base/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==" + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "optional": true }, "node_modules/agentkeepalive": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.5.0.tgz", "integrity": "sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==", + "optional": true, "dependencies": { "humanize-ms": "^1.2.1" }, @@ -1885,6 +1551,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "devOptional": true, "dependencies": { "clean-stack": "^2.0.0", "indent-string": "^4.0.0" @@ -1918,14 +1585,6 @@ "ajv": "^6.9.1" } }, - "node_modules/ansi-align": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", - "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", - "dependencies": { - "string-width": "^4.1.0" - } - }, "node_modules/ansi-colors": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", @@ -1999,7 +1658,8 @@ "node_modules/aproba": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", - "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==" + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", + "optional": true }, "node_modules/archy": { "version": "1.0.0", @@ -2011,6 +1671,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz", "integrity": "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==", + "optional": true, "dependencies": { "delegates": "^1.0.0", "readable-stream": "^3.6.0" @@ -2023,6 +1684,7 @@ "version": "3.6.2", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "optional": true, "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -2036,6 +1698,7 @@ "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==", + "optional": true, "dependencies": { "safe-buffer": "~5.2.0" } @@ -2094,14 +1757,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "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==", - "engines": { - "node": ">=8" - } - }, "node_modules/arraybuffer.prototype.slice": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", @@ -2237,9 +1892,9 @@ "dev": true }, "node_modules/axios": { - "version": "1.6.8", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.8.tgz", - "integrity": "sha512-v/ZHtJDU39mDpyBoFVkETcd/uNdxrWRrg3bKpOKzXFA6Bvqopts6ALSMU3y6ijYxbw2B+wPrIv46egTzJXCLGQ==", + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.2.tgz", + "integrity": "sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw==", "dependencies": { "follow-redirects": "^1.15.6", "form-data": "^4.0.0", @@ -2516,106 +2171,6 @@ "integrity": "sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==", "dev": true }, - "node_modules/boxen": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-7.1.1.tgz", - "integrity": "sha512-2hCgjEmP8YLWQ130n2FerGv7rYpfBmnmp9Uy2Le1vge6X3gZIfSmEzP5QTDElFxcvVcXlEn8Aq6MU/PZygIOog==", - "dependencies": { - "ansi-align": "^3.0.1", - "camelcase": "^7.0.1", - "chalk": "^5.2.0", - "cli-boxes": "^3.0.0", - "string-width": "^5.1.2", - "type-fest": "^2.13.0", - "widest-line": "^4.0.1", - "wrap-ansi": "^8.1.0" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/boxen/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/boxen/node_modules/camelcase": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-7.0.1.tgz", - "integrity": "sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==", - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/boxen/node_modules/chalk": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", - "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/boxen/node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" - }, - "node_modules/boxen/node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/boxen/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/boxen/node_modules/type-fest": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", - "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", - "engines": { - "node": ">=12.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/brace-expansion": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", @@ -2743,138 +2298,6 @@ "node": ">= 0.8" } }, - "node_modules/cacache": { - "version": "17.1.4", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.1.4.tgz", - "integrity": "sha512-/aJwG2l3ZMJ1xNAnqbMpA40of9dj/pIH3QfiuQSqjfPJF747VR0J/bHn+/KdNnHKc6XQcWt/AfRSBft82W1d2A==", - "dependencies": { - "@npmcli/fs": "^3.1.0", - "fs-minipass": "^3.0.0", - "glob": "^10.2.2", - "lru-cache": "^7.7.1", - "minipass": "^7.0.3", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "p-map": "^4.0.0", - "ssri": "^10.0.0", - "tar": "^6.1.11", - "unique-filename": "^3.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/cacache/node_modules/foreground-child": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", - "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", - "dependencies": { - "cross-spawn": "^7.0.0", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/cacache/node_modules/glob": { - "version": "10.3.15", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.15.tgz", - "integrity": "sha512-0c6RlJt1TICLyvJYIApxb8GsXoai0KUP7AxKKAtsYXdgJR1mGEUa7DgwShbdk1nly0PYoZj01xd4hzbq3fsjpw==", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.3.6", - "minimatch": "^9.0.1", - "minipass": "^7.0.4", - "path-scurry": "^1.11.0" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "engines": { - "node": ">=16 || 14 >=14.18" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/cacache/node_modules/lru-cache": { - "version": "7.18.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", - "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", - "engines": { - "node": ">=12" - } - }, - "node_modules/cacache/node_modules/minipass": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.1.tgz", - "integrity": "sha512-UZ7eQ+h8ywIRAW1hIEl2AqdwzJucU/Kp59+8kkZeSvafXhZjul247BvIJjEVFVeON6d7lM46XX1HXCduKAS8VA==", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/cacache/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/cacheable-lookup": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-7.0.0.tgz", - "integrity": "sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==", - "engines": { - "node": ">=14.16" - } - }, - "node_modules/cacheable-request": { - "version": "10.2.14", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-10.2.14.tgz", - "integrity": "sha512-zkDT5WAF4hSSoUgyfg5tFIxz8XQK+25W/TLVojJTMKBaxevLBBtLxgqguAuVQB8PVW79FVjHcU+GJ9tVbDZ9mQ==", - "dependencies": { - "@types/http-cache-semantics": "^4.0.2", - "get-stream": "^6.0.1", - "http-cache-semantics": "^4.1.1", - "keyv": "^4.5.3", - "mimic-response": "^4.0.0", - "normalize-url": "^8.0.0", - "responselike": "^3.0.0" - }, - "engines": { - "node": ">=14.16" - } - }, - "node_modules/cacheable-request/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==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cacheable-request/node_modules/mimic-response": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-4.0.0.tgz", - "integrity": "sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/caching-transform": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-4.0.0.tgz", @@ -3179,20 +2602,6 @@ "node": ">=18" } }, - "node_modules/ci-info": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", - "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "engines": { - "node": ">=8" - } - }, "node_modules/circular-json": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", @@ -3204,21 +2613,11 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "devOptional": true, "engines": { "node": ">=6" } }, - "node_modules/cli-boxes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-3.0.0.tgz", - "integrity": "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/cli-color": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/cli-color/-/cli-color-2.0.4.tgz", @@ -3263,6 +2662,7 @@ "version": "0.6.3", "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.3.tgz", "integrity": "sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==", + "dev": true, "dependencies": { "string-width": "^4.2.0" }, @@ -3325,6 +2725,7 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "optional": true, "bin": { "color-support": "bin.js" } @@ -3492,6 +2893,7 @@ "version": "1.1.13", "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", + "dev": true, "dependencies": { "ini": "^1.3.4", "proto-list": "~1.2.1" @@ -3500,30 +2902,14 @@ "node_modules/config-chain/node_modules/ini": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" - }, - "node_modules/configstore": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/configstore/-/configstore-6.0.0.tgz", - "integrity": "sha512-cD31W1v3GqUlQvbBCGcXmd2Nj9SvLDOP1oQ0YFuLETufzSPaKp11rYBsSOm7rCsW3OnIRAFM3OxRhceaXNYHkA==", - "dependencies": { - "dot-prop": "^6.0.1", - "graceful-fs": "^4.2.6", - "unique-string": "^3.0.0", - "write-file-atomic": "^3.0.3", - "xdg-basedir": "^5.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/yeoman/configstore?sponsor=1" - } + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true }, "node_modules/console-control-strings": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==" + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", + "optional": true }, "node_modules/contains-path": { "version": "0.1.0", @@ -3611,6 +2997,7 @@ "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", @@ -3629,31 +3016,6 @@ "node": "*" } }, - "node_modules/crypto-random-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-4.0.0.tgz", - "integrity": "sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==", - "dependencies": { - "type-fest": "^1.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/crypto-random-string/node_modules/type-fest": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", - "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/csv-parse": { "version": "4.16.3", "resolved": "https://registry.npmjs.org/csv-parse/-/csv-parse-4.16.3.tgz", @@ -3831,14 +3193,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/defer-to-connect": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", - "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", - "engines": { - "node": ">=10" - } - }, "node_modules/define-data-property": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", @@ -3967,7 +3321,8 @@ "node_modules/delegates": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==" + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", + "optional": true }, "node_modules/denque": { "version": "2.1.0", @@ -4036,17 +3391,6 @@ "node": ">=0.3.1" } }, - "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==", - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/doctrine": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", @@ -4059,20 +3403,6 @@ "node": ">=0.10.0" } }, - "node_modules/dot-prop": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz", - "integrity": "sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==", - "dependencies": { - "is-obj": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/dottie": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/dottie/-/dottie-2.0.6.tgz", @@ -4081,7 +3411,8 @@ "node_modules/eastasianwidth": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true }, "node_modules/ecc-jsbn": { "version": "0.1.2", @@ -4243,6 +3574,7 @@ "version": "2.2.1", "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "optional": true, "engines": { "node": ">=6" } @@ -4250,7 +3582,8 @@ "node_modules/err-code": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", - "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==" + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", + "optional": true }, "node_modules/error-ex": { "version": "1.3.2", @@ -4449,17 +3782,6 @@ "node": ">=6" } }, - "node_modules/escape-goat": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-4.0.0.tgz", - "integrity": "sha512-2Sd4ShcWxbx6OY1IHyla/CVNwvg7XwZVoXZHcSu9w9SReNP1EzzD5T8NWKIR38fIqEns9kDWKUQTXXAmlDrdPg==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", @@ -5046,11 +4368,6 @@ "node": ">=6" } }, - "node_modules/exponential-backoff": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.1.tgz", - "integrity": "sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==" - }, "node_modules/express": { "version": "4.19.2", "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", @@ -5291,11 +4608,6 @@ "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", "dev": true }, - "node_modules/fast-memoize": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/fast-memoize/-/fast-memoize-2.5.2.tgz", - "integrity": "sha512-Ue0LwpDYErFbmNnZSF0UH6eImUwDmogUO1jyE+JbN2gsQz/jICm1Ve7t9QT0rNSsfJt+Hs4/S3GnsDVjL4HVrw==" - }, "node_modules/fast-redact": { "version": "3.5.0", "resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-3.5.0.tgz", @@ -5468,6 +4780,7 @@ "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" @@ -5570,14 +4883,6 @@ "node": ">= 6" } }, - "node_modules/form-data-encoder": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-2.1.4.tgz", - "integrity": "sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==", - "engines": { - "node": ">= 14.17" - } - }, "node_modules/formidable": { "version": "3.5.1", "resolved": "https://registry.npmjs.org/formidable/-/formidable-3.5.1.tgz", @@ -5607,14 +4912,6 @@ "node": ">= 0.6" } }, - "node_modules/fp-and-or": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/fp-and-or/-/fp-and-or-0.1.4.tgz", - "integrity": "sha512-+yRYRhpnFPWXSly/6V4Lw9IfOV26uu30kynGJ03PW+MnjOEQe45RZ141QcS0aJehYBYA50GfCDnsRbFJdhssRw==", - "engines": { - "node": ">=10" - } - }, "node_modules/fresh": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", @@ -5671,29 +4968,11 @@ "node": ">= 10.0.0" } }, - "node_modules/fs-minipass": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz", - "integrity": "sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==", - "dependencies": { - "minipass": "^7.0.3" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/fs-minipass/node_modules/minipass": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.1.tgz", - "integrity": "sha512-UZ7eQ+h8ywIRAW1hIEl2AqdwzJucU/Kp59+8kkZeSvafXhZjul247BvIJjEVFVeON6d7lM46XX1HXCduKAS8VA==", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, "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==" + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "devOptional": true }, "node_modules/fsevents": { "version": "2.3.3", @@ -5766,6 +5045,7 @@ "version": "4.0.4", "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", + "optional": true, "dependencies": { "aproba": "^1.0.3 || ^2.0.0", "color-support": "^1.1.3", @@ -5841,17 +5121,6 @@ "node": ">=8.0.0" } }, - "node_modules/get-stdin": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-8.0.0.tgz", - "integrity": "sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/get-stream": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", @@ -5992,20 +5261,6 @@ "node": ">=10.0" } }, - "node_modules/global-dirs": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz", - "integrity": "sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==", - "dependencies": { - "ini": "2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/globally": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/globally/-/globally-0.0.0.tgz", @@ -6039,25 +5294,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "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/gopd": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", @@ -6069,41 +5305,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/got": { - "version": "12.6.1", - "resolved": "https://registry.npmjs.org/got/-/got-12.6.1.tgz", - "integrity": "sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ==", - "dependencies": { - "@sindresorhus/is": "^5.2.0", - "@szmarczak/http-timer": "^5.0.1", - "cacheable-lookup": "^7.0.0", - "cacheable-request": "^10.2.8", - "decompress-response": "^6.0.0", - "form-data-encoder": "^2.1.2", - "get-stream": "^6.0.1", - "http2-wrapper": "^2.1.10", - "lowercase-keys": "^3.0.0", - "p-cancelable": "^3.0.0", - "responselike": "^3.0.0" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sindresorhus/got?sponsor=1" - } - }, - "node_modules/got/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==", - "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", @@ -6251,18 +5452,8 @@ "node_modules/has-unicode": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==" - }, - "node_modules/has-yarn": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-3.0.0.tgz", - "integrity": "sha512-IrsVwUHhEULx3R8f/aA8AHuEzAorplsab/v8HBzEiIukwq5i/EC+xmOW+HfP1OaDP+2JkgT1yILHN2O3UFIbcA==", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", + "optional": true }, "node_modules/hash.js": { "version": "1.1.7", @@ -6347,25 +5538,6 @@ "minimalistic-crypto-utils": "^1.0.1" } }, - "node_modules/hosted-git-info": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.2.1.tgz", - "integrity": "sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw==", - "dependencies": { - "lru-cache": "^7.5.1" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/hosted-git-info/node_modules/lru-cache": { - "version": "7.18.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", - "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", - "engines": { - "node": ">=12" - } - }, "node_modules/html-escaper": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", @@ -6375,7 +5547,8 @@ "node_modules/http-cache-semantics": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", - "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==" + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", + "optional": true }, "node_modules/http-errors": { "version": "2.0.0", @@ -6392,40 +5565,6 @@ "node": ">= 0.8" } }, - "node_modules/http-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", - "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", - "dependencies": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/http-proxy-agent/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/http-proxy-agent/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/http-reasons": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/http-reasons/-/http-reasons-0.1.0.tgz", @@ -6446,18 +5585,6 @@ "node": ">=0.10" } }, - "node_modules/http2-wrapper": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.2.1.tgz", - "integrity": "sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==", - "dependencies": { - "quick-lru": "^5.1.1", - "resolve-alpn": "^1.2.0" - }, - "engines": { - "node": ">=10.19.0" - } - }, "node_modules/httpntlm": { "version": "1.8.13", "resolved": "https://registry.npmjs.org/httpntlm/-/httpntlm-1.8.13.tgz", @@ -6507,6 +5634,7 @@ "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==", + "optional": true, "dependencies": { "agent-base": "6", "debug": "4" @@ -6519,6 +5647,7 @@ "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "optional": true, "dependencies": { "ms": "2.1.2" }, @@ -6534,12 +5663,14 @@ "node_modules/https-proxy-agent/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==" + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "optional": true }, "node_modules/humanize-ms": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", + "optional": true, "dependencies": { "ms": "^2.0.0" } @@ -6578,21 +5709,11 @@ "version": "5.3.1", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", + "dev": true, "engines": { "node": ">= 4" } }, - "node_modules/ignore-walk": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-6.0.5.tgz", - "integrity": "sha512-VuuG0wCnjhnylG1ABXT3dAuIpTNDs/G8jlpmwXY03fXoXy/8ZK8/T+hMzt8L4WnrLCJgdybqgPagnF/f97cg3A==", - "dependencies": { - "minimatch": "^9.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, "node_modules/immediate": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", @@ -6627,6 +5748,7 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "devOptional": true, "engines": { "node": ">=0.8.19" } @@ -6635,6 +5757,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "devOptional": true, "engines": { "node": ">=8" } @@ -6642,7 +5765,8 @@ "node_modules/infer-owner": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", - "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==" + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", + "optional": true }, "node_modules/inflection": { "version": "1.13.4", @@ -6656,6 +5780,7 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "devOptional": true, "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -6830,6 +5955,7 @@ "version": "9.0.5", "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", + "optional": true, "dependencies": { "jsbn": "1.1.0", "sprintf-js": "^1.1.3" @@ -6946,17 +6072,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-ci": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz", - "integrity": "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==", - "dependencies": { - "ci-info": "^3.2.0" - }, - "bin": { - "is-ci": "bin.js" - } - }, "node_modules/is-core-module": { "version": "2.13.1", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", @@ -7037,21 +6152,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-installed-globally": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", - "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", - "dependencies": { - "global-dirs": "^3.0.0", - "is-path-inside": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/is-ip": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-ip/-/is-ip-2.0.0.tgz", @@ -7067,7 +6167,8 @@ "node_modules/is-lambda": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", - "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==" + "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", + "optional": true }, "node_modules/is-negative-zero": { "version": "2.0.3", @@ -7081,17 +6182,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-npm": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-6.0.0.tgz", - "integrity": "sha512-JEjxbSmtPSt1c8XTkVrlujcXdKV1/tvuQ7GwKcAlyiVLeYFQ2VHat8xfrDJsIkhCdF/tZ7CiIR3sy141c6+gPQ==", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", @@ -7123,18 +6213,11 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", - "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", - "engines": { - "node": ">=8" - } - }, "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" } @@ -7260,7 +6343,8 @@ "node_modules/is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", + "dev": true }, "node_modules/is-unicode-supported": { "version": "0.1.0", @@ -7301,14 +6385,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-yarn-global": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.4.1.tgz", - "integrity": "sha512-/kppl+R+LO5VmhYSEWARUFjodS25D68gvj8W7z0I7OWhUla5xWu8KL6CtB2V0R6yqhnRgbcaREMr4EEM6htLPQ==", - "engines": { - "node": ">=12" - } - }, "node_modules/is2": { "version": "2.0.9", "resolved": "https://registry.npmjs.org/is2/-/is2-2.0.9.tgz", @@ -7562,6 +6638,7 @@ "version": "2.3.6", "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", + "dev": true, "dependencies": { "@isaacs/cliui": "^8.0.2" }, @@ -7771,7 +6848,8 @@ "node_modules/jsbn": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", - "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==" + "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==", + "optional": true }, "node_modules/jsesc": { "version": "2.5.2", @@ -7788,29 +6866,14 @@ "node_modules/json-buffer": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==" + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true }, "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": "3.0.2", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.2.tgz", - "integrity": "sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ==", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/json-parse-helpfulerror": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/json-parse-helpfulerror/-/json-parse-helpfulerror-1.0.3.tgz", - "integrity": "sha512-XgP0FGR77+QhUxjXkwOMkC94k3WtqEBfcnjWqhRd82qTat4SWKRE+9kUnynz/shm3I4ea2+qISvTIeGTNU7kJg==", - "dependencies": { - "jju": "^1.1.0" - } - }, "node_modules/json-schema": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", @@ -7839,6 +6902,7 @@ "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" }, @@ -7867,19 +6931,6 @@ "node": ">= 10.0.0" } }, - "node_modules/jsonlines": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsonlines/-/jsonlines-0.1.1.tgz", - "integrity": "sha512-ekDrAGso79Cvf+dtm+mL8OBI2bmAOt3gssYs833De/C9NmIpWDWyUO4zPgB5x2/OhY366dkhgfPMYfwZF7yOZA==" - }, - "node_modules/jsonparse": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", - "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", - "engines": [ - "node >= 0.2.0" - ] - }, "node_modules/jsonschema": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/jsonschema/-/jsonschema-1.4.1.tgz", @@ -7933,9 +6984,9 @@ } }, "node_modules/keycloak-connect": { - "version": "24.0.4", - "resolved": "https://registry.npmjs.org/keycloak-connect/-/keycloak-connect-24.0.4.tgz", - "integrity": "sha512-MaXcNEvvNM7z4QBw2oBAj7iAkH8BFMIO3REP6eXok5C6CfKC0ljS4byeXic6EQ0tBT5OtV9s4Xcv4aCqSWHtZA==", + "version": "25.0.1", + "resolved": "https://registry.npmjs.org/keycloak-connect/-/keycloak-connect-25.0.1.tgz", + "integrity": "sha512-RjVXo+c8ahOMC2QYt/MRLq5Qx9IavII+nwN9s1kyK8DcxWvi44sqJquGFMXqCXM181LxZ2yPmzJACSoO7pBQnA==", "dependencies": { "jwk-to-pem": "^2.0.0" }, @@ -7950,32 +7001,11 @@ "version": "4.5.4", "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, "dependencies": { "json-buffer": "3.0.1" } }, - "node_modules/kleur": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", - "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", - "engines": { - "node": ">=6" - } - }, - "node_modules/latest-version": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-7.0.0.tgz", - "integrity": "sha512-KvNT4XqAMzdcL6ka6Tl3i2lYeFDgXNCuIX+xNx6ZMVR1dFq+idXd9FLKNMOIx0t9mJ9/HudyX4oZWXZQ0UJHeg==", - "dependencies": { - "package-json": "^8.1.0" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/levn": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", @@ -8044,6 +7074,7 @@ "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" }, @@ -8138,17 +7169,6 @@ "get-func-name": "^2.0.1" } }, - "node_modules/lowercase-keys": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz", - "integrity": "sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/lru-cache": { "version": "8.0.5", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-8.0.5.tgz", @@ -8190,39 +7210,6 @@ "semver": "bin/semver.js" } }, - "node_modules/make-fetch-happen": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz", - "integrity": "sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==", - "dependencies": { - "agentkeepalive": "^4.2.1", - "cacache": "^17.0.0", - "http-cache-semantics": "^4.1.1", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^7.7.1", - "minipass": "^5.0.0", - "minipass-fetch": "^3.0.0", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.3", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^7.0.0", - "ssri": "^10.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/make-fetch-happen/node_modules/lru-cache": { - "version": "7.18.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", - "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", - "engines": { - "node": ">=12" - } - }, "node_modules/matcher": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/matcher/-/matcher-3.0.0.tgz", @@ -8406,6 +7393,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", + "optional": true, "dependencies": { "minipass": "^3.0.0" }, @@ -8417,6 +7405,7 @@ "version": "3.3.6", "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "optional": true, "dependencies": { "yallist": "^4.0.0" }, @@ -8424,36 +7413,13 @@ "node": ">=8" } }, - "node_modules/minipass-fetch": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.5.tgz", - "integrity": "sha512-2N8elDQAtSnFV0Dk7gt15KHsS0Fyz6CbYZ360h0WTYV1Ty46li3rAXVOQj1THMNLdmrD9Vt5pBPtWtVkpwGBqg==", + "node_modules/minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "optional": true, "dependencies": { - "minipass": "^7.0.3", - "minipass-sized": "^1.0.3", - "minizlib": "^2.1.2" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - }, - "optionalDependencies": { - "encoding": "^0.1.13" - } - }, - "node_modules/minipass-fetch/node_modules/minipass": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.1.tgz", - "integrity": "sha512-UZ7eQ+h8ywIRAW1hIEl2AqdwzJucU/Kp59+8kkZeSvafXhZjul247BvIJjEVFVeON6d7lM46XX1HXCduKAS8VA==", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/minipass-flush": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", - "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", - "dependencies": { - "minipass": "^3.0.0" + "minipass": "^3.0.0" }, "engines": { "node": ">= 8" @@ -8463,26 +7429,7 @@ "version": "3.3.6", "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/minipass-json-stream": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz", - "integrity": "sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg==", - "dependencies": { - "jsonparse": "^1.3.1", - "minipass": "^3.0.0" - } - }, - "node_modules/minipass-json-stream/node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "optional": true, "dependencies": { "yallist": "^4.0.0" }, @@ -8494,6 +7441,7 @@ "version": "1.2.4", "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", + "optional": true, "dependencies": { "minipass": "^3.0.0" }, @@ -8505,6 +7453,7 @@ "version": "3.3.6", "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "optional": true, "dependencies": { "yallist": "^4.0.0" }, @@ -8516,6 +7465,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", + "optional": true, "dependencies": { "minipass": "^3.0.0" }, @@ -8527,6 +7477,7 @@ "version": "3.3.6", "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "optional": true, "dependencies": { "yallist": "^4.0.0" }, @@ -8578,14 +7529,14 @@ "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" }, "node_modules/mocha": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.4.0.tgz", - "integrity": "sha512-eqhGB8JKapEYcC4ytX/xrzKforgEc3j1pGlAXVy3eRwrtAy5/nIfT1SvgGzfN0XZZxeLq0aQWkOUAmqIJiv+bA==", + "version": "10.5.2", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.5.2.tgz", + "integrity": "sha512-9btlN3JKCefPf+vKd/kcKz2SXxi12z6JswkGfaAF0saQvnsqLJk504ZmbxhSoENge08E9dsymozKgFMTl5PQsA==", "dev": true, "dependencies": { "ansi-colors": "4.1.1", "browser-stdout": "1.3.1", - "chokidar": "3.5.3", + "chokidar": "^3.5.3", "debug": "4.3.4", "diff": "5.0.0", "escape-string-regexp": "4.0.0", @@ -8800,9 +7751,9 @@ "dev": true }, "node_modules/mysql2": { - "version": "3.9.8", - "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.9.8.tgz", - "integrity": "sha512-+5JKNjPuks1FNMoy9TYpl77f+5frbTklz7eb3XDwbpsERRLEeXiW2PDEkakYF50UuKU2qwfGnyXpKYvukv8mGA==", + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.10.1.tgz", + "integrity": "sha512-6zo1T3GILsXMCex3YEu7hCz2OXLUarxFsxvFcUHWMpkPtmZLeTTWgRdc1gWyNJiYt6AxITmIf9bZDRy/jAfWew==", "dependencies": { "denque": "^2.1.0", "generate-function": "^2.3.1", @@ -9028,276 +7979,6 @@ "node": ">= 6.13.0" } }, - "node_modules/node-gyp": { - "version": "9.4.1", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-9.4.1.tgz", - "integrity": "sha512-OQkWKbjQKbGkMf/xqI1jjy3oCTgMKJac58G2+bjZb3fza6gW2YrCSdMQYaoTb70crvE//Gngr4f0AgVHmqHvBQ==", - "dependencies": { - "env-paths": "^2.2.0", - "exponential-backoff": "^3.1.1", - "glob": "^7.1.4", - "graceful-fs": "^4.2.6", - "make-fetch-happen": "^10.0.3", - "nopt": "^6.0.0", - "npmlog": "^6.0.0", - "rimraf": "^3.0.2", - "semver": "^7.3.5", - "tar": "^6.1.2", - "which": "^2.0.2" - }, - "bin": { - "node-gyp": "bin/node-gyp.js" - }, - "engines": { - "node": "^12.13 || ^14.13 || >=16" - } - }, - "node_modules/node-gyp/node_modules/@npmcli/fs": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.2.tgz", - "integrity": "sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==", - "dependencies": { - "@gar/promisify": "^1.1.3", - "semver": "^7.3.5" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/node-gyp/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==", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/node-gyp/node_modules/cacache": { - "version": "16.1.3", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.1.3.tgz", - "integrity": "sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==", - "dependencies": { - "@npmcli/fs": "^2.1.0", - "@npmcli/move-file": "^2.0.0", - "chownr": "^2.0.0", - "fs-minipass": "^2.1.0", - "glob": "^8.0.1", - "infer-owner": "^1.0.4", - "lru-cache": "^7.7.1", - "minipass": "^3.1.6", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "mkdirp": "^1.0.4", - "p-map": "^4.0.0", - "promise-inflight": "^1.0.1", - "rimraf": "^3.0.2", - "ssri": "^9.0.0", - "tar": "^6.1.11", - "unique-filename": "^2.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/node-gyp/node_modules/cacache/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/node-gyp/node_modules/cacache/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/node-gyp/node_modules/cacache/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/node-gyp/node_modules/fs-minipass": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/node-gyp/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "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/node-gyp/node_modules/lru-cache": { - "version": "7.18.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", - "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", - "engines": { - "node": ">=12" - } - }, - "node_modules/node-gyp/node_modules/make-fetch-happen": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz", - "integrity": "sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==", - "dependencies": { - "agentkeepalive": "^4.2.1", - "cacache": "^16.1.0", - "http-cache-semantics": "^4.1.0", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^7.7.1", - "minipass": "^3.1.6", - "minipass-collect": "^1.0.2", - "minipass-fetch": "^2.0.3", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.3", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^7.0.0", - "ssri": "^9.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/node-gyp/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/node-gyp/node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/node-gyp/node_modules/minipass-fetch": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.2.tgz", - "integrity": "sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==", - "dependencies": { - "minipass": "^3.1.6", - "minipass-sized": "^1.0.3", - "minizlib": "^2.1.2" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - }, - "optionalDependencies": { - "encoding": "^0.1.13" - } - }, - "node_modules/node-gyp/node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/node-gyp/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/node-gyp/node_modules/ssri": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz", - "integrity": "sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==", - "dependencies": { - "minipass": "^3.1.1" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/node-gyp/node_modules/unique-filename": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-2.0.1.tgz", - "integrity": "sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A==", - "dependencies": { - "unique-slug": "^3.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/node-gyp/node_modules/unique-slug": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-3.0.0.tgz", - "integrity": "sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w==", - "dependencies": { - "imurmurhash": "^0.1.4" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, "node_modules/node-oauth1": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/node-oauth1/-/node-oauth1-1.3.0.tgz", @@ -9322,53 +8003,6 @@ "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", "dev": true }, - "node_modules/nopt": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz", - "integrity": "sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==", - "dependencies": { - "abbrev": "^1.0.0" - }, - "bin": { - "nopt": "bin/nopt.js" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/normalize-package-data": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-5.0.0.tgz", - "integrity": "sha512-h9iPVIfrVZ9wVYQnxFgtw1ugSvGEMOlyPWWtm8BMJhnwyEL/FLbYbTY3V3PpjI/BUK67n9PEWDu6eHzu1fB15Q==", - "dependencies": { - "hosted-git-info": "^6.0.0", - "is-core-module": "^2.8.1", - "semver": "^7.3.5", - "validate-npm-package-license": "^3.0.4" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/normalize-package-data/node_modules/hosted-git-info": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.1.tgz", - "integrity": "sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==", - "dependencies": { - "lru-cache": "^7.5.1" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/normalize-package-data/node_modules/lru-cache": { - "version": "7.18.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", - "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", - "engines": { - "node": ">=12" - } - }, "node_modules/normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", @@ -9378,232 +8012,6 @@ "node": ">=0.10.0" } }, - "node_modules/normalize-url": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.1.tgz", - "integrity": "sha512-IO9QvjUMWxPQQhs60oOu10CRkWCiZzSUkzbXGGV9pviYl1fXYcvkzQ5jV9z8Y6un8ARoVRl4EtC6v6jNqbaJ/w==", - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/npm-bundled": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-3.0.1.tgz", - "integrity": "sha512-+AvaheE/ww1JEwRHOrn4WHNzOxGtVp+adrg2AeZS/7KuxGUYFuBta98wYpfHBbJp6Tg6j1NKSEVHNcfZzJHQwQ==", - "dependencies": { - "npm-normalize-package-bin": "^3.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm-check-updates": { - "version": "16.14.20", - "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-16.14.20.tgz", - "integrity": "sha512-sYbIhun4DrjO7NFOTdvs11nCar0etEhZTsEjL47eM0TuiGMhmYughRCxG2SpGRmGAQ7AkwN7bw2lWzoE7q6yOQ==", - "dependencies": { - "@types/semver-utils": "^1.1.1", - "chalk": "^5.3.0", - "cli-table3": "^0.6.3", - "commander": "^10.0.1", - "fast-memoize": "^2.5.2", - "find-up": "5.0.0", - "fp-and-or": "^0.1.4", - "get-stdin": "^8.0.0", - "globby": "^11.0.4", - "hosted-git-info": "^5.1.0", - "ini": "^4.1.1", - "js-yaml": "^4.1.0", - "json-parse-helpfulerror": "^1.0.3", - "jsonlines": "^0.1.1", - "lodash": "^4.17.21", - "make-fetch-happen": "^11.1.1", - "minimatch": "^9.0.3", - "p-map": "^4.0.0", - "pacote": "15.2.0", - "parse-github-url": "^1.0.2", - "progress": "^2.0.3", - "prompts-ncu": "^3.0.0", - "rc-config-loader": "^4.1.3", - "remote-git-tags": "^3.0.0", - "rimraf": "^5.0.5", - "semver": "^7.5.4", - "semver-utils": "^1.1.4", - "source-map-support": "^0.5.21", - "spawn-please": "^2.0.2", - "strip-ansi": "^7.1.0", - "strip-json-comments": "^5.0.1", - "untildify": "^4.0.0", - "update-notifier": "^6.0.2" - }, - "bin": { - "ncu": "build/src/bin/cli.js", - "npm-check-updates": "build/src/bin/cli.js" - }, - "engines": { - "node": ">=14.14" - } - }, - "node_modules/npm-check-updates/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/npm-check-updates/node_modules/chalk": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", - "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/npm-check-updates/node_modules/commander": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", - "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", - "engines": { - "node": ">=14" - } - }, - "node_modules/npm-check-updates/node_modules/ini": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.2.tgz", - "integrity": "sha512-AMB1mvwR1pyBFY/nSevUX6y8nJWS63/SzUKD3JyQn97s4xgIdgQPT75IRouIiBAN4yLQBUShNYVW0+UG25daCw==", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm-check-updates/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/npm-check-updates/node_modules/strip-json-comments": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-5.0.1.tgz", - "integrity": "sha512-0fk9zBqO67Nq5M/m45qHCJxylV/DhBlIOVExqgOMiCCrzrhU6tCibRXNqE3jwJLftzE9SNuZtYbpzcO+i9FiKw==", - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/npm-install-checks": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-6.3.0.tgz", - "integrity": "sha512-W29RiK/xtpCGqn6f3ixfRYGk+zRyr+Ew9F2E20BfXxT5/euLdA/Nm7fO7OeTGuAmTs30cpgInyJ0cYe708YTZw==", - "dependencies": { - "semver": "^7.1.1" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm-normalize-package-bin": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-3.0.1.tgz", - "integrity": "sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ==", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm-package-arg": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-10.1.0.tgz", - "integrity": "sha512-uFyyCEmgBfZTtrKk/5xDfHp6+MdrqGotX/VoOyEEl3mBwiEE5FlBaePanazJSVMPT7vKepcjYBY2ztg9A3yPIA==", - "dependencies": { - "hosted-git-info": "^6.0.0", - "proc-log": "^3.0.0", - "semver": "^7.3.5", - "validate-npm-package-name": "^5.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm-package-arg/node_modules/hosted-git-info": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.1.tgz", - "integrity": "sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==", - "dependencies": { - "lru-cache": "^7.5.1" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm-package-arg/node_modules/lru-cache": { - "version": "7.18.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", - "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", - "engines": { - "node": ">=12" - } - }, - "node_modules/npm-packlist": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-7.0.4.tgz", - "integrity": "sha512-d6RGEuRrNS5/N84iglPivjaJPxhDbZmlbTwTDX2IbcRHG5bZCdtysYMhwiPvcF4GisXHGn7xsxv+GQ7T/02M5Q==", - "dependencies": { - "ignore-walk": "^6.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm-pick-manifest": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-8.0.2.tgz", - "integrity": "sha512-1dKY+86/AIiq1tkKVD3l0WI+Gd3vkknVGAggsFeBkTvbhMQ1OND/LKkYv4JtXPKUJ8bOTCyLiqEg2P6QNdK+Gg==", - "dependencies": { - "npm-install-checks": "^6.0.0", - "npm-normalize-package-bin": "^3.0.0", - "npm-package-arg": "^10.0.0", - "semver": "^7.3.5" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm-registry-fetch": { - "version": "14.0.5", - "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-14.0.5.tgz", - "integrity": "sha512-kIDMIo4aBm6xg7jOttupWZamsZRkAqMqwqqbVXnUqstY5+tapvv6bkH/qMR76jdgV+YljEUCyWx3hRYMrJiAgA==", - "dependencies": { - "make-fetch-happen": "^11.0.0", - "minipass": "^5.0.0", - "minipass-fetch": "^3.0.0", - "minipass-json-stream": "^1.0.1", - "minizlib": "^2.1.2", - "npm-package-arg": "^10.0.0", - "proc-log": "^3.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, "node_modules/npm-run-path": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", @@ -9627,6 +8035,7 @@ "version": "6.0.2", "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", + "optional": true, "dependencies": { "are-we-there-yet": "^3.0.0", "console-control-strings": "^1.1.0", @@ -10018,14 +8427,6 @@ "node": ">=0.10.0" } }, - "node_modules/p-cancelable": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz", - "integrity": "sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==", - "engines": { - "node": ">=12.20" - } - }, "node_modules/p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", @@ -10038,6 +8439,7 @@ "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" }, @@ -10052,6 +8454,7 @@ "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" }, @@ -10066,6 +8469,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "optional": true, "dependencies": { "aggregate-error": "^3.0.0" }, @@ -10194,65 +8598,17 @@ }, "node_modules/package-hash": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-4.0.0.tgz", - "integrity": "sha512-whdkPIooSu/bASggZ96BWVvZTRMOFxnyUG5PnTSGKoJE2gd5mbVNmR2Nj20QFzxYYgAXpoqC+AiXzl+UMRh7zQ==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.15", - "hasha": "^5.0.0", - "lodash.flattendeep": "^4.4.0", - "release-zalgo": "^1.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/package-json": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/package-json/-/package-json-8.1.1.tgz", - "integrity": "sha512-cbH9IAIJHNj9uXi196JVsRlt7cHKak6u/e6AkL/bkRelZ7rlL3X1YKxsZwa36xipOEKAsdtmaG6aAJoM1fx2zA==", - "dependencies": { - "got": "^12.1.0", - "registry-auth-token": "^5.0.1", - "registry-url": "^6.0.0", - "semver": "^7.3.7" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/pacote": { - "version": "15.2.0", - "resolved": "https://registry.npmjs.org/pacote/-/pacote-15.2.0.tgz", - "integrity": "sha512-rJVZeIwHTUta23sIZgEIM62WYwbmGbThdbnkt81ravBplQv+HjyroqnLRNH2+sLJHcGZmLRmhPwACqhfTcOmnA==", + "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-4.0.0.tgz", + "integrity": "sha512-whdkPIooSu/bASggZ96BWVvZTRMOFxnyUG5PnTSGKoJE2gd5mbVNmR2Nj20QFzxYYgAXpoqC+AiXzl+UMRh7zQ==", + "dev": true, "dependencies": { - "@npmcli/git": "^4.0.0", - "@npmcli/installed-package-contents": "^2.0.1", - "@npmcli/promise-spawn": "^6.0.1", - "@npmcli/run-script": "^6.0.0", - "cacache": "^17.0.0", - "fs-minipass": "^3.0.0", - "minipass": "^5.0.0", - "npm-package-arg": "^10.0.0", - "npm-packlist": "^7.0.0", - "npm-pick-manifest": "^8.0.0", - "npm-registry-fetch": "^14.0.0", - "proc-log": "^3.0.0", - "promise-retry": "^2.0.1", - "read-package-json": "^6.0.0", - "read-package-json-fast": "^3.0.0", - "sigstore": "^1.3.0", - "ssri": "^10.0.0", - "tar": "^6.1.11" - }, - "bin": { - "pacote": "lib/bin.js" + "graceful-fs": "^4.1.15", + "hasha": "^5.0.0", + "lodash.flattendeep": "^4.4.0", + "release-zalgo": "^1.0.0" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=8" } }, "node_modules/parent-module": { @@ -10267,17 +8623,6 @@ "node": ">=6" } }, - "node_modules/parse-github-url": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/parse-github-url/-/parse-github-url-1.0.2.tgz", - "integrity": "sha512-kgBf6avCbO3Cn6+RnzRGLkUsv4ZVqv/VfAYkRsyBcgkshNvVBkRn1FEZcW0Jb+npXQWm2vHPnnOqFteZxRRGNw==", - "bin": { - "parse-github-url": "cli.js" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/parse-json": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", @@ -10321,6 +8666,7 @@ "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" } @@ -10329,6 +8675,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "devOptional": true, "engines": { "node": ">=0.10.0" } @@ -10343,6 +8690,7 @@ "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" } @@ -10356,6 +8704,7 @@ "version": "1.11.1", "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dev": true, "dependencies": { "lru-cache": "^10.2.0", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" @@ -10371,6 +8720,7 @@ "version": "10.2.2", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz", "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==", + "dev": true, "engines": { "node": "14 || >=16.14" } @@ -10380,14 +8730,6 @@ "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==", - "engines": { - "node": ">=8" - } - }, "node_modules/pathval": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.0.tgz", @@ -10990,14 +9332,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/proc-log": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", - "integrity": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, "node_modules/process": { "version": "0.11.10", "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", @@ -11032,6 +9366,7 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true, "engines": { "node": ">=0.4.0" } @@ -11039,7 +9374,8 @@ "node_modules/promise-inflight": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", - "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==" + "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", + "optional": true }, "node_modules/promise-polyfill": { "version": "2.1.4", @@ -11050,6 +9386,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", + "optional": true, "dependencies": { "err-code": "^2.0.2", "retry": "^0.12.0" @@ -11058,18 +9395,6 @@ "node": ">=10" } }, - "node_modules/prompts-ncu": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/prompts-ncu/-/prompts-ncu-3.0.0.tgz", - "integrity": "sha512-qyz9UxZ5MlPKWVhWrCmSZ1ahm2GVYdjLb8og2sg0IPth1KRuhcggHGuijz0e41dkx35p1t1q3GRISGH7QGALFA==", - "dependencies": { - "kleur": "^4.0.1", - "sisteransi": "^1.0.5" - }, - "engines": { - "node": ">= 14" - } - }, "node_modules/prop-types": { "version": "15.8.1", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", @@ -11093,7 +9418,8 @@ "node_modules/proto-list": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", - "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==" + "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", + "dev": true }, "node_modules/proxy-addr": { "version": "2.0.7", @@ -11239,20 +9565,6 @@ "node": ">=6" } }, - "node_modules/pupa": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/pupa/-/pupa-3.1.0.tgz", - "integrity": "sha512-FLpr4flz5xZTSJxSeaheeMKN/EDzMdK7b8PTOC6a5PYFKTucWbdqjgqaEyH0shFiSJrVB1+Qqi4Tk19ccU6Aug==", - "dependencies": { - "escape-goat": "^4.0.0" - }, - "engines": { - "node": ">=12.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/qs": { "version": "6.12.1", "resolved": "https://registry.npmjs.org/qs/-/qs-6.12.1.tgz", @@ -11297,17 +9609,6 @@ "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", - "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/random-bytes": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz", @@ -11361,38 +9662,6 @@ "rc": "cli.js" } }, - "node_modules/rc-config-loader": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/rc-config-loader/-/rc-config-loader-4.1.3.tgz", - "integrity": "sha512-kD7FqML7l800i6pS6pvLyIE2ncbk9Du8Q0gp/4hMPhJU6ZxApkoLcGD8ZeqgiAlfwZ6BlETq6qqe+12DUL207w==", - "dependencies": { - "debug": "^4.3.4", - "js-yaml": "^4.1.0", - "json5": "^2.2.2", - "require-from-string": "^2.0.2" - } - }, - "node_modules/rc-config-loader/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/rc-config-loader/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/rc/node_modules/ini": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", @@ -11412,87 +9681,6 @@ "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", "dev": true }, - "node_modules/read-package-json": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-6.0.4.tgz", - "integrity": "sha512-AEtWXYfopBj2z5N5PbkAOeNHRPUg5q+Nen7QLxV8M2zJq1ym6/lCz3fYNTCXe19puu2d06jfHhrP7v/S2PtMMw==", - "dependencies": { - "glob": "^10.2.2", - "json-parse-even-better-errors": "^3.0.0", - "normalize-package-data": "^5.0.0", - "npm-normalize-package-bin": "^3.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/read-package-json-fast": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-3.0.2.tgz", - "integrity": "sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw==", - "dependencies": { - "json-parse-even-better-errors": "^3.0.0", - "npm-normalize-package-bin": "^3.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/read-package-json/node_modules/foreground-child": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", - "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", - "dependencies": { - "cross-spawn": "^7.0.0", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/read-package-json/node_modules/glob": { - "version": "10.3.15", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.15.tgz", - "integrity": "sha512-0c6RlJt1TICLyvJYIApxb8GsXoai0KUP7AxKKAtsYXdgJR1mGEUa7DgwShbdk1nly0PYoZj01xd4hzbq3fsjpw==", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.3.6", - "minimatch": "^9.0.1", - "minipass": "^7.0.4", - "path-scurry": "^1.11.0" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "engines": { - "node": ">=16 || 14 >=14.18" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/read-package-json/node_modules/minipass": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.1.tgz", - "integrity": "sha512-UZ7eQ+h8ywIRAW1hIEl2AqdwzJucU/Kp59+8kkZeSvafXhZjul247BvIJjEVFVeON6d7lM46XX1HXCduKAS8VA==", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/read-package-json/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/read-pkg": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", @@ -11729,31 +9917,6 @@ "node": ">=6.5.0" } }, - "node_modules/registry-auth-token": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-5.0.2.tgz", - "integrity": "sha512-o/3ikDxtXaA59BmZuZrJZDJv8NMDGSj+6j6XaeBmHw8eY1i1qd9+6H+LjVvQXx3HN6aRCGa1cUdJ9RaJZUugnQ==", - "dependencies": { - "@pnpm/npm-conf": "^2.1.0" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/registry-url": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-6.0.1.tgz", - "integrity": "sha512-+crtS5QjFRqFCoQmvGduwYWEBng99ZvmFvF+cUJkGYF1L1BfU8C6Zp9T7f5vPAwyLkUExpvK+ANVZmGU49qi4Q==", - "dependencies": { - "rc": "1.2.8" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/release-zalgo": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz", @@ -11766,14 +9929,6 @@ "node": ">=4" } }, - "node_modules/remote-git-tags": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/remote-git-tags/-/remote-git-tags-3.0.0.tgz", - "integrity": "sha512-C9hAO4eoEsX+OXA4rla66pXZQ+TLQ8T9dttgQj18yuKlPMTVkIkdYXvlMC55IuUsIkV6DpmQYi10JKFLaU+l7w==", - "engines": { - "node": ">=8" - } - }, "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -11782,14 +9937,6 @@ "node": ">=0.10.0" } }, - "node_modules/require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/require-main-filename": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", @@ -11840,11 +9987,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/resolve-alpn": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", - "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==" - }, "node_modules/resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", @@ -11854,20 +9996,6 @@ "node": ">=4" } }, - "node_modules/responselike": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-3.0.0.tgz", - "integrity": "sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==", - "dependencies": { - "lowercase-keys": "^3.0.0" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/restore-cursor": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", @@ -11885,6 +10013,7 @@ "version": "0.12.0", "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", + "optional": true, "engines": { "node": ">= 4" } @@ -11892,87 +10021,15 @@ "node_modules/retry-as-promised": { "version": "7.0.4", "resolved": "https://registry.npmjs.org/retry-as-promised/-/retry-as-promised-7.0.4.tgz", - "integrity": "sha512-XgmCoxKWkDofwH8WddD0w85ZfqYz+ZHlr5yo+3YUCfycWawU56T5ckWXsScsj5B8tqUcIG67DxXByo3VUgiAdA==" - }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rimraf": { - "version": "5.0.7", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.7.tgz", - "integrity": "sha512-nV6YcJo5wbLW77m+8KjH8aB/7/rxQy9SZ0HY5shnwULfS+9nmTtVXAJET5NdZmCzA4fPI/Hm1wo/Po/4mopOdg==", - "dependencies": { - "glob": "^10.3.7" - }, - "bin": { - "rimraf": "dist/esm/bin.mjs" - }, - "engines": { - "node": ">=14.18" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/rimraf/node_modules/foreground-child": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", - "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", - "dependencies": { - "cross-spawn": "^7.0.0", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/rimraf/node_modules/glob": { - "version": "10.3.15", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.15.tgz", - "integrity": "sha512-0c6RlJt1TICLyvJYIApxb8GsXoai0KUP7AxKKAtsYXdgJR1mGEUa7DgwShbdk1nly0PYoZj01xd4hzbq3fsjpw==", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.3.6", - "minimatch": "^9.0.1", - "minipass": "^7.0.4", - "path-scurry": "^1.11.0" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "engines": { - "node": ">=16 || 14 >=14.18" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/rimraf/node_modules/minipass": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.1.tgz", - "integrity": "sha512-UZ7eQ+h8ywIRAW1hIEl2AqdwzJucU/Kp59+8kkZeSvafXhZjul247BvIJjEVFVeON6d7lM46XX1HXCduKAS8VA==", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/rimraf/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "integrity": "sha512-XgmCoxKWkDofwH8WddD0w85ZfqYz+ZHlr5yo+3YUCfycWawU56T5ckWXsScsj5B8tqUcIG67DxXByo3VUgiAdA==" + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "iojs": ">=1.0.0", + "node": ">=0.10.0" } }, "node_modules/roarr": { @@ -12133,25 +10190,6 @@ "integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==", "dev": true }, - "node_modules/semver-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-4.0.0.tgz", - "integrity": "sha512-0Ju4+6A8iOnpL/Thra7dZsSlOHYAHIeMxfhWQRI1/VLcT3WDBZKKtQt/QkBOsiIN9ZpuvHE6cGZ0x4glCMmfiA==", - "dependencies": { - "semver": "^7.3.5" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/semver-utils": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/semver-utils/-/semver-utils-1.1.4.tgz", - "integrity": "sha512-EjnoLE5OGmDAVV/8YDoN5KiajNadjzIp9BAHOhYeQHt7j0UWxjmgsx4YD48wp4Ue1Qogq38F1GNUJNqF1kKKxA==" - }, "node_modules/semver/node_modules/lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", @@ -12424,7 +10462,8 @@ "node_modules/set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "devOptional": true }, "node_modules/set-function-length": { "version": "1.2.2", @@ -12471,6 +10510,7 @@ "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" }, @@ -12482,6 +10522,7 @@ "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" } @@ -12508,24 +10549,6 @@ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" }, - "node_modules/sigstore": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/sigstore/-/sigstore-1.9.0.tgz", - "integrity": "sha512-0Zjz0oe37d08VeOtBIuB6cRriqXse2e8w+7yIy2XSXjshRKxbc2KkhXjL229jXSxEm7UbcjS76wcJDGQddVI9A==", - "dependencies": { - "@sigstore/bundle": "^1.1.0", - "@sigstore/protobuf-specs": "^0.2.0", - "@sigstore/sign": "^1.0.0", - "@sigstore/tuf": "^1.0.3", - "make-fetch-happen": "^11.0.1" - }, - "bin": { - "sigstore": "bin/sigstore.js" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, "node_modules/simple-concat": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", @@ -12606,19 +10629,6 @@ "node": ">=0.3.1" } }, - "node_modules/sisteransi": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==" - }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "engines": { - "node": ">=8" - } - }, "node_modules/slice-ansi": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz", @@ -12644,6 +10654,7 @@ "version": "4.2.0", "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "optional": true, "engines": { "node": ">= 6.0.0", "npm": ">= 3.0.0" @@ -12670,6 +10681,7 @@ "version": "2.8.3", "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.3.tgz", "integrity": "sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==", + "optional": true, "dependencies": { "ip-address": "^9.0.5", "smart-buffer": "^4.2.0" @@ -12679,40 +10691,6 @@ "npm": ">= 3.0.0" } }, - "node_modules/socks-proxy-agent": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz", - "integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==", - "dependencies": { - "agent-base": "^6.0.2", - "debug": "^4.3.3", - "socks": "^2.6.2" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/socks-proxy-agent/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/socks-proxy-agent/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/sonic-boom": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-4.0.1.tgz", @@ -12725,30 +10703,11 @@ "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "devOptional": true, "engines": { "node": ">=0.10.0" } }, - "node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/spawn-please": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/spawn-please/-/spawn-please-2.0.2.tgz", - "integrity": "sha512-KM8coezO6ISQ89c1BzyWNtcn2V2kAVtwIXd3cN/V5a0xPYc1F/vydrRc01wsKFEQ/p+V1a4sw4z2yMITIXrgGw==", - "dependencies": { - "cross-spawn": "^7.0.3" - }, - "engines": { - "node": ">=14" - } - }, "node_modules/spawn-wrap": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-2.0.0.tgz", @@ -12827,6 +10786,7 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", + "dev": true, "dependencies": { "spdx-expression-parse": "^3.0.0", "spdx-license-ids": "^3.0.0" @@ -12835,12 +10795,14 @@ "node_modules/spdx-exceptions": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", - "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==" + "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", + "dev": true }, "node_modules/spdx-expression-parse": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, "dependencies": { "spdx-exceptions": "^2.1.0", "spdx-license-ids": "^3.0.0" @@ -12849,7 +10811,8 @@ "node_modules/spdx-license-ids": { "version": "3.0.17", "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.17.tgz", - "integrity": "sha512-sh8PWc/ftMqAAdFiBu6Fy6JUOYjqDJBJvIhpfDMyHrr0Rbp5liZqd4TjtQ/RgfLjKFZb+LMx5hpml5qOWy0qvg==" + "integrity": "sha512-sh8PWc/ftMqAAdFiBu6Fy6JUOYjqDJBJvIhpfDMyHrr0Rbp5liZqd4TjtQ/RgfLjKFZb+LMx5hpml5qOWy0qvg==", + "dev": true }, "node_modules/split2": { "version": "4.2.0", @@ -12862,7 +10825,8 @@ "node_modules/sprintf-js": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", - "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==" + "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", + "devOptional": true }, "node_modules/sqlite3": { "version": "5.1.7", @@ -13257,25 +11221,6 @@ "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", "dev": true }, - "node_modules/ssri": { - "version": "10.0.6", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.6.tgz", - "integrity": "sha512-MGrFH9Z4NP9Iyhqn16sDtBpRRNJ0Y2hNa6D65h736fVSaPCHr4DM4sWUNvVaSuC+0OBGhwsrydQwmgfg5LncqQ==", - "dependencies": { - "minipass": "^7.0.3" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/ssri/node_modules/minipass": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.1.tgz", - "integrity": "sha512-UZ7eQ+h8ywIRAW1hIEl2AqdwzJucU/Kp59+8kkZeSvafXhZjul247BvIJjEVFVeON6d7lM46XX1HXCduKAS8VA==", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, "node_modules/stack-trace": { "version": "0.0.9", "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.9.tgz", @@ -13966,6 +11911,7 @@ "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", @@ -14040,6 +11986,7 @@ "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" }, @@ -14651,40 +12598,6 @@ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", "optional": true }, - "node_modules/tuf-js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/tuf-js/-/tuf-js-1.1.7.tgz", - "integrity": "sha512-i3P9Kgw3ytjELUfpuKVDNBJvk4u5bXL6gskv572mcevPbSKCV3zt3djhmlEQ65yERjIbOSncy7U4cQJaB1CBCg==", - "dependencies": { - "@tufjs/models": "1.0.4", - "debug": "^4.3.4", - "make-fetch-happen": "^11.1.1" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/tuf-js/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/tuf-js/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/tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", @@ -14832,6 +12745,7 @@ "version": "3.1.5", "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dev": true, "dependencies": { "is-typedarray": "^1.0.0" } @@ -14925,42 +12839,6 @@ "integrity": "sha512-Gw+zz50YNKPDKXs+9d+aKAjVwpjNwqzvNpLigIruT4HA9lMZNdMqs9x07kKHB/L9WRzqp4+DlTU5s4wG2esdoA==", "dev": true }, - "node_modules/unique-filename": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", - "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==", - "dependencies": { - "unique-slug": "^4.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/unique-slug": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz", - "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==", - "dependencies": { - "imurmurhash": "^0.1.4" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/unique-string": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-3.0.0.tgz", - "integrity": "sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==", - "dependencies": { - "crypto-random-string": "^4.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/universalify": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", @@ -14978,14 +12856,6 @@ "node": ">= 0.8" } }, - "node_modules/untildify": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", - "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", - "engines": { - "node": ">=8" - } - }, "node_modules/update-browserslist-db": { "version": "1.0.16", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.16.tgz", @@ -15016,44 +12886,6 @@ "browserslist": ">= 4.21.0" } }, - "node_modules/update-notifier": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-6.0.2.tgz", - "integrity": "sha512-EDxhTEVPZZRLWYcJ4ZXjGFN0oP7qYvbXWzEgRm/Yql4dHX5wDbvh89YHP6PK1lzZJYrMtXUuZZz8XGK+U6U1og==", - "dependencies": { - "boxen": "^7.0.0", - "chalk": "^5.0.1", - "configstore": "^6.0.0", - "has-yarn": "^3.0.0", - "import-lazy": "^4.0.0", - "is-ci": "^3.0.1", - "is-installed-globally": "^0.4.0", - "is-npm": "^6.0.0", - "is-yarn-global": "^0.4.0", - "latest-version": "^7.0.0", - "pupa": "^3.1.0", - "semver": "^7.3.7", - "semver-diff": "^4.0.0", - "xdg-basedir": "^5.1.0" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/yeoman/update-notifier?sponsor=1" - } - }, - "node_modules/update-notifier/node_modules/chalk": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", - "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, "node_modules/uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -15129,19 +12961,12 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, "dependencies": { "spdx-correct": "^3.0.0", "spdx-expression-parse": "^3.0.0" } }, - "node_modules/validate-npm-package-name": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.1.tgz", - "integrity": "sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, "node_modules/validator": { "version": "13.12.0", "resolved": "https://registry.npmjs.org/validator/-/validator-13.12.0.tgz", @@ -15182,6 +13007,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "devOptional": true, "dependencies": { "isexe": "^2.0.0" }, @@ -15237,70 +13063,11 @@ "version": "1.1.5", "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "optional": true, "dependencies": { "string-width": "^1.0.2 || 2 || 3 || 4" } }, - "node_modules/widest-line": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-4.0.1.tgz", - "integrity": "sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==", - "dependencies": { - "string-width": "^5.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/widest-line/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/widest-line/node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" - }, - "node_modules/widest-line/node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/widest-line/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, "node_modules/wkx": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/wkx/-/wkx-0.5.0.tgz", @@ -15342,6 +13109,7 @@ "version": "8.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, "dependencies": { "ansi-styles": "^6.1.0", "string-width": "^5.0.1", @@ -15359,6 +13127,7 @@ "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", @@ -15375,6 +13144,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, "engines": { "node": ">=12" }, @@ -15386,6 +13156,7 @@ "version": "6.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, "engines": { "node": ">=12" }, @@ -15396,12 +13167,14 @@ "node_modules/wrap-ansi/node_modules/emoji-regex": { "version": "9.2.2", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true }, "node_modules/wrap-ansi/node_modules/string-width": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, "dependencies": { "eastasianwidth": "^0.2.0", "emoji-regex": "^9.2.2", @@ -15418,6 +13191,7 @@ "version": "7.1.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, "dependencies": { "ansi-regex": "^6.0.1" }, @@ -15449,6 +13223,7 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dev": true, "dependencies": { "imurmurhash": "^0.1.4", "is-typedarray": "^1.0.0", @@ -15468,17 +13243,6 @@ "mkdirp": "bin/cmd.js" } }, - "node_modules/xdg-basedir": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-5.1.0.tgz", - "integrity": "sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/xml": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/xml/-/xml-1.0.1.tgz", @@ -15615,6 +13379,7 @@ "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" }, diff --git a/package.json b/package.json index fabd41db8..2461822b4 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@datasance/iofogcontroller", - "version": "3.2.1-beta1", + "version": "3.2.1-beta2", "description": "ioFog Controller project for Eclipse IoFog @ iofog.org \\nCopyright (c) 2023 Datasance Teknoloji A.S.", "main": "./src/main.js", "author": "Emirhan Durmus", @@ -57,8 +57,8 @@ "iofog-controller": "src/main.js" }, "dependencies": { - "@datasance/ecn-viewer": "0.1.6", - "axios": "1.6.8", + "@datasance/ecn-viewer": "0.1.7", + "axios": "1.7.2", "body-parser": "^1.20.2", "child_process": "1.0.2", "command-line-args": "5.2.1", @@ -78,16 +78,15 @@ "is-elevated": "3.0.0", "js-yaml": "4.1.0", "jsonschema": "1.4.1", - "keycloak-connect": "24.0.4", + "keycloak-connect": "25.0.1", "minimatch": "9.0.4", "moment": "2.30.1", "moment-timezone": "0.5.45", "morgan": "1.10.0", "multer": "1.4.5-lts.1", - "mysql2": "3.9.8", + "mysql2": "3.10.1", "nconf": "0.12.1", "node-fetch-npm": "^2.0.4", - "npm-check-updates": "^16.14.20", "os": "0.1.2", "path": "0.12.7", "pino": "9.1.0", @@ -111,7 +110,7 @@ "chai-http": "4.4.0", "eslint": "9.2.0", "eslint-config-google": "0.14.0", - "mocha": "10.4.0", + "mocha": "10.5.2", "mocha-junit-reporter": "2.2.1", "newman": "6.1.2", "newman-reporter-junitfull": "1.1.1", From 843bab79478a2bc47ab8c5b3b5ff1c4ef5b6ab5d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Tue, 2 Jul 2024 21:13:59 +0300 Subject: [PATCH 101/146] package version updated --- package.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 2461822b4..fb55b8351 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@datasance/iofogcontroller", - "version": "3.2.1-beta2", + "version": "3.2.2-beta", "description": "ioFog Controller project for Eclipse IoFog @ iofog.org \\nCopyright (c) 2023 Datasance Teknoloji A.S.", "main": "./src/main.js", "author": "Emirhan Durmus", @@ -57,7 +57,7 @@ "iofog-controller": "src/main.js" }, "dependencies": { - "@datasance/ecn-viewer": "0.1.7", + "@datasance/ecn-viewer": "0.1.8", "axios": "1.7.2", "body-parser": "^1.20.2", "child_process": "1.0.2", @@ -110,7 +110,7 @@ "chai-http": "4.4.0", "eslint": "9.2.0", "eslint-config-google": "0.14.0", - "mocha": "10.5.2", + "mocha": "10.6.0", "mocha-junit-reporter": "2.2.1", "newman": "6.1.2", "newman-reporter-junitfull": "1.1.1", From 96f4f9e4ec806f0f5570fb5e3224d76de36a38dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Tue, 2 Jul 2024 21:18:56 +0300 Subject: [PATCH 102/146] version naming fixed --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index fb55b8351..faf979cbc 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@datasance/iofogcontroller", - "version": "3.2.2-beta", + "version": "3.2.1-beta3", "description": "ioFog Controller project for Eclipse IoFog @ iofog.org \\nCopyright (c) 2023 Datasance Teknoloji A.S.", "main": "./src/main.js", "author": "Emirhan Durmus", From 82c149d2575686e8a1e86987dc2526a23f462dcb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Sat, 13 Jul 2024 19:36:24 +0300 Subject: [PATCH 103/146] router and proxy created as a system application --- docs/swagger.json | 254 +++++++++++++++++ docs/swagger.yaml | 244 ++++++++++++++++ package.json | 2 +- src/controllers/application-controller.js | 12 + src/controllers/microservices-controller.js | 38 +++ src/data/managers/microservice-manager.js | 13 + src/routes/application.js | 60 ++++ src/routes/microservices.js | 177 ++++++++++++ src/services/application-service.js | 36 ++- src/services/iofog-service.js | 2 + src/services/microservice-ports/default.js | 42 ++- src/services/microservice-ports/proxy.js | 2 +- src/services/microservices-service.js | 301 +++++++++++++++++++- src/services/router-service.js | 17 +- 14 files changed, 1184 insertions(+), 16 deletions(-) diff --git a/docs/swagger.json b/docs/swagger.json index bcf2f19d2..9f2bccfca 100644 --- a/docs/swagger.json +++ b/docs/swagger.json @@ -488,6 +488,71 @@ } } }, + "/application/system" : { + "get" : { + "tags" : [ "Application" ], + "summary" : "Lists all system applications", + "operationId" : "listSystemApplication", + "parameters" : [ ], + "security" : [ { + "userToken" : [ ] + } ], + "responses" : { + "200" : { + "description" : "Success", + "headers" : { + "X-Timestamp" : { + "description" : "FogController server timestamp" + } + } + }, + "400" : { + "description" : "Bad Request" + }, + "404" : { + "description" : "Not Found" + }, + "500" : { + "description" : "Internal Server Error" + } + } + } + }, + "/application/system/{name}" : { + "delete" : { + "tags" : [ "Application" ], + "summary" : "Deletes a system application", + "operationId" : "deleteSystemApplication", + "parameters" : [ { + "name" : "name", + "in" : "path", + "description" : "Application name", + "required" : true + } ], + "security" : [ { + "userToken" : [ ] + } ], + "responses" : { + "204" : { + "description" : "Success", + "headers" : { + "X-Timestamp" : { + "description" : "FogController server timestamp" + } + } + }, + "400" : { + "description" : "Bad Request" + }, + "404" : { + "description" : "Not Found" + }, + "500" : { + "description" : "Internal Server Error" + } + } + } + }, "/application/yaml" : { "post" : { "tags" : [ "Application" ], @@ -1750,6 +1815,36 @@ "description" : "Internal Server Error" } } + }, + "patch" : { + "tags" : [ "Microservices" ], + "summary" : "Updates a microservice", + "operationId" : "updateMicroservice", + "parameters" : [ { + "name" : "uuid", + "in" : "path", + "description" : "Microservice Uuid", + "required" : true + } ], + "security" : [ { + "userToken" : [ ] + } ] + } + }, + "/microservices/system/{uuid}\"" : { + "patch" : { + "tags" : [ "Microservices" ], + "summary" : "Updates a system microservice", + "operationId" : "updateSystemMicroservice", + "parameters" : [ { + "name" : "uuid", + "in" : "path", + "description" : "Microservice Uuid", + "required" : true + } ], + "security" : [ { + "userToken" : [ ] + } ] } }, "/microservices/yaml/{uuid}" : { @@ -1864,6 +1959,44 @@ } } }, + "/microservices/system/{uuid}/port-mapping" : { + "post" : { + "tags" : [ "Microservices" ], + "summary" : "Creates a port mapping for system microservice", + "operationId" : "createSystemMicroservicePortMapping", + "parameters" : [ { + "name" : "uuid", + "in" : "path", + "description" : "Microservice Uuid", + "required" : true + } ], + "security" : [ { + "userToken" : [ ] + } ], + "responses" : { + "201" : { + "description" : "Created", + "headers" : { + "X-Timestamp" : { + "description" : "FogController server timestamp" + } + } + }, + "400" : { + "description" : "Not Valid" + }, + "401" : { + "description" : "Not Authorized" + }, + "404" : { + "description" : "Not Found" + }, + "500" : { + "description" : "Internal Server Error" + } + } + } + }, "/microservices/{uuid}/port-mapping/{internalPort}" : { "delete" : { "tags" : [ "Microservices" ], @@ -1904,6 +2037,46 @@ } } }, + "/microservices/system/{uuid}/port-mapping/{internalPort}" : { + "delete" : { + "tags" : [ "Microservices" ], + "summary" : "Deletes a port mapping for system microservice", + "operationId" : "deleteSystemMicroservicePortMapping", + "parameters" : [ { + "name" : "uuid", + "in" : "path", + "description" : "Microservice Uuid", + "required" : true + }, { + "name" : "internalPort", + "in" : "path", + "description" : "Internal Port", + "required" : true + } ], + "security" : [ { + "userToken" : [ ] + } ], + "responses" : { + "204" : { + "description" : "Success", + "headers" : { + "X-Timestamp" : { + "description" : "FogController server timestamp" + } + } + }, + "401" : { + "description" : "Not Authorized" + }, + "404" : { + "description" : "Not Found" + }, + "500" : { + "description" : "Internal Server Error" + } + } + } + }, "/microservices/{uuid}/volume-mapping" : { "get" : { "tags" : [ "Microservices" ], @@ -1975,6 +2148,44 @@ } } }, + "/microservices/system/{uuid}/volume-mapping" : { + "post" : { + "tags" : [ "Microservices" ], + "summary" : "Creates a volume mapping for system microservice", + "operationId" : "createSystemMicroserviceVolumeMapping", + "parameters" : [ { + "name" : "uuid", + "in" : "path", + "description" : "Microservice Uuid", + "required" : true + } ], + "security" : [ { + "userToken" : [ ] + } ], + "responses" : { + "201" : { + "description" : "Created", + "headers" : { + "X-Timestamp" : { + "description" : "FogController server timestamp" + } + } + }, + "400" : { + "description" : "Not Valid" + }, + "401" : { + "description" : "Not Authorized" + }, + "404" : { + "description" : "Not Found" + }, + "500" : { + "description" : "Internal Server Error" + } + } + } + }, "/microservices/{uuid}/volume-mapping/{id}" : { "delete" : { "tags" : [ "Microservices" ], @@ -2018,6 +2229,49 @@ } } }, + "/microservices/system/{uuid}/volume-mapping/{id}" : { + "delete" : { + "tags" : [ "Microservices" ], + "summary" : "Deletes a volume mapping for system microservice", + "operationId" : "deleteSystemMicroserviceVolumeMapping", + "parameters" : [ { + "name" : "uuid", + "in" : "path", + "description" : "Microservice Uuid", + "required" : true + }, { + "name" : "id", + "in" : "path", + "description" : "Volume id", + "required" : true + } ], + "security" : [ { + "userToken" : [ ] + } ], + "responses" : { + "204" : { + "description" : "Success", + "headers" : { + "X-Timestamp" : { + "description" : "FogController server timestamp" + } + } + }, + "400" : { + "description" : "Not Valid" + }, + "401" : { + "description" : "Not Authorized" + }, + "404" : { + "description" : "Not Found" + }, + "500" : { + "description" : "Internal Server Error" + } + } + } + }, "/microservices/{uuid}/image-snapshot" : { "get" : { "tags" : [ "Diagnostics" ], diff --git a/docs/swagger.yaml b/docs/swagger.yaml index 4784938ce..3bda22b4b 100755 --- a/docs/swagger.yaml +++ b/docs/swagger.yaml @@ -409,6 +409,62 @@ paths: description: Not Found "500": description: Internal Server Error + /application/system: + get: + tags: + - Application + summary: Lists all system applications + operationId: listSystemApplication + security: + - userToken: [] + responses: + "200": + description: Success + headers: + X-Timestamp: + description: FogController server timestamp + schema: + type: number + content: + application/json: + schema: + $ref: "#/components/schemas/ApplicationListResponse" + "400": + description: Bad Request + "404": + description: Not Found + "500": + description: Internal Server Error + /application/system/{name}: + delete: + tags: + - Application + summary: Deletes a system application + operationId: deleteSystemApplication + parameters: + - in: path + name: name + description: Application name + required: true + schema: + type: string + security: + - userToken: [] + responses: + "204": + description: Success + headers: + X-Timestamp: + description: FogController server timestamp + schema: + type: number + "400": + description: Bad Request + "404": + description: Not Found + "500": + description: Internal Server Error + /application/yaml: post: tags: @@ -1613,6 +1669,35 @@ paths: description: Not Found "500": description: Internal Server Error + patch: + tags: + - Microservices + summary: Updates a microservice + operationId: updateMicroservice + parameters: + - in: path + name: uuid + description: Microservice Uuid + required: true + schema: + type: string + security: + - userToken: [] + /microservices/system/{uuid}": + patch: + tags: + - Microservices + summary: Updates a system microservice + operationId: updateSystemMicroservice + parameters: + - in: path + name: uuid + description: Microservice Uuid + required: true + schema: + type: string + security: + - userToken: [] /microservices/yaml/{uuid}: patch: tags: @@ -1730,6 +1815,48 @@ paths: description: Not Found "500": description: Internal Server Error + /microservices/system/{uuid}/port-mapping: + post: + tags: + - Microservices + summary: Creates a port mapping for system microservice + operationId: createSystemMicroservicePortMapping + parameters: + - in: path + name: uuid + description: Microservice Uuid + required: true + schema: + type: string + security: + - userToken: [] + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/PortMappingsRequest" + description: information about port mapping + required: true + responses: + "201": + description: Created + headers: + X-Timestamp: + description: FogController server timestamp + schema: + type: number + content: + application/json: + schema: + $ref: "#/components/schemas/PortMappingsPublicResponse" + "400": + description: Not Valid + "401": + description: Not Authorized + "404": + description: Not Found + "500": + description: Internal Server Error "/microservices/{uuid}/port-mapping/{internalPort}": delete: tags: @@ -1765,6 +1892,41 @@ paths: description: Not Found "500": description: Internal Server Error + /microservices/system/{uuid}/port-mapping/{internalPort}: + delete: + tags: + - Microservices + summary: Deletes a port mapping for system microservice + operationId: deleteSystemMicroservicePortMapping + parameters: + - in: path + name: uuid + description: Microservice Uuid + required: true + schema: + type: string + - in: path + name: internalPort + description: Internal Port + required: true + schema: + type: string + security: + - userToken: [] + responses: + "204": + description: Success + headers: + X-Timestamp: + description: FogController server timestamp + schema: + type: number + "401": + description: Not Authorized + "404": + description: Not Found + "500": + description: Internal Server Error "/microservices/{uuid}/volume-mapping": post: tags: @@ -1842,6 +2004,51 @@ paths: description: Not Found "500": description: Internal Server Error + "/microservices/system/{uuid}/volume-mapping": + post: + tags: + - Microservices + summary: Creates a volume mapping for system microservice + operationId: createSystemMicroserviceVolumeMapping + parameters: + - in: path + name: uuid + description: Microservice Uuid + required: true + schema: + type: string + security: + - userToken: [] + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/VolumeMapping" + description: information about volume mapping + required: true + responses: + "201": + description: Created + headers: + X-Timestamp: + description: FogController server timestamp + schema: + type: number + content: + application/json: + schema: + type: object + properties: + id: + type: number + "400": + description: Not Valid + "401": + description: Not Authorized + "404": + description: Not Found + "500": + description: Internal Server Error "/microservices/{uuid}/volume-mapping/{id}": delete: tags: @@ -1879,6 +2086,43 @@ paths: description: Not Found "500": description: Internal Server Error + "/microservices/system/{uuid}/volume-mapping/{id}": + delete: + tags: + - Microservices + summary: Deletes a volume mapping for system microservice + operationId: deleteSystemMicroserviceVolumeMapping + parameters: + - in: path + name: uuid + description: Microservice Uuid + required: true + schema: + type: string + - in: path + name: id + description: Volume id + required: true + schema: + type: string + security: + - userToken: [] + responses: + "204": + description: Success + headers: + X-Timestamp: + description: FogController server timestamp + schema: + type: number + "400": + description: Not Valid + "401": + description: Not Authorized + "404": + description: Not Found + "500": + description: Internal Server Error "/microservices/{uuid}/image-snapshot": post: tags: diff --git a/package.json b/package.json index faf979cbc..b11c3b331 100644 --- a/package.json +++ b/package.json @@ -57,7 +57,7 @@ "iofog-controller": "src/main.js" }, "dependencies": { - "@datasance/ecn-viewer": "0.1.8", + "@datasance/ecn-viewer": "0.1.9", "axios": "1.7.2", "body-parser": "^1.20.2", "child_process": "1.0.2", diff --git a/src/controllers/application-controller.js b/src/controllers/application-controller.js index 15676b7da..a0dc79bba 100644 --- a/src/controllers/application-controller.js +++ b/src/controllers/application-controller.js @@ -38,6 +38,10 @@ const getApplicationsByUserEndPoint = async function (req) { return ApplicationService.getUserApplicationsEndPoint(false) } +const getApplicationsBySystemEndPoint = async function (req) { + return ApplicationService.getSystemApplicationsEndPoint(false) +} + const getApplicationEndPoint = async function (req) { const name = req.params.name @@ -77,6 +81,12 @@ const deleteApplicationEndPoint = async function (req) { return ApplicationService.deleteApplicationEndPoint({ name }, false) } +const deleteSystemApplicationEndPoint = async function (req) { + const name = req.params.name + + return ApplicationService.deleteSystemApplicationEndPoint({ name }, false) +} + // Legacy const deleteApplicationByIdEndPoint = async function (req) { @@ -103,6 +113,7 @@ module.exports = { createApplicationEndPoint: (createApplicationEndPoint), createApplicationYAMLEndPoint: (createApplicationYAMLEndPoint), getApplicationsByUserEndPoint: (getApplicationsByUserEndPoint), + getApplicationsBySystemEndPoint: (getApplicationsBySystemEndPoint), getApplicationEndPoint: (getApplicationEndPoint), getApplicationByIdEndPoint: (getApplicationByIdEndPoint), updateApplicationEndPoint: (updateApplicationEndPoint), @@ -110,5 +121,6 @@ module.exports = { patchApplicationEndPoint: (patchApplicationEndPoint), patchApplicationByIdEndPoint: (patchApplicationByIdEndPoint), deleteApplicationEndPoint: (deleteApplicationEndPoint), + deleteSystemApplicationEndPoint: (deleteSystemApplicationEndPoint), deleteApplicationByIdEndPoint: (deleteApplicationByIdEndPoint) } diff --git a/src/controllers/microservices-controller.js b/src/controllers/microservices-controller.js index 367c3003e..98315be9a 100644 --- a/src/controllers/microservices-controller.js +++ b/src/controllers/microservices-controller.js @@ -38,6 +38,12 @@ const updateMicroserviceEndPoint = async function (req) { return MicroservicesService.updateMicroserviceEndPoint(microserviceUuid, microservice, false) } +const updateSystemMicroserviceEndPoint = async function (req) { + const microservice = req.body + const microserviceUuid = req.params.uuid + return MicroservicesService.updateSystemMicroserviceEndPoint(microserviceUuid, microservice, false) +} + const updateMicroserviceYAMLEndPoint = async function (req) { const microserviceUuid = req.params.uuid const fileContent = req.file.buffer.toString() @@ -78,12 +84,24 @@ const createMicroservicePortMappingEndPoint = async function (req) { return MicroservicesService.createPortMappingEndPoint(uuid, portMappingData, false) } +const createSystemMicroservicePortMappingEndPoint = async function (req) { + const uuid = req.params.uuid + const portMappingData = req.body + return MicroservicesService.createSystemPortMappingEndPoint(uuid, portMappingData, false) +} + const deleteMicroservicePortMappingEndPoint = async function (req) { const uuid = req.params.uuid const internalPort = req.params.internalPort return MicroservicesService.deletePortMappingEndPoint(uuid, internalPort, false) } +const deleteSystemMicroservicePortMappingEndPoint = async function (req) { + const uuid = req.params.uuid + const internalPort = req.params.internalPort + return MicroservicesService.deleteSystemPortMappingEndPoint(uuid, internalPort, false) +} + const listMicroservicePortMappingsEndPoint = async function (req) { const uuid = req.params.uuid const ports = await MicroservicesService.listMicroservicePortMappingsEndPoint(uuid, false) @@ -101,6 +119,15 @@ const createMicroserviceVolumeMappingEndPoint = async function (req) { } } +const createSystemMicroserviceVolumeMappingEndPoint = async function (req) { + const microserviceUuid = req.params.uuid + const volumeMappingData = req.body + const volumeMapping = await MicroservicesService.createSystemVolumeMappingEndPoint(microserviceUuid, volumeMappingData, false) + return { + id: volumeMapping.id + } +} + const listMicroserviceVolumeMappingsEndPoint = async function (req) { const uuid = req.params.uuid const volumeMappings = await MicroservicesService.listVolumeMappingsEndPoint(uuid, false) @@ -115,6 +142,12 @@ const deleteMicroserviceVolumeMappingEndPoint = async function (req) { return MicroservicesService.deleteVolumeMappingEndPoint(uuid, id, false) } +const deleteSystemMicroserviceVolumeMappingEndPoint = async function (req) { + const uuid = req.params.uuid + const id = req.params.id + return MicroservicesService.deleteSystemVolumeMappingEndPoint(uuid, id, false) +} + const listAllPublicPortsEndPoint = async function (req) { return MicroservicesService.listAllPublicPortsEndPoint() } @@ -123,16 +156,21 @@ module.exports = { createMicroserviceOnFogEndPoint: (createMicroserviceOnFogEndPoint), getMicroserviceEndPoint: (getMicroserviceEndPoint), updateMicroserviceEndPoint: (updateMicroserviceEndPoint), + updateSystemMicroserviceEndPoint: (updateSystemMicroserviceEndPoint), deleteMicroserviceEndPoint: (deleteMicroserviceEndPoint), getMicroservicesByApplicationEndPoint: (getMicroservicesByApplicationEndPoint), createMicroserviceRouteEndPoint: (createMicroserviceRouteEndPoint), deleteMicroserviceRouteEndPoint: (deleteMicroserviceRouteEndPoint), createMicroservicePortMappingEndPoint: (createMicroservicePortMappingEndPoint), + createSystemMicroservicePortMappingEndPoint: (createSystemMicroservicePortMappingEndPoint), deleteMicroservicePortMappingEndPoint: (deleteMicroservicePortMappingEndPoint), + deleteSystemMicroservicePortMappingEndPoint: (deleteSystemMicroservicePortMappingEndPoint), getMicroservicePortMappingListEndPoint: (listMicroservicePortMappingsEndPoint), createMicroserviceVolumeMappingEndPoint: (createMicroserviceVolumeMappingEndPoint), + createSystemMicroserviceVolumeMappingEndPoint: (createSystemMicroserviceVolumeMappingEndPoint), listMicroserviceVolumeMappingsEndPoint: (listMicroserviceVolumeMappingsEndPoint), deleteMicroserviceVolumeMappingEndPoint: (deleteMicroserviceVolumeMappingEndPoint), + deleteSystemMicroserviceVolumeMappingEndPoint: (deleteSystemMicroserviceVolumeMappingEndPoint), listAllPublicPortsEndPoint: (listAllPublicPortsEndPoint), createMicroserviceYAMLEndPoint: (createMicroserviceYAMLEndPoint), updateMicroserviceYAMLEndPoint: (updateMicroserviceYAMLEndPoint) diff --git a/src/data/managers/microservice-manager.js b/src/data/managers/microservice-manager.js index 1c8b1465c..47316fe54 100644 --- a/src/data/managers/microservice-manager.js +++ b/src/data/managers/microservice-manager.js @@ -346,6 +346,9 @@ class MicroserviceManager extends BaseManager { model: Application, as: 'application', required: true, + where: { + isSystem: false + }, attributes: ['id'] } ], @@ -366,6 +369,16 @@ class MicroserviceManager extends BaseManager { async findAllExcludeFields (where, transaction) { return Microservice.findAll({ + include: [ + { + model: Application, + as: 'application', + required: true, + where: { + isSystem: false + } + } + ], where: where, order: [ [ 'name', 'ASC' ] ], attributes: { diff --git a/src/routes/application.js b/src/routes/application.js index 89da63f85..437e46087 100644 --- a/src/routes/application.js +++ b/src/routes/application.js @@ -46,6 +46,34 @@ module.exports = [ }) } }, + { + method: 'get', + path: '/api/v1/application/system', + middleware: async (req, res) => { + logger.apiReq(req) + + const successCode = constants.HTTP_CODE_SUCCESS + const errorCodes = [ + { + code: constants.HTTP_CODE_UNAUTHORIZED, + errors: [Errors.AuthenticationError] + } + ] + + const getApplicationsBySystemEndPoint = ResponseDecorator.handleErrors(ApplicationController.getApplicationsBySystemEndPoint, successCode, errorCodes) + + // Add keycloak.protect() middleware to protect the route + await keycloak.protect(['SRE', 'Developer', 'Viewer'])(req, res, async () => { + const responseObject = await getApplicationsBySystemEndPoint(req) + const user = req.kauth.grant.access_token.content.preferred_username + res + .status(responseObject.code) + .send(responseObject.body) + + logger.apiRes({ req: req, user: user, res: responseObject }) + }) + } + }, { method: 'post', path: '/api/v1/application', @@ -284,6 +312,38 @@ module.exports = [ .status(responseObject.code) .send(responseObject.body) + logger.apiRes({ req: req, user: user, res: responseObject }) + }) + } + }, + { + method: 'delete', + path: '/api/v1/application/system/:name', + middleware: async (req, res) => { + logger.apiReq(req) + + const successCode = constants.HTTP_CODE_NO_CONTENT + const errorCodes = [ + { + code: constants.HTTP_CODE_UNAUTHORIZED, + errors: [Errors.AuthenticationError] + }, + { + code: constants.HTTP_CODE_NOT_FOUND, + errors: [Errors.NotFoundError] + } + ] + + const deleteSystemApplicationEndPoint = ResponseDecorator.handleErrors(ApplicationController.deleteSystemApplicationEndPoint, successCode, errorCodes) + + // Add keycloak.protect() middleware to protect the route + await keycloak.protect(['SRE'])(req, res, async () => { + const responseObject = await deleteSystemApplicationEndPoint(req) + const user = req.kauth.grant.access_token.content.preferred_username + res + .status(responseObject.code) + .send(responseObject.body) + logger.apiRes({ req: req, user: user, res: responseObject }) }) } diff --git a/src/routes/microservices.js b/src/routes/microservices.js index 0afc010fb..b3e33ab20 100644 --- a/src/routes/microservices.js +++ b/src/routes/microservices.js @@ -207,7 +207,42 @@ module.exports = [ }) } }, + { + method: 'patch', + path: '/api/v1/microservices/system/:uuid', + supportSubstitution: true, + middleware: async (req, res) => { + logger.apiReq(req) + const successCode = constants.HTTP_CODE_NO_CONTENT + const errorCodes = [ + { + code: constants.HTTP_CODE_BAD_REQUEST, + errors: [Errors.ValidationError] + }, + { + code: constants.HTTP_CODE_UNAUTHORIZED, + errors: [Errors.AuthenticationError] + }, + { + code: constants.HTTP_CODE_NOT_FOUND, + errors: [Errors.NotFoundError] + } + ] + + await keycloak.protect(['SRE'])(req, res, async () => { + const updateSystemMicroserviceEndPoint = ResponseDecorator.handleErrors(MicroservicesController.updateSystemMicroserviceEndPoint, + successCode, errorCodes) + const responseObject = await updateSystemMicroserviceEndPoint(req) + const user = req.kauth.grant.access_token.content.preferred_username + res + .status(responseObject.code) + .send(responseObject.body) + + logger.apiRes({ req: req, user: user, res: responseObject }) + }) + } + }, { method: 'patch', path: '/api/v1/microservices/yaml/:uuid', @@ -381,6 +416,41 @@ module.exports = [ }) } }, + { + method: 'post', + path: '/api/v1/microservices/sytem/:uuid/port-mapping', + middleware: async (req, res) => { + logger.apiReq(req) + + const successCode = constants.HTTP_CODE_CREATED + const errorCodes = [ + { + code: constants.HTTP_CODE_BAD_REQUEST, + errors: [Errors.ValidationError] + }, + { + code: constants.HTTP_CODE_UNAUTHORIZED, + errors: [Errors.AuthenticationError] + }, + { + code: constants.HTTP_CODE_NOT_FOUND, + errors: [Errors.NotFoundError] + } + ] + + await keycloak.protect(['SRE'])(req, res, async () => { + const createSystemMicroservicePortMappingEndPoint = ResponseDecorator.handleErrors( + MicroservicesController.createSystemMicroservicePortMappingEndPoint, successCode, errorCodes) + const responseObject = await createSystemMicroservicePortMappingEndPoint(req) + const user = req.kauth.grant.access_token.content.preferred_username + res + .status(responseObject.code) + .send(responseObject.body) + + logger.apiRes({ req: req, user: user, res: responseObject }) + }) + } + }, { method: 'delete', path: '/api/v1/microservices/:uuid/port-mapping/:internalPort', @@ -412,6 +482,37 @@ module.exports = [ }) } }, + { + method: 'delete', + path: '/api/v1/microservices/system/:uuid/port-mapping/:internalPort', + middleware: async (req, res) => { + logger.apiReq(req) + + const successCode = constants.HTTP_CODE_NO_CONTENT + const errorCodes = [ + { + code: constants.HTTP_CODE_UNAUTHORIZED, + errors: [Errors.AuthenticationError] + }, + { + code: constants.HTTP_CODE_NOT_FOUND, + errors: [Errors.NotFoundError] + } + ] + + await keycloak.protect(['SRE'])(req, res, async () => { + const deleteSystemMicroservicePortMapping = ResponseDecorator.handleErrors( + MicroservicesController.deleteMicroservicePortMappingEndPoint, successCode, errorCodes) + const responseObject = await deleteSystemMicroservicePortMapping(req) + const user = req.kauth.grant.access_token.content.preferred_username + res + .status(responseObject.code) + .send(responseObject.body) + + logger.apiRes({ req: req, user: user, res: responseObject }) + }) + } + }, { method: 'get', path: '/api/v1/microservices/:uuid/port-mapping', @@ -515,6 +616,44 @@ module.exports = [ }) } }, + { + method: 'post', + path: '/api/v1/microservices/system/:uuid/volume-mapping', + middleware: async (req, res) => { + logger.apiReq(req) + + const successCode = constants.HTTP_CODE_CREATED + const errorCodes = [ + { + code: constants.HTTP_CODE_BAD_REQUEST, + errors: [Errors.ValidationError] + }, + { + code: constants.HTTP_CODE_UNAUTHORIZED, + errors: [Errors.AuthenticationError] + }, + { + code: constants.HTTP_CODE_NOT_FOUND, + errors: [Errors.NotFoundError] + } + ] + + await keycloak.protect(['SRE'])(req, res, async () => { + const createSystemMicroserviceVolumeMappingEndPoint = ResponseDecorator.handleErrors( + MicroservicesController.createSystemMicroserviceVolumeMappingEndPoint, + successCode, + errorCodes + ) + const responseObject = await createSystemMicroserviceVolumeMappingEndPoint(req) + const user = req.kauth.grant.access_token.content.preferred_username + res + .status(responseObject.code) + .send(responseObject.body) + + logger.apiRes({ req: req, user: user, res: responseObject }) + }) + } + }, { method: 'delete', path: '/api/v1/microservices/:uuid/volume-mapping/:id', @@ -549,6 +688,44 @@ module.exports = [ .status(responseObject.code) .send(responseObject.body) + logger.apiRes({ req: req, user: user, res: responseObject }) + }) + } + }, + { + method: 'delete', + path: '/api/v1/microservices/system/:uuid/volume-mapping/:id', + middleware: async (req, res) => { + logger.apiReq(req) + + const successCode = constants.HTTP_CODE_NO_CONTENT + const errorCodes = [ + { + code: constants.HTTP_CODE_BAD_REQUEST, + errors: [Errors.ValidationError] + }, + { + code: constants.HTTP_CODE_UNAUTHORIZED, + errors: [Errors.AuthenticationError] + }, + { + code: constants.HTTP_CODE_NOT_FOUND, + errors: [Errors.NotFoundError] + } + ] + + await keycloak.protect(['SRE', 'Developer'])(req, res, async () => { + const deleteSystemMicroserviceVolumeMappingEndPoint = ResponseDecorator.handleErrors( + MicroservicesController.deleteSystemMicroserviceVolumeMappingEndPoint, + successCode, + errorCodes + ) + const responseObject = await deleteSystemMicroserviceVolumeMappingEndPoint(req) + const user = req.kauth.grant.access_token.content.preferred_username + res + .status(responseObject.code) + .send(responseObject.body) + logger.apiRes({ req: req, user: user, res: responseObject }) }) } diff --git a/src/services/application-service.js b/src/services/application-service.js index c337b9ec2..4b806ebc6 100644 --- a/src/services/application-service.js +++ b/src/services/application-service.js @@ -99,6 +99,23 @@ const deleteApplicationEndPoint = async function (conditions, isCLI, transaction } const where = AppHelper.deleteUndefinedFields(whereObj) + const application = await ApplicationManager.findOne({ ...conditions }, transaction) + + if (application.isSystem) { + throw new Errors.ValidationError('Cannot delete system application.') + } + + await _updateChangeTrackingsAndDeleteMicroservicesByApplicationId(conditions, true, transaction) + + await ApplicationManager.delete(where, transaction) +} + +const deleteSystemApplicationEndPoint = async function (conditions, isCLI, transaction) { + const whereObj = { + ...conditions + } + const where = AppHelper.deleteUndefinedFields(whereObj) + await _updateChangeTrackingsAndDeleteMicroservicesByApplicationId(conditions, true, transaction) await ApplicationManager.delete(where, transaction) @@ -283,6 +300,19 @@ const getUserApplicationsEndPoint = async function (isCLI, transaction) { } } +const getSystemApplicationsEndPoint = async function (isCLI, transaction) { + const application = { + isSystem: true + } + + const attributes = { exclude: ['created_at', 'updated_at'] } + const applications = await ApplicationManager.findAllPopulated(application, attributes, transaction) + + return { + applications: await Promise.all(applications.map(async (app) => _buildApplicationObject(app, transaction))) + } +} + const getAllApplicationsEndPoint = async function (isCLI, transaction) { const attributes = { exclude: ['created_at', 'updated_at'] } const applications = await ApplicationManager.findAllPopulated({}, attributes, transaction) @@ -302,8 +332,8 @@ async function _buildApplicationObject (application, transaction) { async function getApplication (conditions, isCLI, transaction) { const where = isCLI - ? { ...conditions } - : { ...conditions } + ? { ...conditions, isSystem: false } + : { ...conditions, isSystem: false } const attributes = { exclude: ['created_at', 'updated_at'] } const applicationRaw = await ApplicationManager.findOnePopulated(where, attributes, transaction) @@ -355,9 +385,11 @@ async function _updateChangeTrackingsAndDeleteMicroservicesByApplicationId (cond module.exports = { createApplicationEndPoint: TransactionDecorator.generateTransaction(createApplicationEndPoint), deleteApplicationEndPoint: TransactionDecorator.generateTransaction(deleteApplicationEndPoint), + deleteSystemApplicationEndPoint: TransactionDecorator.generateTransaction(deleteSystemApplicationEndPoint), updateApplicationEndPoint: TransactionDecorator.generateTransaction(updateApplicationEndPoint), patchApplicationEndPoint: TransactionDecorator.generateTransaction(patchApplicationEndPoint), getUserApplicationsEndPoint: TransactionDecorator.generateTransaction(getUserApplicationsEndPoint), + getSystemApplicationsEndPoint: TransactionDecorator.generateTransaction(getSystemApplicationsEndPoint), getAllApplicationsEndPoint: TransactionDecorator.generateTransaction(getAllApplicationsEndPoint), getApplicationEndPoint: TransactionDecorator.generateTransaction(getApplicationEndPoint), getApplication: getApplication diff --git a/src/services/iofog-service.js b/src/services/iofog-service.js index bc690d3cf..4a27ddb3a 100644 --- a/src/services/iofog-service.js +++ b/src/services/iofog-service.js @@ -24,6 +24,7 @@ const HWInfoManager = require('../data/managers/hw-info-manager') const USBInfoManager = require('../data/managers/usb-info-manager') const CatalogService = require('./catalog-service') const MicroserviceManager = require('../data/managers/microservice-manager') +const ApplicationManager = require('../data/managers/application-manager') const TagsManager = require('../data/managers/tags-manager') const MicroserviceService = require('./microservices-service') const EdgeResourceService = require('./edge-resource-service') @@ -352,6 +353,7 @@ async function _deleteFogRouter (fogData, transaction) { // Delete router msvc const routerCatalog = await CatalogService.getRouterCatalogItem(transaction) await MicroserviceManager.delete({ catalogItemId: routerCatalog.id, iofogUuid: fogData.uuid }, transaction) + await ApplicationManager.delete({ name: `system-${fogData.uuid.toLowerCase()}` }, transaction) } async function deleteFogEndPoint (fogData, isCLI, transaction) { diff --git a/src/services/microservice-ports/default.js b/src/services/microservice-ports/default.js index 57a4ed428..613b9053a 100644 --- a/src/services/microservice-ports/default.js +++ b/src/services/microservice-ports/default.js @@ -13,6 +13,8 @@ const MicroservicePortManager = require('../../data/managers/microservice-port-manager') const MicroserviceManager = require('../../data/managers/microservice-manager') +const MicroserviceStatusManager = require('../../data/managers/microservice-status-manager') +const ApplicationManager = require('../../data/managers/application-manager') const ConfigManager = require('../../data/managers/config-manager') const ChangeTrackingService = require('../change-tracking-service') const AppHelper = require('../../helpers/app-helper') @@ -244,7 +246,7 @@ async function _createOrUpdateProxyMicroservice (mapping, networkRouter, hostUui const proxyMicroserviceData = { uuid: AppHelper.generateRandomString(32), - name: 'Proxy', + name: `proxy-${hostUuid.toLowerCase()}`, config: JSON.stringify({ mappings: [mapping], networkRouter @@ -252,9 +254,13 @@ async function _createOrUpdateProxyMicroservice (mapping, networkRouter, hostUui catalogItemId: proxyCatalogId, iofogUuid: hostUuid, rootHostAccess: true, - registryId: 1 + registryId: 1, + configLastUpdated: Date.now() } + const application = await ApplicationManager.findOne({ name: `system-${hostUuid.toLowerCase()}` }, transaction) + proxyMicroserviceData.applicationId = application.id const res = await MicroserviceManager.create(proxyMicroserviceData, transaction) + await MicroserviceStatusManager.create({ microserviceUuid: proxyMicroserviceData.uuid }, transaction) await ChangeTrackingService.update(hostUuid, ChangeTrackingService.events.microserviceCommon, transaction) return res } @@ -265,7 +271,8 @@ async function _createPublicPortMapping (microservice, portMappingData, transact const localAgent = portMappingData.localAgent // This is populated by validating the ports const localAgentsRouter = localAgent.routerId ? await RouterManager.findOne({ id: localAgent.routerId }, transaction) : await RouterManager.findOne({ iofogUuid: localAgent.uuid }, transaction) const localNetworkRouter = { - host: localAgentsRouter.host, + // host: localAgentsRouter.host, + host: 'localhost', port: localAgentsRouter.messagingPort } @@ -288,7 +295,8 @@ async function _createPublicPortMapping (microservice, portMappingData, transact if (portMappingData.publicHost) { const hostRouter = portMappingData.publicHost.routerId ? await RouterManager.findOne({ id: portMappingData.publicHost.routerId }, transaction) : await RouterManager.findOne({ iofogUuid: portMappingData.publicHost.uuid }, transaction) const remoteNetworkRouter = { - host: hostRouter.host, + // host: hostRouter.host, + host: 'localhost', port: hostRouter.messagingPort } @@ -478,6 +486,31 @@ async function deletePortMapping (microserviceUuid, internalPort, isCLI, transac ? { uuid: microserviceUuid } : { uuid: microserviceUuid } + const microservice = await MicroserviceManager.findMicroserviceOnGet(where, transaction) + if (!microservice) { + throw new Errors.NotFoundError(AppHelper.formatMessage(ErrorMessages.INVALID_MICROSERVICE_UUID, microserviceUuid)) + } + + if (!internalPort) { + throw new Errors.ValidationError(ErrorMessages.PORT_MAPPING_INTERNAL_PORT_NOT_PROVIDED) + } + + const msPorts = await MicroservicePortManager.findOne({ + microserviceUuid: microservice.uuid, + portInternal: internalPort + }, transaction) + if (!msPorts) { + throw new Errors.NotFoundError('port mapping not exists') + } + + await _deletePortMapping(microservice, msPorts, transaction) +} + +async function deleteSystemPortMapping (microserviceUuid, internalPort, isCLI, transaction) { + const where = isCLI + ? { uuid: microserviceUuid } + : { uuid: microserviceUuid } + const microservice = await MicroserviceManager.findOne(where, transaction) if (!microservice) { throw new Errors.NotFoundError(AppHelper.formatMessage(ErrorMessages.INVALID_MICROSERVICE_UUID, microserviceUuid)) @@ -523,6 +556,7 @@ module.exports = { buildPublicPortMapping, listPortMappings, deletePortMapping, + deleteSystemPortMapping, deletePortMappings, getPortMappings, listAllPublicPorts diff --git a/src/services/microservice-ports/proxy.js b/src/services/microservice-ports/proxy.js index d16a31f63..0e4af1abf 100644 --- a/src/services/microservice-ports/proxy.js +++ b/src/services/microservice-ports/proxy.js @@ -44,7 +44,7 @@ async function _createOrUpdatePortRouterMicroservice (existingProxy, localPort, const proxyMicroserviceData = { uuid: AppHelper.generateRandomString(32), - name: 'Proxy', + name: `proxy-${hostUuid}`, config: JSON.stringify({ fetch_config_interval: 5, proxies: [proxyConfig] diff --git a/src/services/microservices-service.js b/src/services/microservices-service.js index 55156d1ce..1b6216508 100644 --- a/src/services/microservices-service.js +++ b/src/services/microservices-service.js @@ -346,6 +346,200 @@ async function _updateRelatedExtraHosts (updatedMicroservice, transaction) { } } +async function updateSystemMicroserviceEndPoint (microserviceUuid, microserviceData, isCLI, transaction, changeTrackingEnabled = true) { + await Validator.validate(microserviceData, Validator.schemas.microserviceUpdate) + let needStatusReset = false + const query = isCLI + ? { + uuid: microserviceUuid + } + : { + uuid: microserviceUuid + } + + // validate extraHosts + const extraHosts = microserviceData.extraHosts ? await _validateExtraHosts(microserviceData, transaction) : null + + const config = _validateMicroserviceConfig(microserviceData.config) + + const newFog = await _findFog(microserviceData, isCLI, transaction) || {} + const microserviceToUpdate = { + name: microserviceData.name, + config: config, + images: microserviceData.images, + catalogItemId: microserviceData.catalogItemId, + rebuild: microserviceData.rebuild, + iofogUuid: newFog.uuid, + rootHostAccess: microserviceData.rootHostAccess, + logSize: (microserviceData.logSize || constants.MICROSERVICE_DEFAULT_LOG_SIZE) * 1, + registryId: microserviceData.registryId, + volumeMappings: microserviceData.volumeMappings, + env: microserviceData.env, + cmd: microserviceData.cmd, + ports: microserviceData.ports + } + + const microserviceDataUpdate = AppHelper.deleteUndefinedFields(microserviceToUpdate) + + const microservice = await MicroserviceManager.findOneWithCategory(query, transaction) + + const microserviceImages = await CatalogItemImageManager.findAll({ + microservice_uuid: microserviceUuid + }, transaction) + + if (!microservice) { + throw new Errors.NotFoundError(AppHelper.formatMessage(ErrorMessages.INVALID_MICROSERVICE_UUID, microserviceUuid)) + } + if (microserviceDataUpdate.registryId) { + const registry = await RegistryManager.findOne({ id: microserviceDataUpdate.registryId }, transaction) + if (!registry) { + throw new Errors.NotFoundError(AppHelper.formatMessage(ErrorMessages.INVALID_REGISTRY_ID, microserviceDataUpdate.registryId)) + } + } else { + microserviceDataUpdate.registryId = microservice.registryId + } + + if (microserviceDataUpdate.ports) { + await _updateSystemPorts(microserviceDataUpdate.ports, microservice, transaction) + } + + if (microserviceDataUpdate.iofogUuid && microservice.iofogUuid !== microserviceDataUpdate.iofogUuid) { + // Moving to new agent + // make sure all ports are available + const ports = await microservice.getPorts() + const data = { + ports: [], + iofogUuid: microserviceDataUpdate.iofogUuid + } + + for (const port of ports) { + data.ports.push({ + internal: port.portInternal, + external: port.portExternal + }) + } + + if (data.ports.length) { + await MicroservicePortService.validatePortMappings(data, transaction) + } + needStatusReset = true + } + + // Validate images vs catalog item + + const iofogUuid = microserviceDataUpdate.iofogUuid || microservice.iofogUuid + if (microserviceDataUpdate.catalogItemId) { + const catalogItem = await CatalogService.getCatalogItem(microserviceDataUpdate.catalogItemId, isCLI, transaction) + _validateImagesAgainstCatalog(catalogItem, microserviceDataUpdate.images || []) + if (microserviceDataUpdate.catalogItemId !== undefined && microserviceDataUpdate.catalogItemId !== microservice.catalogItemId) { + // Catalog item changed or removed, set rebuild flag + microserviceDataUpdate.rebuild = true + // If catalog item is set, set registry and msvc images + if (microserviceDataUpdate.catalogItemId) { + await _deleteImages(microserviceUuid, transaction) + microserviceDataUpdate.registryId = catalogItem.registryId || 1 + } + } + } else if (!microservice.catalogItemId && microserviceDataUpdate.images && microserviceDataUpdate.images.length === 0) { + // No catalog, and no image + throw new Errors.ValidationError(AppHelper.formatMessage(ErrorMessages.MICROSERVICE_DOES_NOT_HAVE_IMAGES, microserviceData.name)) + } else if (microserviceDataUpdate.images && microserviceDataUpdate.images.length > 0 && !_checkIfMicroserviceImagesAreEqual(microserviceDataUpdate.images, microserviceImages)) { + // No catalog, and images + await _updateImages(microserviceDataUpdate.images, microserviceUuid, transaction) + // Images updated, set rebuild flag to true + microserviceDataUpdate.rebuild = true + } + + if (microserviceDataUpdate.name) { + await _checkForDuplicateName(microserviceDataUpdate.name, { id: microserviceUuid }, microservice.applicationId || microservice.application, transaction) + } + + // validate fog node + if (iofogUuid) { + const fog = await FogManager.findOne({ uuid: iofogUuid }, transaction) + if (!fog || fog.length === 0) { + throw new Errors.NotFoundError(AppHelper.formatMessage(ErrorMessages.INVALID_IOFOG_UUID, iofogUuid)) + } + + // Validate image type + let images = [] + if (microserviceDataUpdate.catalogItemId) { + const catalogItem = await CatalogService.getCatalogItem(microserviceDataUpdate.catalogItemId, isCLI, transaction) + images = catalogItem.images + } else if (microserviceDataUpdate.images) { + images = microserviceDataUpdate.images + } else if (microservice.catalogItemId) { + const catalogItem = await CatalogService.getCatalogItem(microservice.catalogItemId, isCLI, transaction) + images = catalogItem.images + } else { + images = await microservice.getImages() + } + _validateImageFogType(microserviceData, fog, images) + } + + // Set rebuild flag if needed + microserviceDataUpdate.rebuild = microserviceDataUpdate.rebuild || !!( + (microserviceDataUpdate.rootHostAccess !== undefined && microservice.rootHostAccess !== microserviceDataUpdate.rootHostAccess) || + microserviceDataUpdate.env || + microserviceDataUpdate.cmd || + microserviceDataUpdate.volumeMappings || + microserviceDataUpdate.ports || + extraHosts + ) + const updatedMicroservice = await MicroserviceManager.updateAndFind(query, microserviceDataUpdate, transaction) + + if (extraHosts) { + await _updateExtraHosts(extraHosts, microserviceUuid, transaction) + } + + // Update extra hosts that reference this microservice + await _updateRelatedExtraHosts(updatedMicroservice, transaction) + + if (microserviceDataUpdate.volumeMappings) { + await _updateVolumeMappings(microserviceDataUpdate.volumeMappings, microserviceUuid, transaction) + } + + if (microserviceDataUpdate.env) { + await _updateEnv(microserviceDataUpdate.env, microserviceUuid, transaction) + } + + if (microserviceDataUpdate.cmd) { + await _updateArg(microserviceDataUpdate.cmd, microserviceUuid, transaction) + } + + if (microserviceDataUpdate.iofogUuid && microserviceDataUpdate.iofogUuid !== microservice.iofogUuid) { + await MicroservicePortService.movePublicPortsToNewFog(updatedMicroservice, transaction) + } + + if (needStatusReset) { + const microserviceStatus = { + status: MicroserviceStates.QUEUED, + operatingDuration: 0, + startTime: 0, + cpuUsage: 0, + memoryUsage: 0, + containerId: '', + percentage: 0, + errorMessage: '' + } + await MicroserviceStatusManager.update({ + microserviceUuid: microservice.uuid + }, microserviceStatus, transaction) + } + + if (changeTrackingEnabled) { + await ChangeTrackingService.update(microservice.iofogUuid, ChangeTrackingService.events.microserviceRouting, transaction) + await ChangeTrackingService.update(updatedMicroservice.iofogUuid, ChangeTrackingService.events.microserviceRouting, transaction) + await _updateChangeTracking(true, microservice.iofogUuid, transaction) + await _updateChangeTracking(true, updatedMicroservice.iofogUuid, transaction) + } else { + return { + microserviceIofogUuid: microservice.iofogUuid, + updatedMicroserviceIofogUuid: updatedMicroservice.iofogUuid + } + } +} + async function updateMicroserviceEndPoint (microserviceUuid, microserviceData, isCLI, transaction, changeTrackingEnabled = true) { await Validator.validate(microserviceData, Validator.schemas.microserviceUpdate) let needStatusReset = false @@ -596,11 +790,11 @@ async function deleteNotRunningMicroservices (fog, transaction) { async function createRouteEndPoint (sourceMicroserviceUuid, destMicroserviceUuid, isCLI, transaction) { // Print deprecated warning - const sourceMsvc = await MicroserviceManager.findOne({ uuid: sourceMicroserviceUuid }, transaction) + const sourceMsvc = await MicroserviceManager.findMicroserviceOnGet({ uuid: sourceMicroserviceUuid }, transaction) if (!sourceMsvc) { throw new Errors.NotFoundError(AppHelper.formatMessage(ErrorMessages.INVALID_SOURCE_MICROSERVICE_UUID, sourceMicroserviceUuid)) } - const destMsvc = await MicroserviceManager.findOne({ uuid: destMicroserviceUuid }, transaction) + const destMsvc = await MicroserviceManager.findMicroserviceOnGet({ uuid: destMicroserviceUuid }, transaction) if (!destMsvc) { throw new Errors.NotFoundError(AppHelper.formatMessage(ErrorMessages.INVALID_SOURCE_MICROSERVICE_UUID, destMsvc)) } @@ -630,6 +824,27 @@ async function deleteRouteEndPoint (sourceMicroserviceUuid, destMicroserviceUuid async function createPortMappingEndPoint (microserviceUuid, portMappingData, isCLI, transaction) { await Validator.validate(portMappingData, Validator.schemas.portsCreate) + const where = isCLI + ? { uuid: microserviceUuid } + : { uuid: microserviceUuid } + + const microservice = await MicroserviceManager.findMicroserviceOnGet(where, transaction) + if (!microservice) { + throw new Errors.NotFoundError(AppHelper.formatMessage(ErrorMessages.INVALID_MICROSERVICE_UUID, microserviceUuid)) + } + + const agent = await FogManager.findOne({ uuid: microservice.iofogUuid }, transaction) + if (!agent) { + throw new Errors.ValidationError(AppHelper.formatMessage(ErrorMessages.INVALID_IOFOG_UUID, microservice.iofogUuid)) + } + await MicroservicePortService.validatePortMapping(agent, portMappingData, {}, transaction) + + return MicroservicePortService.createPortMapping(microservice, portMappingData, transaction) +} + +async function createSystemPortMappingEndPoint (microserviceUuid, portMappingData, isCLI, transaction) { + await Validator.validate(portMappingData, Validator.schemas.portsCreate) + const where = isCLI ? { uuid: microserviceUuid } : { uuid: microserviceUuid } @@ -690,6 +905,10 @@ async function deletePortMappingEndPoint (microserviceUuid, internalPort, isCLI, return MicroservicePortService.deletePortMapping(microserviceUuid, internalPort, isCLI, transaction) } +async function deleteSystemPortMappingEndPoint (microserviceUuid, internalPort, isCLI, transaction) { + return MicroservicePortService.deleteSystemPortMapping(microserviceUuid, internalPort, isCLI, transaction) +} + async function listPortMappingsEndPoint (microserviceUuid, isCLI, transaction) { return MicroservicePortService.listPortMappings(microserviceUuid, isCLI, transaction) } @@ -709,6 +928,43 @@ async function isMicroserviceConsumer (microservice, transaction) { async function createVolumeMappingEndPoint (microserviceUuid, volumeMappingData, isCLI, transaction) { await Validator.validate(volumeMappingData, Validator.schemas.volumeMappings) + const where = isCLI + ? { uuid: microserviceUuid } + : { uuid: microserviceUuid } + + const microservice = await MicroserviceManager.findMicroserviceOnGet(where, transaction) + if (!microservice) { + throw new Errors.NotFoundError(AppHelper.formatMessage(ErrorMessages.INVALID_MICROSERVICE_UUID, microserviceUuid)) + } + + const type = volumeMappingData.type || VOLUME_MAPPING_DEFAULT + + const volumeMapping = await VolumeMappingManager.findOne({ + microserviceUuid: microserviceUuid, + hostDestination: volumeMappingData.hostDestination, + containerDestination: volumeMappingData.containerDestination, + type + }, transaction) + if (volumeMapping) { + throw new Errors.ValidationError(ErrorMessages.VOLUME_MAPPING_ALREADY_EXISTS) + } + + _validateVolumeMappings([volumeMappingData]) + + const volumeMappingObj = { + microserviceUuid: microserviceUuid, + hostDestination: volumeMappingData.hostDestination, + containerDestination: volumeMappingData.containerDestination, + accessMode: volumeMappingData.accessMode, + type + } + + return VolumeMappingManager.create(volumeMappingObj, transaction) +} + +async function createSystemVolumeMappingEndPoint (microserviceUuid, volumeMappingData, isCLI, transaction) { + await Validator.validate(volumeMappingData, Validator.schemas.volumeMappings) + const where = isCLI ? { uuid: microserviceUuid } : { uuid: microserviceUuid } @@ -764,6 +1020,27 @@ async function deleteVolumeMappingEndPoint (microserviceUuid, volumeMappingUuid, } } +async function deleteSystemVolumeMappingEndPoint (microserviceUuid, volumeMappingUuid, isCLI, transaction) { + const where = isCLI + ? { uuid: microserviceUuid } + : { uuid: microserviceUuid } + + const microservice = await MicroserviceManager.findMicroserviceOnGet(where, transaction) + if (!microservice) { + throw new Errors.NotFoundError(AppHelper.formatMessage(ErrorMessages.INVALID_MICROSERVICE_UUID, microserviceUuid)) + } + + const volumeMappingWhere = { + uuid: volumeMappingUuid, + microserviceUuid: microserviceUuid + } + + const affectedRows = await VolumeMappingManager.delete(volumeMappingWhere, transaction) + if (affectedRows === 0) { + throw new Errors.ValidationError(AppHelper.formatMessage(ErrorMessages.INVALID_VOLUME_MAPPING_UUID, volumeMappingUuid)) + } +} + async function listVolumeMappingsEndPoint (microserviceUuid, isCLI, transaction) { const where = isCLI ? { uuid: microserviceUuid } @@ -836,15 +1113,15 @@ async function _validateApplication (name, isCLI, transaction) { // Force name conversion to string for PG const where = isCLI - ? { name: name.toString() } - : { name: name.toString() } + ? { name: name.toString(), isSystem: false } + : { name: name.toString(), isSystem: false } const application = await ApplicationManager.findOne(where, transaction) if (!application) { // Try with id const where = isCLI - ? { id: name } - : { id: name } + ? { id: name, isSystem: false } + : { id: name, isSystem: false } const application = await ApplicationManager.findOne(where, transaction) if (!application) { @@ -961,6 +1238,13 @@ async function _updatePorts (newPortMappings, microservice, transaction) { } } +async function _updateSystemPorts (newPortMappings, microservice, transaction) { + await MicroservicePortService.deletePortMappings(microservice, transaction) + for (const portMapping of newPortMappings) { + await createSystemPortMappingEndPoint(microservice.uuid, portMapping, false, transaction) + } +} + async function _updateChangeTracking (configUpdated, fogNodeUuid, transaction) { if (configUpdated) { await ChangeTrackingService.update(fogNodeUuid, ChangeTrackingService.events.microserviceCommon, transaction) @@ -1087,14 +1371,18 @@ function listAllPublicPortsEndPoint (transaction) { module.exports = { createMicroserviceEndPoint: TransactionDecorator.generateTransaction(createMicroserviceEndPoint), createPortMappingEndPoint: TransactionDecorator.generateTransaction(createPortMappingEndPoint), + createSystemPortMappingEndPoint: TransactionDecorator.generateTransaction(createSystemPortMappingEndPoint), createRouteEndPoint: TransactionDecorator.generateTransaction(createRouteEndPoint), createVolumeMappingEndPoint: TransactionDecorator.generateTransaction(createVolumeMappingEndPoint), + createSystemVolumeMappingEndPoint: TransactionDecorator.generateTransaction(createSystemVolumeMappingEndPoint), deleteMicroserviceEndPoint: TransactionDecorator.generateTransaction(deleteMicroserviceEndPoint), deleteMicroserviceWithRoutesAndPortMappings: deleteMicroserviceWithRoutesAndPortMappings, deleteNotRunningMicroservices: deleteNotRunningMicroservices, deletePortMappingEndPoint: TransactionDecorator.generateTransaction(deletePortMappingEndPoint), + deleteSystemPortMappingEndPoint: TransactionDecorator.generateTransaction(deleteSystemPortMappingEndPoint), deleteRouteEndPoint: TransactionDecorator.generateTransaction(deleteRouteEndPoint), deleteVolumeMappingEndPoint: TransactionDecorator.generateTransaction(deleteVolumeMappingEndPoint), + deleteSystemVolumeMappingEndPoint: TransactionDecorator.generateTransaction(deleteSystemVolumeMappingEndPoint), getMicroserviceEndPoint: TransactionDecorator.generateTransaction(getMicroserviceEndPoint), getReceiverMicroservices, isMicroserviceConsumer, @@ -1103,6 +1391,7 @@ module.exports = { listMicroservicesEndPoint: TransactionDecorator.generateTransaction(listMicroservicesEndPoint), listVolumeMappingsEndPoint: TransactionDecorator.generateTransaction(listVolumeMappingsEndPoint), updateMicroserviceEndPoint: TransactionDecorator.generateTransaction(updateMicroserviceEndPoint), + updateSystemMicroserviceEndPoint: TransactionDecorator.generateTransaction(updateSystemMicroserviceEndPoint), buildGetMicroserviceResponse: _buildGetMicroserviceResponse, updateChangeTracking: _updateChangeTracking } diff --git a/src/services/router-service.js b/src/services/router-service.js index 8c8dbdc52..162fb71d5 100644 --- a/src/services/router-service.js +++ b/src/services/router-service.js @@ -18,6 +18,8 @@ const Constants = require('../helpers/constants') const Errors = require('../helpers/errors') const ErrorMessages = require('../helpers/error-messages') const MicroserviceManager = require('../data/managers/microservice-manager') +const MicroserviceStatusManager = require('../data/managers/microservice-status-manager') +const ApplicationManager = require('../data/managers/application-manager') const MicroservicePortManager = require('../data/managers/microservice-port-manager') const RouterConnectionManager = require('../data/managers/router-connection-manager') const RouterManager = require('../data/managers/router-manager') @@ -219,9 +221,15 @@ function _createRouterPorts (routerMicroserviceUuid, port, transaction) { async function _createRouterMicroservice (isEdge, uuid, microserviceConfig, transaction) { const routerCatalog = await CatalogService.getRouterCatalogItem(transaction) + + const routerApplicationData = { + name: `system-${uuid.toLowerCase()}`, + isActivated: true, + isSystem: true + } const routerMicroserviceData = { uuid: AppHelper.generateRandomString(32), - name: `Router for Fog ${uuid}`, + name: `router-${uuid.toLowerCase()}`, config: JSON.stringify(microserviceConfig), catalogItemId: routerCatalog.id, iofogUuid: uuid, @@ -229,7 +237,12 @@ async function _createRouterMicroservice (isEdge, uuid, microserviceConfig, tran logSize: constants.MICROSERVICE_DEFAULT_LOG_SIZE, configLastUpdated: Date.now() } - return MicroserviceManager.create(routerMicroserviceData, transaction) + await ApplicationManager.create(routerApplicationData, transaction) + const application = await ApplicationManager.findOne({ name: routerApplicationData.name }, transaction) + routerMicroserviceData.applicationId = application.id + const routerMicroservice = await MicroserviceManager.create(routerMicroserviceData, transaction) + await MicroserviceStatusManager.create({ microserviceUuid: routerMicroserviceData.uuid }, transaction) + return routerMicroservice } function _getRouterConnectorConfig (isEdge, dest) { From 4ad05cebef0223dd75ec70a21df6cd2afafdac70 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Sun, 14 Jul 2024 16:25:09 +0300 Subject: [PATCH 104/146] createPortMappingEndPoint fixed --- src/services/microservices-service.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/services/microservices-service.js b/src/services/microservices-service.js index 1b6216508..a3ed246df 100644 --- a/src/services/microservices-service.js +++ b/src/services/microservices-service.js @@ -823,12 +823,12 @@ async function deleteRouteEndPoint (sourceMicroserviceUuid, destMicroserviceUuid async function createPortMappingEndPoint (microserviceUuid, portMappingData, isCLI, transaction) { await Validator.validate(portMappingData, Validator.schemas.portsCreate) - + await _validateMicroserviceOnGet(microserviceUuid, transaction) const where = isCLI ? { uuid: microserviceUuid } : { uuid: microserviceUuid } - const microservice = await MicroserviceManager.findMicroserviceOnGet(where, transaction) + const microservice = await MicroserviceManager.findOne(where, transaction) if (!microservice) { throw new Errors.NotFoundError(AppHelper.formatMessage(ErrorMessages.INVALID_MICROSERVICE_UUID, microserviceUuid)) } @@ -1277,7 +1277,7 @@ async function _checkForDuplicateName (name, item, applicationId, transaction) { async function _validateMicroserviceOnGet (microserviceUuid, transaction) { const where = { - 'uuid': microserviceUuid + uuid: microserviceUuid } const microservice = await MicroserviceManager.findMicroserviceOnGet(where, transaction) if (!microservice) { From aa4f5e85b53ed36e9ec4f052cda1cccdff7b6ca9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Mon, 15 Jul 2024 13:30:18 +0300 Subject: [PATCH 105/146] swagger yaml update --- docs/swagger.json | 2 +- docs/swagger.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/swagger.json b/docs/swagger.json index 9f2bccfca..88a597df3 100644 --- a/docs/swagger.json +++ b/docs/swagger.json @@ -1831,7 +1831,7 @@ } ] } }, - "/microservices/system/{uuid}\"" : { + "/microservices/system/{uuid}" : { "patch" : { "tags" : [ "Microservices" ], "summary" : "Updates a system microservice", diff --git a/docs/swagger.yaml b/docs/swagger.yaml index 3bda22b4b..f4b49af54 100755 --- a/docs/swagger.yaml +++ b/docs/swagger.yaml @@ -1683,7 +1683,7 @@ paths: type: string security: - userToken: [] - /microservices/system/{uuid}": + /microservices/system/{uuid}: patch: tags: - Microservices From 341a3ace0e535026dc26c39c7d207f27a39f2431 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Mon, 15 Jul 2024 17:09:29 +0300 Subject: [PATCH 106/146] proxxy msvc default log size added --- src/services/microservice-ports/default.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/services/microservice-ports/default.js b/src/services/microservice-ports/default.js index 613b9053a..a24be57f2 100644 --- a/src/services/microservice-ports/default.js +++ b/src/services/microservice-ports/default.js @@ -29,7 +29,7 @@ const MicroserviceExtraHostManager = require('../../data/managers/microservice-e const controllerConfig = require('../../config') const Proxy = require('./proxy') -const { DEFAULT_ROUTER_NAME, DEFAULT_PROXY_HOST, RESERVED_PORTS } = require('../../helpers/constants') +const { MICROSERVICE_DEFAULT_LOG_SIZE, DEFAULT_ROUTER_NAME, DEFAULT_PROXY_HOST, RESERVED_PORTS } = require('../../helpers/constants') const lget = require('lodash/get') @@ -255,6 +255,7 @@ async function _createOrUpdateProxyMicroservice (mapping, networkRouter, hostUui iofogUuid: hostUuid, rootHostAccess: true, registryId: 1, + logSize: MICROSERVICE_DEFAULT_LOG_SIZE, configLastUpdated: Date.now() } const application = await ApplicationManager.findOne({ name: `system-${hostUuid.toLowerCase()}` }, transaction) From 6c760c5199743aa2b2f3588862654cdf9aa40718 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Tue, 16 Jul 2024 19:10:03 +0300 Subject: [PATCH 107/146] microservice definition modified for WasmEdge integration --- docs/swagger.yaml | 68 +++++++++++++++++++++++++++ src/cli/microservice.js | 64 +++++++++++++++++++++++++ src/data/models/microservice.js | 12 +++++ src/data/models/microservicedev.js | 31 ++++++++++++ src/schemas/microservice.js | 16 ++++++- src/services/agent-service.js | 8 ++++ src/services/microservices-service.js | 20 ++++++++ 7 files changed, 217 insertions(+), 2 deletions(-) create mode 100644 src/data/models/microservicedev.js diff --git a/docs/swagger.yaml b/docs/swagger.yaml index f4b49af54..d9c825182 100755 --- a/docs/swagger.yaml +++ b/docs/swagger.yaml @@ -3249,6 +3249,16 @@ components: type: string value: type: string + runAsUser: + type: number + platform: + type: string + runtime: + type: string + devices: + type: array + items: + type: string cmd: type: array items: @@ -3372,6 +3382,16 @@ components: type: string value: type: string + runAsUser: + type: number + platform: + type: string + runtime: + type: string + devices: + type: array + items: + type: string cmd: type: array items: @@ -4020,6 +4040,16 @@ components: type: array items: $ref: "#/components/schemas/AgentEnvRequest" + runAsUser: + type: string + platform: + type: string + runtime: + type: string + devices: + type: array + items: + type: string cmd: type: array items: @@ -4351,6 +4381,16 @@ components: type: string value: type: string + runAsUser: + type: string + platform: + type: string + runtime: + type: string + devices: + type: array + items: + type: string cmd: type: array items: @@ -4413,6 +4453,20 @@ components: type: array items: $ref: "#/components/schemas/PortMappingsRequest" + runAsUser: + type: string + platform: + type: string + runtime: + type: string + devices: + type: array + items: + type: string + cmd: + type: array + items: + type: string UpdateMicroserviceRequest: type: object required: @@ -4444,6 +4498,20 @@ components: type: string fogTypeId: type: string + runAsUser: + type: string + platform: + type: string + runtime: + type: string + devices: + type: array + items: + type: string + cmd: + type: array + items: + type: string IOFogNodeTunnelStatusInfoResponse: type: object properties: diff --git a/src/cli/microservice.js b/src/cli/microservice.js index cce7264f5..75d624702 100644 --- a/src/cli/microservice.js +++ b/src/cli/microservice.js @@ -62,6 +62,18 @@ const JSON_SCHEMA_ADD = AppHelper.stringifyCliJsonSchema( ], cmd: [ 'string' + ], + devices: [ + 'string' + ], + runAsUser: [ + 'string' + ], + platform: [ + 'string' + ], + runtime: [ + 'string' ] } ) @@ -98,6 +110,18 @@ const JSON_SCHEMA_UPDATE = AppHelper.stringifyCliJsonSchema( ], cmd: [ 'string' + ], + devices: [ + 'string' + ], + runAsUser: [ + 'string' + ], + platform: [ + 'string' + ], + runtime: [ + 'string' ] } ) @@ -287,6 +311,38 @@ class Microservice extends BaseCLIHandler { description: 'Microservice container command and argument(s)', multiple: true, group: [constants.CMD_UPDATE, constants.CMD_ADD] + }, + { + name: 'devices', + alias: 'd', + type: String, + description: 'Map devices to microservice container', + multiple: true, + group: [constants.CMD_UPDATE, constants.CMD_ADD] + }, + { + name: 'user', + alias: 'u', + type: String, + description: 'Run Microservice as a user)', + multiple: true, + group: [constants.CMD_UPDATE, constants.CMD_ADD] + }, + { + name: 'platform', + alias: 'o', + type: String, + description: 'Microservice image platform to be used', + multiple: true, + group: [constants.CMD_UPDATE, constants.CMD_ADD] + }, + { + name: 'runtime', + alias: 'y', + type: String, + description: 'Microservice container runtime definition', + multiple: true, + group: [constants.CMD_UPDATE, constants.CMD_ADD] } ] this.commands = { @@ -585,6 +641,10 @@ const _updateMicroserviceObject = function (obj) { logSize: (obj.logSize || constants.MICROSERVICE_DEFAULT_LOG_SIZE) * 1, rebuild: obj.rebuild, cmd: obj.cmd, + devices: obj.devices, + runAsUser: obj.runAsUser, + platform: obj.platform, + runtime: obj.runtime, env, images: obj.images, catalogItemId: parseInt(obj.catalogItemId) || undefined, @@ -646,6 +706,10 @@ const _createMicroserviceObject = function (obj) { logSize: (obj.logSize || constants.MICROSERVICE_DEFAULT_LOG_SIZE) * 1, routes: obj.routes, cmd: obj.cmd, + devices: obj.devices, + runAsUser: obj.runAsUser, + platform: obj.platform, + runtime: obj.runtime, env, images: [] } diff --git a/src/data/models/microservice.js b/src/data/models/microservice.js index e3548c1e8..c43c5488e 100644 --- a/src/data/models/microservice.js +++ b/src/data/models/microservice.js @@ -42,6 +42,18 @@ module.exports = (sequelize, DataTypes) => { field: 'root_host_access', defaultValue: false }, + runAsUser: { + type: DataTypes.TEXT, + field: 'run_as_user' + }, + platform: { + type: DataTypes.TEXT, + field: 'platform' + }, + runtime: { + type: DataTypes.TEXT, + field: 'runtime' + }, logSize: { type: DataTypes.BIGINT, get () { diff --git a/src/data/models/microservicedev.js b/src/data/models/microservicedev.js new file mode 100644 index 000000000..ab3846f1b --- /dev/null +++ b/src/data/models/microservicedev.js @@ -0,0 +1,31 @@ +'use strict' +module.exports = (sequelize, DataTypes) => { + const MicroserviceDev = sequelize.define('MicroserviceDev', { + id: { + type: DataTypes.INTEGER, + primaryKey: true, + autoIncrement: true, + allowNull: false, + field: 'id' + }, + devices: { + type: DataTypes.TEXT, + field: 'devices' + } + }, { + tableName: 'MicroserviceDevs', + timestamps: false, + underscored: true + }) + MicroserviceArg.associate = function (models) { + MicroserviceArg.belongsTo(models.Microservice, { + foreignKey: { + name: 'microserviceUuid', + field: 'microservice_uuid' + }, + as: 'microservice', + onDelete: 'cascade' + }) + } + return MicroserviceDev +} diff --git a/src/schemas/microservice.js b/src/schemas/microservice.js index fd1637bc6..8eae561bb 100644 --- a/src/schemas/microservice.js +++ b/src/schemas/microservice.js @@ -49,7 +49,13 @@ const microserviceCreate = { 'items': { '$ref': '/env' } }, 'cmd': { 'type': 'array', - 'items': { 'type': 'string' } } + 'items': { 'type': 'string' } }, + 'devices': { + 'type': 'array', + 'items': { 'type': 'string' } }, + 'runAsUser': { 'type': 'string' }, + 'platform': { 'type': 'string' }, + 'runtime': { 'type': 'string' } }, 'required': ['name'], 'additionalProperties': true @@ -90,7 +96,13 @@ const microserviceUpdate = { 'items': { '$ref': '/env' } }, 'cmd': { 'type': 'array', - 'items': { 'type': 'string' } } + 'items': { 'type': 'string' } }, + 'devices': { + 'type': 'array', + 'items': { 'type': 'string' } }, + 'runAsUser': { 'type': 'string' }, + 'platform': { 'type': 'string' }, + 'runtime': { 'type': 'string' } }, 'additionalProperties': true } diff --git a/src/services/agent-service.js b/src/services/agent-service.js index c33bd4303..2a0e2c402 100644 --- a/src/services/agent-service.js +++ b/src/services/agent-service.js @@ -299,6 +299,14 @@ const getAgentMicroservices = async function (fog, transaction) { config: microservice.config, rebuild: microservice.rebuild, rootHostAccess: microservice.rootHostAccess, + devices: microservice.devices, + runAsUser: microservice.runAsUser, + platform: microservice.platform, + runtime: microservice.runtime, + devices: microservice.devices, + runAsUser: microservice.runAsUser, + platform: microservice.platform, + runtime: microservice.runtime, logSize: parseInt(microservice.logSize) || constants.MICROSERVICE_DEFAULT_LOG_SIZE, registryId, portMappings: microservice.ports, diff --git a/src/services/microservices-service.js b/src/services/microservices-service.js index a3ed246df..c7e6e12f7 100644 --- a/src/services/microservices-service.js +++ b/src/services/microservices-service.js @@ -371,6 +371,10 @@ async function updateSystemMicroserviceEndPoint (microserviceUuid, microserviceD rebuild: microserviceData.rebuild, iofogUuid: newFog.uuid, rootHostAccess: microserviceData.rootHostAccess, + devices: microserviceData.devices, + runAsUser: microserviceData.runAsUser, + platform: microserviceData.platform, + runtime: microserviceData.runtime, logSize: (microserviceData.logSize || constants.MICROSERVICE_DEFAULT_LOG_SIZE) * 1, registryId: microserviceData.registryId, volumeMappings: microserviceData.volumeMappings, @@ -482,6 +486,10 @@ async function updateSystemMicroserviceEndPoint (microserviceUuid, microserviceD (microserviceDataUpdate.rootHostAccess !== undefined && microservice.rootHostAccess !== microserviceDataUpdate.rootHostAccess) || microserviceDataUpdate.env || microserviceDataUpdate.cmd || + microserviceDataUpdate.devices || + microserviceDataUpdate.runAsUser || + microserviceDataUpdate.platform || + microserviceDataUpdate.runtime || microserviceDataUpdate.volumeMappings || microserviceDataUpdate.ports || extraHosts @@ -565,6 +573,10 @@ async function updateMicroserviceEndPoint (microserviceUuid, microserviceData, i rebuild: microserviceData.rebuild, iofogUuid: newFog.uuid, rootHostAccess: microserviceData.rootHostAccess, + devices: microserviceData.devices, + runAsUser: microserviceData.runAsUser, + platform: microserviceData.platform, + runtime: microserviceData.runtime, logSize: (microserviceData.logSize || constants.MICROSERVICE_DEFAULT_LOG_SIZE) * 1, registryId: microserviceData.registryId, volumeMappings: microserviceData.volumeMappings, @@ -680,6 +692,10 @@ async function updateMicroserviceEndPoint (microserviceUuid, microserviceData, i (microserviceDataUpdate.rootHostAccess !== undefined && microservice.rootHostAccess !== microserviceDataUpdate.rootHostAccess) || microserviceDataUpdate.env || microserviceDataUpdate.cmd || + microserviceDataUpdate.devices || + microserviceDataUpdate.runAsUser || + microserviceDataUpdate.platform || + microserviceDataUpdate.runtime || microserviceDataUpdate.volumeMappings || microserviceDataUpdate.ports || extraHosts @@ -1076,6 +1092,10 @@ async function _createMicroservice (microserviceData, isCLI, transaction) { catalogItemId: microserviceData.catalogItemId, iofogUuid: microserviceData.iofogUuid, rootHostAccess: microserviceData.rootHostAccess, + devices: microserviceData.devices, + runAsUser: microserviceData.runAsUser, + platform: microserviceData.platform, + runtime: microserviceData.runtime, registryId: microserviceData.registryId || 1, logSize: (microserviceData.logSize || constants.MICROSERVICE_DEFAULT_LOG_SIZE) * 1 } From e2274326656d543eec2c8525f29c3927c75a0ef6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Wed, 17 Jul 2024 02:33:05 +0300 Subject: [PATCH 108/146] ecn viewer updated and microservice/system endpoint fixed --- package.json | 2 +- src/routes/microservices.js | 6 +++--- src/services/catalog-service.js | 16 ++++++++++++++++ src/services/microservices-service.js | 8 ++++---- 4 files changed, 24 insertions(+), 8 deletions(-) diff --git a/package.json b/package.json index b11c3b331..02a7c3beb 100644 --- a/package.json +++ b/package.json @@ -57,7 +57,7 @@ "iofog-controller": "src/main.js" }, "dependencies": { - "@datasance/ecn-viewer": "0.1.9", + "@datasance/ecn-viewer": "0.1.12", "axios": "1.7.2", "body-parser": "^1.20.2", "child_process": "1.0.2", diff --git a/src/routes/microservices.js b/src/routes/microservices.js index b3e33ab20..b3ddf1604 100644 --- a/src/routes/microservices.js +++ b/src/routes/microservices.js @@ -418,7 +418,7 @@ module.exports = [ }, { method: 'post', - path: '/api/v1/microservices/sytem/:uuid/port-mapping', + path: '/api/v1/microservices/system/:uuid/port-mapping', middleware: async (req, res) => { logger.apiReq(req) @@ -502,7 +502,7 @@ module.exports = [ await keycloak.protect(['SRE'])(req, res, async () => { const deleteSystemMicroservicePortMapping = ResponseDecorator.handleErrors( - MicroservicesController.deleteMicroservicePortMappingEndPoint, successCode, errorCodes) + MicroservicesController.deleteSystemMicroservicePortMappingEndPoint, successCode, errorCodes) const responseObject = await deleteSystemMicroservicePortMapping(req) const user = req.kauth.grant.access_token.content.preferred_username res @@ -714,7 +714,7 @@ module.exports = [ } ] - await keycloak.protect(['SRE', 'Developer'])(req, res, async () => { + await keycloak.protect(['SRE'])(req, res, async () => { const deleteSystemMicroserviceVolumeMappingEndPoint = ResponseDecorator.handleErrors( MicroservicesController.deleteSystemMicroserviceVolumeMappingEndPoint, successCode, diff --git a/src/services/catalog-service.js b/src/services/catalog-service.js index a6c0da298..a81a513e4 100644 --- a/src/services/catalog-service.js +++ b/src/services/catalog-service.js @@ -93,6 +93,21 @@ async function getCatalogItem (id, isCLI, transaction) { return item } +async function getSystemCatalogItem (id, isCLI, transaction) { + const where = { + id: id, + category: 'SYSTEM' + } + + const attributes = {} + + const item = await CatalogItemManager.findOneWithDependencies(where, attributes, transaction) + if (!item) { + throw new Errors.NotFoundError(AppHelper.formatMessage(ErrorMessages.INVALID_CATALOG_ITEM_ID, id)) + } + return item +} + const getCatalogItemEndPoint = async function (id, isCLI, transaction) { return getCatalogItem(id, isCLI, transaction) } @@ -368,6 +383,7 @@ module.exports = { deleteCatalogItemEndPoint: TransactionDecorator.generateTransaction(deleteCatalogItemEndPoint), updateCatalogItemEndPoint: TransactionDecorator.generateTransaction(updateCatalogItemEndPoint), getCatalogItem: getCatalogItem, + getSystemCatalogItem: getSystemCatalogItem, getNetworkCatalogItem: getNetworkCatalogItem, getBluetoothCatalogItem: getBluetoothCatalogItem, getHalCatalogItem: getHalCatalogItem, diff --git a/src/services/microservices-service.js b/src/services/microservices-service.js index a3ed246df..17d5f629e 100644 --- a/src/services/microservices-service.js +++ b/src/services/microservices-service.js @@ -429,7 +429,7 @@ async function updateSystemMicroserviceEndPoint (microserviceUuid, microserviceD const iofogUuid = microserviceDataUpdate.iofogUuid || microservice.iofogUuid if (microserviceDataUpdate.catalogItemId) { - const catalogItem = await CatalogService.getCatalogItem(microserviceDataUpdate.catalogItemId, isCLI, transaction) + const catalogItem = await CatalogService.getSystemCatalogItem(microserviceDataUpdate.catalogItemId, isCLI, transaction) _validateImagesAgainstCatalog(catalogItem, microserviceDataUpdate.images || []) if (microserviceDataUpdate.catalogItemId !== undefined && microserviceDataUpdate.catalogItemId !== microservice.catalogItemId) { // Catalog item changed or removed, set rebuild flag @@ -464,12 +464,12 @@ async function updateSystemMicroserviceEndPoint (microserviceUuid, microserviceD // Validate image type let images = [] if (microserviceDataUpdate.catalogItemId) { - const catalogItem = await CatalogService.getCatalogItem(microserviceDataUpdate.catalogItemId, isCLI, transaction) + const catalogItem = await CatalogService.getSystemCatalogItem(microserviceDataUpdate.catalogItemId, isCLI, transaction) images = catalogItem.images } else if (microserviceDataUpdate.images) { images = microserviceDataUpdate.images } else if (microservice.catalogItemId) { - const catalogItem = await CatalogService.getCatalogItem(microservice.catalogItemId, isCLI, transaction) + const catalogItem = await CatalogService.getSystemCatalogItem(microservice.catalogItemId, isCLI, transaction) images = catalogItem.images } else { images = await microservice.getImages() @@ -1025,7 +1025,7 @@ async function deleteSystemVolumeMappingEndPoint (microserviceUuid, volumeMappin ? { uuid: microserviceUuid } : { uuid: microserviceUuid } - const microservice = await MicroserviceManager.findMicroserviceOnGet(where, transaction) + const microservice = await MicroserviceManager.findOne(where, transaction) if (!microservice) { throw new Errors.NotFoundError(AppHelper.formatMessage(ErrorMessages.INVALID_MICROSERVICE_UUID, microserviceUuid)) } From 1d8e089446dc791eb55304bd720ee1916f691baf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Thu, 18 Jul 2024 14:21:19 +0300 Subject: [PATCH 109/146] microservices updated --- docs/swagger.yaml | 12 ++--- src/cli/microservice.js | 12 ++--- .../microservice-cdi-device-manager.js | 35 +++++++++++++ src/data/managers/microservice-manager.js | 19 +++++++ src/data/models/microservice.js | 5 ++ ...croservicedev.js => microserviceCdiDev.js} | 14 ++--- src/schemas/microservice.js | 4 +- src/services/agent-service.js | 6 +-- src/services/microservices-service.js | 52 +++++++++++++++++-- 9 files changed, 128 insertions(+), 31 deletions(-) create mode 100644 src/data/managers/microservice-cdi-device-manager.js rename src/data/models/{microservicedev.js => microserviceCdiDev.js} (60%) diff --git a/docs/swagger.yaml b/docs/swagger.yaml index d9c825182..147c7a4d7 100755 --- a/docs/swagger.yaml +++ b/docs/swagger.yaml @@ -3255,7 +3255,7 @@ components: type: string runtime: type: string - devices: + cdiDevices: type: array items: type: string @@ -3388,7 +3388,7 @@ components: type: string runtime: type: string - devices: + cdiDevices: type: array items: type: string @@ -4046,7 +4046,7 @@ components: type: string runtime: type: string - devices: + cdiDevices: type: array items: type: string @@ -4387,7 +4387,7 @@ components: type: string runtime: type: string - devices: + cdiDevices: type: array items: type: string @@ -4459,7 +4459,7 @@ components: type: string runtime: type: string - devices: + cdiDevices: type: array items: type: string @@ -4504,7 +4504,7 @@ components: type: string runtime: type: string - devices: + cdiDevices: type: array items: type: string diff --git a/src/cli/microservice.js b/src/cli/microservice.js index 75d624702..79c56a2c8 100644 --- a/src/cli/microservice.js +++ b/src/cli/microservice.js @@ -63,7 +63,7 @@ const JSON_SCHEMA_ADD = AppHelper.stringifyCliJsonSchema( cmd: [ 'string' ], - devices: [ + cdiDevices: [ 'string' ], runAsUser: [ @@ -111,7 +111,7 @@ const JSON_SCHEMA_UPDATE = AppHelper.stringifyCliJsonSchema( cmd: [ 'string' ], - devices: [ + cdiDevices: [ 'string' ], runAsUser: [ @@ -313,10 +313,10 @@ class Microservice extends BaseCLIHandler { group: [constants.CMD_UPDATE, constants.CMD_ADD] }, { - name: 'devices', + name: 'cdiDevices', alias: 'd', type: String, - description: 'Map devices to microservice container', + description: 'Map CDI devices to microservice container', multiple: true, group: [constants.CMD_UPDATE, constants.CMD_ADD] }, @@ -641,7 +641,7 @@ const _updateMicroserviceObject = function (obj) { logSize: (obj.logSize || constants.MICROSERVICE_DEFAULT_LOG_SIZE) * 1, rebuild: obj.rebuild, cmd: obj.cmd, - devices: obj.devices, + cdiDevices: obj.cdiDevices, runAsUser: obj.runAsUser, platform: obj.platform, runtime: obj.runtime, @@ -706,7 +706,7 @@ const _createMicroserviceObject = function (obj) { logSize: (obj.logSize || constants.MICROSERVICE_DEFAULT_LOG_SIZE) * 1, routes: obj.routes, cmd: obj.cmd, - devices: obj.devices, + cdiDevices: obj.cdiDevices, runAsUser: obj.runAsUser, platform: obj.platform, runtime: obj.runtime, diff --git a/src/data/managers/microservice-cdi-device-manager.js b/src/data/managers/microservice-cdi-device-manager.js new file mode 100644 index 000000000..dc13ab60b --- /dev/null +++ b/src/data/managers/microservice-cdi-device-manager.js @@ -0,0 +1,35 @@ +/* + * ******************************************************************************* + * * Copyright (c) 2023 Datasance Teknoloji A.S. + * * + * * This program and the accompanying materials are made available under the + * * terms of the Eclipse Public License v. 2.0 which is available at + * * http://www.eclipse.org/legal/epl-2.0 + * * + * * SPDX-License-Identifier: EPL-2.0 + * ******************************************************************************* + * + */ + +const BaseManager = require('./base-manager') +const models = require('../models') +const MicroserviceCdiDev = models.MicroserviceCdiDev + +const MicroserviceCdiDevExcludedFields = [ + 'id', + 'microservice_uuid', + 'microserviceUuid' +] + +class MicroserviceCdiDevManager extends BaseManager { + getEntity () { + return MicroserviceCdiDev + } + + findAllExcludeFields (where, transaction) { + return this.findAllWithAttributes(where, { exclude: MicroserviceCdiDevExcludedFields }, transaction) + } +} + +const instance = new MicroserviceCdiDevManager() +module.exports = instance diff --git a/src/data/managers/microservice-manager.js b/src/data/managers/microservice-manager.js index 47316fe54..c8a54a058 100644 --- a/src/data/managers/microservice-manager.js +++ b/src/data/managers/microservice-manager.js @@ -18,6 +18,7 @@ const MicroservicePort = models.MicroservicePort const MicroserviceEnv = models.MicroserviceEnv const MicroserviceExtraHost = models.MicroserviceExtraHost const MicroserviceArg = models.MicroserviceArg +const MicroserviceCdiDev = models.MicroserviceCdiDev const VolumeMapping = models.VolumeMapping const StraceDiagnostics = models.StraceDiagnostics const CatalogItem = models.CatalogItem @@ -67,6 +68,12 @@ class MicroserviceManager extends BaseManager { required: false, attributes: ['cmd'] }, + { + model: MicroserviceCdiDev, + as: 'cdiDevices', + required: false, + attributes: ['cdiDevices'] + }, { model: MicroservicePort, as: 'ports', @@ -153,6 +160,12 @@ class MicroserviceManager extends BaseManager { required: false, attributes: ['cmd', 'id'] }, + { + model: MicroserviceCdiDev, + as: 'cdiDevices', + required: false, + attributes: ['cdiDevices'] + }, { model: MicroservicePort, as: 'ports', @@ -241,6 +254,12 @@ class MicroserviceManager extends BaseManager { required: false, attributes: ['cmd'] }, + { + model: MicroserviceCdiDev, + as: 'cdiDevices', + required: false, + attributes: ['cdiDevices'] + }, { model: MicroservicePort, as: 'ports', diff --git a/src/data/models/microservice.js b/src/data/models/microservice.js index c43c5488e..7ce25b690 100644 --- a/src/data/models/microservice.js +++ b/src/data/models/microservice.js @@ -160,6 +160,11 @@ module.exports = (sequelize, DataTypes) => { as: 'cmd' }) + Microservice.hasMany(models.MicroserviceCdiDev, { + foreignKey: 'microservice_uuid', + as: 'cdiDevices' + }) + Microservice.hasMany(models.MicroserviceExtraHost, { foreignKey: 'microservice_uuid', as: 'extraHosts' diff --git a/src/data/models/microservicedev.js b/src/data/models/microserviceCdiDev.js similarity index 60% rename from src/data/models/microservicedev.js rename to src/data/models/microserviceCdiDev.js index ab3846f1b..a47874a61 100644 --- a/src/data/models/microservicedev.js +++ b/src/data/models/microserviceCdiDev.js @@ -1,6 +1,6 @@ 'use strict' module.exports = (sequelize, DataTypes) => { - const MicroserviceDev = sequelize.define('MicroserviceDev', { + const MicroserviceCdiDev = sequelize.define('MicroserviceCdiDev', { id: { type: DataTypes.INTEGER, primaryKey: true, @@ -8,17 +8,17 @@ module.exports = (sequelize, DataTypes) => { allowNull: false, field: 'id' }, - devices: { + cdiDevices: { type: DataTypes.TEXT, - field: 'devices' + field: 'cdi_devices' } }, { - tableName: 'MicroserviceDevs', + tableName: 'MicroservicecdiDevices', timestamps: false, underscored: true }) - MicroserviceArg.associate = function (models) { - MicroserviceArg.belongsTo(models.Microservice, { + MicroserviceCdiDev.associate = function (models) { + MicroserviceCdiDev.belongsTo(models.Microservice, { foreignKey: { name: 'microserviceUuid', field: 'microservice_uuid' @@ -27,5 +27,5 @@ module.exports = (sequelize, DataTypes) => { onDelete: 'cascade' }) } - return MicroserviceDev + return MicroserviceCdiDev } diff --git a/src/schemas/microservice.js b/src/schemas/microservice.js index 8eae561bb..23b07f2f5 100644 --- a/src/schemas/microservice.js +++ b/src/schemas/microservice.js @@ -50,7 +50,7 @@ const microserviceCreate = { 'cmd': { 'type': 'array', 'items': { 'type': 'string' } }, - 'devices': { + 'cdiDevices': { 'type': 'array', 'items': { 'type': 'string' } }, 'runAsUser': { 'type': 'string' }, @@ -97,7 +97,7 @@ const microserviceUpdate = { 'cmd': { 'type': 'array', 'items': { 'type': 'string' } }, - 'devices': { + 'cdiDevices': { 'type': 'array', 'items': { 'type': 'string' } }, 'runAsUser': { 'type': 'string' }, diff --git a/src/services/agent-service.js b/src/services/agent-service.js index 2a0e2c402..5e2fe480a 100644 --- a/src/services/agent-service.js +++ b/src/services/agent-service.js @@ -299,11 +299,7 @@ const getAgentMicroservices = async function (fog, transaction) { config: microservice.config, rebuild: microservice.rebuild, rootHostAccess: microservice.rootHostAccess, - devices: microservice.devices, - runAsUser: microservice.runAsUser, - platform: microservice.platform, - runtime: microservice.runtime, - devices: microservice.devices, + cdiDevices: microservice.cdiDevices, runAsUser: microservice.runAsUser, platform: microservice.platform, runtime: microservice.runtime, diff --git a/src/services/microservices-service.js b/src/services/microservices-service.js index 1dd83ac2f..56ef51cd8 100644 --- a/src/services/microservices-service.js +++ b/src/services/microservices-service.js @@ -15,6 +15,7 @@ const TransactionDecorator = require('../decorators/transaction-decorator') const MicroserviceManager = require('../data/managers/microservice-manager') const MicroserviceStatusManager = require('../data/managers/microservice-status-manager') const MicroserviceArgManager = require('../data/managers/microservice-arg-manager') +const MicroserviceCdiDevManager = require('../data/managers/microservice-cdi-device-manager') const MicroserviceEnvManager = require('../data/managers/microservice-env-manager') const MicroservicePortService = require('../services/microservice-ports/factory') const CatalogItemImageManager = require('../data/managers/catalog-item-image-manager') @@ -286,6 +287,11 @@ async function createMicroserviceEndPoint (microserviceData, isCLI, transaction) await _createArg(microservice, arg, transaction) } } + if (microserviceData.cdiDevices) { + for (const cdiDevices of microserviceData.cdiDevices) { + await _createCdiDevices(microservice, cdiDevices, transaction) + } + } if (microserviceData.volumeMappings) { await _createVolumeMappings(microservice, microserviceData.volumeMappings, transaction) } @@ -371,7 +377,7 @@ async function updateSystemMicroserviceEndPoint (microserviceUuid, microserviceD rebuild: microserviceData.rebuild, iofogUuid: newFog.uuid, rootHostAccess: microserviceData.rootHostAccess, - devices: microserviceData.devices, + cdiDevices: microserviceData.cdiDevices, runAsUser: microserviceData.runAsUser, platform: microserviceData.platform, runtime: microserviceData.runtime, @@ -486,7 +492,7 @@ async function updateSystemMicroserviceEndPoint (microserviceUuid, microserviceD (microserviceDataUpdate.rootHostAccess !== undefined && microservice.rootHostAccess !== microserviceDataUpdate.rootHostAccess) || microserviceDataUpdate.env || microserviceDataUpdate.cmd || - microserviceDataUpdate.devices || + microserviceDataUpdate.cdiDevices || microserviceDataUpdate.runAsUser || microserviceDataUpdate.platform || microserviceDataUpdate.runtime || @@ -515,6 +521,10 @@ async function updateSystemMicroserviceEndPoint (microserviceUuid, microserviceD await _updateArg(microserviceDataUpdate.cmd, microserviceUuid, transaction) } + if (microserviceDataUpdate.cdiDevices) { + await _updateCdiDevices(microserviceDataUpdate.cdiDevices, microserviceUuid, transaction) + } + if (microserviceDataUpdate.iofogUuid && microserviceDataUpdate.iofogUuid !== microservice.iofogUuid) { await MicroservicePortService.movePublicPortsToNewFog(updatedMicroservice, transaction) } @@ -573,7 +583,7 @@ async function updateMicroserviceEndPoint (microserviceUuid, microserviceData, i rebuild: microserviceData.rebuild, iofogUuid: newFog.uuid, rootHostAccess: microserviceData.rootHostAccess, - devices: microserviceData.devices, + cdiDevices: microserviceData.cdiDevices, runAsUser: microserviceData.runAsUser, platform: microserviceData.platform, runtime: microserviceData.runtime, @@ -692,7 +702,7 @@ async function updateMicroserviceEndPoint (microserviceUuid, microserviceData, i (microserviceDataUpdate.rootHostAccess !== undefined && microservice.rootHostAccess !== microserviceDataUpdate.rootHostAccess) || microserviceDataUpdate.env || microserviceDataUpdate.cmd || - microserviceDataUpdate.devices || + microserviceDataUpdate.cdiDevices || microserviceDataUpdate.runAsUser || microserviceDataUpdate.platform || microserviceDataUpdate.runtime || @@ -721,6 +731,10 @@ async function updateMicroserviceEndPoint (microserviceUuid, microserviceData, i await _updateArg(microserviceDataUpdate.cmd, microserviceUuid, transaction) } + if (microserviceDataUpdate.cdiDevices) { + await _updateCdiDevices(microserviceDataUpdate.cdiDevices, microserviceUuid, transaction) + } + if (microserviceDataUpdate.iofogUuid && microserviceDataUpdate.iofogUuid !== microservice.iofogUuid) { await MicroservicePortService.movePublicPortsToNewFog(updatedMicroservice, transaction) } @@ -917,6 +931,20 @@ async function _createArg (microservice, arg, transaction) { await MicroservicePortService.switchOnUpdateFlagsForMicroservicesForPortMapping(microservice, false, transaction) } +async function _createCdiDevices (microservice, cdiDevices, transaction) { + if (!microservice.iofogUuid) { + throw new Errors.ValidationError(AppHelper.formatMessage(ErrorMessages.REQUIRED_FOG_NODE)) + } + + const mscdiDevicesData = { + cdiDevices: cdiDevices, + microserviceUuid: microservice.uuid + } + + await MicroserviceCdiDevManager.create(mscdiDevicesData, transaction) + await MicroservicePortService.switchOnUpdateFlagsForMicroservicesForPortMapping(microservice, false, transaction) +} + async function deletePortMappingEndPoint (microserviceUuid, internalPort, isCLI, transaction) { return MicroservicePortService.deletePortMapping(microserviceUuid, internalPort, isCLI, transaction) } @@ -1092,7 +1120,7 @@ async function _createMicroservice (microserviceData, isCLI, transaction) { catalogItemId: microserviceData.catalogItemId, iofogUuid: microserviceData.iofogUuid, rootHostAccess: microserviceData.rootHostAccess, - devices: microserviceData.devices, + cdiDevices: microserviceData.cdiDevices, runAsUser: microserviceData.runAsUser, platform: microserviceData.platform, runtime: microserviceData.runtime, @@ -1251,6 +1279,20 @@ async function _updateArg (arg, microserviceUuid, transaction) { } } +async function _updateCdiDevices (cdiDevices, microserviceUuid, transaction) { + await MicroserviceCdiDevManager.delete({ + microserviceUuid: microserviceUuid + }, transaction) + for (const cdiDevicesData of cdiDevices) { + const envObj = { + microserviceUuid: microserviceUuid, + cdiDevices: cdiDevicesData + } + + await MicroserviceCdiDevManager.create(envObj, transaction) + } +} + async function _updatePorts (newPortMappings, microservice, transaction) { await MicroservicePortService.deletePortMappings(microservice, transaction) for (const portMapping of newPortMappings) { From 7eff03da1e8710519160b855f29c8b8a082b01d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Thu, 18 Jul 2024 14:22:39 +0300 Subject: [PATCH 110/146] version updated --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 02a7c3beb..b4f5ff799 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@datasance/iofogcontroller", - "version": "3.2.1-beta3", + "version": "3.2.1", "description": "ioFog Controller project for Eclipse IoFog @ iofog.org \\nCopyright (c) 2023 Datasance Teknoloji A.S.", "main": "./src/main.js", "author": "Emirhan Durmus", From c86c40ee5b91227b02fc777f8dd554298d6dcf50 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Thu, 18 Jul 2024 14:30:25 +0300 Subject: [PATCH 111/146] release --- .nsprc | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.nsprc b/.nsprc index b15291f0e..613f525df 100644 --- a/.nsprc +++ b/.nsprc @@ -1,5 +1,8 @@ { "1097496": { "notes": "" + }, + "1098094": { + "notes": "" } } \ No newline at end of file From f8f411f9dd6c2463bf0247335f1959a49bb619ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Thu, 18 Jul 2024 14:36:01 +0300 Subject: [PATCH 112/146] version updated --- .nsprc | 3 +++ package.json | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/.nsprc b/.nsprc index b15291f0e..613f525df 100644 --- a/.nsprc +++ b/.nsprc @@ -1,5 +1,8 @@ { "1097496": { "notes": "" + }, + "1098094": { + "notes": "" } } \ No newline at end of file diff --git a/package.json b/package.json index 02a7c3beb..0850610c8 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@datasance/iofogcontroller", - "version": "3.2.1-beta3", + "version": "3.2.2.alpha0", "description": "ioFog Controller project for Eclipse IoFog @ iofog.org \\nCopyright (c) 2023 Datasance Teknoloji A.S.", "main": "./src/main.js", "author": "Emirhan Durmus", From 4e6afe3f07be5197ec54a679e967963c61cb97a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Thu, 18 Jul 2024 15:03:22 +0300 Subject: [PATCH 113/146] microservice cdi devices table name fixed --- src/data/models/microserviceCdiDev.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/data/models/microserviceCdiDev.js b/src/data/models/microserviceCdiDev.js index a47874a61..38f85081b 100644 --- a/src/data/models/microserviceCdiDev.js +++ b/src/data/models/microserviceCdiDev.js @@ -13,7 +13,7 @@ module.exports = (sequelize, DataTypes) => { field: 'cdi_devices' } }, { - tableName: 'MicroservicecdiDevices', + tableName: 'MicroserviceCdiDevices', timestamps: false, underscored: true }) From 0cdd809429cb2a77084035bb947e199fb545e661 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Sat, 20 Jul 2024 15:48:14 +0300 Subject: [PATCH 114/146] microservice response and get agent microservice edited --- docs/swagger.yaml | 2 +- src/services/agent-service.js | 4 ++-- src/services/microservices-service.js | 4 +++- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/docs/swagger.yaml b/docs/swagger.yaml index 147c7a4d7..136955969 100755 --- a/docs/swagger.yaml +++ b/docs/swagger.yaml @@ -3250,7 +3250,7 @@ components: value: type: string runAsUser: - type: number + type: string platform: type: string runtime: diff --git a/src/services/agent-service.js b/src/services/agent-service.js index 5e2fe480a..fee8ebc96 100644 --- a/src/services/agent-service.js +++ b/src/services/agent-service.js @@ -288,7 +288,7 @@ const getAgentMicroservices = async function (fog, transaction) { } }) const cmd = microservice.cmd && microservice.cmd.sort((a, b) => a.id - b.id).map((it) => it.cmd) - + const cdiDevices = microservice.cdiDevices && microservice.cdiDevices.sort((a, b) => a.id - b.id).map((it) => it.cdiDevices) const registryId = microservice.catalogItem && microservice.catalogItem.registry ? microservice.catalogItem.registry.id : microservice.registry.id const extraHosts = microservice.extraHosts ? microservice.extraHosts.map(_mapExtraHost) : [] @@ -299,7 +299,6 @@ const getAgentMicroservices = async function (fog, transaction) { config: microservice.config, rebuild: microservice.rebuild, rootHostAccess: microservice.rootHostAccess, - cdiDevices: microservice.cdiDevices, runAsUser: microservice.runAsUser, platform: microservice.platform, runtime: microservice.runtime, @@ -313,6 +312,7 @@ const getAgentMicroservices = async function (fog, transaction) { env, extraHosts, cmd, + cdiDevices, routes, isConsumer } diff --git a/src/services/microservices-service.js b/src/services/microservices-service.js index 56ef51cd8..191698b78 100644 --- a/src/services/microservices-service.js +++ b/src/services/microservices-service.js @@ -1395,6 +1395,8 @@ async function _buildGetMicroserviceResponse (microservice, transaction) { const env = await MicroserviceEnvManager.findAllExcludeFields({ microserviceUuid: microserviceUuid }, transaction) const cmd = await MicroserviceArgManager.findAllExcludeFields({ microserviceUuid: microserviceUuid }, transaction) const arg = cmd.map((it) => it.cmd) + const cdiDevices = await MicroserviceCdiDevManager.findAllExcludeFields({ microserviceUuid: microserviceUuid }, transaction) + const cdiDevs = cdiDevices.map((it) => it.cdiDevices) const status = await MicroserviceStatusManager.findAllExcludeFields({ microserviceUuid: microserviceUuid }, transaction) // build microservice response @@ -1409,9 +1411,9 @@ async function _buildGetMicroserviceResponse (microservice, transaction) { res.routes = routes.map((r) => r.destMicroserviceUuid) res.env = env res.cmd = arg + res.cdiDevices = cdiDevs res.extraHosts = extraHosts.map(eH => ({ name: eH.name, address: eH.template, value: eH.value })) res.images = images.map(i => ({ containerImage: i.containerImage, fogTypeId: i.fogTypeId })) - if (status && status.length) { res.status = status[0] } From 5235421ba1fc110baa8f998380bd432d491afb4d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Mon, 22 Jul 2024 15:08:59 +0300 Subject: [PATCH 115/146] release name --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 0850610c8..80268a4f1 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@datasance/iofogcontroller", - "version": "3.2.2.alpha0", + "version": "3.3.0-beta", "description": "ioFog Controller project for Eclipse IoFog @ iofog.org \\nCopyright (c) 2023 Datasance Teknoloji A.S.", "main": "./src/main.js", "author": "Emirhan Durmus", From a1de6f97df606367033577fcec2784903047dd85 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Wed, 24 Jul 2024 10:21:12 +0300 Subject: [PATCH 116/146] viewer version updated --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 80268a4f1..c04409747 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@datasance/iofogcontroller", - "version": "3.3.0-beta", + "version": "3.3.0", "description": "ioFog Controller project for Eclipse IoFog @ iofog.org \\nCopyright (c) 2023 Datasance Teknoloji A.S.", "main": "./src/main.js", "author": "Emirhan Durmus", @@ -57,7 +57,7 @@ "iofog-controller": "src/main.js" }, "dependencies": { - "@datasance/ecn-viewer": "0.1.12", + "@datasance/ecn-viewer": "0.2.0", "axios": "1.7.2", "body-parser": "^1.20.2", "child_process": "1.0.2", From e3fd85ba8240232043b7149c27625fa34d065285 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Wed, 24 Jul 2024 11:14:30 +0300 Subject: [PATCH 117/146] viewer updated --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index c04409747..797c25e6c 100644 --- a/package.json +++ b/package.json @@ -57,7 +57,7 @@ "iofog-controller": "src/main.js" }, "dependencies": { - "@datasance/ecn-viewer": "0.2.0", + "@datasance/ecn-viewer": "0.2.1", "axios": "1.7.2", "body-parser": "^1.20.2", "child_process": "1.0.2", From 4bd27f2baae0f41de2af67ffbbe7649a912f5ed8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Mon, 29 Jul 2024 17:59:09 +0300 Subject: [PATCH 118/146] viewer updated --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 797c25e6c..f66a69e93 100644 --- a/package.json +++ b/package.json @@ -57,7 +57,7 @@ "iofog-controller": "src/main.js" }, "dependencies": { - "@datasance/ecn-viewer": "0.2.1", + "@datasance/ecn-viewer": "0.2.2", "axios": "1.7.2", "body-parser": "^1.20.2", "child_process": "1.0.2", From 195ba6274c19abd7d65c311b8184a104f2363452 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Mon, 29 Jul 2024 18:05:06 +0300 Subject: [PATCH 119/146] version updated --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index f66a69e93..1aaa2c6c3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@datasance/iofogcontroller", - "version": "3.3.0", + "version": "3.3.1", "description": "ioFog Controller project for Eclipse IoFog @ iofog.org \\nCopyright (c) 2023 Datasance Teknoloji A.S.", "main": "./src/main.js", "author": "Emirhan Durmus", From 52ce828a745caf82d36cbd6930104bcb3c9f94ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Mon, 29 Jul 2024 21:36:33 +0300 Subject: [PATCH 120/146] viewer updated to 0.2.3 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 1aaa2c6c3..24fff87b0 100644 --- a/package.json +++ b/package.json @@ -57,7 +57,7 @@ "iofog-controller": "src/main.js" }, "dependencies": { - "@datasance/ecn-viewer": "0.2.2", + "@datasance/ecn-viewer": "0.2.3", "axios": "1.7.2", "body-parser": "^1.20.2", "child_process": "1.0.2", From 012e85e54221a99b67cff9ef83d488acc1d5525b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Tue, 20 Aug 2024 12:51:11 +0300 Subject: [PATCH 121/146] viewer updated --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 24fff87b0..26b1ddbb7 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@datasance/iofogcontroller", - "version": "3.3.1", + "version": "3.3.2", "description": "ioFog Controller project for Eclipse IoFog @ iofog.org \\nCopyright (c) 2023 Datasance Teknoloji A.S.", "main": "./src/main.js", "author": "Emirhan Durmus", @@ -57,7 +57,7 @@ "iofog-controller": "src/main.js" }, "dependencies": { - "@datasance/ecn-viewer": "0.2.3", + "@datasance/ecn-viewer": "0.2.4", "axios": "1.7.2", "body-parser": "^1.20.2", "child_process": "1.0.2", From 78e40a18516b88aa498354ea18c968c1746e8ea9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Thu, 22 Aug 2024 20:47:12 +0300 Subject: [PATCH 122/146] postgres db provider added and viewer version updated --- .dockerignore | 1 + .gitignore | 1 + package.json | 5 +++-- src/config/development.json | 7 +++++++ src/config/production.json | 7 +++++++ src/data/models/fog.js | 6 +++--- src/data/providers/postgres.js | 25 +++++++++++++++++++++++++ 7 files changed, 47 insertions(+), 5 deletions(-) create mode 100644 src/data/providers/postgres.js diff --git a/.dockerignore b/.dockerignore index 0e9dec078..10f384634 100644 --- a/.dockerignore +++ b/.dockerignore @@ -10,6 +10,7 @@ node_modules /src/data/providers/* !/src/data/providers/sqlite.js !/src/data/providers/mysql.js +!/src/data/providers/postgres.js !/src/data/providers/database-*.js /src/config/*-config.json .DS_Store diff --git a/.gitignore b/.gitignore index 427fc02a9..3524ddf39 100644 --- a/.gitignore +++ b/.gitignore @@ -10,6 +10,7 @@ node_modules /src/data/providers/* !/src/data/providers/sqlite.js !/src/data/providers/mysql.js +!/src/data/providers/postgres.js !/src/data/providers/database-*.js /src/config/*-config.json .DS_Store diff --git a/package.json b/package.json index 26b1ddbb7..5085e3568 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@datasance/iofogcontroller", - "version": "3.3.2", + "version": "3.4.0", "description": "ioFog Controller project for Eclipse IoFog @ iofog.org \\nCopyright (c) 2023 Datasance Teknoloji A.S.", "main": "./src/main.js", "author": "Emirhan Durmus", @@ -57,7 +57,7 @@ "iofog-controller": "src/main.js" }, "dependencies": { - "@datasance/ecn-viewer": "0.2.4", + "@datasance/ecn-viewer": "0.3.2", "axios": "1.7.2", "body-parser": "^1.20.2", "child_process": "1.0.2", @@ -92,6 +92,7 @@ "pino": "9.1.0", "pino-std-serializers": "7.0.0", "portscanner": "2.2.0", + "pg": "8.12.0", "qs": "6.12.1", "retry-as-promised": "7.0.4", "sequelize": "6.37.3", diff --git a/src/config/development.json b/src/config/development.json index 0fb8ec1a5..bef344843 100644 --- a/src/config/development.json +++ b/src/config/development.json @@ -50,6 +50,13 @@ "username": "", "password": "", "databaseName": "" + }, + "postgres": { + "host": "", + "port": "", + "username": "", + "password": "", + "databaseName": "" } } } diff --git a/src/config/production.json b/src/config/production.json index e8deb45f3..7c31289e8 100644 --- a/src/config/production.json +++ b/src/config/production.json @@ -42,6 +42,13 @@ "username": "", "password": "", "databaseName": "" + }, + "postgres": { + "host": "", + "port": "", + "username": "", + "password": "", + "databaseName": "" } } } diff --git a/src/data/models/fog.js b/src/data/models/fog.js index b3e131eb1..07e02c87e 100644 --- a/src/data/models/fog.js +++ b/src/data/models/fog.js @@ -94,18 +94,18 @@ module.exports = (sequelize, DataTypes) => { get () { return convertToInt(this.getDataValue('systemAvailableDisk')) }, - field: 'system-available-disk' + field: 'system_available_disk' }, systemAvailableMemory: { type: DataTypes.BIGINT, get () { return convertToInt(this.getDataValue('systemAvailableMemory')) }, - field: 'system-available-memory' + field: 'system_available_memory' }, systemTotalCpu: { type: DataTypes.FLOAT, - field: 'system-total-cpu' + field: 'system_total_cpu' }, securityStatus: { type: DataTypes.TEXT, diff --git a/src/data/providers/postgres.js b/src/data/providers/postgres.js new file mode 100644 index 000000000..b5e959f08 --- /dev/null +++ b/src/data/providers/postgres.js @@ -0,0 +1,25 @@ +const Sequelize = require('sequelize') + +const config = require('../../config') +const DatabaseProvider = require('./database-provider') + +class PostgresDatabaseProvider extends DatabaseProvider { + constructor () { + super() + + const postgresConfig = config.get('Database:Config:postgre', {}) + postgresConfig.dialect = 'postgres' + postgresConfig.host = process.env.DB_HOST || postgresConfig.host + postgresConfig.port = process.env.DB_PORT || postgresConfig.port + postgresConfig.username = process.env.DB_USERNAME || postgresConfig.username + postgresConfig.password = process.env.DB_PASSWORD || postgresConfig.password + postgresConfig.databaseName = process.env.DB_NAME || postgresConfig.database + + this.sequelize = new Sequelize(postgresConfig.databaseName, postgresConfig.username, postgresConfig.password, postgresConfig) + } + + async initDB () { + } +} + +module.exports = PostgresDatabaseProvider From 25db5be1eb21a1cba8afe9db0da6a16841bbcb0a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Fri, 23 Aug 2024 11:28:32 +0300 Subject: [PATCH 123/146] vulnerable packages fixed --- .nsprc | 7 +- package-lock.json | 590 ++++++++++++++++++++++------------------------ package.json | 12 +- 3 files changed, 295 insertions(+), 314 deletions(-) diff --git a/.nsprc b/.nsprc index 613f525df..9c2174be1 100644 --- a/.nsprc +++ b/.nsprc @@ -1,8 +1,3 @@ { - "1097496": { - "notes": "" - }, - "1098094": { - "notes": "" - } + } \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 29d0fd375..8db5b3b39 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,21 +1,21 @@ { "name": "@datasance/iofogcontroller", - "version": "3.2.1-beta2", + "version": "3.4.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@datasance/iofogcontroller", - "version": "3.2.1-beta2", + "version": "3.4.0", "hasInstallScript": true, "license": "EPL-2.0", "dependencies": { - "@datasance/ecn-viewer": "0.1.7", - "axios": "1.7.2", + "@datasance/ecn-viewer": "0.3.2", + "axios": "1.7.4", "body-parser": "^1.20.2", "child_process": "1.0.2", "command-line-args": "5.2.1", - "command-line-usage": "7.0.1", + "command-line-usage": "7.0.3", "concurrent-queue": "7.0.2", "cookie-parser": "1.4.6", "cors": "2.8.5", @@ -31,8 +31,8 @@ "is-elevated": "3.0.0", "js-yaml": "4.1.0", "jsonschema": "1.4.1", - "keycloak-connect": "25.0.1", - "minimatch": "9.0.4", + "keycloak-connect": "25.0.4", + "minimatch": "10.0.1", "moment": "2.30.1", "moment-timezone": "0.5.45", "morgan": "1.10.0", @@ -42,6 +42,7 @@ "node-fetch-npm": "^2.0.4", "os": "0.1.2", "path": "0.12.7", + "pg": "8.12.0", "pino": "9.1.0", "pino-std-serializers": "7.0.0", "portscanner": "2.2.0", @@ -51,7 +52,7 @@ "sqlite3": "^5.1.7", "string-format": "2.0.0", "swagger-ui-express": "^5.0.0", - "umzug": "3.8.1", + "umzug": "^3.7.0", "underscore": "1.13.6", "xss-clean": "0.1.1" }, @@ -66,9 +67,9 @@ "chai-http": "4.4.0", "eslint": "9.2.0", "eslint-config-google": "0.14.0", - "mocha": "10.5.2", + "mocha": "10.6.0", "mocha-junit-reporter": "2.2.1", - "newman": "6.1.2", + "newman": "^6.2.0", "newman-reporter-junitfull": "1.1.1", "nyc": "15.1.0", "sequelize-cli": "6.6.2", @@ -78,26 +79,6 @@ "standard": "12.0.1" } }, - "node_modules/@75lb/deep-merge": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@75lb/deep-merge/-/deep-merge-1.1.1.tgz", - "integrity": "sha512-xvgv6pkMGBA6GwdyJbNAnDmfAIR/DfWhrj9jgWh3TY7gRm3KO46x/GPjRg6wJ0nOepwqrNxFfojebh0Df4h4Tw==", - "dependencies": { - "lodash.assignwith": "^4.2.0", - "typical": "^7.1.1" - }, - "engines": { - "node": ">=12.17" - } - }, - "node_modules/@75lb/deep-merge/node_modules/typical": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/typical/-/typical-7.1.1.tgz", - "integrity": "sha512-T+tKVNs6Wu7IWiAce5BgMd7OZfNYUndHwc5MknN+UHOudi7sGZzuHdCadllRuqJ3fPtgFtIH9+lt9qRv6lmpfA==", - "engines": { - "node": ">=12.17" - } - }, "node_modules/@ampproject/remapping": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", @@ -576,9 +557,9 @@ } }, "node_modules/@datasance/ecn-viewer": { - "version": "0.1.7", - "resolved": "https://npm.pkg.github.com/download/@datasance/ecn-viewer/0.1.7/c8adebf78e1f9d6f51c94e6560c13e31057873c6", - "integrity": "sha512-51zzl9vPevuyW5APcCGgTmBrFYoKbZbSzJeNhKZ7HZSjfSWfEPrB58dj7myvMK0vSEtgGXgAXdrmmyHmc2InDQ==", + "version": "0.3.2", + "resolved": "https://npm.pkg.github.com/download/@datasance/ecn-viewer/0.3.2/000fea7fc7fe1e3cbcd93c072be7defc778b30df", + "integrity": "sha512-yTcQxkue+hwvqVItzL26wJ7Pc23+dAWusMSL/7MyXZYfNHd9EwDFe+pNfhWuuOZRSQVwKAWjlFHJhA0JIoH9NQ==", "license": "EPL-2.0" }, "node_modules/@eslint-community/eslint-utils": { @@ -1030,6 +1011,7 @@ "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" @@ -1042,6 +1024,7 @@ "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" } @@ -1050,6 +1033,7 @@ "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" @@ -1104,9 +1088,9 @@ } }, "node_modules/@postman/tunnel-agent": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/@postman/tunnel-agent/-/tunnel-agent-0.6.3.tgz", - "integrity": "sha512-k57fzmAZ2PJGxfOA4SGR05ejorHbVAa/84Hxh/2nAztjNXc4ZjOm9NUIk6/Z6LCrBvJZqjRZbN8e/nROVUPVdg==", + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/@postman/tunnel-agent/-/tunnel-agent-0.6.4.tgz", + "integrity": "sha512-CJJlq8V7rNKhAw4sBfjixKpJW00SHqebqNUQKxMoepgeWZIbdPcD+rguRcivGhS4N12PymDcKgUgSD4rVC+RjQ==", "dev": true, "dependencies": { "safe-buffer": "^5.0.1" @@ -1586,9 +1570,9 @@ } }, "node_modules/ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", "dev": true, "engines": { "node": ">=6" @@ -1886,15 +1870,15 @@ } }, "node_modules/aws4": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz", - "integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==", + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.13.1.tgz", + "integrity": "sha512-u5w79Rd7SU4JaIlA/zFqG+gOiuq25q5VLyZ8E+ijJeILuTxVzZgp2CaGw/UTw6pXYN9XMO9yiqj/nEHmhTG5CA==", "dev": true }, "node_modules/axios": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.2.tgz", - "integrity": "sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw==", + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.4.tgz", + "integrity": "sha512-DukmaFRnY6AzAALSH4J2M3k6PkaC+MfaAGdEERRWcC9q3/TWQwLpHR8ZRLKTdQ3aBDL64EdluRDjJqKw+BPZEw==", "dependencies": { "follow-redirects": "^1.15.6", "form-data": "^4.0.0", @@ -2180,11 +2164,12 @@ } }, "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, "dependencies": { - "fill-range": "^7.0.1" + "fill-range": "^7.1.1" }, "engines": { "node": ">=8" @@ -2659,9 +2644,9 @@ } }, "node_modules/cli-table3": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.3.tgz", - "integrity": "sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==", + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.5.tgz", + "integrity": "sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==", "dev": true, "dependencies": { "string-width": "^4.2.0" @@ -2765,13 +2750,13 @@ } }, "node_modules/command-line-usage": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/command-line-usage/-/command-line-usage-7.0.1.tgz", - "integrity": "sha512-NCyznE//MuTjwi3y84QVUGEOT+P5oto1e1Pk/jFPVdPPfsG03qpTIl3yw6etR+v73d0lXsoojRpvbru2sqePxQ==", + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/command-line-usage/-/command-line-usage-7.0.3.tgz", + "integrity": "sha512-PqMLy5+YGwhMh1wS04mVG44oqDsgyLRSKJBdOo1bnYhMKBW65gZF1dRp2OZRhiTjgUHljy99qkO7bsctLaw35Q==", "dependencies": { "array-back": "^6.2.2", "chalk-template": "^0.4.0", - "table-layout": "^3.0.0", + "table-layout": "^4.1.0", "typical": "^7.1.1" }, "engines": { @@ -3383,9 +3368,9 @@ } }, "node_modules/diff": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", - "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", + "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", "dev": true, "engines": { "node": ">=0.3.1" @@ -3498,9 +3483,9 @@ "dev": true }, "node_modules/elliptic": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.5.tgz", - "integrity": "sha512-7EjbcmUm17NQFu4Pmgmq2olYMj8nwMnpcddByChSUjArp8F5DQWcIcpriwO4ZToLNAJig0yiyjswfyGNje/ixw==", + "version": "6.5.7", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.7.tgz", + "integrity": "sha512-ESVCtTwiA+XhY3wyh24QqRGBoP3rEdDUl3EDUUo9tft074fi19IrdpH7hLCMMP3CIj7jb3W96rn8lt/BqIlt5Q==", "dependencies": { "bn.js": "^4.11.9", "brorand": "^1.1.0", @@ -4570,32 +4555,6 @@ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true }, - "node_modules/fast-glob": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", - "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", - "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-glob/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==", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, "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", @@ -4626,6 +4585,7 @@ "version": "1.17.1", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "dev": true, "dependencies": { "reusify": "^1.0.4" } @@ -4706,18 +4666,19 @@ } }, "node_modules/filesize": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/filesize/-/filesize-10.1.0.tgz", - "integrity": "sha512-GTLKYyBSDz3nPhlLVPjPWZCnhkd9TrrRArNcy8Z+J2cqScB7h2McAzR6NBX6nYOoWafql0roY8hrocxnZBv9CQ==", + "version": "10.1.4", + "resolved": "https://registry.npmjs.org/filesize/-/filesize-10.1.4.tgz", + "integrity": "sha512-ryBwPIIeErmxgPnm6cbESAzXjuEFubs+yKYLBZvg3CaiNcmkJChoOGcBSrZ6IwkMwPABwPpVXE6IlNdGJJrvEg==", "dev": true, "engines": { "node": ">= 10.4.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==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, "dependencies": { "to-regex-range": "^5.0.1" }, @@ -4971,8 +4932,7 @@ "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==", - "devOptional": true + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" }, "node_modules/fsevents": { "version": "2.3.3", @@ -5205,7 +5165,6 @@ "version": "8.1.0", "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "dev": true, "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -5236,7 +5195,6 @@ "version": "5.1.6", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "dev": true, "dependencies": { "brace-expansion": "^2.0.1" }, @@ -5780,7 +5738,6 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "devOptional": true, "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -6129,6 +6086,7 @@ "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" } @@ -6145,6 +6103,7 @@ "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" }, @@ -6186,6 +6145,7 @@ "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" } @@ -6695,9 +6655,9 @@ "integrity": "sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==" }, "node_modules/jose": { - "version": "4.14.4", - "resolved": "https://registry.npmjs.org/jose/-/jose-4.14.4.tgz", - "integrity": "sha512-j8GhLiKmUAh+dsFXlX1aJCbt5KMibuKb+d7j1JaOJG6s2UjX1PQlW+OKB/sD4a/5ZYF4RcmYmLSndOoU3Lt/3g==", + "version": "5.6.3", + "resolved": "https://registry.npmjs.org/jose/-/jose-5.6.3.tgz", + "integrity": "sha512-1Jh//hEEwMhNYPDDLwXHa2ePWgWiFNNUadVmguAAw2IJ6sj9mNxV5tGXJNqlMkJAybF6Lgw1mISDxTePP/187g==", "dev": true, "funding": { "url": "https://github.com/sponsors/panva" @@ -6771,6 +6731,21 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/js-beautify/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/js-beautify/node_modules/minipass": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.1.tgz", @@ -6984,9 +6959,9 @@ } }, "node_modules/keycloak-connect": { - "version": "25.0.1", - "resolved": "https://registry.npmjs.org/keycloak-connect/-/keycloak-connect-25.0.1.tgz", - "integrity": "sha512-RjVXo+c8ahOMC2QYt/MRLq5Qx9IavII+nwN9s1kyK8DcxWvi44sqJquGFMXqCXM181LxZ2yPmzJACSoO7pBQnA==", + "version": "25.0.4", + "resolved": "https://registry.npmjs.org/keycloak-connect/-/keycloak-connect-25.0.4.tgz", + "integrity": "sha512-njiyVQOjdxUq+hIVEnC64Uzz10J8ZwYySLp8KsFxeSIuijBXpWtSjMDPZZ3fb3UVmX8I6uVKNqD1Faasd1hnIQ==", "dependencies": { "jwk-to-pem": "^2.0.0" }, @@ -7090,11 +7065,6 @@ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, - "node_modules/lodash.assignwith": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.assignwith/-/lodash.assignwith-4.2.0.tgz", - "integrity": "sha512-ZznplvbvtjK2gMvnQ1BR/zqPFZmS6jbK4p+6Up4xcRYA7yMIwxHCfbTcrYxXKzzqLsQ05eJPVznEW3tuwV7k1g==" - }, "node_modules/lodash.camelcase": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", @@ -7262,14 +7232,6 @@ "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "engines": { - "node": ">= 8" - } - }, "node_modules/methods": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", @@ -7278,18 +7240,6 @@ "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==", - "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", @@ -7360,14 +7310,14 @@ "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==" }, "node_modules/minimatch": { - "version": "9.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", - "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.1.tgz", + "integrity": "sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==", "dependencies": { "brace-expansion": "^2.0.1" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": "20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -7529,31 +7479,31 @@ "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" }, "node_modules/mocha": { - "version": "10.5.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.5.2.tgz", - "integrity": "sha512-9btlN3JKCefPf+vKd/kcKz2SXxi12z6JswkGfaAF0saQvnsqLJk504ZmbxhSoENge08E9dsymozKgFMTl5PQsA==", + "version": "10.6.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.6.0.tgz", + "integrity": "sha512-hxjt4+EEB0SA0ZDygSS015t65lJw/I2yRCS3Ae+SJ5FrbzrXgfYwJr96f0OvIXdj7h4lv/vLCrH3rkiuizFSvw==", "dev": true, "dependencies": { - "ansi-colors": "4.1.1", - "browser-stdout": "1.3.1", + "ansi-colors": "^4.1.3", + "browser-stdout": "^1.3.1", "chokidar": "^3.5.3", - "debug": "4.3.4", - "diff": "5.0.0", - "escape-string-regexp": "4.0.0", - "find-up": "5.0.0", - "glob": "8.1.0", - "he": "1.2.0", - "js-yaml": "4.1.0", - "log-symbols": "4.1.0", - "minimatch": "5.0.1", - "ms": "2.1.3", - "serialize-javascript": "6.0.0", - "strip-json-comments": "3.1.1", - "supports-color": "8.1.1", - "workerpool": "6.2.1", - "yargs": "16.2.0", - "yargs-parser": "20.2.4", - "yargs-unparser": "2.0.0" + "debug": "^4.3.5", + "diff": "^5.2.0", + "escape-string-regexp": "^4.0.0", + "find-up": "^5.0.0", + "glob": "^8.1.0", + "he": "^1.2.0", + "js-yaml": "^4.1.0", + "log-symbols": "^4.1.0", + "minimatch": "^5.1.6", + "ms": "^2.1.3", + "serialize-javascript": "^6.0.2", + "strip-json-comments": "^3.1.1", + "supports-color": "^8.1.1", + "workerpool": "^6.5.1", + "yargs": "^16.2.0", + "yargs-parser": "^20.2.9", + "yargs-unparser": "^2.0.0" }, "bin": { "_mocha": "bin/_mocha", @@ -7603,9 +7553,9 @@ "dev": true }, "node_modules/mocha/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", + "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", "dev": true, "dependencies": { "ms": "2.1.2" @@ -7626,9 +7576,9 @@ "dev": true }, "node_modules/mocha/node_modules/minimatch": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", - "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "dev": true, "dependencies": { "brace-expansion": "^2.0.1" @@ -7847,29 +7797,29 @@ } }, "node_modules/newman": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/newman/-/newman-6.1.2.tgz", - "integrity": "sha512-VyaXFguIYM7QUWXHQlHtkj3axzZQFHgj9OYkhbKpq4iphKAJckHFstltacSBtgpeiGp5SKk9FBdCYVbJXcLvnQ==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/newman/-/newman-6.2.0.tgz", + "integrity": "sha512-CHo/wMv+Q9B3YcIJ18pdmY9XN9X8mc2hXso8yybeclV0BVPSFz1+P5vJELWg5DB/qJgxJOh+B+k+i9tTqfzcbw==", "dev": true, "dependencies": { "@postman/tough-cookie": "4.1.3-postman.1", "async": "3.2.5", "chardet": "2.0.0", "cli-progress": "3.12.0", - "cli-table3": "0.6.3", + "cli-table3": "0.6.5", "colors": "1.4.0", "commander": "11.1.0", "csv-parse": "4.16.3", - "filesize": "10.1.0", + "filesize": "10.1.4", "liquid-json": "0.3.1", "lodash": "4.17.21", "mkdirp": "3.0.1", - "postman-collection": "4.4.0", + "postman-collection": "4.5.0", "postman-collection-transformer": "4.1.8", - "postman-request": "2.88.1-postman.33", - "postman-runtime": "7.37.1", + "postman-request": "2.88.1-postman.39", + "postman-runtime": "7.41.2", "pretty-ms": "7.0.1", - "semver": "7.6.0", + "semver": "7.6.3", "serialised-error": "1.1.3", "word-wrap": "1.2.5", "xmlbuilder": "15.1.1" @@ -8751,11 +8701,87 @@ "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", "dev": true }, + "node_modules/pg": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/pg/-/pg-8.12.0.tgz", + "integrity": "sha512-A+LHUSnwnxrnL/tZ+OLfqR1SxLN3c/pgDztZ47Rpbsd4jUytsTtwQo/TLPRzPJMp/1pbhYVhH9cuSZLAajNfjQ==", + "dependencies": { + "pg-connection-string": "^2.6.4", + "pg-pool": "^3.6.2", + "pg-protocol": "^1.6.1", + "pg-types": "^2.1.0", + "pgpass": "1.x" + }, + "engines": { + "node": ">= 8.0.0" + }, + "optionalDependencies": { + "pg-cloudflare": "^1.1.1" + }, + "peerDependencies": { + "pg-native": ">=3.0.1" + }, + "peerDependenciesMeta": { + "pg-native": { + "optional": true + } + } + }, + "node_modules/pg-cloudflare": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pg-cloudflare/-/pg-cloudflare-1.1.1.tgz", + "integrity": "sha512-xWPagP/4B6BgFO+EKz3JONXv3YDgvkbVrGw2mTo3D6tVDQRh1e7cqVGvyR3BE+eQgAvx1XhW/iEASj4/jCWl3Q==", + "optional": true + }, "node_modules/pg-connection-string": { "version": "2.6.4", "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.6.4.tgz", "integrity": "sha512-v+Z7W/0EO707aNMaAEfiGnGL9sxxumwLl2fJvCQtMn9Fxsg+lPpPkdcyBSv/KFgpGdYkMfn+EI1Or2EHjpgLCA==" }, + "node_modules/pg-int8": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz", + "integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/pg-pool": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.6.2.tgz", + "integrity": "sha512-Htjbg8BlwXqSBQ9V8Vjtc+vzf/6fVUuak/3/XXKA9oxZprwW3IMDQTGHP+KDmVL7rtd+R1QjbnCFPuTHm3G4hg==", + "peerDependencies": { + "pg": ">=8.0" + } + }, + "node_modules/pg-protocol": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.6.1.tgz", + "integrity": "sha512-jPIlvgoD63hrEuihvIg+tJhoGjUsLPn6poJY9N5CnlPd91c2T18T/9zBtLxZSb1EhYxBRoZJtzScCaWlYLtktg==" + }, + "node_modules/pg-types": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz", + "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==", + "dependencies": { + "pg-int8": "1.0.1", + "postgres-array": "~2.0.0", + "postgres-bytea": "~1.0.0", + "postgres-date": "~1.0.4", + "postgres-interval": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/pgpass": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/pgpass/-/pgpass-1.0.5.tgz", + "integrity": "sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==", + "dependencies": { + "split2": "^4.1.0" + } + }, "node_modules/picocolors": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", @@ -8766,6 +8792,7 @@ "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" }, @@ -9068,10 +9095,45 @@ "node": ">= 0.4" } }, + "node_modules/postgres-array": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz", + "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/postgres-bytea": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz", + "integrity": "sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postgres-date": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz", + "integrity": "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postgres-interval": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz", + "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==", + "dependencies": { + "xtend": "^4.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/postman-collection": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/postman-collection/-/postman-collection-4.4.0.tgz", - "integrity": "sha512-2BGDFcUwlK08CqZFUlIC8kwRJueVzPjZnnokWPtJCd9f2J06HBQpGL7t2P1Ud1NEsK9NHq9wdipUhWLOPj5s/Q==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/postman-collection/-/postman-collection-4.5.0.tgz", + "integrity": "sha512-152JSW9pdbaoJihwjc7Q8lc3nPg/PC9lPTHdMk7SHnHhu/GBJB7b2yb9zG7Qua578+3PxkQ/HYBuXpDSvsf7GQ==", "dev": true, "dependencies": { "@faker-js/faker": "5.5.3", @@ -9083,7 +9145,7 @@ "mime-format": "2.0.1", "mime-types": "2.1.35", "postman-url-encoder": "3.0.5", - "semver": "7.5.4", + "semver": "7.6.3", "uuid": "8.3.2" }, "engines": { @@ -9157,42 +9219,15 @@ "node": ">=0.10.0" } }, - "node_modules/postman-collection/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/postman-collection/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/postman-request": { - "version": "2.88.1-postman.33", - "resolved": "https://registry.npmjs.org/postman-request/-/postman-request-2.88.1-postman.33.tgz", - "integrity": "sha512-uL9sCML4gPH6Z4hreDWbeinKU0p0Ke261nU7OvII95NU22HN6Dk7T/SaVPaj6T4TsQqGKIFw6/woLZnH7ugFNA==", + "version": "2.88.1-postman.39", + "resolved": "https://registry.npmjs.org/postman-request/-/postman-request-2.88.1-postman.39.tgz", + "integrity": "sha512-rsncxxDlbn1YpygXSgJqbJzIjGlHFcZjbYDzeBPTQHMDfLuSTzZz735JHV8i1+lOROuJ7MjNap4eaSD3UijHzQ==", "dev": true, "dependencies": { "@postman/form-data": "~3.1.1", "@postman/tough-cookie": "~4.1.3-postman.1", - "@postman/tunnel-agent": "^0.6.3", + "@postman/tunnel-agent": "^0.6.4", "aws-sign2": "~0.7.0", "aws4": "^1.12.0", "brotli": "^1.3.3", @@ -9214,7 +9249,7 @@ "uuid": "^8.3.2" }, "engines": { - "node": ">= 6" + "node": ">= 16" } }, "node_modules/postman-request/node_modules/qs": { @@ -9227,48 +9262,48 @@ } }, "node_modules/postman-runtime": { - "version": "7.37.1", - "resolved": "https://registry.npmjs.org/postman-runtime/-/postman-runtime-7.37.1.tgz", - "integrity": "sha512-yqKN/p6Ba8+yq9iZsxJLkMPko3lKvs3hixkiPy5O7bapFQWgX6jWhny4W2O8BzE5T8KzE8s1HAgT2gi7e2Y5Jg==", + "version": "7.41.2", + "resolved": "https://registry.npmjs.org/postman-runtime/-/postman-runtime-7.41.2.tgz", + "integrity": "sha512-efKnii+yBfqZMRjV5zFh4VXogLeZB58HmLkgT+/sZcjglth23wzp+QRlkl4nbgcL2SZX6e5cLI2/aG2Of3wMyg==", "dev": true, "dependencies": { "@postman/tough-cookie": "4.1.3-postman.1", "async": "3.2.5", - "aws4": "1.12.0", + "aws4": "1.13.1", "handlebars": "4.7.8", "httpntlm": "1.8.13", - "jose": "4.14.4", + "jose": "5.6.3", "js-sha512": "0.9.0", "lodash": "4.17.21", "mime-types": "2.1.35", "node-forge": "1.3.1", "node-oauth1": "1.3.0", "performance-now": "2.1.0", - "postman-collection": "4.4.0", - "postman-request": "2.88.1-postman.33", - "postman-sandbox": "4.6.0", + "postman-collection": "4.5.0", + "postman-request": "2.88.1-postman.39", + "postman-sandbox": "5.1.1", "postman-url-encoder": "3.0.5", "serialised-error": "1.1.3", "strip-json-comments": "3.1.1", "uuid": "8.3.2" }, "engines": { - "node": ">=12" + "node": ">=16" } }, "node_modules/postman-sandbox": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/postman-sandbox/-/postman-sandbox-4.6.0.tgz", - "integrity": "sha512-+tCUEhiFAV6saqMEetRzLmSWt4/9kgVagtnrVgyqVgIGdPBIaq1p3aay54bOzYW7/QjIIz0xPF3YkJA8Olt3LQ==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postman-sandbox/-/postman-sandbox-5.1.1.tgz", + "integrity": "sha512-RfCTMwz3OaqhYYgtoe3VlHGiQl9hEmJ9sPh/XOlNcuvd/km6ARSFkKXFvQaLFsTHyXcHaqpInKaQSJi23uTynA==", "dev": true, "dependencies": { "lodash": "4.17.21", - "postman-collection": "4.4.0", + "postman-collection": "4.5.0", "teleport-javascript": "1.0.0", - "uvm": "2.1.1" + "uvm": "3.0.0" }, "engines": { - "node": ">=10" + "node": ">=16" } }, "node_modules/postman-url-encoder": { @@ -9589,6 +9624,7 @@ "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", @@ -10027,6 +10063,7 @@ "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" @@ -10062,6 +10099,7 @@ "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", @@ -10171,12 +10209,9 @@ "integrity": "sha512-nZi59hW3Sl5P3+wOO89eHBAAGwmCPd2aE1+dLZV5MO+ItQctIvAqihzaAXIQhvtH4KJPxM080HsnqltR2y8cWg==" }, "node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", - "dependencies": { - "lru-cache": "^6.0.0" - }, + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "bin": { "semver": "bin/semver.js" }, @@ -10190,17 +10225,6 @@ "integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==", "dev": true }, - "node_modules/semver/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/send": { "version": "0.18.0", "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", @@ -10437,9 +10461,9 @@ } }, "node_modules/serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", "dev": true, "dependencies": { "randombytes": "^2.1.0" @@ -10620,15 +10644,6 @@ "sinon": ">=4.0.0" } }, - "node_modules/sinon/node_modules/diff": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", - "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", - "dev": true, - "engines": { - "node": ">=0.3.1" - } - }, "node_modules/slice-ansi": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz", @@ -11859,14 +11874,6 @@ "bluebird": "^2.6.2" } }, - "node_modules/stream-read-all": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/stream-read-all/-/stream-read-all-3.0.1.tgz", - "integrity": "sha512-EWZT9XOceBPlVJRrYcykW8jyRSZYbkb/0ZK36uLEmoWVO5gxBOnntNTseNzfREsqxqdfEGQrD8SXQ3QWbBmq8A==", - "engines": { - "node": ">=10" - } - }, "node_modules/streamsearch": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", @@ -12172,21 +12179,13 @@ } }, "node_modules/table-layout": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/table-layout/-/table-layout-3.0.2.tgz", - "integrity": "sha512-rpyNZYRw+/C+dYkcQ3Pr+rLxW4CfHpXjPDnG7lYhdRoUcZTUt+KEsX+94RGp/aVp/MQU35JCITv2T/beY4m+hw==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/table-layout/-/table-layout-4.1.1.tgz", + "integrity": "sha512-iK5/YhZxq5GO5z8wb0bY1317uDF3Zjpha0QFFLA8/trAoiLbQD0HUbMesEaxyzUgDxi2QlcbM8IvqOlEjgoXBA==", "dependencies": { - "@75lb/deep-merge": "^1.1.1", "array-back": "^6.2.2", - "command-line-args": "^5.2.1", - "command-line-usage": "^7.0.0", - "stream-read-all": "^3.0.1", - "typical": "^7.1.1", "wordwrapjs": "^5.1.0" }, - "bin": { - "table-layout": "bin/cli.js" - }, "engines": { "node": ">=12.17" } @@ -12199,14 +12198,6 @@ "node": ">=12.17" } }, - "node_modules/table-layout/node_modules/typical": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/typical/-/typical-7.1.1.tgz", - "integrity": "sha512-T+tKVNs6Wu7IWiAce5BgMd7OZfNYUndHwc5MknN+UHOudi7sGZzuHdCadllRuqJ3fPtgFtIH9+lt9qRv6lmpfA==", - "engines": { - "node": ">=12.17" - } - }, "node_modules/table/node_modules/ansi-regex": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", @@ -12572,6 +12563,7 @@ "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" }, @@ -12759,9 +12751,9 @@ } }, "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==", + "version": "3.19.2", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.2.tgz", + "integrity": "sha512-S8KA6DDI47nQXJSi2ctQ629YzwOVs+bQML6DAtvy0wgNdpi+0ySpQK0g2pxBq2xfF2z3YCscu7NNA8nXT9PlIQ==", "dev": true, "optional": true, "bin": { @@ -12783,13 +12775,13 @@ } }, "node_modules/umzug": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/umzug/-/umzug-3.8.1.tgz", - "integrity": "sha512-k0HjOc3b/s8vH24BUTvnaFiKhfWI9UQAGpqHDG+3866CGlBTB83Xs5wZ1io1mwYLj/GHvQ34AxKhbpYnWtkRJg==", + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/umzug/-/umzug-3.7.0.tgz", + "integrity": "sha512-r/L2Zlilgv3SKhmP2nkA9x2Xi1PKtu2K34/i/s7AYJ2mLjEO+IxETJAK7CKf6l3QOvoy5/ChykeX9qt6ykRz6Q==", "dependencies": { "@rushstack/ts-command-line": "^4.12.2", "emittery": "^0.13.0", - "fast-glob": "^3.3.2", + "glob": "^8.0.3", "pony-cause": "^2.1.4", "type-fest": "^4.0.0" }, @@ -12940,23 +12932,17 @@ } }, "node_modules/uvm": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/uvm/-/uvm-2.1.1.tgz", - "integrity": "sha512-BZ5w8adTpNNr+zczOBRpaX/hH8UPKAf7fmCnidrcsqt3bn8KT9bDIfuS7hgRU9RXgiN01su2pwysBONY6w8W5w==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/uvm/-/uvm-3.0.0.tgz", + "integrity": "sha512-dATVpxsNfFBpHNdq6sy4/CV2UnoRbV8tvvkK0VrUPnm+o7dK6fnir4LEm8czeDdpbw2KKDKjIPcRSZY4AEwEZA==", "dev": true, "dependencies": { - "flatted": "3.2.6" + "flatted": "3.3.1" }, "engines": { - "node": ">=10" + "node": ">=16" } }, - "node_modules/uvm/node_modules/flatted": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.6.tgz", - "integrity": "sha512-0sQoMh9s0BYsm+12Huy/rkKxVu4R1+r96YX5cG44rHV0pQ6iC3Q+mkoMFaGWObMFYQxCVT+ssG1ksneA2MI9KQ==", - "dev": true - }, "node_modules/validate-npm-package-license": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", @@ -13100,9 +13086,9 @@ } }, "node_modules/workerpool": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", - "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==", + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.5.1.tgz", + "integrity": "sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA==", "dev": true }, "node_modules/wrap-ansi": { @@ -13319,9 +13305,9 @@ } }, "node_modules/yargs-parser": { - "version": "20.2.4", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", - "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", "engines": { "node": ">=10" } diff --git a/package.json b/package.json index 5085e3568..f9a5a0dd8 100644 --- a/package.json +++ b/package.json @@ -58,11 +58,11 @@ }, "dependencies": { "@datasance/ecn-viewer": "0.3.2", - "axios": "1.7.2", + "axios": "1.7.4", "body-parser": "^1.20.2", "child_process": "1.0.2", "command-line-args": "5.2.1", - "command-line-usage": "7.0.1", + "command-line-usage": "7.0.3", "concurrent-queue": "7.0.2", "cookie-parser": "1.4.6", "cors": "2.8.5", @@ -78,8 +78,8 @@ "is-elevated": "3.0.0", "js-yaml": "4.1.0", "jsonschema": "1.4.1", - "keycloak-connect": "25.0.1", - "minimatch": "9.0.4", + "keycloak-connect": "25.0.4", + "minimatch": "10.0.1", "moment": "2.30.1", "moment-timezone": "0.5.45", "morgan": "1.10.0", @@ -89,10 +89,10 @@ "node-fetch-npm": "^2.0.4", "os": "0.1.2", "path": "0.12.7", + "pg": "8.12.0", "pino": "9.1.0", "pino-std-serializers": "7.0.0", "portscanner": "2.2.0", - "pg": "8.12.0", "qs": "6.12.1", "retry-as-promised": "7.0.4", "sequelize": "6.37.3", @@ -113,7 +113,7 @@ "eslint-config-google": "0.14.0", "mocha": "10.6.0", "mocha-junit-reporter": "2.2.1", - "newman": "6.1.2", + "newman": "^6.2.0", "newman-reporter-junitfull": "1.1.1", "nyc": "15.1.0", "sequelize-cli": "6.6.2", From f91472c552847413ebcea6636a9bccffee764222 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Fri, 23 Aug 2024 12:07:51 +0300 Subject: [PATCH 124/146] viewer version updated --- package-lock.json | 8 ++++---- package.json | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 8db5b3b39..9754fabd0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,7 +10,7 @@ "hasInstallScript": true, "license": "EPL-2.0", "dependencies": { - "@datasance/ecn-viewer": "0.3.2", + "@datasance/ecn-viewer": "0.3.3", "axios": "1.7.4", "body-parser": "^1.20.2", "child_process": "1.0.2", @@ -557,9 +557,9 @@ } }, "node_modules/@datasance/ecn-viewer": { - "version": "0.3.2", - "resolved": "https://npm.pkg.github.com/download/@datasance/ecn-viewer/0.3.2/000fea7fc7fe1e3cbcd93c072be7defc778b30df", - "integrity": "sha512-yTcQxkue+hwvqVItzL26wJ7Pc23+dAWusMSL/7MyXZYfNHd9EwDFe+pNfhWuuOZRSQVwKAWjlFHJhA0JIoH9NQ==", + "version": "0.3.3", + "resolved": "https://npm.pkg.github.com/download/@datasance/ecn-viewer/0.3.3/0e490ba6f9412ce7ddb9bda71e971019951f07ff", + "integrity": "sha512-evdcUV6VRZKftBL84swNyD5sS9MoK926WPAhB2pN/MBPpbxsRpGqf94ylB1kCzZMrC2IfzQHnbq3Ci9cyIY/2g==", "license": "EPL-2.0" }, "node_modules/@eslint-community/eslint-utils": { diff --git a/package.json b/package.json index f9a5a0dd8..08a2ef04e 100644 --- a/package.json +++ b/package.json @@ -57,7 +57,7 @@ "iofog-controller": "src/main.js" }, "dependencies": { - "@datasance/ecn-viewer": "0.3.2", + "@datasance/ecn-viewer": "0.3.3", "axios": "1.7.4", "body-parser": "^1.20.2", "child_process": "1.0.2", @@ -99,7 +99,7 @@ "sqlite3": "^5.1.7", "string-format": "2.0.0", "swagger-ui-express": "^5.0.0", - "umzug": "3.8.1", + "umzug": "^3.7.0", "underscore": "1.13.6", "xss-clean": "0.1.1" }, From 862ac4c0c07823f6bf1b458e67b2b17a14e59236 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Tue, 27 Aug 2024 15:16:38 +0300 Subject: [PATCH 125/146] viewer version upgraded --- package-lock.json | 8 ++++---- package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index 9754fabd0..f8c437db6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,7 +10,7 @@ "hasInstallScript": true, "license": "EPL-2.0", "dependencies": { - "@datasance/ecn-viewer": "0.3.3", + "@datasance/ecn-viewer": "0.3.4", "axios": "1.7.4", "body-parser": "^1.20.2", "child_process": "1.0.2", @@ -557,9 +557,9 @@ } }, "node_modules/@datasance/ecn-viewer": { - "version": "0.3.3", - "resolved": "https://npm.pkg.github.com/download/@datasance/ecn-viewer/0.3.3/0e490ba6f9412ce7ddb9bda71e971019951f07ff", - "integrity": "sha512-evdcUV6VRZKftBL84swNyD5sS9MoK926WPAhB2pN/MBPpbxsRpGqf94ylB1kCzZMrC2IfzQHnbq3Ci9cyIY/2g==", + "version": "0.3.4", + "resolved": "https://npm.pkg.github.com/download/@datasance/ecn-viewer/0.3.4/f3a25fdf56169abca8c907b39d8fda65566c9f5b", + "integrity": "sha512-WFcfNSen7adHZtaLpOIB3T6ZXEgR5/sVGxJnypwPvD3nvI9CbdLtVvZOACMmsuD2tiLrU8xJpShogydlZ1q2oA==", "license": "EPL-2.0" }, "node_modules/@eslint-community/eslint-utils": { diff --git a/package.json b/package.json index 08a2ef04e..78a7e1c9c 100644 --- a/package.json +++ b/package.json @@ -57,7 +57,7 @@ "iofog-controller": "src/main.js" }, "dependencies": { - "@datasance/ecn-viewer": "0.3.3", + "@datasance/ecn-viewer": "0.3.4", "axios": "1.7.4", "body-parser": "^1.20.2", "child_process": "1.0.2", From 204ba5cafc06ab2601b5e777f1f79b6cfc863f11 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Tue, 27 Aug 2024 16:25:31 +0300 Subject: [PATCH 126/146] viewer upgraded to 0.3.5 --- package-lock.json | 8 ++++---- package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index f8c437db6..334bc2463 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,7 +10,7 @@ "hasInstallScript": true, "license": "EPL-2.0", "dependencies": { - "@datasance/ecn-viewer": "0.3.4", + "@datasance/ecn-viewer": "0.3.5", "axios": "1.7.4", "body-parser": "^1.20.2", "child_process": "1.0.2", @@ -557,9 +557,9 @@ } }, "node_modules/@datasance/ecn-viewer": { - "version": "0.3.4", - "resolved": "https://npm.pkg.github.com/download/@datasance/ecn-viewer/0.3.4/f3a25fdf56169abca8c907b39d8fda65566c9f5b", - "integrity": "sha512-WFcfNSen7adHZtaLpOIB3T6ZXEgR5/sVGxJnypwPvD3nvI9CbdLtVvZOACMmsuD2tiLrU8xJpShogydlZ1q2oA==", + "version": "0.3.5", + "resolved": "https://npm.pkg.github.com/download/@datasance/ecn-viewer/0.3.5/4cb0140be3ef162b1c097aad5136c477469e9733", + "integrity": "sha512-uxACCbIsj4kxpwkjlVAooAAOrzq7vSRY/+IdHmvH64LoqtAeNyLVeonJW6F9Za72+IFScQ8SfUoBbenoMoC+rQ==", "license": "EPL-2.0" }, "node_modules/@eslint-community/eslint-utils": { diff --git a/package.json b/package.json index 78a7e1c9c..84f5d4942 100644 --- a/package.json +++ b/package.json @@ -57,7 +57,7 @@ "iofog-controller": "src/main.js" }, "dependencies": { - "@datasance/ecn-viewer": "0.3.4", + "@datasance/ecn-viewer": "0.3.5", "axios": "1.7.4", "body-parser": "^1.20.2", "child_process": "1.0.2", From 2d8b01059ffa4707379bda9acc1535b0e439b341 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Wed, 6 Nov 2024 18:27:30 +0300 Subject: [PATCH 127/146] api version updated to be in line with iofog community --- Dockerfile.dev | 2 +- docs/swagger.yaml | 4 +- package-lock.json | 178 ++-- package.json | 16 +- src/main.js | 2 +- src/routes/agent.js | 40 +- src/routes/application.js | 20 +- src/routes/applicationTemplate.js | 16 +- src/routes/capabilities.js | 4 +- src/routes/catalog.js | 10 +- src/routes/config.js | 6 +- src/routes/controller.js | 4 +- src/routes/diagnostics.js | 10 +- src/routes/edgeResource.js | 16 +- src/routes/flow.js | 10 +- src/routes/iofog.js | 22 +- src/routes/microservices.js | 42 +- src/routes/registries.js | 12 +- src/routes/router.js | 4 +- src/routes/routing.js | 10 +- src/routes/tunnel.js | 6 +- src/routes/user.js | 10 +- test/application-template-update.yaml | 2 +- test/application-template.yaml | 2 +- test/application-test.yaml | 6 +- test/application-update-test.yaml | 6 +- test/postman_collection.json | 1156 ++++++++++++------------- test/src/template/app.yml | 2 +- test/src/template/simple.yml | 2 +- 29 files changed, 810 insertions(+), 810 deletions(-) diff --git a/Dockerfile.dev b/Dockerfile.dev index 3695faa46..36e060e8b 100644 --- a/Dockerfile.dev +++ b/Dockerfile.dev @@ -42,7 +42,7 @@ RUN npm i -g /tmp/iofog-controller.tgz && \ rm -rf /tmp/iofog-controller.tgz && \ iofog-controller config dev-mode --on -LABEL org.opencontainers.image.description controller +LABEL org.opencontainers.image.description=controller LABEL org.opencontainers.image.source=https://github.com/datasance/controller LABEL org.opencontainers.image.licenses=EPL2.0 CMD [ "node", "/usr/local/lib/node_modules/@datasance/iofogcontroller/src/server.js" ] diff --git a/docs/swagger.yaml b/docs/swagger.yaml index 136955969..7aea9f6ce 100755 --- a/docs/swagger.yaml +++ b/docs/swagger.yaml @@ -3035,8 +3035,8 @@ tags: - name: User description: Manage your users servers: - - url: http://localhost:51121/api/v1 - - url: https://localhost:51121/api/v1 + - url: http://localhost:51121/api/v3 + - url: https://localhost:51121/api/v3 components: securitySchemes: userToken: diff --git a/package-lock.json b/package-lock.json index 334bc2463..56497bb73 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,28 +1,28 @@ { "name": "@datasance/iofogcontroller", - "version": "3.4.0", + "version": "3.4.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@datasance/iofogcontroller", - "version": "3.4.0", + "version": "3.4.1", "hasInstallScript": true, "license": "EPL-2.0", "dependencies": { - "@datasance/ecn-viewer": "0.3.5", + "@datasance/ecn-viewer": "0.3.8", "axios": "1.7.4", - "body-parser": "^1.20.2", + "body-parser": "^1.20.3", "child_process": "1.0.2", "command-line-args": "5.2.1", "command-line-usage": "7.0.3", "concurrent-queue": "7.0.2", - "cookie-parser": "1.4.6", + "cookie-parser": "1.4.7", "cors": "2.8.5", "daemonize2": "0.4.2", "ejs": "3.1.10", - "express": "4.19.2", - "express-session": "1.18.0", + "express": "4.21.1", + "express-session": "1.18.1", "formidable": "3.5.1", "ftp": "0.3.10", "globally": "^0.0.0", @@ -31,7 +31,7 @@ "is-elevated": "3.0.0", "js-yaml": "4.1.0", "jsonschema": "1.4.1", - "keycloak-connect": "25.0.4", + "keycloak-connect": "^26.0.5", "minimatch": "10.0.1", "moment": "2.30.1", "moment-timezone": "0.5.45", @@ -557,10 +557,9 @@ } }, "node_modules/@datasance/ecn-viewer": { - "version": "0.3.5", - "resolved": "https://npm.pkg.github.com/download/@datasance/ecn-viewer/0.3.5/4cb0140be3ef162b1c097aad5136c477469e9733", - "integrity": "sha512-uxACCbIsj4kxpwkjlVAooAAOrzq7vSRY/+IdHmvH64LoqtAeNyLVeonJW6F9Za72+IFScQ8SfUoBbenoMoC+rQ==", - "license": "EPL-2.0" + "version": "0.3.8", + "resolved": "https://npm.pkg.github.com/download/@datasance/ecn-viewer/0.3.8/ee97a29a58feb79a047c90cf19387581a237fc9d", + "integrity": "sha512-wyM86fnIkCG937beYgzWI5I07HrX7htT0EECTkyzSZDXqZCwjEQmFFKbIcb6kYSxtnMqVu6iiTew8P9DXDP3pQ==" }, "node_modules/@eslint-community/eslint-utils": { "version": "4.4.0", @@ -2113,9 +2112,9 @@ "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" }, "node_modules/body-parser": { - "version": "1.20.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", - "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", + "version": "1.20.3", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", + "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", "dependencies": { "bytes": "3.1.2", "content-type": "~1.0.5", @@ -2125,7 +2124,7 @@ "http-errors": "2.0.0", "iconv-lite": "0.4.24", "on-finished": "2.4.1", - "qs": "6.11.0", + "qs": "6.13.0", "raw-body": "2.5.2", "type-is": "~1.6.18", "unpipe": "1.0.0" @@ -2136,11 +2135,11 @@ } }, "node_modules/body-parser/node_modules/qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", "dependencies": { - "side-channel": "^1.0.4" + "side-channel": "^1.0.6" }, "engines": { "node": ">=0.6" @@ -2931,19 +2930,19 @@ "dev": true }, "node_modules/cookie": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz", - "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==", + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", "engines": { "node": ">= 0.6" } }, "node_modules/cookie-parser": { - "version": "1.4.6", - "resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.4.6.tgz", - "integrity": "sha512-z3IzaNjdwUC2olLIB5/ITd0/setiaFMLYiZJle7xg5Fe9KWAceil7xszYfHHBtDFYLSgJduS2Ty0P1uJdPDJeA==", + "version": "1.4.7", + "resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.4.7.tgz", + "integrity": "sha512-nGUvgXnotP3BsjiLX2ypbQnWoGUPIIfHQNZkkC668ntrzGWEZVW70HDEB1qnNGMicPje6EttlIgzo51YSwNQGw==", "dependencies": { - "cookie": "0.4.1", + "cookie": "0.7.2", "cookie-signature": "1.0.6" }, "engines": { @@ -3483,9 +3482,9 @@ "dev": true }, "node_modules/elliptic": { - "version": "6.5.7", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.7.tgz", - "integrity": "sha512-ESVCtTwiA+XhY3wyh24QqRGBoP3rEdDUl3EDUUo9tft074fi19IrdpH7hLCMMP3CIj7jb3W96rn8lt/BqIlt5Q==", + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.6.0.tgz", + "integrity": "sha512-dpwoQcLc/2WLQvJvLRHKZ+f9FgOdjnq11rurqwekGQygGPsYSK29OMMD2WalatiqQ+XGFDglTNixpPfI+lpaAA==", "dependencies": { "bn.js": "^4.11.9", "brorand": "^1.1.0", @@ -3513,9 +3512,9 @@ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, "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==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", "engines": { "node": ">= 0.8" } @@ -4354,36 +4353,36 @@ } }, "node_modules/express": { - "version": "4.19.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", - "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", + "version": "4.21.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.21.1.tgz", + "integrity": "sha512-YSFlK1Ee0/GC8QaO91tHcDxJiE/X4FbpAyQWkxAvG6AXCuR65YzK8ua6D9hvi/TzUfZMpc+BwuM1IPw8fmQBiQ==", "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.20.2", + "body-parser": "1.20.3", "content-disposition": "0.5.4", "content-type": "~1.0.4", - "cookie": "0.6.0", + "cookie": "0.7.1", "cookie-signature": "1.0.6", "debug": "2.6.9", "depd": "2.0.0", - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "etag": "~1.8.1", - "finalhandler": "1.2.0", + "finalhandler": "1.3.1", "fresh": "0.5.2", "http-errors": "2.0.0", - "merge-descriptors": "1.0.1", + "merge-descriptors": "1.0.3", "methods": "~1.1.2", "on-finished": "2.4.1", "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", + "path-to-regexp": "0.1.10", "proxy-addr": "~2.0.7", - "qs": "6.11.0", + "qs": "6.13.0", "range-parser": "~1.2.1", "safe-buffer": "5.2.1", - "send": "0.18.0", - "serve-static": "1.15.0", + "send": "0.19.0", + "serve-static": "1.16.2", "setprototypeof": "1.2.0", "statuses": "2.0.1", "type-is": "~1.6.18", @@ -4395,11 +4394,11 @@ } }, "node_modules/express-session": { - "version": "1.18.0", - "resolved": "https://registry.npmjs.org/express-session/-/express-session-1.18.0.tgz", - "integrity": "sha512-m93QLWr0ju+rOwApSsyso838LQwgfs44QtOP/WBiwtAgPIo/SAh1a5c6nn2BR6mFNZehTpqKDESzP+fRHVbxwQ==", + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/express-session/-/express-session-1.18.1.tgz", + "integrity": "sha512-a5mtTqEaZvBCL9A9aqkrtfz+3SMDhOVUnjafjo+s7A9Txkq+SVX2DLvSp1Zrv4uCXa3lMSK3viWnh9Gg07PBUA==", "dependencies": { - "cookie": "0.6.0", + "cookie": "0.7.2", "cookie-signature": "1.0.7", "debug": "2.6.9", "depd": "~2.0.0", @@ -4412,33 +4411,25 @@ "node": ">= 0.8.0" } }, - "node_modules/express-session/node_modules/cookie": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", - "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", - "engines": { - "node": ">= 0.6" - } - }, "node_modules/express-session/node_modules/cookie-signature": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.7.tgz", "integrity": "sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA==" }, "node_modules/express/node_modules/cookie": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", - "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz", + "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==", "engines": { "node": ">= 0.6" } }, "node_modules/express/node_modules/qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", "dependencies": { - "side-channel": "^1.0.4" + "side-channel": "^1.0.6" }, "engines": { "node": ">=0.6" @@ -4687,12 +4678,12 @@ } }, "node_modules/finalhandler": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", - "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", + "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", "dependencies": { "debug": "2.6.9", - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "on-finished": "2.4.1", "parseurl": "~1.3.3", @@ -6959,9 +6950,9 @@ } }, "node_modules/keycloak-connect": { - "version": "25.0.4", - "resolved": "https://registry.npmjs.org/keycloak-connect/-/keycloak-connect-25.0.4.tgz", - "integrity": "sha512-njiyVQOjdxUq+hIVEnC64Uzz10J8ZwYySLp8KsFxeSIuijBXpWtSjMDPZZ3fb3UVmX8I6uVKNqD1Faasd1hnIQ==", + "version": "26.0.5", + "resolved": "https://registry.npmjs.org/keycloak-connect/-/keycloak-connect-26.0.5.tgz", + "integrity": "sha512-CvPjSL+dqQg6jFgXuYO3v13SjxxNGwo1+s5I2gFfxf7Vh6krz3nHtihH+str2kfP7TqeZgXtqWq2AbWw6HWkLg==", "dependencies": { "jwk-to-pem": "^2.0.0" }, @@ -7228,9 +7219,12 @@ } }, "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==" + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", + "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, "node_modules/methods": { "version": "1.1.2", @@ -7882,9 +7876,9 @@ } }, "node_modules/nise/node_modules/path-to-regexp": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.2.tgz", - "integrity": "sha512-GQX3SSMokngb36+whdpRXE+3f9V8UzyAorlYvOGx87ufGHehNTn5lCxrKtLyZ4Yl/wEKnNnr98ZzOwwDZV5ogw==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.3.0.tgz", + "integrity": "sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==", "dev": true }, "node_modules/node-abi": { @@ -8676,9 +8670,9 @@ } }, "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==" + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.10.tgz", + "integrity": "sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==" }, "node_modules/pathval": { "version": "2.0.0", @@ -10226,9 +10220,9 @@ "dev": true }, "node_modules/send": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", + "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", "dependencies": { "debug": "2.6.9", "depd": "2.0.0", @@ -10248,6 +10242,14 @@ "node": ">= 0.8.0" } }, + "node_modules/send/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/send/node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", @@ -10470,14 +10472,14 @@ } }, "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==", + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", + "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", "dependencies": { - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "parseurl": "~1.3.3", - "send": "0.18.0" + "send": "0.19.0" }, "engines": { "node": ">= 0.8.0" diff --git a/package.json b/package.json index 84f5d4942..9c65f83cc 100644 --- a/package.json +++ b/package.json @@ -1,13 +1,11 @@ { "name": "@datasance/iofogcontroller", - "version": "3.4.0", + "version": "3.4.1", "description": "ioFog Controller project for Eclipse IoFog @ iofog.org \\nCopyright (c) 2023 Datasance Teknoloji A.S.", "main": "./src/main.js", "author": "Emirhan Durmus", "contributors": [ "Emirhan Durmus ", - "Oguzhan Herkiloglu ", - "Burak Vural ", "Alpaslan Doğan " ], "license": "EPL-2.0", @@ -57,19 +55,19 @@ "iofog-controller": "src/main.js" }, "dependencies": { - "@datasance/ecn-viewer": "0.3.5", + "@datasance/ecn-viewer": "0.3.8", "axios": "1.7.4", - "body-parser": "^1.20.2", + "body-parser": "^1.20.3", "child_process": "1.0.2", "command-line-args": "5.2.1", "command-line-usage": "7.0.3", "concurrent-queue": "7.0.2", - "cookie-parser": "1.4.6", + "cookie-parser": "1.4.7", "cors": "2.8.5", "daemonize2": "0.4.2", "ejs": "3.1.10", - "express": "4.19.2", - "express-session": "1.18.0", + "express": "4.21.1", + "express-session": "1.18.1", "formidable": "3.5.1", "ftp": "0.3.10", "globally": "^0.0.0", @@ -78,7 +76,7 @@ "is-elevated": "3.0.0", "js-yaml": "4.1.0", "jsonschema": "1.4.1", - "keycloak-connect": "25.0.4", + "keycloak-connect": "^26.0.5", "minimatch": "10.0.1", "moment": "2.30.1", "moment-timezone": "0.5.45", diff --git a/src/main.js b/src/main.js index 3bbd36938..4e4eb4bab 100644 --- a/src/main.js +++ b/src/main.js @@ -44,7 +44,7 @@ const isDaemonElevated = async () => { return false } const protocol = isHTTPS() ? 'https' : 'http' - return getJSONFromURL(`${protocol}://localhost:${apiPort}/api/v1/status`) + return getJSONFromURL(`${protocol}://localhost:${apiPort}/api/v3/status`) .then(result => { // The server is running but you couldn't see it, requires administrative privileges if (result.status === 'online') { diff --git a/src/routes/agent.js b/src/routes/agent.js index 97161bf4e..e2e86e273 100644 --- a/src/routes/agent.js +++ b/src/routes/agent.js @@ -21,7 +21,7 @@ const logger = require('../logger') module.exports = [ { method: 'post', - path: '/api/v1/agent/provision', + path: '/api/v3/agent/provision', middleware: async (req, res) => { logger.apiReq(req) @@ -53,7 +53,7 @@ module.exports = [ }, { method: 'post', - path: '/api/v1/agent/deprovision', + path: '/api/v3/agent/deprovision', middleware: async (req, res) => { logger.apiReq(req) @@ -82,7 +82,7 @@ module.exports = [ }, { method: 'get', - path: '/api/v1/agent/config', + path: '/api/v3/agent/config', middleware: async (req, res) => { logger.apiReq(req) @@ -106,7 +106,7 @@ module.exports = [ }, { method: 'patch', - path: '/api/v1/agent/config', + path: '/api/v3/agent/config', middleware: async (req, res) => { logger.apiReq(req) @@ -135,7 +135,7 @@ module.exports = [ }, { method: 'get', - path: '/api/v1/agent/config/changes', + path: '/api/v3/agent/config/changes', middleware: async (req, res) => { logger.apiReq(req) @@ -164,7 +164,7 @@ module.exports = [ }, { method: 'patch', - path: '/api/v1/agent/config/changes', + path: '/api/v3/agent/config/changes', middleware: async (req, res) => { logger.apiReq(req) @@ -193,7 +193,7 @@ module.exports = [ }, { method: 'put', - path: '/api/v1/agent/status', + path: '/api/v3/agent/status', middleware: async (req, res) => { logger.apiReq(req) @@ -222,7 +222,7 @@ module.exports = [ }, { method: 'get', - path: '/api/v1/agent/edgeResources', + path: '/api/v3/agent/edgeResources', middleware: async (req, res) => { logger.apiReq(req) @@ -247,7 +247,7 @@ module.exports = [ }, { method: 'get', - path: '/api/v1/agent/microservices', + path: '/api/v3/agent/microservices', middleware: async (req, res) => { logger.apiReq(req) @@ -272,7 +272,7 @@ module.exports = [ }, { method: 'get', - path: '/api/v1/agent/microservices/:microserviceUuid', + path: '/api/v3/agent/microservices/:microserviceUuid', middleware: async (req, res) => { logger.apiReq(req) @@ -301,7 +301,7 @@ module.exports = [ }, { method: 'get', - path: '/api/v1/agent/registries', + path: '/api/v3/agent/registries', middleware: async (req, res) => { logger.apiReq(req) @@ -326,7 +326,7 @@ module.exports = [ }, { method: 'get', - path: '/api/v1/agent/tunnel', + path: '/api/v3/agent/tunnel', middleware: async (req, res) => { logger.apiReq(req) @@ -355,7 +355,7 @@ module.exports = [ }, { method: 'get', - path: '/api/v1/agent/strace', + path: '/api/v3/agent/strace', middleware: async (req, res) => { logger.apiReq(req) @@ -384,7 +384,7 @@ module.exports = [ }, { method: 'put', - path: '/api/v1/agent/strace', + path: '/api/v3/agent/strace', middleware: async (req, res) => { logger.apiReq(req) @@ -417,7 +417,7 @@ module.exports = [ }, { method: 'get', - path: '/api/v1/agent/version', + path: '/api/v3/agent/version', middleware: async (req, res) => { logger.apiReq(req) @@ -446,7 +446,7 @@ module.exports = [ }, { method: 'put', - path: '/api/v1/agent/hal/hw', + path: '/api/v3/agent/hal/hw', middleware: async (req, res) => { logger.apiReq(req) @@ -475,7 +475,7 @@ module.exports = [ }, { method: 'put', - path: '/api/v1/agent/hal/usb', + path: '/api/v3/agent/hal/usb', middleware: async (req, res) => { logger.apiReq(req) @@ -504,7 +504,7 @@ module.exports = [ }, { method: 'delete', - path: '/api/v1/agent/delete-node', + path: '/api/v3/agent/delete-node', middleware: async (req, res) => { logger.apiReq(req) @@ -529,7 +529,7 @@ module.exports = [ }, { method: 'get', - path: '/api/v1/agent/image-snapshot', + path: '/api/v3/agent/image-snapshot', middleware: async (req, res) => { logger.apiReq(req) @@ -558,7 +558,7 @@ module.exports = [ }, { method: 'put', - path: '/api/v1/agent/image-snapshot', + path: '/api/v3/agent/image-snapshot', middleware: async (req, res) => { logger.apiReq(req) diff --git a/src/routes/application.js b/src/routes/application.js index 437e46087..d5bc48424 100644 --- a/src/routes/application.js +++ b/src/routes/application.js @@ -20,7 +20,7 @@ const keycloak = require('../config/keycloak.js').initKeycloak() module.exports = [ { method: 'get', - path: '/api/v1/application', + path: '/api/v3/application', middleware: async (req, res) => { logger.apiReq(req) @@ -48,7 +48,7 @@ module.exports = [ }, { method: 'get', - path: '/api/v1/application/system', + path: '/api/v3/application/system', middleware: async (req, res) => { logger.apiReq(req) @@ -76,7 +76,7 @@ module.exports = [ }, { method: 'post', - path: '/api/v1/application', + path: '/api/v3/application', supportSubstitution: true, middleware: async (req, res) => { logger.apiReq(req) @@ -109,7 +109,7 @@ module.exports = [ }, { method: 'post', - path: '/api/v1/application/yaml', + path: '/api/v3/application/yaml', fileInput: 'application', middleware: async (req, res) => { logger.apiReq(req) @@ -142,7 +142,7 @@ module.exports = [ }, { method: 'get', - path: '/api/v1/application/:name', + path: '/api/v3/application/:name', middleware: async (req, res) => { logger.apiReq(req) @@ -175,7 +175,7 @@ module.exports = [ }, { method: 'patch', - path: '/api/v1/application/:name', + path: '/api/v3/application/:name', supportSubstitution: true, middleware: async (req, res) => { logger.apiReq(req) @@ -212,7 +212,7 @@ module.exports = [ }, { method: 'put', - path: '/api/v1/application/yaml/:name', + path: '/api/v3/application/yaml/:name', fileInput: 'application', middleware: async (req, res) => { logger.apiReq(req) @@ -249,7 +249,7 @@ module.exports = [ }, { method: 'put', - path: '/api/v1/application/:name', + path: '/api/v3/application/:name', supportSubstitution: true, middleware: async (req, res) => { logger.apiReq(req) @@ -286,7 +286,7 @@ module.exports = [ }, { method: 'delete', - path: '/api/v1/application/:name', + path: '/api/v3/application/:name', middleware: async (req, res) => { logger.apiReq(req) @@ -318,7 +318,7 @@ module.exports = [ }, { method: 'delete', - path: '/api/v1/application/system/:name', + path: '/api/v3/application/system/:name', middleware: async (req, res) => { logger.apiReq(req) diff --git a/src/routes/applicationTemplate.js b/src/routes/applicationTemplate.js index 59cad674a..ff36626b2 100644 --- a/src/routes/applicationTemplate.js +++ b/src/routes/applicationTemplate.js @@ -20,7 +20,7 @@ const keycloak = require('../config/keycloak.js').initKeycloak() module.exports = [ { method: 'get', - path: '/api/v1/applicationTemplates', + path: '/api/v3/applicationTemplates', middleware: async (req, res) => { logger.apiReq(req) @@ -48,7 +48,7 @@ module.exports = [ }, { method: 'post', - path: '/api/v1/applicationTemplate', + path: '/api/v3/applicationTemplate', middleware: async (req, res) => { logger.apiReq(req) @@ -80,7 +80,7 @@ module.exports = [ }, { method: 'post', - path: '/api/v1/applicationTemplate/yaml', + path: '/api/v3/applicationTemplate/yaml', fileInput: 'template', middleware: async (req, res) => { logger.apiReq(req) @@ -113,7 +113,7 @@ module.exports = [ }, { method: 'get', - path: '/api/v1/applicationTemplate/:name', + path: '/api/v3/applicationTemplate/:name', middleware: async (req, res) => { logger.apiReq(req) @@ -145,7 +145,7 @@ module.exports = [ }, { method: 'patch', - path: '/api/v1/applicationTemplate/:name', + path: '/api/v3/applicationTemplate/:name', middleware: async (req, res) => { logger.apiReq(req) @@ -181,7 +181,7 @@ module.exports = [ }, { method: 'put', - path: '/api/v1/applicationTemplate/yaml/:name', + path: '/api/v3/applicationTemplate/yaml/:name', fileInput: 'template', middleware: async (req, res) => { logger.apiReq(req) @@ -218,7 +218,7 @@ module.exports = [ }, { method: 'put', - path: '/api/v1/applicationTemplate/:name', + path: '/api/v3/applicationTemplate/:name', middleware: async (req, res) => { logger.apiReq(req) @@ -254,7 +254,7 @@ module.exports = [ }, { method: 'delete', - path: '/api/v1/applicationTemplate/:name', + path: '/api/v3/applicationTemplate/:name', middleware: async (req, res) => { logger.apiReq(req) diff --git a/src/routes/capabilities.js b/src/routes/capabilities.js index 54eaa2b1c..f8b533e70 100644 --- a/src/routes/capabilities.js +++ b/src/routes/capabilities.js @@ -16,7 +16,7 @@ const keycloak = require('../config/keycloak.js').initKeycloak() module.exports = [ { method: 'head', - path: '/api/v1/capabilities/edgeResources', + path: '/api/v3/capabilities/edgeResources', middleware: async (req, res) => { logger.apiReq(req) @@ -28,7 +28,7 @@ module.exports = [ }, { method: 'head', - path: '/api/v1/capabilities/applicationTemplates', + path: '/api/v3/capabilities/applicationTemplates', middleware: async (req, res) => { logger.apiReq(req) diff --git a/src/routes/catalog.js b/src/routes/catalog.js index 3bad359a2..80134e44c 100644 --- a/src/routes/catalog.js +++ b/src/routes/catalog.js @@ -20,7 +20,7 @@ const keycloak = require('../config/keycloak.js').initKeycloak() module.exports = [ { method: 'get', - path: '/api/v1/catalog/microservices', + path: '/api/v3/catalog/microservices', middleware: async (req, res) => { logger.apiReq(req) @@ -52,7 +52,7 @@ module.exports = [ }, { method: 'post', - path: '/api/v1/catalog/microservices', + path: '/api/v3/catalog/microservices', supportSubstitution: true, middleware: async (req, res) => { logger.apiReq(req) @@ -93,7 +93,7 @@ module.exports = [ }, { method: 'get', - path: '/api/v1/catalog/microservices/:id', + path: '/api/v3/catalog/microservices/:id', middleware: async (req, res) => { logger.apiReq(req) @@ -129,7 +129,7 @@ module.exports = [ }, { method: 'patch', - path: '/api/v1/catalog/microservices/:id', + path: '/api/v3/catalog/microservices/:id', supportSubstitution: true, middleware: async (req, res) => { logger.apiReq(req) @@ -174,7 +174,7 @@ module.exports = [ }, { method: 'delete', - path: '/api/v1/catalog/microservices/:id', + path: '/api/v3/catalog/microservices/:id', middleware: async (req, res) => { logger.apiReq(req) diff --git a/src/routes/config.js b/src/routes/config.js index b4e2f208b..fba93b482 100644 --- a/src/routes/config.js +++ b/src/routes/config.js @@ -20,7 +20,7 @@ const keycloak = require('../config/keycloak.js').initKeycloak() module.exports = [ { method: 'get', - path: '/api/v1/config', + path: '/api/v3/config', middleware: async (req, res) => { logger.apiReq(req) @@ -47,7 +47,7 @@ module.exports = [ }, { method: 'get', - path: '/api/v1/config/:key', + path: '/api/v3/config/:key', middleware: async (req, res) => { logger.apiReq(req) @@ -78,7 +78,7 @@ module.exports = [ }, { method: 'put', - path: '/api/v1/config', + path: '/api/v3/config', supportSubstitution: true, middleware: async (req, res) => { logger.apiReq(req) diff --git a/src/routes/controller.js b/src/routes/controller.js index 5ccc2f6fb..3c41255ba 100644 --- a/src/routes/controller.js +++ b/src/routes/controller.js @@ -18,7 +18,7 @@ const logger = require('../logger') module.exports = [ { method: 'get', - path: '/api/v1/status', + path: '/api/v3/status', middleware: async (req, res) => { logger.apiReq(req) @@ -36,7 +36,7 @@ module.exports = [ }, { method: 'get', - path: '/api/v1/fog-types/', + path: '/api/v3/fog-types/', middleware: async (req, res) => { logger.apiReq(req) diff --git a/src/routes/diagnostics.js b/src/routes/diagnostics.js index 671000f51..5c9270a06 100644 --- a/src/routes/diagnostics.js +++ b/src/routes/diagnostics.js @@ -21,7 +21,7 @@ const keycloak = require('../config/keycloak.js').initKeycloak() module.exports = [ { method: 'post', - path: '/api/v1/microservices/:uuid/image-snapshot', + path: '/api/v3/microservices/:uuid/image-snapshot', middleware: async (req, res) => { logger.apiReq(req) @@ -56,7 +56,7 @@ module.exports = [ }, { method: 'get', - path: '/api/v1/microservices/:uuid/image-snapshot', + path: '/api/v3/microservices/:uuid/image-snapshot', middleware: async (req, res) => { logger.apiReq(req) @@ -100,7 +100,7 @@ module.exports = [ }, { method: 'patch', - path: '/api/v1/microservices/:uuid/strace', + path: '/api/v3/microservices/:uuid/strace', middleware: async (req, res) => { logger.apiReq(req) @@ -139,7 +139,7 @@ module.exports = [ }, { method: 'get', - path: '/api/v1/microservices/:uuid/strace', + path: '/api/v3/microservices/:uuid/strace', middleware: async (req, res) => { logger.apiReq(req) @@ -174,7 +174,7 @@ module.exports = [ }, { method: 'put', - path: '/api/v1/microservices/:uuid/strace', + path: '/api/v3/microservices/:uuid/strace', middleware: async (req, res) => { logger.apiReq(req) diff --git a/src/routes/edgeResource.js b/src/routes/edgeResource.js index b6607e243..55558160c 100644 --- a/src/routes/edgeResource.js +++ b/src/routes/edgeResource.js @@ -20,7 +20,7 @@ const keycloak = require('../config/keycloak.js').initKeycloak() module.exports = [ { method: 'get', - path: '/api/v1/edgeResources', + path: '/api/v3/edgeResources', middleware: async (req, res) => { logger.apiReq(req) @@ -47,7 +47,7 @@ module.exports = [ }, { method: 'get', - path: '/api/v1/edgeResource/:name/:version', + path: '/api/v3/edgeResource/:name/:version', middleware: async (req, res) => { logger.apiReq(req) @@ -78,7 +78,7 @@ module.exports = [ }, { method: 'get', - path: '/api/v1/edgeResource/:name', + path: '/api/v3/edgeResource/:name', middleware: async (req, res) => { logger.apiReq(req) @@ -109,7 +109,7 @@ module.exports = [ }, { method: 'put', - path: '/api/v1/edgeResource/:name/:version', + path: '/api/v3/edgeResource/:name/:version', supportSubstitution: true, middleware: async (req, res) => { logger.apiReq(req) @@ -145,7 +145,7 @@ module.exports = [ }, { method: 'delete', - path: '/api/v1/edgeResource/:name/:version', + path: '/api/v3/edgeResource/:name/:version', middleware: async (req, res) => { logger.apiReq(req) @@ -180,7 +180,7 @@ module.exports = [ }, { method: 'post', - path: '/api/v1/edgeResource', + path: '/api/v3/edgeResource', supportSubstitution: true, middleware: async (req, res) => { logger.apiReq(req) @@ -212,7 +212,7 @@ module.exports = [ }, { method: 'post', - path: '/api/v1/edgeResource/:name/:version/link', + path: '/api/v3/edgeResource/:name/:version/link', middleware: async (req, res) => { logger.apiReq(req) @@ -243,7 +243,7 @@ module.exports = [ }, { method: 'delete', - path: '/api/v1/edgeResource/:name/:version/link', + path: '/api/v3/edgeResource/:name/:version/link', middleware: async (req, res) => { logger.apiReq(req) diff --git a/src/routes/flow.js b/src/routes/flow.js index e955df130..d3e922dda 100644 --- a/src/routes/flow.js +++ b/src/routes/flow.js @@ -20,7 +20,7 @@ const keycloak = require('../config/keycloak.js').initKeycloak() module.exports = [ { method: 'get', - path: '/api/v1/flow', + path: '/api/v3/flow', middleware: async (req, res) => { logger.apiReq(req) @@ -47,7 +47,7 @@ module.exports = [ }, { method: 'post', - path: '/api/v1/flow', + path: '/api/v3/flow', middleware: async (req, res) => { logger.apiReq(req) @@ -78,7 +78,7 @@ module.exports = [ }, { method: 'get', - path: '/api/v1/flow/:id', + path: '/api/v3/flow/:id', middleware: async (req, res) => { logger.apiReq(req) @@ -109,7 +109,7 @@ module.exports = [ }, { method: 'patch', - path: '/api/v1/flow/:id', + path: '/api/v3/flow/:id', middleware: async (req, res) => { logger.apiReq(req) @@ -144,7 +144,7 @@ module.exports = [ }, { method: 'delete', - path: '/api/v1/flow/:id', + path: '/api/v3/flow/:id', middleware: async (req, res) => { logger.apiReq(req) diff --git a/src/routes/iofog.js b/src/routes/iofog.js index 9431cc4b6..ab7f132a5 100644 --- a/src/routes/iofog.js +++ b/src/routes/iofog.js @@ -20,7 +20,7 @@ const keycloak = require('../config/keycloak.js').initKeycloak() module.exports = [ { method: 'get', - path: '/api/v1/iofog-list', + path: '/api/v3/iofog-list', middleware: async (req, res) => { logger.apiReq(req) @@ -51,7 +51,7 @@ module.exports = [ }, { method: 'post', - path: '/api/v1/iofog', + path: '/api/v3/iofog', supportSubstitution: true, middleware: async (req, res) => { logger.apiReq(req) @@ -83,7 +83,7 @@ module.exports = [ }, { method: 'patch', - path: '/api/v1/iofog/:uuid', + path: '/api/v3/iofog/:uuid', supportSubstitution: true, middleware: async (req, res) => { logger.apiReq(req) @@ -119,7 +119,7 @@ module.exports = [ }, { method: 'delete', - path: '/api/v1/iofog/:uuid', + path: '/api/v3/iofog/:uuid', middleware: async (req, res) => { logger.apiReq(req) @@ -150,7 +150,7 @@ module.exports = [ }, { method: 'get', - path: '/api/v1/iofog/:uuid', + path: '/api/v3/iofog/:uuid', middleware: async (req, res) => { logger.apiReq(req) @@ -181,7 +181,7 @@ module.exports = [ }, { method: 'get', - path: '/api/v1/iofog/:uuid/provisioning-key', + path: '/api/v3/iofog/:uuid/provisioning-key', middleware: async (req, res) => { logger.apiReq(req) @@ -212,7 +212,7 @@ module.exports = [ }, { method: 'post', - path: '/api/v1/iofog/:uuid/version/:versionCommand', + path: '/api/v3/iofog/:uuid/version/:versionCommand', middleware: async (req, res) => { logger.apiReq(req) @@ -247,7 +247,7 @@ module.exports = [ }, { method: 'post', - path: '/api/v1/iofog/:uuid/reboot', + path: '/api/v3/iofog/:uuid/reboot', middleware: async (req, res) => { logger.apiReq(req) @@ -282,7 +282,7 @@ module.exports = [ }, { method: 'get', - path: '/api/v1/iofog/:uuid/hal/hw', + path: '/api/v3/iofog/:uuid/hal/hw', middleware: async (req, res) => { logger.apiReq(req) @@ -313,7 +313,7 @@ module.exports = [ }, { method: 'get', - path: '/api/v1/iofog/:uuid/hal/usb', + path: '/api/v3/iofog/:uuid/hal/usb', middleware: async (req, res) => { logger.apiReq(req) @@ -343,7 +343,7 @@ module.exports = [ }, { method: 'post', - path: '/api/v1/iofog/:uuid/prune', + path: '/api/v3/iofog/:uuid/prune', middleware: async (req, res) => { logger.apiReq(req) diff --git a/src/routes/microservices.js b/src/routes/microservices.js index b3ddf1604..c6bcd4d51 100644 --- a/src/routes/microservices.js +++ b/src/routes/microservices.js @@ -20,7 +20,7 @@ const keycloak = require('../config/keycloak.js').initKeycloak() module.exports = [ { method: 'get', - path: '/api/v1/microservices/public-ports', + path: '/api/v3/microservices/public-ports', middleware: async (req, res) => { logger.apiReq(req) @@ -50,7 +50,7 @@ module.exports = [ }, { method: 'get', - path: '/api/v1/microservices/', + path: '/api/v3/microservices/', middleware: async (req, res) => { logger.apiReq(req) @@ -77,7 +77,7 @@ module.exports = [ }, { method: 'post', - path: '/api/v1/microservices', + path: '/api/v3/microservices', supportSubstitution: true, middleware: async (req, res) => { logger.apiReq(req) @@ -109,7 +109,7 @@ module.exports = [ }, { method: 'post', - path: '/api/v1/microservices/yaml', + path: '/api/v3/microservices/yaml', supportSubstitution: true, fileInput: 'microservice', middleware: async (req, res) => { @@ -142,7 +142,7 @@ module.exports = [ }, { method: 'get', - path: '/api/v1/microservices/:uuid', + path: '/api/v3/microservices/:uuid', middleware: async (req, res) => { logger.apiReq(req) @@ -173,7 +173,7 @@ module.exports = [ }, { method: 'patch', - path: '/api/v1/microservices/:uuid', + path: '/api/v3/microservices/:uuid', supportSubstitution: true, middleware: async (req, res) => { logger.apiReq(req) @@ -209,7 +209,7 @@ module.exports = [ }, { method: 'patch', - path: '/api/v1/microservices/system/:uuid', + path: '/api/v3/microservices/system/:uuid', supportSubstitution: true, middleware: async (req, res) => { logger.apiReq(req) @@ -245,7 +245,7 @@ module.exports = [ }, { method: 'patch', - path: '/api/v1/microservices/yaml/:uuid', + path: '/api/v3/microservices/yaml/:uuid', supportSubstitution: true, fileInput: 'microservice', middleware: async (req, res) => { @@ -282,7 +282,7 @@ module.exports = [ }, { method: 'delete', - path: '/api/v1/microservices/:uuid', + path: '/api/v3/microservices/:uuid', middleware: async (req, res) => { logger.apiReq(req) @@ -313,7 +313,7 @@ module.exports = [ }, { method: 'post', - path: '/api/v1/microservices/:uuid/routes/:receiverUuid', + path: '/api/v3/microservices/:uuid/routes/:receiverUuid', middleware: async (req, res) => { logger.apiReq(req) @@ -348,7 +348,7 @@ module.exports = [ }, { method: 'delete', - path: '/api/v1/microservices/:uuid/routes/:receiverUuid', + path: '/api/v3/microservices/:uuid/routes/:receiverUuid', middleware: async (req, res) => { logger.apiReq(req) @@ -383,7 +383,7 @@ module.exports = [ }, { method: 'post', - path: '/api/v1/microservices/:uuid/port-mapping', + path: '/api/v3/microservices/:uuid/port-mapping', middleware: async (req, res) => { logger.apiReq(req) @@ -418,7 +418,7 @@ module.exports = [ }, { method: 'post', - path: '/api/v1/microservices/system/:uuid/port-mapping', + path: '/api/v3/microservices/system/:uuid/port-mapping', middleware: async (req, res) => { logger.apiReq(req) @@ -453,7 +453,7 @@ module.exports = [ }, { method: 'delete', - path: '/api/v1/microservices/:uuid/port-mapping/:internalPort', + path: '/api/v3/microservices/:uuid/port-mapping/:internalPort', middleware: async (req, res) => { logger.apiReq(req) @@ -484,7 +484,7 @@ module.exports = [ }, { method: 'delete', - path: '/api/v1/microservices/system/:uuid/port-mapping/:internalPort', + path: '/api/v3/microservices/system/:uuid/port-mapping/:internalPort', middleware: async (req, res) => { logger.apiReq(req) @@ -515,7 +515,7 @@ module.exports = [ }, { method: 'get', - path: '/api/v1/microservices/:uuid/port-mapping', + path: '/api/v3/microservices/:uuid/port-mapping', middleware: async (req, res) => { logger.apiReq(req) @@ -546,7 +546,7 @@ module.exports = [ }, { method: 'get', - path: '/api/v1/microservices/:uuid/volume-mapping', + path: '/api/v3/microservices/:uuid/volume-mapping', middleware: async (req, res) => { logger.apiReq(req) @@ -580,7 +580,7 @@ module.exports = [ }, { method: 'post', - path: '/api/v1/microservices/:uuid/volume-mapping', + path: '/api/v3/microservices/:uuid/volume-mapping', middleware: async (req, res) => { logger.apiReq(req) @@ -618,7 +618,7 @@ module.exports = [ }, { method: 'post', - path: '/api/v1/microservices/system/:uuid/volume-mapping', + path: '/api/v3/microservices/system/:uuid/volume-mapping', middleware: async (req, res) => { logger.apiReq(req) @@ -656,7 +656,7 @@ module.exports = [ }, { method: 'delete', - path: '/api/v1/microservices/:uuid/volume-mapping/:id', + path: '/api/v3/microservices/:uuid/volume-mapping/:id', middleware: async (req, res) => { logger.apiReq(req) @@ -694,7 +694,7 @@ module.exports = [ }, { method: 'delete', - path: '/api/v1/microservices/system/:uuid/volume-mapping/:id', + path: '/api/v3/microservices/system/:uuid/volume-mapping/:id', middleware: async (req, res) => { logger.apiReq(req) diff --git a/src/routes/registries.js b/src/routes/registries.js index f64b90827..5f80e3c60 100644 --- a/src/routes/registries.js +++ b/src/routes/registries.js @@ -20,10 +20,10 @@ const keycloak = require('../config/keycloak.js').initKeycloak() module.exports = [ { method: 'post', - path: '/api/v1/registries', + path: '/api/v3/registries', supportSubstitution: true, middleware: async (req, res) => { - logger.apiReq('POST /api/v1/registries') // don't use req as arg, because password not encrypted + logger.apiReq('POST /api/v3/registries') // don't use req as arg, because password not encrypted const successCode = constants.HTTP_CODE_CREATED const errorCodes = [ @@ -51,7 +51,7 @@ module.exports = [ }, { method: 'get', - path: '/api/v1/registries', + path: '/api/v3/registries', middleware: async (req, res) => { logger.apiReq(req) @@ -81,7 +81,7 @@ module.exports = [ }, { method: 'delete', - path: '/api/v1/registries/:id', + path: '/api/v3/registries/:id', middleware: async (req, res) => { logger.apiReq(req) @@ -115,10 +115,10 @@ module.exports = [ }, { method: 'patch', - path: '/api/v1/registries/:id', + path: '/api/v3/registries/:id', supportSubstitution: true, middleware: async (req, res) => { - logger.apiReq('PATCH /api/v1/registries') // don't use req as arg, because password not encrypted + logger.apiReq('PATCH /api/v3/registries') // don't use req as arg, because password not encrypted const successCode = constants.HTTP_CODE_NO_CONTENT const errorCodes = [ diff --git a/src/routes/router.js b/src/routes/router.js index 91b2526a8..12a64f9d2 100644 --- a/src/routes/router.js +++ b/src/routes/router.js @@ -20,7 +20,7 @@ const keycloak = require('../config/keycloak.js').initKeycloak() module.exports = [ { method: 'get', - path: '/api/v1/router', + path: '/api/v3/router', middleware: async (req, res) => { logger.apiReq(req) @@ -55,7 +55,7 @@ module.exports = [ }, { method: 'put', - path: '/api/v1/router', + path: '/api/v3/router', supportSubstitution: true, middleware: async (req, res) => { logger.apiReq(req) diff --git a/src/routes/routing.js b/src/routes/routing.js index b4ef4cba6..105e9add5 100644 --- a/src/routes/routing.js +++ b/src/routes/routing.js @@ -20,7 +20,7 @@ const keycloak = require('../config/keycloak.js').initKeycloak() module.exports = [ { method: 'get', - path: '/api/v1/routes', + path: '/api/v3/routes', middleware: async (req, res) => { logger.apiReq(req) @@ -55,7 +55,7 @@ module.exports = [ }, { method: 'get', - path: '/api/v1/routes/:appName/:name', + path: '/api/v3/routes/:appName/:name', middleware: async (req, res) => { logger.apiReq(req) @@ -90,7 +90,7 @@ module.exports = [ }, { method: 'post', - path: '/api/v1/routes', + path: '/api/v3/routes', supportSubstitution: true, middleware: async (req, res) => { logger.apiReq(req) @@ -134,7 +134,7 @@ module.exports = [ }, { method: 'patch', - path: '/api/v1/routes/:appName/:name', + path: '/api/v3/routes/:appName/:name', supportSubstitution: true, middleware: async (req, res) => { logger.apiReq(req) @@ -174,7 +174,7 @@ module.exports = [ }, { method: 'delete', - path: '/api/v1/routes/:appName/:name', + path: '/api/v3/routes/:appName/:name', middleware: async (req, res) => { logger.apiReq(req) diff --git a/src/routes/tunnel.js b/src/routes/tunnel.js index 3a3961ebf..e3021a462 100644 --- a/src/routes/tunnel.js +++ b/src/routes/tunnel.js @@ -20,9 +20,9 @@ const keycloak = require('../config/keycloak.js').initKeycloak() module.exports = [ { method: 'patch', - path: '/api/v1/iofog/:id/tunnel', + path: '/api/v3/iofog/:id/tunnel', middleware: async (req, res) => { - logger.apiReq('POST /api/v1/iofog/:id/tunnel') // don't use req as arg, because password not encrypted + logger.apiReq('POST /api/v3/iofog/:id/tunnel') // don't use req as arg, because password not encrypted const successCode = constants.HTTP_CODE_NO_CONTENT const errorCodes = [ @@ -59,7 +59,7 @@ module.exports = [ }, { method: 'get', - path: '/api/v1/iofog/:id/tunnel', + path: '/api/v3/iofog/:id/tunnel', middleware: async (req, res) => { logger.apiReq(req) diff --git a/src/routes/user.js b/src/routes/user.js index 6be5f155e..ed3bcb015 100644 --- a/src/routes/user.js +++ b/src/routes/user.js @@ -19,9 +19,9 @@ const logger = require('../logger') module.exports = [ { method: 'post', - path: '/api/v1/user/login', + path: '/api/v3/user/login', middleware: async (req, res) => { - logger.apiReq('POST /api/v1/user/login') // don't use req as arg, because password not encrypted + logger.apiReq('POST /api/v3/user/login') // don't use req as arg, because password not encrypted const successCode = constants.HTTP_CODE_SUCCESS const errorCodes = [ @@ -42,13 +42,13 @@ module.exports = [ .status(responseObject.code) .send(responseObject.body) - logger.apiRes('POST /api/v1/user/login', { args: { statusCode: responseObject.code } }) + logger.apiRes('POST /api/v3/user/login', { args: { statusCode: responseObject.code } }) // don't use req and responseObject as args, because they have password and token } }, { method: 'get', - path: '/api/v1/user/profile', + path: '/api/v3/user/profile', middleware: async (req, res) => { logger.apiReq(req) @@ -76,7 +76,7 @@ module.exports = [ }, { method: 'post', - path: '/api/v1/user/logout', + path: '/api/v3/user/logout', middleware: async (req, res) => { logger.apiReq(req) diff --git a/test/application-template-update.yaml b/test/application-template-update.yaml index fa96dcea0..5ae319646 100644 --- a/test/application-template-update.yaml +++ b/test/application-template-update.yaml @@ -1,5 +1,5 @@ kind: ApplicationTemplate -apiVersion: datasance.com/v1 +apiVersion: datasance.com/v3 metadata: name: 'app-template-from-yaml' spec: diff --git a/test/application-template.yaml b/test/application-template.yaml index 6d4dd682a..15ac7348d 100644 --- a/test/application-template.yaml +++ b/test/application-template.yaml @@ -1,5 +1,5 @@ kind: ApplicationTemplate -apiVersion: datasance.com/v1 +apiVersion: datasance.com/v3 metadata: name: 'app-template-from-yaml' spec: diff --git a/test/application-test.yaml b/test/application-test.yaml index 4c2484e26..ae1f589dd 100644 --- a/test/application-test.yaml +++ b/test/application-test.yaml @@ -1,5 +1,5 @@ kind: Application -apiVersion: datasance.com/v1 +apiVersion: datasance.com/v3 metadata: name: "healthcare-wearable-flow" spec: @@ -9,8 +9,8 @@ spec: agent: name: "{% assign agent = \"\" | findAgent | first %}{{ agent.name }}" images: - arm: "edgeworx/healthcare-heart-rate:arm-v1" - x86: "edgeworx/healthcare-heart-rate:x86-v1" + arm: "edgeworx/healthcare-heart-rate:arm-v3" + x86: "edgeworx/healthcare-heart-rate:x86-v3" container: rootHostAccess: false ports: [] diff --git a/test/application-update-test.yaml b/test/application-update-test.yaml index 6a560efce..0c7c35b8a 100644 --- a/test/application-update-test.yaml +++ b/test/application-update-test.yaml @@ -1,5 +1,5 @@ kind: Application -apiVersion: datasance.com/v1 +apiVersion: datasance.com/v3 metadata: name: "healthcare-wearable-flow" spec: @@ -9,8 +9,8 @@ spec: agent: name: "{% assign agent = \"\" | findAgent | first %}{{ agent.name }}" images: - arm: "edgeworx/healthcare-heart-rate:arm-v1" - x86: "edgeworx/healthcare-heart-rate:x86-v1" + arm: "edgeworx/healthcare-heart-rate:arm-v3" + x86: "edgeworx/healthcare-heart-rate:x86-v3" container: rootHostAccess: false ports: [] diff --git a/test/postman_collection.json b/test/postman_collection.json index 92fabe783..2a975f602 100644 --- a/test/postman_collection.json +++ b/test/postman_collection.json @@ -39,13 +39,13 @@ "raw": "{\n \"firstName\": \"John\",\n \"lastName\": \"Doe\",\n \"email\": \"user@domain.com\",\n \"password\": \"#Bugs4Fun\",\n \"subscriptionKey\": \"xxxx-xxxx-xxxx-xxxx\"\n}" }, "url": { - "raw": "{{host}}/api/v1/user/signup", + "raw": "{{host}}/api/v3/user/signup", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "user", "signup" ] @@ -83,13 +83,13 @@ "raw": "{\n \"activationCode\": \"string\"\n}" }, "url": { - "raw": "{{host}}/api/v1/user/activate", + "raw": "{{host}}/api/v3/user/activate", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "user", "activate" ] @@ -131,13 +131,13 @@ "raw": "{\n \"email\": \"user@domain.com\",\n \"password\": \"#Bugs4Fun\"\n}" }, "url": { - "raw": "{{host}}/api/v1/user/login", + "raw": "{{host}}/api/v3/user/login", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "user", "login" ] @@ -171,13 +171,13 @@ "raw": "" }, "url": { - "raw": "{{host}}/api/v1/user/logout", + "raw": "{{host}}/api/v3/user/logout", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "user", "logout" ] @@ -219,13 +219,13 @@ "raw": "{\n \"email\": \"user@domain.com\",\n \"password\": \"#Bugs4Fun\"\n}" }, "url": { - "raw": "{{host}}/api/v1/user/login", + "raw": "{{host}}/api/v3/user/login", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "user", "login" ] @@ -250,13 +250,13 @@ "method": "GET", "header": [], "url": { - "raw": "{{host}}/api/v1/user/signup/resend-activation?email=user@domain.com", + "raw": "{{host}}/api/v3/user/signup/resend-activation?email=user@domain.com", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "user", "signup", "resend-activation" @@ -297,13 +297,13 @@ } ], "url": { - "raw": "{{host}}/api/v1/user/profile", + "raw": "{{host}}/api/v3/user/profile", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "user", "profile" ] @@ -337,13 +337,13 @@ "raw": "{\n \"email\": \"user@domain.com\"\n}" }, "url": { - "raw": "{{host}}/api/v1/user/password", + "raw": "{{host}}/api/v3/user/password", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "user", "password" ] @@ -385,13 +385,13 @@ "raw": "{\n \"firstName\": \"Saeid\",\n \"lastName\": \"Rezaei\",\n \"subscriptionKey\": \"XXXX-XXXX-XXXX-XXXX\"\n}" }, "url": { - "raw": "{{host}}/api/v1/user/profile", + "raw": "{{host}}/api/v3/user/profile", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "user", "profile" ] @@ -429,13 +429,13 @@ "raw": "{\n \"oldPassword\": \"#Bugs4Fun\",\n \"newPassword\": \"#Bugs4Fun2\"\n}" }, "url": { - "raw": "{{host}}/api/v1/user/password", + "raw": "{{host}}/api/v3/user/password", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "user", "password" ] @@ -477,13 +477,13 @@ "raw": "{\n \"email\": \"user@domain.com\",\n \"password\": \"#Bugs4Fun2\"\n}" }, "url": { - "raw": "{{host}}/api/v1/user/login", + "raw": "{{host}}/api/v3/user/login", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "user", "login" ] @@ -521,13 +521,13 @@ "raw": "" }, "url": { - "raw": "{{host}}/api/v1/user/profile", + "raw": "{{host}}/api/v3/user/profile", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "user", "profile" ] @@ -582,13 +582,13 @@ "method": "GET", "header": [], "url": { - "raw": "{{host}}/api/v1/status", + "raw": "{{host}}/api/v3/status", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "status" ] } @@ -616,13 +616,13 @@ "method": "GET", "header": [], "url": { - "raw": "{{host}}/api/v1/email-activation", + "raw": "{{host}}/api/v3/email-activation", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "email-activation" ] } @@ -650,13 +650,13 @@ "method": "GET", "header": [], "url": { - "raw": "{{host}}/api/v1/fog-types", + "raw": "{{host}}/api/v3/fog-types", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "fog-types" ] } @@ -719,13 +719,13 @@ "raw": "{\n \"firstName\": \"John\",\n \"lastName\": \"Doe\",\n \"email\": \"user@domain.com\",\n \"password\": \"#Bugs4Fun\",\n \"subscriptionKey\": \"XXXX-XXXX-XXXX-XXXX\"\n}" }, "url": { - "raw": "{{host}}/api/v1/user/signup", + "raw": "{{host}}/api/v3/user/signup", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "user", "signup" ] @@ -767,13 +767,13 @@ "raw": "{\n \"email\": \"user@domain.com\",\n \"password\": \"#Bugs4Fun\"\n}" }, "url": { - "raw": "{{host}}/api/v1/user/login", + "raw": "{{host}}/api/v3/user/login", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "user", "login" ] @@ -819,13 +819,13 @@ "raw": "{\n \"name\": \"system node\",\n \"routerMode\": \"interior\",\n \"messagingPort\": 5672,\n \"edgeRouterPort\": 56722,\n \"interRouterPort\": 56721,\n \"host\": \"localhost\",\n \"isSystem\": true,\n \"location\": \"string\",\n \"latitude\": 0,\n \"longitude\": 0,\n \"description\": \"string\",\n \"dockerUrl\": \"string\",\n \"diskLimit\": 0,\n \"diskDirectory\": \"string\",\n \"memoryLimit\": 0,\n \"cpuLimit\": 0,\n \"logLimit\": 0,\n \"logDirectory\": \"string\",\n \"logFileCount\": 0,\n \"statusFrequency\": 0,\n \"changeFrequency\": 0,\n \"deviceScanFrequency\": 0,\n \"bluetoothEnabled\": false,\n \"watchdogEnabled\": true,\n \"abstractedHardwareEnabled\": false,\n \"fogType\": 1\n,\n \"host\": \"1.2.3.4\"\n}" }, "url": { - "raw": "{{host}}/api/v1/iofog", + "raw": "{{host}}/api/v3/iofog", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "iofog" ] } @@ -870,13 +870,13 @@ "raw": "{\n \"name\": \"string\",\n \"host\": \"1.2.3.4\",\n \"location\": \"string\",\n \"latitude\": 0,\n \"longitude\": 0,\n \"description\": \"string\",\n \"dockerUrl\": \"string\",\n \"diskLimit\": 0,\n \"diskDirectory\": \"string\",\n \"memoryLimit\": 0,\n \"cpuLimit\": 0,\n \"logLimit\": 0,\n \"logDirectory\": \"string\",\n \"logFileCount\": 0,\n \"statusFrequency\": 0,\n \"changeFrequency\": 0,\n \"deviceScanFrequency\": 0,\n \"bluetoothEnabled\": false,\n \"watchdogEnabled\": true,\n \"abstractedHardwareEnabled\": false,\n \"fogType\": 1\n,\n \"host\": \"1.2.3.4\"\n}" }, "url": { - "raw": "{{host}}/api/v1/iofog", + "raw": "{{host}}/api/v3/iofog", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "iofog" ] } @@ -917,13 +917,13 @@ } ], "url": { - "raw": "{{host}}/api/v1/iofog/{{node-id}}/provisioning-key", + "raw": "{{host}}/api/v3/iofog/{{node-id}}/provisioning-key", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "iofog", "{{node-id}}", "provisioning-key" @@ -964,13 +964,13 @@ "raw": "{\n\t\"type\": 1,\n\t\"key\":\"{{provisioning-key}}\"\n}" }, "url": { - "raw": "{{host}}/api/v1/agent/provision", + "raw": "{{host}}/api/v3/agent/provision", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "agent", "provision" ] @@ -1014,13 +1014,13 @@ } ], "url": { - "raw": "{{host}}/api/v1/agent/config", + "raw": "{{host}}/api/v3/agent/config", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "agent", "config" ] @@ -1059,13 +1059,13 @@ } ], "url": { - "raw": "{{host}}/api/v1/agent/image-snapshot", + "raw": "{{host}}/api/v3/agent/image-snapshot", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "agent", "image-snapshot" ] @@ -1104,13 +1104,13 @@ } ], "url": { - "raw": "{{host}}/api/v1/agent/microservices/abcedf", + "raw": "{{host}}/api/v3/agent/microservices/abcedf", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "agent", "microservices", "abcedf" @@ -1147,13 +1147,13 @@ } ], "url": { - "raw": "{{host}}/api/v1/agent/strace", + "raw": "{{host}}/api/v3/agent/strace", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "agent", "strace" ] @@ -1193,13 +1193,13 @@ "raw": "{\r\n \"info\": \"testData\"\r\n}" }, "url": { - "raw": "{{host}}/api/v1/agent/hal/hw", + "raw": "{{host}}/api/v3/agent/hal/hw", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "agent", "hal", "hw" @@ -1240,13 +1240,13 @@ "raw": "{\r\n \"info\": \"testData2\"\r\n}" }, "url": { - "raw": "{{host}}/api/v1/agent/hal/usb", + "raw": "{{host}}/api/v3/agent/hal/usb", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "agent", "hal", "usb" @@ -1290,13 +1290,13 @@ "raw": "{\r\n \"straceData\": [\r\n {\r\n \"microserviceUuid\": \"abcdef\",\r\n \"buffer\": \"test\"\r\n }\r\n ]\r\n}" }, "url": { - "raw": "{{host}}/api/v1/agent/strace", + "raw": "{{host}}/api/v3/agent/strace", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "agent", "strace" ] @@ -1336,13 +1336,13 @@ "raw": "{\r\n \"daemonStatus\": \"RUNNING\",\r\n \"daemonOperatingDuration\": 15,\r\n \"daemonLastStart\": 25,\r\n \"memoryUsage\": 16,\r\n \"diskUsage\": 14,\r\n \"cpuUsage\": 17,\r\n \"memoryViolation\": true,\r\n \"diskViolation\": true,\r\n \"cpuViolation\": true,\r\n \"microserviceStatus\": \"[]\",\r\n \"repositoryCount\": 5,\r\n \"repositoryStatus\": \"RUNNING\",\r\n \"systemTime\": 155,\r\n \"lastStatusTime\": 166,\r\n \"ipAddress\": \"192.168.0.1\",\r\n \"processedMessages\": 255,\r\n \"microserviceMessageCounts\": \"counts\",\r\n \"messageSpeed\": 52,\r\n \"lastCommandTime\": 57,\r\n \"tunnelStatus\": \"on\",\r\n \"version\": \"1\",\r\n \"isReadyToUpgrade\": true,\r\n \"isReadyToRollback\": true\r\n}" }, "url": { - "raw": "{{host}}/api/v1/agent/status", + "raw": "{{host}}/api/v3/agent/status", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "agent", "status" ] @@ -1385,13 +1385,13 @@ "raw": "{\r\n \"info\": \"testData2\"\r\n}" }, "url": { - "raw": "{{host}}/api/v1/agent/image-snapshot", + "raw": "{{host}}/api/v3/agent/image-snapshot", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "agent", "image-snapshot" ] @@ -1438,13 +1438,13 @@ "raw": "{\n \"name\": \"application-msvc-name\",\n \"isSystem\": false,\n \"description\": \"Description\",\n \"isActivated\": true,\n \"microservices\": [\n {\n \"name\": \"msvc-1\",\n \"config\": \"string\",\n \"images\": [\n {\n \"containerImage\": \"hello-world\",\n \"fogTypeId\": 1\n },\n {\n \"containerImage\": \"hello-world\",\n \"fogTypeId\": 2\n }\n ],\n \"registryId\": 1,\n \"application\": \"{{application-name-2}}\",\n \"iofogUuid\": \"{{node-id}}\",\n \"rootHostAccess\": true,\n \"logSize\": 0,\n \"volumeMappings\": [\n {\n \"hostDestination\": \"/var/dest\",\n \"containerDestination\": \"/var/dest\",\n \"accessMode\": \"rw\"\n }\n ],\n \"ports\": [{\n \"internal\": 81,\n \"external\": 5001\n }, {\n \"internal\": 80,\n \"external\": 5002,\n \"protocol\": \"udp\"\n }],\n \"routes\": [],\n \"env\": [\n {\n \"key\": \"KEY1\",\n \"value\": \"value1\"\n },\n {\n \"key\": \"KEY2\",\n \"value\": \"value2\"\n }\n ],\n \"cmd\": [\n \"test\",\n \"--arg1\",\n \"--arg2\"\n ]\n },\n {\n \"name\": \"msvc-2\",\n \"config\": \"string\",\n \"images\": [\n {\n \"containerImage\": \"hello-world\",\n \"fogTypeId\": 1\n },\n {\n \"containerImage\": \"hello-world\",\n \"fogTypeId\": 2\n }\n ],\n \"registryId\": 1,\n \"application\": \"{{application-name-2}}\",\n \"iofogUuid\": \"{{node-id}}\",\n \"rootHostAccess\": true,\n \"logSize\": 0,\n \"volumeMappings\": [\n {\n \"hostDestination\": \"/var/dest\",\n \"containerDestination\": \"/var/dest\",\n \"accessMode\": \"rw\"\n }\n ],\n \"ports\": [],\n \"routes\": [],\n \"env\": [\n {\n \"key\": \"KEY1\",\n \"value\": \"value1\"\n },\n {\n \"key\": \"KEY2\",\n \"value\": \"value2\"\n }\n ],\n \"cmd\": [\n \"test\",\n \"--arg1\",\n \"--arg2\"\n ]\n },\n {\n \"name\": \"msvc-3\",\n \"config\": \"string\",\n \"images\": [\n {\n \"containerImage\": \"hello-world\",\n \"fogTypeId\": 1\n },\n {\n \"containerImage\": \"hello-world\",\n \"fogTypeId\": 2\n }\n ],\n \"registryId\": 1,\n \"application\": \"{{application-name-2}}\",\n \"iofogUuid\": \"{{node-id}}\",\n \"rootHostAccess\": true,\n \"logSize\": 0,\n \"volumeMappings\": [\n {\n \"hostDestination\": \"/var/dest\",\n \"containerDestination\": \"/var/dest\",\n \"accessMode\": \"rw\"\n }\n ],\n \"ports\": [],\n \"routes\": [],\n \"env\": [\n {\n \"key\": \"KEY1\",\n \"value\": \"value1\"\n },\n {\n \"key\": \"KEY2\",\n \"value\": \"value2\"\n }\n ],\n \"cmd\": [\n \"test\",\n \"--arg1\",\n \"--arg2\"\n ]\n }\n ],\n \"routes\": [\n {\n \"from\": \"msvc-1\",\n \"to\": \"msvc-2\",\n \"name\": \"m1-2\"\n }\n ]\n}" }, "url": { - "raw": "{{host}}/api/v1/application", + "raw": "{{host}}/api/v3/application", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "application" ] } @@ -1483,13 +1483,13 @@ "raw": "{\r\n \"networkInterface\": \"wlan0\",\r\n \"dockerUrl\": \"http://google.com\",\r\n \"diskLimit\": 15,\r\n \"diskDirectory\": \"testDirectoryPath\",\r\n \"memoryLimit\": 150,\r\n \"cpuLimit\": 17,\r\n \"logLimit\": 16,\r\n \"logDirectory\": \"testLogPath\",\r\n \"logFileCount\": 7,\r\n \"statusFrequency\": 35,\r\n \"changeFrequency\": 36,\r\n \"deviceScanFrequency\": 37,\r\n \"watchdogEnabled\": true,\r\n \"latitude\": 22,\r\n \"longitude\": 66,\r\n \"gpsMode\": \"manual\",\r\n \"dockerPruningFrequency\": 35,\r\n \"availableDiskThreshold\": 95,\r\n \"logLevel\": \"INFO\"\r\n}" }, "url": { - "raw": "{{host}}/api/v1/agent/config", + "raw": "{{host}}/api/v3/agent/config", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "agent", "config" ] @@ -1531,13 +1531,13 @@ } ], "url": { - "raw": "{{host}}/api/v1/agent/config/changes", + "raw": "{{host}}/api/v3/agent/config/changes", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "agent", "config", "changes" @@ -1577,13 +1577,13 @@ } ], "url": { - "raw": "{{host}}/api/v1/agent/tunnel", + "raw": "{{host}}/api/v3/agent/tunnel", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "agent", "tunnel" ] @@ -1622,13 +1622,13 @@ } ], "url": { - "raw": "{{host}}/api/v1/agent/registries", + "raw": "{{host}}/api/v3/agent/registries", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "agent", "registries" ] @@ -1667,13 +1667,13 @@ } ], "url": { - "raw": "{{host}}/api/v1/agent/version", + "raw": "{{host}}/api/v3/agent/version", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "agent", "version" ] @@ -1720,13 +1720,13 @@ } ], "url": { - "raw": "{{host}}/api/v1/agent/microservices", + "raw": "{{host}}/api/v3/agent/microservices", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "agent", "microservices" ] @@ -1766,13 +1766,13 @@ "raw": "{\n\t\"type\": 1,\n\t\"key\":\"testtesttest\"\n}" }, "url": { - "raw": "{{host}}/api/v1/iofog/{{system-node-id}}", + "raw": "{{host}}/api/v3/iofog/{{system-node-id}}", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "iofog", "{{system-node-id}}" ] @@ -1812,13 +1812,13 @@ "raw": "" }, "url": { - "raw": "{{host}}/api/v1/iofog/{{node-id}}", + "raw": "{{host}}/api/v3/iofog/{{node-id}}", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "iofog", "{{node-id}}" ] @@ -1856,13 +1856,13 @@ "raw": "" }, "url": { - "raw": "{{host}}/api/v1/user/profile", + "raw": "{{host}}/api/v3/user/profile", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "user", "profile" ] @@ -1926,13 +1926,13 @@ "raw": "{\n \"firstName\": \"John\",\n \"lastName\": \"Doe\",\n \"email\": \"user@domain.com\",\n \"password\": \"#Bugs4Fun\",\n \"subscriptionKey\": \"XXXX-XXXX-XXXX-XXXX\"\n}" }, "url": { - "raw": "{{host}}/api/v1/user/signup", + "raw": "{{host}}/api/v3/user/signup", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "user", "signup" ] @@ -1974,13 +1974,13 @@ "raw": "{\n \"email\": \"user@domain.com\",\n \"password\": \"#Bugs4Fun\"\n}" }, "url": { - "raw": "{{host}}/api/v1/user/login", + "raw": "{{host}}/api/v3/user/login", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "user", "login" ] @@ -2026,13 +2026,13 @@ "raw": "{\n \"name\": \"system node\",\n \"routerMode\": \"interior\",\n \"messagingPort\": 5672,\n \"edgeRouterPort\": 56722,\n \"interRouterPort\": 56721,\n \"host\": \"localhost\",\n \"isSystem\": true,\n \"location\": \"string\",\n \"latitude\": 0,\n \"longitude\": 0,\n \"description\": \"string\",\n \"dockerUrl\": \"string\",\n \"diskLimit\": 0,\n \"diskDirectory\": \"string\",\n \"memoryLimit\": 0,\n \"cpuLimit\": 0,\n \"logLimit\": 0,\n \"logDirectory\": \"string\",\n \"logFileCount\": 0,\n \"statusFrequency\": 0,\n \"changeFrequency\": 0,\n \"deviceScanFrequency\": 0,\n \"bluetoothEnabled\": false,\n \"watchdogEnabled\": true,\n \"abstractedHardwareEnabled\": false,\n \"fogType\": 1\n,\n \"host\": \"1.2.3.4\"\n}" }, "url": { - "raw": "{{host}}/api/v1/iofog", + "raw": "{{host}}/api/v3/iofog", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "iofog" ] } @@ -2077,13 +2077,13 @@ "raw": "{\n \"name\": \"string\",\n \"host\": \"1.2.3.4\",\n \"location\": \"string\",\n \"latitude\": 0,\n \"longitude\": 0,\n \"description\": \"string\",\n \"dockerUrl\": \"string\",\n \"diskLimit\": 0,\n \"diskDirectory\": \"string\",\n \"memoryLimit\": 0,\n \"cpuLimit\": 0,\n \"logLimit\": 0,\n \"logDirectory\": \"string\",\n \"logFileCount\": 0,\n \"statusFrequency\": 0,\n \"changeFrequency\": 0,\n \"deviceScanFrequency\": 0,\n \"bluetoothEnabled\": false,\n \"watchdogEnabled\": true,\n \"abstractedHardwareEnabled\": false,\n \"fogType\": 1\n,\n \"host\": \"1.2.3.4\"\n}" }, "url": { - "raw": "{{host}}/api/v1/iofog", + "raw": "{{host}}/api/v3/iofog", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "iofog" ] } @@ -2127,13 +2127,13 @@ "raw": "{\n \"name\": \"application-name\",\n \"isSystem\": false,\n \"description\": \"Description\",\n \"isActivated\": true\n}" }, "url": { - "raw": "{{host}}/api/v1/application", + "raw": "{{host}}/api/v3/application", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "application" ] } @@ -2179,13 +2179,13 @@ "raw": "{\n \"name\": \"application-msvc-name\",\n \"isSystem\": false,\n \"description\": \"Description\",\n \"isActivated\": true,\n \"microservices\": [\n {\n \"name\": \"msvc-1\",\n \"config\": \"string\",\n \"images\": [\n {\n \"containerImage\": \"hello-world\",\n \"fogTypeId\": 1\n },\n {\n \"containerImage\": \"hello-world\",\n \"fogTypeId\": 2\n }\n ],\n \"registryId\": 1,\n \"application\": \"{{application-name-2}}\",\n \"iofogUuid\": \"{{node-id}}\",\n \"rootHostAccess\": true,\n \"logSize\": 0,\n \"volumeMappings\": [\n {\n \"hostDestination\": \"/var/dest\",\n \"containerDestination\": \"/var/dest\",\n \"accessMode\": \"rw\"\n }\n ],\n \"ports\": [],\n \"routes\": [],\n \"env\": [\n {\n \"key\": \"KEY1\",\n \"value\": \"value1\"\n },\n {\n \"key\": \"KEY2\",\n \"value\": \"value2\"\n }\n ],\n \"cmd\": [\n \"test\",\n \"--arg1\",\n \"--arg2\"\n ]\n },\n {\n \"name\": \"msvc-2\",\n \"config\": \"string\",\n \"images\": [\n {\n \"containerImage\": \"hello-world\",\n \"fogTypeId\": 1\n },\n {\n \"containerImage\": \"hello-world\",\n \"fogTypeId\": 2\n }\n ],\n \"registryId\": 1,\n \"application\": \"{{application-name-2}}\",\n \"iofogUuid\": \"{{node-id}}\",\n \"rootHostAccess\": true,\n \"logSize\": 0,\n \"volumeMappings\": [\n {\n \"hostDestination\": \"/var/dest\",\n \"containerDestination\": \"/var/dest\",\n \"accessMode\": \"rw\"\n }\n ],\n \"ports\": [],\n \"routes\": [],\n \"env\": [\n {\n \"key\": \"KEY1\",\n \"value\": \"value1\"\n },\n {\n \"key\": \"KEY2\",\n \"value\": \"value2\"\n }\n ],\n \"cmd\": [\n \"test\",\n \"--arg1\",\n \"--arg2\"\n ]\n },\n {\n \"name\": \"msvc-3\",\n \"config\": \"string\",\n \"images\": [\n {\n \"containerImage\": \"hello-world\",\n \"fogTypeId\": 1\n },\n {\n \"containerImage\": \"hello-world\",\n \"fogTypeId\": 2\n }\n ],\n \"registryId\": 1,\n \"application\": \"{{application-name-2}}\",\n \"iofogUuid\": \"{{node-id}}\",\n \"rootHostAccess\": true,\n \"logSize\": 0,\n \"volumeMappings\": [\n {\n \"hostDestination\": \"/var/dest\",\n \"containerDestination\": \"/var/dest\",\n \"accessMode\": \"rw\"\n }\n ],\n \"ports\": [],\n \"routes\": [],\n \"env\": [\n {\n \"key\": \"KEY1\",\n \"value\": \"value1\"\n },\n {\n \"key\": \"KEY2\",\n \"value\": \"value2\"\n }\n ],\n \"cmd\": [\n \"test\",\n \"--arg1\",\n \"--arg2\"\n ]\n }\n ],\n \"routes\": [\n {\n \"from\": \"msvc-1\",\n \"to\": \"msvc-2\",\n \"name\": \"m1-2\"\n }\n ]\n}" }, "url": { - "raw": "{{host}}/api/v1/application", + "raw": "{{host}}/api/v3/application", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "application" ] } @@ -2236,13 +2236,13 @@ ] }, "url": { - "raw": "{{host}}/api/v1/application/yaml", + "raw": "{{host}}/api/v3/application/yaml", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "application", "yaml" ] @@ -2282,13 +2282,13 @@ } ], "url": { - "raw": "{{host}}/api/v1/routes/{{application-msvc-name}}/{{application-route-name}}", + "raw": "{{host}}/api/v3/routes/{{application-msvc-name}}/{{application-route-name}}", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "routes", "{{application-msvc-name}}", "{{application-route-name}}" @@ -2330,13 +2330,13 @@ "raw": "{\n \"routes\": [\n {\n \"from\": \"msvc-1\",\n \"to\": \"msvc-3\",\n \"name\": \"m1-2\"\n },\n {\n \"from\": \"msvc-1\",\n \"to\": \"msvc-1\",\n \"name\": \"m1-1\"\n }\n ]\n}" }, "url": { - "raw": "{{host}}/api/v1/application/{{application-msvc-name}}", + "raw": "{{host}}/api/v3/application/{{application-msvc-name}}", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "application", "{{application-msvc-name}}" ] @@ -2377,13 +2377,13 @@ } ], "url": { - "raw": "{{host}}/api/v1/application/{{application-msvc-name}}", + "raw": "{{host}}/api/v3/application/{{application-msvc-name}}", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "application", "{{application-msvc-name}}" ] @@ -2423,13 +2423,13 @@ } ], "url": { - "raw": "{{host}}/api/v1/routes/{{application-msvc-name}}/{{application-route-name}}", + "raw": "{{host}}/api/v3/routes/{{application-msvc-name}}/{{application-route-name}}", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "routes", "{{application-msvc-name}}", "{{application-route-name}}" @@ -2479,13 +2479,13 @@ } ], "url": { - "raw": "{{host}}/api/v1/microservices?application={{application-msvc-name}}", + "raw": "{{host}}/api/v3/microservices?application={{application-msvc-name}}", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "microservices" ], "query": [ @@ -2529,13 +2529,13 @@ "raw": "{\n \"description\": \"Description\",\n \"microservices\": [\n {\n \"name\": \"msvc-1\",\n \"config\": \"string\",\n \"images\": [\n {\n \"containerImage\": \"hello-world\",\n \"fogTypeId\": 1\n },\n {\n \"containerImage\": \"hello-world\",\n \"fogTypeId\": 2\n }\n ],\n \"registryId\": 1,\n \"application\": \"{{application-name-2}}\",\n \"iofogUuid\": \"{{node-id}}\",\n \"rootHostAccess\": true,\n \"logSize\": 0,\n \"volumeMappings\": [\n {\n \"hostDestination\": \"/var/dest\",\n \"containerDestination\": \"/var/dest\",\n \"accessMode\": \"rw\"\n }\n ],\n \"ports\": [],\n \"routes\": [],\n \"env\": [\n {\n \"key\": \"KEY1\",\n \"value\": \"value1\"\n },\n {\n \"key\": \"KEY2\",\n \"value\": \"value2\"\n }\n ],\n \"cmd\": [\n \"test\",\n \"--arg1\",\n \"--arg2\"\n ]\n },\n {\n \"name\": \"msvc-2\",\n \"config\": \"string\",\n \"images\": [\n {\n \"containerImage\": \"hello-world\",\n \"fogTypeId\": 1\n },\n {\n \"containerImage\": \"hello-world\",\n \"fogTypeId\": 2\n }\n ],\n \"registryId\": 1,\n \"application\": \"{{application-name-2}}\",\n \"iofogUuid\": \"{{node-id}}\",\n \"rootHostAccess\": true,\n \"logSize\": 0,\n \"volumeMappings\": [\n {\n \"hostDestination\": \"/var/dest\",\n \"containerDestination\": \"/var/dest\",\n \"accessMode\": \"rw\"\n }\n ],\n \"ports\": [],\n \"routes\": [],\n \"env\": [\n {\n \"key\": \"KEY1\",\n \"value\": \"value1\"\n },\n {\n \"key\": \"KEY2\",\n \"value\": \"value2\"\n }\n ],\n \"cmd\": [\n \"test\",\n \"--arg1\",\n \"--arg2\"\n ]\n }\n ]\n}" }, "url": { - "raw": "{{host}}/api/v1/application/{{application-msvc-name}}", + "raw": "{{host}}/api/v3/application/{{application-msvc-name}}", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "application", "{{application-msvc-name}}" ] @@ -2580,13 +2580,13 @@ ] }, "url": { - "raw": "{{host}}/api/v1/application/yaml/{{application-yaml-name}}", + "raw": "{{host}}/api/v3/application/yaml/{{application-yaml-name}}", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "application", "yaml", "{{application-yaml-name}}" @@ -2645,13 +2645,13 @@ } ], "url": { - "raw": "{{host}}/api/v1/microservices?application={{application-yaml-name}}", + "raw": "{{host}}/api/v3/microservices?application={{application-yaml-name}}", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "microservices" ], "query": [ @@ -2705,13 +2705,13 @@ } ], "url": { - "raw": "{{host}}/api/v1/microservices?application={{application-msvc-name}}", + "raw": "{{host}}/api/v3/microservices?application={{application-msvc-name}}", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "microservices" ], "query": [ @@ -2755,13 +2755,13 @@ } ], "url": { - "raw": "{{host}}/api/v1/application", + "raw": "{{host}}/api/v3/application", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "application" ] } @@ -2799,13 +2799,13 @@ } ], "url": { - "raw": "{{host}}/api/v1/application/{{application-name}}", + "raw": "{{host}}/api/v3/application/{{application-name}}", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "application", "{{application-name}}" ] @@ -2845,13 +2845,13 @@ "raw": "{\n \"name\": \"application-name-22\",\n \"isSystem\": true,\n \"description\": \"Description\",\n \"isActivated\": true\n}" }, "url": { - "raw": "{{host}}/api/v1/application/{{application-name}}", + "raw": "{{host}}/api/v3/application/{{application-name}}", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "application", "{{application-name}}" ] @@ -2890,13 +2890,13 @@ } ], "url": { - "raw": "{{host}}/api/v1/application", + "raw": "{{host}}/api/v3/application", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "application" ] } @@ -2934,13 +2934,13 @@ "raw": "" }, "url": { - "raw": "{{host}}/api/v1/application/{{application-name}}", + "raw": "{{host}}/api/v3/application/{{application-name}}", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "application", "{{application-name}}" ] @@ -2979,13 +2979,13 @@ "raw": "" }, "url": { - "raw": "{{host}}/api/v1/application/{{application-msvc-name}}", + "raw": "{{host}}/api/v3/application/{{application-msvc-name}}", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "application", "{{application-msvc-name}}" ] @@ -3024,13 +3024,13 @@ "raw": "" }, "url": { - "raw": "{{host}}/api/v1/application/{{application-yaml-name}}", + "raw": "{{host}}/api/v3/application/{{application-yaml-name}}", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "application", "{{application-yaml-name}}" ] @@ -3069,13 +3069,13 @@ } ], "url": { - "raw": "{{host}}/api/v1/application", + "raw": "{{host}}/api/v3/application", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "application" ] } @@ -3116,13 +3116,13 @@ } ], "url": { - "raw": "{{host}}/api/v1/microservices", + "raw": "{{host}}/api/v3/microservices", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "microservices" ] } @@ -3156,13 +3156,13 @@ } ], "url": { - "raw": "{{host}}/api/v1/route/{{application-route-name}}", + "raw": "{{host}}/api/v3/route/{{application-route-name}}", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "route", "{{application-route-name}}" ] @@ -3202,13 +3202,13 @@ "raw": "{\n\t\"type\": 1,\n\t\"key\":\"testtesttest\"\n}" }, "url": { - "raw": "{{host}}/api/v1/iofog/{{system-node-id}}", + "raw": "{{host}}/api/v3/iofog/{{system-node-id}}", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "iofog", "{{system-node-id}}" ] @@ -3248,13 +3248,13 @@ "raw": "" }, "url": { - "raw": "{{host}}/api/v1/iofog/{{node-id}}", + "raw": "{{host}}/api/v3/iofog/{{node-id}}", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "iofog", "{{node-id}}" ] @@ -3292,13 +3292,13 @@ "raw": "" }, "url": { - "raw": "{{host}}/api/v1/user/profile", + "raw": "{{host}}/api/v3/user/profile", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "user", "profile" ] @@ -3362,13 +3362,13 @@ "raw": "{\n \"firstName\": \"John\",\n \"lastName\": \"Doe\",\n \"email\": \"user@domain.com\",\n \"password\": \"#Bugs4Fun\",\n \"subscriptionKey\": \"XXXX-XXXX-XXXX-XXXX\"\n }" }, "url": { - "raw": "{{host}}/api/v1/user/signup", + "raw": "{{host}}/api/v3/user/signup", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "user", "signup" ] @@ -3410,13 +3410,13 @@ "raw": "{\n \"email\": \"user@domain.com\",\n \"password\": \"#Bugs4Fun\"\n}" }, "url": { - "raw": "{{host}}/api/v1/user/login", + "raw": "{{host}}/api/v3/user/login", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "user", "login" ] @@ -3462,13 +3462,13 @@ "raw": "{\n \"name\": \"system node\",\n \"routerMode\": \"interior\",\n \"messagingPort\": 5672,\n \"edgeRouterPort\": 56722,\n \"interRouterPort\": 56721,\n \"host\": \"localhost\",\n \"isSystem\": true,\n \"location\": \"string\",\n \"latitude\": 0,\n \"longitude\": 0,\n \"description\": \"string\",\n \"dockerUrl\": \"string\",\n \"diskLimit\": 0,\n \"diskDirectory\": \"string\",\n \"memoryLimit\": 0,\n \"cpuLimit\": 0,\n \"logLimit\": 0,\n \"logDirectory\": \"string\",\n \"logFileCount\": 0,\n \"statusFrequency\": 0,\n \"changeFrequency\": 0,\n \"deviceScanFrequency\": 0,\n \"bluetoothEnabled\": false,\n \"watchdogEnabled\": true,\n \"abstractedHardwareEnabled\": false,\n \"fogType\": 1\n,\n \"host\": \"1.2.3.4\"\n}" }, "url": { - "raw": "{{host}}/api/v1/iofog", + "raw": "{{host}}/api/v3/iofog", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "iofog" ] } @@ -3513,13 +3513,13 @@ "raw": "{\n \"name\": \"string\",\n \"host\": \"1.2.3.4\",\n \"location\": \"string\",\n \"latitude\": 0,\n \"longitude\": 0,\n \"description\": \"string\",\n \"dockerUrl\": \"string\",\n \"diskLimit\": 0,\n \"diskDirectory\": \"string\",\n \"memoryLimit\": 0,\n \"cpuLimit\": 0,\n \"logLimit\": 0,\n \"logDirectory\": \"string\",\n \"logFileCount\": 0,\n \"statusFrequency\": 0,\n \"changeFrequency\": 0,\n \"deviceScanFrequency\": 0,\n \"bluetoothEnabled\": false,\n \"watchdogEnabled\": true,\n \"abstractedHardwareEnabled\": false,\n \"fogType\": 1\n,\n \"host\": \"1.2.3.4\"\n}" }, "url": { - "raw": "{{host}}/api/v1/iofog", + "raw": "{{host}}/api/v3/iofog", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "iofog" ] } @@ -3567,13 +3567,13 @@ "raw": "{\n \"name\": \"application-template-name\",\n \"variables\": [\n {\n \"key\": \"agent-1-name\",\n \"description\": \"Agent name for msvc-1\"\n },\n {\n \"key\": \"env-value-1\",\n \"description\": \"ENV variable value for KEY1\"\n },\n {\n \"key\": \"env-value-2\",\n \"description\": \"ENV variable value for KEY2\",\n \"defaultValue\": \"test42\"\n }\n ],\n \"application\": {\n \"microservices\": [\n {\n \"name\": \"msvc-1\",\n \"config\": \"string\",\n \"images\": [\n {\n \"containerImage\": \"hello-world\",\n \"fogTypeId\": 1\n },\n {\n \"containerImage\": \"hello-world\",\n \"fogTypeId\": 2\n }\n ],\n \"registryId\": 1,\n \"agentName\": \"{{ agent-1-name }}\",\n \"rootHostAccess\": true,\n \"logSize\": 0,\n \"volumeMappings\": [\n {\n \"hostDestination\": \"/var/dest\",\n \"containerDestination\": \"/var/dest\",\n \"accessMode\": \"rw\"\n }\n ],\n \"ports\": [],\n \"routes\": [],\n \"env\": [\n {\n \"key\": \"KEY1\",\n \"value\": \"{{ env-value-1 }}\"\n },\n {\n \"key\": \"KEY2\",\n \"value\": \"{{ env-value-2 }}\"\n }\n ],\n \"cmd\": [\n \"test\",\n \"--arg1\",\n \"--arg2\"\n ]\n },\n {\n \"name\": \"msvc-2\",\n \"config\": \"string\",\n \"images\": [\n {\n \"containerImage\": \"hello-world\",\n \"fogTypeId\": 1\n },\n {\n \"containerImage\": \"hello-world\",\n \"fogTypeId\": 2\n }\n ],\n \"registryId\": 1,\n \"application\": \"{{application-name-2}}\",\n \"iofogUuid\": \"{{node-id}}\",\n \"rootHostAccess\": true,\n \"logSize\": 0,\n \"volumeMappings\": [\n {\n \"hostDestination\": \"/var/dest\",\n \"containerDestination\": \"/var/dest\",\n \"accessMode\": \"rw\"\n }\n ],\n \"ports\": [],\n \"routes\": [],\n \"env\": [\n {\n \"key\": \"KEY1\",\n \"value\": \"value1\"\n },\n {\n \"key\": \"KEY2\",\n \"value\": \"value2\"\n }\n ],\n \"cmd\": [\n \"test\",\n \"--arg1\",\n \"--arg2\"\n ]\n },\n {\n \"name\": \"msvc-3\",\n \"config\": \"string\",\n \"images\": [\n {\n \"containerImage\": \"hello-world\",\n \"fogTypeId\": 1\n },\n {\n \"containerImage\": \"hello-world\",\n \"fogTypeId\": 2\n }\n ],\n \"registryId\": 1,\n \"application\": \"{{application-name-2}}\",\n \"iofogUuid\": \"{{node-id}}\",\n \"rootHostAccess\": true,\n \"logSize\": 0,\n \"volumeMappings\": [\n {\n \"hostDestination\": \"/var/dest\",\n \"containerDestination\": \"/var/dest\",\n \"accessMode\": \"rw\"\n }\n ],\n \"ports\": [],\n \"routes\": [],\n \"env\": [\n {\n \"key\": \"KEY1\",\n \"value\": \"value1\"\n },\n {\n \"key\": \"KEY2\",\n \"value\": \"value2\"\n }\n ],\n \"cmd\": [\n \"test\",\n \"--arg1\",\n \"--arg2\"\n ]\n }\n ],\n \"routes\": [\n {\n \"from\": \"msvc-1\",\n \"to\": \"msvc-2\",\n \"name\": \"m1-2\"\n }\n ]\n }\n}" }, "url": { - "raw": "{{host}}/api/v1/applicationTemplate", + "raw": "{{host}}/api/v3/applicationTemplate", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "applicationTemplate" ] } @@ -3627,13 +3627,13 @@ ] }, "url": { - "raw": "{{host}}/api/v1/applicationTemplate/yaml", + "raw": "{{host}}/api/v3/applicationTemplate/yaml", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "applicationTemplate", "yaml" ] @@ -3673,13 +3673,13 @@ "raw": "{\n \"variables\": [\n {\n \"key\": \"agent-1-name\",\n \"description\": \"Agent name for msvc-1\"\n },\n {\n \"key\": \"env-value-1\",\n \"description\": \"ENV variable value for KEY1\"\n },\n {\n \"key\": \"env-value-2\",\n \"description\": \"ENV variable value for KEY2\",\n \"defaultValue\": \"test42\"\n }\n ],\n \"application\": {\n \"microservices\": [\n {\n \"name\": \"msvc-1\",\n \"config\": \"string\",\n \"images\": [\n {\n \"containerImage\": \"hello-world\",\n \"fogTypeId\": 1\n },\n {\n \"containerImage\": \"hello-world\",\n \"fogTypeId\": 2\n }\n ],\n \"registryId\": 1,\n \"agentName\": \"{{ agent-1-name }}\",\n \"rootHostAccess\": true,\n \"logSize\": 0,\n \"volumeMappings\": [\n {\n \"hostDestination\": \"/var/dest\",\n \"containerDestination\": \"/var/dest\",\n \"accessMode\": \"rw\"\n }\n ],\n \"ports\": [],\n \"routes\": [],\n \"env\": [\n {\n \"key\": \"KEY1\",\n \"value\": \"{{ env-value-1 }}\"\n },\n {\n \"key\": \"KEY2\",\n \"value\": \"{{ env-value-2 }}\"\n }\n ],\n \"cmd\": [\n \"test\",\n \"--arg1\",\n \"--arg2\"\n ]\n },\n {\n \"name\": \"msvc-2\",\n \"config\": \"string\",\n \"images\": [\n {\n \"containerImage\": \"hello-world\",\n \"fogTypeId\": 1\n },\n {\n \"containerImage\": \"hello-world\",\n \"fogTypeId\": 2\n }\n ],\n \"registryId\": 1,\n \"application\": \"{{application-name-2}}\",\n \"iofogUuid\": \"{{node-id}}\",\n \"rootHostAccess\": true,\n \"logSize\": 0,\n \"volumeMappings\": [\n {\n \"hostDestination\": \"/var/dest\",\n \"containerDestination\": \"/var/dest\",\n \"accessMode\": \"rw\"\n }\n ],\n \"ports\": [],\n \"routes\": [],\n \"env\": [\n {\n \"key\": \"KEY1\",\n \"value\": \"value1\"\n },\n {\n \"key\": \"KEY2\",\n \"value\": \"value2\"\n }\n ],\n \"cmd\": [\n \"test\",\n \"--arg1\",\n \"--arg2\"\n ]\n }\n ],\n \"routes\": [\n {\n \"from\": \"msvc-1\",\n \"to\": \"msvc-2\",\n \"name\": \"m1-2\"\n }\n ]\n }\n}" }, "url": { - "raw": "{{host}}/api/v1/applicationTemplate/{{application-template-name}}", + "raw": "{{host}}/api/v3/applicationTemplate/{{application-template-name}}", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "applicationTemplate", "{{application-template-name}}" ] @@ -3725,13 +3725,13 @@ ] }, "url": { - "raw": "{{host}}/api/v1/applicationTemplate/yaml/{{application-template-from-yaml-name}}", + "raw": "{{host}}/api/v3/applicationTemplate/yaml/{{application-template-from-yaml-name}}", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "applicationTemplate", "yaml", "{{application-template-from-yaml-name}}" @@ -3774,13 +3774,13 @@ "raw": "{\n \"name\": \"application-template-22\",\n \"description\": \"Description\"\n}" }, "url": { - "raw": "{{host}}/api/v1/applicationTemplate/{{application-template-name}}", + "raw": "{{host}}/api/v3/applicationTemplate/{{application-template-name}}", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "applicationTemplate", "{{application-template-name}}" ] @@ -3822,13 +3822,13 @@ "raw": "{\n \"name\": \"application-template-from-yaml-22\",\n \"description\": \"Description\"\n}" }, "url": { - "raw": "{{host}}/api/v1/applicationTemplate/{{application-template-from-yaml-name}}", + "raw": "{{host}}/api/v3/applicationTemplate/{{application-template-from-yaml-name}}", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "applicationTemplate", "{{application-template-from-yaml-name}}" ] @@ -3867,13 +3867,13 @@ } ], "url": { - "raw": "{{host}}/api/v1/applicationTemplates", + "raw": "{{host}}/api/v3/applicationTemplates", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "applicationTemplates" ] } @@ -3920,13 +3920,13 @@ } ], "url": { - "raw": "{{host}}/api/v1/applicationTemplate/{{application-template-from-yaml-name}}", + "raw": "{{host}}/api/v3/applicationTemplate/{{application-template-from-yaml-name}}", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "applicationTemplate", "{{application-template-from-yaml-name}}" ] @@ -3975,13 +3975,13 @@ "raw": "{\n \"name\": \"application-name-2\",\n \"template\": {\n \"name\": \"{{application-template-from-yaml-name}}\",\n \"variables\": [\n {\n \"key\": \"agent-1-name\",\n \"value\": \"string\"\n },\n {\n \"key\": \"env-value-1\",\n \"value\": \"12345\"\n },\n {\n \"key\": \"agent-2-name\",\n \"value\": \"string\"\n }\n ]\n },\n \"isSystem\": false,\n \"isActivated\": true,\n \"description\": \"new application from template\"\n}" }, "url": { - "raw": "{{host}}/api/v1/application", + "raw": "{{host}}/api/v3/application", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "application" ] } @@ -4025,13 +4025,13 @@ } ], "url": { - "raw": "{{host}}/api/v1/application/{{application-name}}", + "raw": "{{host}}/api/v3/application/{{application-name}}", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "application", "{{application-name}}" ] @@ -4053,9 +4053,9 @@ "tests[\"Response validation passed\"] = data.hasOwnProperty('uuid') && data.name;", "", "if (tests[\"Response validation passed\"]) {", - " const env1 = data.env.find(e => e.key === \"KEY1\")", + " const env3 = data.env.find(e => e.key === \"KEY1\")", " const env2 = data.env.find(e => e.key === \"KEY2\")", - " tests[\"Env variable were parsed properly\"] = env1.value === \"12345\" && env2.value === \"test42\";", + " tests[\"Env variable were parsed properly\"] = env3.value === \"12345\" && env2.value === \"test42\";", "}" ], "type": "text/javascript" @@ -4076,13 +4076,13 @@ } ], "url": { - "raw": "{{host}}/api/v1/microservices/{{application-msvc-uuid}}", + "raw": "{{host}}/api/v3/microservices/{{application-msvc-uuid}}", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "microservices", "{{application-msvc-uuid}}" ] @@ -4121,13 +4121,13 @@ "raw": "" }, "url": { - "raw": "{{host}}/api/v1/application/{{application-name}}", + "raw": "{{host}}/api/v3/application/{{application-name}}", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "application", "{{application-name}}" ] @@ -4166,13 +4166,13 @@ "raw": "" }, "url": { - "raw": "{{host}}/api/v1/applicationTemplate/{{application-template-name}}", + "raw": "{{host}}/api/v3/applicationTemplate/{{application-template-name}}", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "applicationTemplate", "{{application-template-name}}" ] @@ -4211,13 +4211,13 @@ "raw": "" }, "url": { - "raw": "{{host}}/api/v1/applicationTemplate/{{application-template-from-yaml-name}}", + "raw": "{{host}}/api/v3/applicationTemplate/{{application-template-from-yaml-name}}", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "applicationTemplate", "{{application-template-from-yaml-name}}" ] @@ -4257,13 +4257,13 @@ "raw": "{\n\t\"type\": 1,\n\t\"key\":\"testtesttest\"\n}" }, "url": { - "raw": "{{host}}/api/v1/iofog/{{system-node-id}}", + "raw": "{{host}}/api/v3/iofog/{{system-node-id}}", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "iofog", "{{system-node-id}}" ] @@ -4303,13 +4303,13 @@ "raw": "" }, "url": { - "raw": "{{host}}/api/v1/iofog/{{node-id}}", + "raw": "{{host}}/api/v3/iofog/{{node-id}}", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "iofog", "{{node-id}}" ] @@ -4347,13 +4347,13 @@ "raw": "" }, "url": { - "raw": "{{host}}/api/v1/user/profile", + "raw": "{{host}}/api/v3/user/profile", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "user", "profile" ] @@ -4417,13 +4417,13 @@ "raw": "{\n \"firstName\": \"John\",\n \"lastName\": \"Doe\",\n \"email\": \"user@domain.com\",\n \"password\": \"#Bugs4Fun\",\n \"subscriptionKey\": \"XXXX-XXXX-XXXX-XXXX\"\n}" }, "url": { - "raw": "{{host}}/api/v1/user/signup", + "raw": "{{host}}/api/v3/user/signup", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "user", "signup" ] @@ -4465,13 +4465,13 @@ "raw": "{\n \"email\": \"user@domain.com\",\n \"password\": \"#Bugs4Fun\"\n}" }, "url": { - "raw": "{{host}}/api/v1/user/login", + "raw": "{{host}}/api/v3/user/login", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "user", "login" ] @@ -4517,13 +4517,13 @@ "raw": "{\n \"name\": \"system node\",\n \"routerMode\": \"interior\",\n \"messagingPort\": 5672,\n \"edgeRouterPort\": 56722,\n \"interRouterPort\": 56721,\n \"host\": \"localhost\",\n \"isSystem\": true,\n \"location\": \"string\",\n \"latitude\": 0,\n \"longitude\": 0,\n \"description\": \"string\",\n \"dockerUrl\": \"string\",\n \"diskLimit\": 0,\n \"diskDirectory\": \"string\",\n \"memoryLimit\": 0,\n \"cpuLimit\": 0,\n \"logLimit\": 0,\n \"logDirectory\": \"string\",\n \"logFileCount\": 0,\n \"statusFrequency\": 0,\n \"changeFrequency\": 0,\n \"deviceScanFrequency\": 0,\n \"bluetoothEnabled\": false,\n \"watchdogEnabled\": true,\n \"abstractedHardwareEnabled\": false,\n \"fogType\": 1\n,\n \"host\": \"1.2.3.4\"\n}" }, "url": { - "raw": "{{host}}/api/v1/iofog", + "raw": "{{host}}/api/v3/iofog", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "iofog" ] } @@ -4568,13 +4568,13 @@ "raw": "{\n \"name\": \"node1\",\n \"location\": \"string\",\n \"latitude\": 0,\n \"longitude\": 0,\n \"description\": \"string\",\n \"dockerUrl\": \"string\",\n \"diskLimit\": 0,\n \"diskDirectory\": \"string\",\n \"memoryLimit\": 0,\n \"cpuLimit\": 0,\n \"logLimit\": 0,\n \"logDirectory\": \"string\",\n \"logFileCount\": 0,\n \"statusFrequency\": 0,\n \"changeFrequency\": 0,\n \"deviceScanFrequency\": 0,\n \"bluetoothEnabled\": false,\n \"watchdogEnabled\": true,\n \"abstractedHardwareEnabled\": false,\n \"fogType\": 1,\n \"host\": \"1.2.3.4\"\n}" }, "url": { - "raw": "{{host}}/api/v1/iofog", + "raw": "{{host}}/api/v3/iofog", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "iofog" ] } @@ -4619,13 +4619,13 @@ "raw": "{\n \"name\": \"node2\",\n \"location\": \"string\",\n \"latitude\": 0,\n \"longitude\": 0,\n \"description\": \"string\",\n \"dockerUrl\": \"string\",\n \"diskLimit\": 0,\n \"diskDirectory\": \"string\",\n \"memoryLimit\": 0,\n \"cpuLimit\": 0,\n \"logLimit\": 0,\n \"logDirectory\": \"string\",\n \"logFileCount\": 0,\n \"statusFrequency\": 0,\n \"changeFrequency\": 0,\n \"deviceScanFrequency\": 0,\n \"bluetoothEnabled\": false,\n \"watchdogEnabled\": true,\n \"abstractedHardwareEnabled\": false,\n \"fogType\": 1,\n \"host\": \"1.2.3.5\"\n}" }, "url": { - "raw": "{{host}}/api/v1/iofog", + "raw": "{{host}}/api/v3/iofog", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "iofog" ] } @@ -4673,13 +4673,13 @@ "raw": "{\n \"name\": \"com.orange.smart-door\",\n \"version\": \"0.0.1\",\n \"description\": \"Orange Smart Door\",\n \"display\": {\n \"name\": \"Smart Door\",\n \"icon\": \"help\",\n \"color\": \"#ff0000\"\n },\n \"interfaceProtocol\": \"https\",\n \"interface\": {\n \"endpoints\": [\n {\n \"name\": \"liveness\",\n \"url\": \"https://localhost:91121\",\n \"method\": \"GET\"\n },\n {\n \"name\": \"version\",\n \"url\": \"https://localhost:91121/version\",\n \"method\": \"GET\"\n }\n ]\n },\n \"orchestrationTags\": [\n \"orange\",\n \"smart-door\"\n ]\n}" }, "url": { - "raw": "{{host}}/api/v1/edgeResource", + "raw": "{{host}}/api/v3/edgeResource", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "edgeResource" ] } @@ -4723,13 +4723,13 @@ "raw": "{\n \"name\": \"application-name-1\",\n \"isSystem\": false,\n \"description\": \"Description\",\n \"isActivated\": true,\n \"microservices\": [\n {\n \"name\": \"redistest\",\n \"config\": \"string\",\n \"images\": [\n {\n \"containerImage\": \"redis\",\n \"fogTypeId\": 1\n },\n {\n \"containerImage\": \"redis\",\n \"fogTypeId\": 2\n }\n ],\n \"registryId\": 1,\n \"application\": \"application-name-1\",\n \"iofogUuid\": \"{{node-id-1}}\",\n \"rootHostAccess\": false,\n \"logSize\": 0,\n \"volumeMappings\": [],\n \"ports\": [\n {\n \"internal\": 6379,\n \"external\": 6379,\n \"publicMode\": false\n }\n ]\n }\n ]\n}" }, "url": { - "raw": "{{host}}/api/v1/application", + "raw": "{{host}}/api/v3/application", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "application" ] } @@ -4776,13 +4776,13 @@ "raw": "{\n \"name\": \"application-msvc-name\",\n \"isSystem\": false,\n \"description\": \"Description\",\n \"isActivated\": true,\n \"microservices\": [\n {\n \"name\": \"msvc-1\",\n \"config\": \"string\",\n \"images\": [\n {\n \"containerImage\": \"hello-world\",\n \"fogTypeId\": 1\n },\n {\n \"containerImage\": \"hello-world\",\n \"fogTypeId\": 2\n }\n ],\n \"registryId\": 1,\n \"application\": \"application-msvc-name\",\n \"iofogUuid\": \"{{node-id-2}}\",\n \"rootHostAccess\": true,\n \"logSize\": 0,\n \"volumeMappings\": [\n {\n \"hostDestination\": \"/var/dest\",\n \"containerDestination\": \"/var/dest\",\n \"accessMode\": \"rw\"\n }\n ],\n \"ports\": [\n {\n \"internal\": 1881,\n \"external\": 1882\n }\n ],\n \"routes\": [],\n \"env\": [\n { \n \"key\": \"selfname\",\n \"value\": \"{{ self.name | upcase }}\"\n },\n {\n \"key\": \"sharedToken\",\n \"value\": \"sekrittoken\"\n },\n {\n \"key\": \"http_proxy\",\n \"value\": \"http://myproxy:8080/\"\n },\n {\n \"key\": \"https_proxy\",\n \"value\": \"{{ self.microservices | where: \\\"name\\\", \\\"msvc-1\\\" | first | map: \\\"env\\\" | first | where: \\\"key\\\" , \\\"http_proxy\\\" | first | map: \\\"value\\\" | first }}\"\n }\n ],\n \"cmd\": [\n \"test\",\n \"--arg1\",\n \"--arg2\"\n ]\n },\n {\n \"name\": \"msvc-2\",\n \"config\": \"string\",\n \"images\": [\n {\n \"containerImage\": \"hello-world\",\n \"fogTypeId\": 1\n },\n {\n \"containerImage\": \"hello-world\",\n \"fogTypeId\": 2\n }\n ],\n \"registryId\": 1,\n \"application\": \"application-msvc-name\",\n \"iofogUuid\": \"{{node-id-2}}\",\n \"rootHostAccess\": true,\n \"logSize\": 0,\n \"volumeMappings\": [\n {\n \"hostDestination\": \"/var/dest\",\n \"containerDestination\": \"/var/dest\",\n \"accessMode\": \"rw\"\n }\n ],\n \"ports\": [],\n \"routes\": [],\n \"env\": [\n { \n \"key\": \"selfname\",\n \"value\": \"{{ self.name | upcase }}\"\n },\n {\n \"key\": \"sharedToken\",\n \"value\": \"{{ self.microservices | where: \\\"name\\\", \\\"msvc-1\\\" | first | map: \\\"env\\\" | first | where: \\\"key\\\", \\\"sharedToken\\\" | first | map: \\\"value\\\" | first }}\"\n },\n {\n \"key\": \"http_proxy\",\n \"value\": \"{{ self.microservices | where: \\\"name\\\", \\\"msvc-1\\\" | first | map: \\\"env\\\" | first | where: \\\"key\\\" , \\\"http_proxy\\\" | first | map: \\\"value\\\" | first }}\"\n },\n {\n \"key\": \"https_proxy\",\n \"value\": \"{{ self.microservices | where: \\\"name\\\", \\\"msvc-1\\\" | first | map: \\\"env\\\" | first | where: \\\"key\\\" , \\\"http_proxy\\\" | first | map: \\\"value\\\" | first }}\"\n },\n {\n \"key\": \"rulesengineHOST\",\n \"value\": \"{% assign curmsvc= self.microservices | where: \\\"name\\\", \\\"msvc-1\\\" | first %}{{ curmsvc | findMicroserviceAgent | map: \\\"host\\\" | first }}\"\n },\n {\n \"key\": \"rulesenginePORT\",\n \"value\": \"{{ self.microservices | where: \\\"name\\\", \\\"msvc-1\\\" | first | map: \\\"ports\\\" | first | map: \\\"external\\\" | first | toString }}\"\n },\n {\n \"key\": \"redisHost\",\n \"value\": \"{% assign redisApp = \\\"application-name-1\\\" | findApplication %}{% assign redismsvc = redisApp.microservices | where: \\\"name\\\", \\\"redistest\\\" | first %}{{ redismsvc | findMicroserviceAgent | map: \\\"host\\\"}}:{{ redismsvc | map: \\\"ports\\\" | first | first | map: \\\"external\\\" | first | toString }}\"\n },\n {\n \"key\": \"edgeResLiveness\",\n \"value\": \"{{ \\\"com.orange.smart-door\\\" | findEdgeResource: \\\"0.0.1\\\" | map: \\\"interface\\\" | map: \\\"endpoints\\\" | first | where: \\\"name\\\", \\\"liveness\\\" | first | map: \\\"url\\\" | first }}\"\n },\n {\n \"key\": \"edgeResVersion\",\n \"value\": \"{{ \\\"com.orange.smart-door\\\" | findEdgeResource | map: \\\"interface\\\" | map: \\\"endpoints\\\" | first | where: \\\"name\\\", \\\"version\\\" | first | map: \\\"url\\\" | first }}\"\n }\n ],\n \"cmd\": [\n \"test\",\n \"--arg1\",\n \"--arg2\"\n ]\n },\n {\n \"name\": \"msvc-3\",\n \"config\": \"string\",\n \"images\": [\n {\n \"containerImage\": \"hello-world\",\n \"fogTypeId\": 1\n },\n {\n \"containerImage\": \"hello-world\",\n \"fogTypeId\": 2\n }\n ],\n \"registryId\": 1,\n \"application\": \"application-msvc-name\",\n \"iofogUuid\": \"{{node-id-2}}\",\n \"rootHostAccess\": true,\n \"logSize\": 0,\n \"volumeMappings\": [\n {\n \"hostDestination\": \"/var/dest\",\n \"containerDestination\": \"/var/dest\",\n \"accessMode\": \"rw\"\n }\n ],\n \"ports\": [],\n \"routes\": [],\n \"env\": [\n {\n \"key\": \"KEY1\",\n \"value\": \"value1\"\n },\n {\n \"key\": \"KEY2\",\n \"value\": \"value2\"\n }\n ],\n \"cmd\": [\n \"test\",\n \"--arg1\",\n \"--arg2\"\n ]\n }\n ],\n \"routes\": [\n {\n \"from\": \"msvc-1\",\n \"to\": \"msvc-2\",\n \"name\": \"m1-2\"\n }\n ]\n}" }, "url": { - "raw": "{{host}}/api/v1/application", + "raw": "{{host}}/api/v3/application", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "application" ] } @@ -4812,8 +4812,8 @@ "", "tests[\"Response returns microservice errorMessage\"] = data.microservices[0].status.hasOwnProperty('errorMessage');", "", - "tests[\"msv1 gets env application name\"]=data.microservices[0].env[0].value === pm.globals.get(\"application-msvc-name\").toUpperCase()", - "tests[\"msv1 sets env value from another\"]=data.microservices[0].env[3].value === data.microservices[0].env[2].value", + "tests[\"msv3 gets env application name\"]=data.microservices[0].env[0].value === pm.globals.get(\"application-msvc-name\").toUpperCase()", + "tests[\"msv3 sets env value from another\"]=data.microservices[0].env[3].value === data.microservices[0].env[2].value", "", "tests[\"msv2 gets env application name\"]=data.microservices[1].env[0].value === pm.globals.get(\"application-msvc-name\").toUpperCase()", "tests[\"msv2 sets env value from env service msvc1\"]=data.microservices[1].env[1].value === data.microservices[0].env[1].value", @@ -4844,13 +4844,13 @@ } ], "url": { - "raw": "{{host}}/api/v1/microservices?application={{application-msvc-name}}", + "raw": "{{host}}/api/v3/microservices?application={{application-msvc-name}}", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "microservices" ], "query": [ @@ -4894,13 +4894,13 @@ } ], "url": { - "raw": "{{host}}/api/v1/application", + "raw": "{{host}}/api/v3/application", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "application" ] } @@ -4938,13 +4938,13 @@ } ], "url": { - "raw": "{{host}}/api/v1/application/{{application-name-2}}", + "raw": "{{host}}/api/v3/application/{{application-name-2}}", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "application", "{{application-name-2}}" ] @@ -4984,13 +4984,13 @@ "raw": "{\n \"name\": \"application-name-22\",\n \"isSystem\": true,\n \"description\": \"Description\",\n \"isActivated\": true\n}" }, "url": { - "raw": "{{host}}/api/v1/application/{{application-name-1}}", + "raw": "{{host}}/api/v3/application/{{application-name-1}}", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "application", "{{application-name-1}}" ] @@ -5029,13 +5029,13 @@ } ], "url": { - "raw": "{{host}}/api/v1/application", + "raw": "{{host}}/api/v3/application", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "application" ] } @@ -5073,13 +5073,13 @@ "raw": "" }, "url": { - "raw": "{{host}}/api/v1/application/{{application-name-1}}", + "raw": "{{host}}/api/v3/application/{{application-name-1}}", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "application", "{{application-name-1}}" ] @@ -5118,13 +5118,13 @@ "raw": "" }, "url": { - "raw": "{{host}}/api/v1/application/{{application-msvc-name}}", + "raw": "{{host}}/api/v3/application/{{application-msvc-name}}", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "application", "{{application-msvc-name}}" ] @@ -5163,13 +5163,13 @@ } ], "url": { - "raw": "{{host}}/api/v1/application", + "raw": "{{host}}/api/v3/application", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "application" ] } @@ -5210,13 +5210,13 @@ } ], "url": { - "raw": "{{host}}/api/v1/microservices", + "raw": "{{host}}/api/v3/microservices", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "microservices" ] } @@ -5250,13 +5250,13 @@ } ], "url": { - "raw": "{{host}}/api/v1/route/{{application-route-name}}", + "raw": "{{host}}/api/v3/route/{{application-route-name}}", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "route", "{{application-route-name}}" ] @@ -5296,13 +5296,13 @@ "raw": "" }, "url": { - "raw": "{{host}}/api/v1/edgeResource/{{edge-resource-name}}/{{edge-resource-version}}", + "raw": "{{host}}/api/v3/edgeResource/{{edge-resource-name}}/{{edge-resource-version}}", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "edgeResource", "{{edge-resource-name}}", "{{edge-resource-version}}" @@ -5343,13 +5343,13 @@ "raw": "{\n\t\"type\": 1,\n\t\"key\":\"testtesttest\"\n}" }, "url": { - "raw": "{{host}}/api/v1/iofog/{{system-node-id}}", + "raw": "{{host}}/api/v3/iofog/{{system-node-id}}", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "iofog", "{{system-node-id}}" ] @@ -5389,13 +5389,13 @@ "raw": "" }, "url": { - "raw": "{{host}}/api/v1/iofog/{{node-id-2}}", + "raw": "{{host}}/api/v3/iofog/{{node-id-2}}", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "iofog", "{{node-id-2}}" ] @@ -5435,13 +5435,13 @@ "raw": "" }, "url": { - "raw": "{{host}}/api/v1/iofog/{{node-id-1}}", + "raw": "{{host}}/api/v3/iofog/{{node-id-1}}", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "iofog", "{{node-id-1}}" ] @@ -5479,13 +5479,13 @@ "raw": "" }, "url": { - "raw": "{{host}}/api/v1/user/profile", + "raw": "{{host}}/api/v3/user/profile", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "user", "profile" ] @@ -5549,13 +5549,13 @@ "raw": "{\n \"firstName\": \"John\",\n \"lastName\": \"Doe\",\n \"email\": \"user@domain.com\",\n \"password\": \"#Bugs4Fun\",\n \"subscriptionKey\": \"XXXX-XXXX-XXXX-XXXX\"\n}" }, "url": { - "raw": "{{host}}/api/v1/user/signup", + "raw": "{{host}}/api/v3/user/signup", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "user", "signup" ] @@ -5597,13 +5597,13 @@ "raw": "{\n \"email\": \"user@domain.com\",\n \"password\": \"#Bugs4Fun\"\n}" }, "url": { - "raw": "{{host}}/api/v1/user/login", + "raw": "{{host}}/api/v3/user/login", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "user", "login" ] @@ -5648,13 +5648,13 @@ "raw": "{\n \"name\": \"flow-name\",\n \"isSystem\": false,\n \"description\": \"Description\",\n \"isActivated\": true\n}" }, "url": { - "raw": "{{host}}/api/v1/flow", + "raw": "{{host}}/api/v3/flow", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "flow" ] } @@ -5692,13 +5692,13 @@ } ], "url": { - "raw": "{{host}}/api/v1/flow", + "raw": "{{host}}/api/v3/flow", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "flow" ] } @@ -5736,13 +5736,13 @@ } ], "url": { - "raw": "{{host}}/api/v1/flow/{{flow-id}}", + "raw": "{{host}}/api/v3/flow/{{flow-id}}", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "flow", "{{flow-id}}" ] @@ -5781,13 +5781,13 @@ "raw": "{\n \"name\": \"flow-name-22\",\n \"isSystem\": true,\n \"description\": \"Description\",\n \"isActivated\": true\n}" }, "url": { - "raw": "{{host}}/api/v1/flow/{{flow-id}}", + "raw": "{{host}}/api/v3/flow/{{flow-id}}", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "flow", "{{flow-id}}" ] @@ -5826,13 +5826,13 @@ } ], "url": { - "raw": "{{host}}/api/v1/flow", + "raw": "{{host}}/api/v3/flow", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "flow" ] } @@ -5870,13 +5870,13 @@ "raw": "" }, "url": { - "raw": "{{host}}/api/v1/flow/{{flow-id}}", + "raw": "{{host}}/api/v3/flow/{{flow-id}}", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "flow", "{{flow-id}}" ] @@ -5914,13 +5914,13 @@ "raw": "" }, "url": { - "raw": "{{host}}/api/v1/user/profile", + "raw": "{{host}}/api/v3/user/profile", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "user", "profile" ] @@ -5984,13 +5984,13 @@ "raw": "{\n \"firstName\": \"John\",\n \"lastName\": \"Doe\",\n \"email\": \"user@domain.com\",\n \"password\": \"#Bugs4Fun\",\n \"subscriptionKey\": \"XXXX-XXXX-XXXX-XXXX\"\n}" }, "url": { - "raw": "{{host}}/api/v1/user/signup", + "raw": "{{host}}/api/v3/user/signup", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "user", "signup" ] @@ -6032,13 +6032,13 @@ "raw": "{\n \"email\": \"user@domain.com\",\n \"password\": \"#Bugs4Fun\"\n}" }, "url": { - "raw": "{{host}}/api/v1/user/login", + "raw": "{{host}}/api/v3/user/login", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "user", "login" ] @@ -6084,13 +6084,13 @@ "raw": "{\n \"name\": \"system node\",\n \"routerMode\": \"interior\",\n \"messagingPort\": 5672,\n \"edgeRouterPort\": 56722,\n \"interRouterPort\": 56721,\n \"host\": \"localhost\",\n \"isSystem\": true,\n \"location\": \"string\",\n \"latitude\": 0,\n \"longitude\": 0,\n \"description\": \"string\",\n \"dockerUrl\": \"string\",\n \"diskLimit\": 0,\n \"diskDirectory\": \"string\",\n \"memoryLimit\": 0,\n \"cpuLimit\": 0,\n \"logLimit\": 0,\n \"logDirectory\": \"string\",\n \"logFileCount\": 0,\n \"statusFrequency\": 0,\n \"changeFrequency\": 0,\n \"deviceScanFrequency\": 0,\n \"bluetoothEnabled\": false,\n \"watchdogEnabled\": true,\n \"abstractedHardwareEnabled\": false,\n \"fogType\": 1\n,\n \"host\": \"1.2.3.4\"\n}" }, "url": { - "raw": "{{host}}/api/v1/iofog", + "raw": "{{host}}/api/v3/iofog", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "iofog" ] } @@ -6135,13 +6135,13 @@ "raw": "{\n \"name\": \"string\",\n \"host\": \"1.2.3.4\",\n \"location\": \"string\",\n \"latitude\": 0,\n \"longitude\": 0,\n \"description\": \"string\",\n \"dockerUrl\": \"string\",\n \"diskLimit\": 0,\n \"diskDirectory\": \"string\",\n \"memoryLimit\": 0,\n \"cpuLimit\": 0,\n \"logLimit\": 0,\n \"logDirectory\": \"string\",\n \"logFileCount\": 0,\n \"statusFrequency\": 0,\n \"changeFrequency\": 0,\n \"deviceScanFrequency\": 0,\n \"bluetoothEnabled\": false,\n \"watchdogEnabled\": true,\n \"abstractedHardwareEnabled\": false,\n \"fogType\": 1\n,\n \"host\": \"1.2.3.4\"\n}" }, "url": { - "raw": "{{host}}/api/v1/iofog", + "raw": "{{host}}/api/v3/iofog", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "iofog" ] } @@ -6186,13 +6186,13 @@ "raw": "{\n \"name\": \"flow-name\",\n \"description\": \"Description\",\n \"isActivated\": true\n}" }, "url": { - "raw": "{{host}}/api/v1/flow", + "raw": "{{host}}/api/v3/flow", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "flow" ] } @@ -6236,13 +6236,13 @@ "raw": "{\n \"name\": \"flow-name-second\",\n \"description\": \"Description\",\n \"isActivated\": true\n}" }, "url": { - "raw": "{{host}}/api/v1/flow", + "raw": "{{host}}/api/v3/flow", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "flow" ] } @@ -6286,13 +6286,13 @@ "raw": "{\n \"name\": \"string\",\n \"description\": \"string\",\n \"category\": \"string\",\n \"images\": [\n {\n \"containerImage\": \"x86 docker image name\",\n \"fogTypeId\": 1\n },\n {\n \"containerImage\": \"ARM docker image name\",\n \"fogTypeId\": 2\n }\n ],\n \"publisher\": \"string\",\n \"diskRequired\": 0,\n \"ramRequired\": 0,\n \"picture\": \"string\",\n \"isPublic\": true,\n \"registryId\": 1,\n \"inputType\": {\n \"infoType\": \"string\",\n \"infoFormat\": \"string\"\n },\n \"outputType\": {\n \"infoType\": \"string\",\n \"infoFormat\": \"string\"\n },\n \"configExample\": \"string\"\n}" }, "url": { - "raw": "{{host}}/api/v1/catalog/microservices", + "raw": "{{host}}/api/v3/catalog/microservices", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "catalog", "microservices" ] @@ -6337,13 +6337,13 @@ "raw": "{\n \"name\": \"name2\",\n \"config\": \"string\",\n \"catalogItemId\": {{item-id}},\n \"flowId\": {{flow-id}},\n \"iofogUuid\": \"{{node-id}}\",\n \"rootHostAccess\": true,\n \"logSize\": 0,\n \"volumeMappings\": [\n {\n \"hostDestination\": \"/var/dest\",\n \"containerDestination\": \"/var/dest\",\n \"accessMode\": \"rw\"\n }\n ],\n \"ports\": [\n {\n \"internal\": 1,\n \"external\": 1,\n \"publicMode\": false\n }\n ],\n \"routes\": [\n ],\n \"env\": [\n {\n \"key\": \"KEY1\",\n \"value\": \"value1\"\n },\n {\n \"key\": \"KEY2\",\n \"value\": \"value2\"\n }\n ],\n \"cmd\": [\n \t\"test\",\n \t\"--arg1\",\n \t\"--arg2\"\n ]\n}\n" }, "url": { - "raw": "{{host}}/api/v1/microservices", + "raw": "{{host}}/api/v3/microservices", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "microservices" ] } @@ -6385,13 +6385,13 @@ "raw": "{\n \"name\": \"namesec\",\n \"config\": \"string\",\n \"images\": [{\"containerImage\": \"hello-world\"\n,\"fogTypeId\": 1}, {\"containerImage\": \"hello-world\"\n,\"fogTypeId\": 2}]\n, \"registryId\": 1,\n \"flowId\": {{flow-id-2}},\n \"iofogUuid\": \"{{node-id}}\",\n \"rootHostAccess\": true,\n \"logSize\": 0,\n \"volumeMappings\": [\n {\n \"hostDestination\": \"/var/dest\",\n \"containerDestination\": \"/var/dest\",\n \"accessMode\": \"rw\"\n }\n ],\n \"ports\": [],\n \"routes\": [\n ],\n \"env\": [\n {\n \"key\": \"KEY1\",\n \"value\": \"value1\"\n },\n {\n \"key\": \"KEY2\",\n \"value\": \"value2\"\n }\n ],\n \"cmd\": [\n \t\"test\",\n \t\"--arg1\",\n \t\"--arg2\"\n ]\n}\n" }, "url": { - "raw": "{{host}}/api/v1/microservices", + "raw": "{{host}}/api/v3/microservices", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "microservices" ] } @@ -6435,13 +6435,13 @@ "raw": "{\n \"name\": \"name-without-catalog\",\n \"config\": \"string\",\n \"images\": [{\"containerImage\": \"hello-world\"\n,\"fogTypeId\": 1}, {\"containerImage\": \"hello-world\"\n,\"fogTypeId\": 2}]\n, \"registryId\": 1,\n \"flowId\": {{flow-id}},\n \"iofogUuid\": \"{{node-id}}\",\n \"rootHostAccess\": true,\n \"logSize\": 0,\n \"volumeMappings\": [\n {\n \"hostDestination\": \"/var/dest\",\n \"containerDestination\": \"/var/dest\",\n \"accessMode\": \"rw\"\n }\n ],\n \"ports\": [\n {\n \"internal\": 2,\n \"external\": 2,\n \"publicMode\": false\n }\n ],\n \"routes\": [\n ],\n \"env\": [\n {\n \"key\": \"KEY1\",\n \"value\": \"value1\"\n },\n {\n \"key\": \"KEY2\",\n \"value\": \"value2\"\n }\n ],\n \"cmd\": [\n \t\"test\",\n \t\"--arg1\",\n \t\"--arg2\"\n ]\n}\n" }, "url": { - "raw": "{{host}}/api/v1/microservices", + "raw": "{{host}}/api/v3/microservices", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "microservices" ] } @@ -6485,13 +6485,13 @@ "raw": "{\n \"name\": \"route-name\",\n \"sourceMicroserviceUuid\": \"{{ms-no-catalog-id}}\",\n \"destMicroserviceUuid\": \"{{ms-id}}\"\n}\n" }, "url": { - "raw": "{{host}}/api/v1/routes", + "raw": "{{host}}/api/v3/routes", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "routes" ] } @@ -6531,13 +6531,13 @@ "raw": "{\n \"name\": \"route-name-updated\",\n \"sourceMicroserviceUuid\": \"{{ms-no-catalog-id}}\",\n \"destMicroserviceUuid\": \"{{ms-id}}\"\n}\n" }, "url": { - "raw": "{{host}}/api/v1/routes/{{flow-name}}/{{route-name}}", + "raw": "{{host}}/api/v3/routes/{{flow-name}}/{{route-name}}", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "routes", "{{flow-name}}", "{{route-name}}" @@ -6577,13 +6577,13 @@ "raw": "" }, "url": { - "raw": "{{host}}/api/v1/routes/{{flow-name}}/{{route-name}}", + "raw": "{{host}}/api/v3/routes/{{flow-name}}/{{route-name}}", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "routes", "{{flow-name}}", "{{route-name}}" @@ -6629,13 +6629,13 @@ } ], "url": { - "raw": "{{host}}/api/v1/microservices", + "raw": "{{host}}/api/v3/microservices", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "microservices" ] } @@ -6683,13 +6683,13 @@ } ], "url": { - "raw": "{{host}}/api/v1/microservices?flowId={{flow-id}}", + "raw": "{{host}}/api/v3/microservices?flowId={{flow-id}}", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "microservices" ], "query": [ @@ -6733,13 +6733,13 @@ } ], "url": { - "raw": "{{host}}/api/v1/microservices/{{ms-id}}", + "raw": "{{host}}/api/v3/microservices/{{ms-id}}", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "microservices", "{{ms-id}}" ] @@ -6778,13 +6778,13 @@ } ], "url": { - "raw": "{{host}}/api/v1/microservices/{{ms-no-catalog-id}}", + "raw": "{{host}}/api/v3/microservices/{{ms-no-catalog-id}}", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "microservices", "{{ms-no-catalog-id}}" ] @@ -6823,13 +6823,13 @@ "raw": "{\n \"name\": \"name3\",\n \"config\": \"string\",\n \"rebuild\": true,\n \"iofogUuid\": \"{{node-id}}\",\n \"rootHostAccess\": true,\n \"logSize\": 0,\n \"volumeMappings\": [\n {\n \"hostDestination\": \"/var/dest\",\n \"containerDestination\": \"/var/dest\",\n \"accessMode\": \"rw\"\n }\n ]\n}" }, "url": { - "raw": "{{host}}/api/v1/microservices/{{ms-id}}", + "raw": "{{host}}/api/v3/microservices/{{ms-id}}", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "microservices", "{{ms-id}}" ] @@ -6868,13 +6868,13 @@ "raw": "{\n \"images\": [\n {\n \"containerImage\": \"hello-world-updated\",\n \"fogTypeId\": 1\n },\n {\n \"containerImage\": \"hello-world-updated\",\n \"fogTypeId\": 2\n }\n ],\n \"registryId\": 2,\n \"config\": \"string\",\n \"rebuild\": true,\n \"iofogUuid\": \"{{node-id}}\",\n \"rootHostAccess\": true,\n \"logSize\": 0,\n \"volumeMappings\": [\n {\n \"hostDestination\": \"/var/dest\",\n \"containerDestination\": \"/var/dest\",\n \"accessMode\": \"rw\"\n }\n ]\n}" }, "url": { - "raw": "{{host}}/api/v1/microservices/{{ms-no-catalog-id}}", + "raw": "{{host}}/api/v3/microservices/{{ms-no-catalog-id}}", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "microservices", "{{ms-no-catalog-id}}" ] @@ -6913,13 +6913,13 @@ } ], "url": { - "raw": "{{host}}/api/v1/microservices/{{ms-no-catalog-id}}", + "raw": "{{host}}/api/v3/microservices/{{ms-no-catalog-id}}", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "microservices", "{{ms-no-catalog-id}}" ] @@ -6958,13 +6958,13 @@ "raw": "{\n \"catalogItemId\": 14,\n \"config\": \"string\",\n \"rebuild\": true,\n \"iofogUuid\": \"{{node-id}}\",\n \"rootHostAccess\": true,\n \"logSize\": 0,\n \"volumeMappings\": [\n {\n \"hostDestination\": \"/var/dest\",\n \"containerDestination\": \"/var/dest\",\n \"accessMode\": \"rw\"\n }\n ]\n}" }, "url": { - "raw": "{{host}}/api/v1/microservices/{{ms-no-catalog-id}}", + "raw": "{{host}}/api/v3/microservices/{{ms-no-catalog-id}}", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "microservices", "{{ms-no-catalog-id}}" ] @@ -7003,13 +7003,13 @@ } ], "url": { - "raw": "{{host}}/api/v1/microservices/{{ms-no-catalog-id}}", + "raw": "{{host}}/api/v3/microservices/{{ms-no-catalog-id}}", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "microservices", "{{ms-no-catalog-id}}" ] @@ -7048,13 +7048,13 @@ "raw": "{\n \"images\": [\n {\n \"containerImage\": \"hello-world-updated\",\n \"fogTypeId\": 1\n },\n {\n \"containerImage\": \"hello-world-updated\",\n \"fogTypeId\": 2\n }\n ],\n \"registryId\": 2,\n \"catalogItemId\": null,\n \"config\": \"string\",\n \"rebuild\": true,\n \"iofogUuid\": \"{{node-id}}\",\n \"rootHostAccess\": true,\n \"logSize\": 0,\n \"volumeMappings\": [\n {\n \"hostDestination\": \"/var/dest\",\n \"containerDestination\": \"/var/dest\",\n \"accessMode\": \"rw\"\n }\n ]\n}" }, "url": { - "raw": "{{host}}/api/v1/microservices/{{ms-no-catalog-id}}", + "raw": "{{host}}/api/v3/microservices/{{ms-no-catalog-id}}", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "microservices", "{{ms-no-catalog-id}}" ] @@ -7093,13 +7093,13 @@ } ], "url": { - "raw": "{{host}}/api/v1/microservices/{{ms-no-catalog-id}}", + "raw": "{{host}}/api/v3/microservices/{{ms-no-catalog-id}}", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "microservices", "{{ms-no-catalog-id}}" ] @@ -7144,13 +7144,13 @@ "raw": "\n{\n\"sourceMicroserviceUuid\": \"{{ms-id}}\",\n \"destMicroserviceUuid\": \"{{ms-id}}\",\n \"name\": \"my-route\"\n}" }, "url": { - "raw": "{{host}}/api/v1/routes", + "raw": "{{host}}/api/v3/routes", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "routes" ] } @@ -7188,13 +7188,13 @@ "raw": "" }, "url": { - "raw": "{{host}}/api/v1/routes/{{flow-name}}/{{route-id}}", + "raw": "{{host}}/api/v3/routes/{{flow-name}}/{{route-id}}", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "routes", "{{flow-name}}", "{{route-id}}" @@ -7234,13 +7234,13 @@ "raw": "{\n \"internal\": 15,\n \"external\": 155,\n \"publicMode\": false\n}" }, "url": { - "raw": "{{host}}/api/v1/microservices/{{ms-id}}/port-mapping", + "raw": "{{host}}/api/v3/microservices/{{ms-id}}/port-mapping", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "microservices", "{{ms-id}}", "port-mapping" @@ -7280,13 +7280,13 @@ } ], "url": { - "raw": "{{host}}/api/v1/microservices/{{ms-id}}/port-mapping", + "raw": "{{host}}/api/v3/microservices/{{ms-id}}/port-mapping", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "microservices", "{{ms-id}}", "port-mapping" @@ -7326,13 +7326,13 @@ "raw": "" }, "url": { - "raw": "{{host}}/api/v1/microservices/{{ms-id}}/port-mapping/15", + "raw": "{{host}}/api/v3/microservices/{{ms-id}}/port-mapping/15", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "microservices", "{{ms-id}}", "port-mapping", @@ -7380,13 +7380,13 @@ "raw": " {\n \"hostDestination\": \"/var/dest7\",\n \"containerDestination\": \"/var/dest\",\n \"accessMode\": \"rw\"\n }" }, "url": { - "raw": "{{host}}/api/v1/microservices/{{ms-id}}/volume-mapping", + "raw": "{{host}}/api/v3/microservices/{{ms-id}}/volume-mapping", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "microservices", "{{ms-id}}", "volume-mapping" @@ -7421,13 +7421,13 @@ } ], "url": { - "raw": "{{host}}/api/v1/microservices/{{ms-id}}/volume-mapping", + "raw": "{{host}}/api/v3/microservices/{{ms-id}}/volume-mapping", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "microservices", "{{ms-id}}", "volume-mapping" @@ -7466,13 +7466,13 @@ "raw": "" }, "url": { - "raw": "{{host}}/api/v1/microservices/{{ms-id}}/volume-mapping/{{volume-id}}", + "raw": "{{host}}/api/v3/microservices/{{ms-id}}/volume-mapping/{{volume-id}}", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "microservices", "{{ms-id}}", "volume-mapping", @@ -7513,13 +7513,13 @@ "raw": "{\n\t\"withCleanup\": false\n}" }, "url": { - "raw": "{{host}}/api/v1/microservices/{{ms-id}}", + "raw": "{{host}}/api/v3/microservices/{{ms-id}}", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "microservices", "{{ms-id}}" ] @@ -7558,13 +7558,13 @@ "raw": "" }, "url": { - "raw": "{{host}}/api/v1/flow/{{flow-id}}", + "raw": "{{host}}/api/v3/flow/{{flow-id}}", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "flow", "{{flow-id}}" ] @@ -7604,13 +7604,13 @@ "raw": "" }, "url": { - "raw": "{{host}}/api/v1/catalog/microservices/{{item-id}}", + "raw": "{{host}}/api/v3/catalog/microservices/{{item-id}}", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "catalog", "microservices", "{{item-id}}" @@ -7651,13 +7651,13 @@ "raw": "{\n\t\"type\": 1,\n\t\"key\":\"testtesttest\"\n}" }, "url": { - "raw": "{{host}}/api/v1/iofog/{{system-node-id}}", + "raw": "{{host}}/api/v3/iofog/{{system-node-id}}", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "iofog", "{{system-node-id}}" ] @@ -7697,13 +7697,13 @@ "raw": "" }, "url": { - "raw": "{{host}}/api/v1/iofog/{{node-id}}", + "raw": "{{host}}/api/v3/iofog/{{node-id}}", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "iofog", "{{node-id}}" ] @@ -7741,13 +7741,13 @@ "raw": "" }, "url": { - "raw": "{{host}}/api/v1/user/profile", + "raw": "{{host}}/api/v3/user/profile", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "user", "profile" ] @@ -7811,13 +7811,13 @@ "raw": "{\n \"firstName\": \"John\",\n \"lastName\": \"Doe\",\n \"email\": \"user@domain.com\",\n \"password\": \"#Bugs4Fun\",\n \"subscriptionKey\": \"XXXX-XXXX-XXXX-XXXX\"\n}" }, "url": { - "raw": "{{host}}/api/v1/user/signup", + "raw": "{{host}}/api/v3/user/signup", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "user", "signup" ] @@ -7859,13 +7859,13 @@ "raw": "{\n \"email\": \"user@domain.com\",\n \"password\": \"#Bugs4Fun\"\n}" }, "url": { - "raw": "{{host}}/api/v1/user/login", + "raw": "{{host}}/api/v3/user/login", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "user", "login" ] @@ -7910,13 +7910,13 @@ "raw": "{\n \"name\": \"string\",\n \"description\": \"string\",\n \"category\": \"string\",\n \"images\": [\n {\n \"containerImage\": \"x86 docker image name\",\n \"fogTypeId\": 1\n },\n {\n \"containerImage\": \"ARM docker image name\",\n \"fogTypeId\": 2\n }\n ],\n \"publisher\": \"string\",\n \"diskRequired\": 0,\n \"ramRequired\": 0,\n \"picture\": \"string\",\n \"isPublic\": true,\n \"registryId\": 1,\n \"inputType\": {\n \"infoType\": \"string\",\n \"infoFormat\": \"string\"\n },\n \"outputType\": {\n \"infoType\": \"string\",\n \"infoFormat\": \"string\"\n },\n \"configExample\": \"string\"\n}" }, "url": { - "raw": "{{host}}/api/v1/catalog/microservices", + "raw": "{{host}}/api/v3/catalog/microservices", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "catalog", "microservices" ] @@ -7955,13 +7955,13 @@ } ], "url": { - "raw": "{{host}}/api/v1/catalog/microservices", + "raw": "{{host}}/api/v3/catalog/microservices", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "catalog", "microservices" ] @@ -8002,13 +8002,13 @@ } ], "url": { - "raw": "{{host}}/api/v1/catalog/microservices/{{item-id}}", + "raw": "{{host}}/api/v3/catalog/microservices/{{item-id}}", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "catalog", "microservices", "{{item-id}}" @@ -8049,13 +8049,13 @@ "raw": "{\n \"name\": \"string\",\n \"description\": \"string\",\n \"category\": \"string\",\n \"images\": [\n {\n \"containerImage\": \"x86 docker image name\",\n \"fogTypeId\": 1\n },\n {\n \"containerImage\": \"ARM docker image name\",\n \"fogTypeId\": 2\n }\n ],\n \"publisher\": \"string\",\n \"diskRequired\": 0,\n \"ramRequired\": 0,\n \"picture\": \"string\",\n \"isPublic\": true,\n \"registryId\": 1,\n \"inputType\": {\n \"infoType\": \"string\",\n \"infoFormat\": \"string\"\n },\n \"outputType\": {\n \"infoType\": \"string\",\n \"infoFormat\": \"string\"\n },\n \"configExample\": \"string\"\n}\n" }, "url": { - "raw": "{{host}}/api/v1/catalog/microservices/{{item-id}}", + "raw": "{{host}}/api/v3/catalog/microservices/{{item-id}}", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "catalog", "microservices", "{{item-id}}" @@ -8096,13 +8096,13 @@ "raw": "" }, "url": { - "raw": "{{host}}/api/v1/catalog/microservices/{{item-id}}", + "raw": "{{host}}/api/v3/catalog/microservices/{{item-id}}", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "catalog", "microservices", "{{item-id}}" @@ -8141,13 +8141,13 @@ "raw": "" }, "url": { - "raw": "{{host}}/api/v1/user/profile", + "raw": "{{host}}/api/v3/user/profile", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "user", "profile" ] @@ -8211,13 +8211,13 @@ "raw": "{\n \"firstName\": \"John\",\n \"lastName\": \"Doe\",\n \"email\": \"user@domain.com\",\n \"password\": \"#Bugs4Fun\",\n \"subscriptionKey\": \"XXXX-XXXX-XXXX-XXXX\"\n}" }, "url": { - "raw": "{{host}}/api/v1/user/signup", + "raw": "{{host}}/api/v3/user/signup", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "user", "signup" ] @@ -8259,13 +8259,13 @@ "raw": "{\n \"email\": \"user@domain.com\",\n \"password\": \"#Bugs4Fun\"\n}" }, "url": { - "raw": "{{host}}/api/v1/user/login", + "raw": "{{host}}/api/v3/user/login", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "user", "login" ] @@ -8311,13 +8311,13 @@ "raw": "{\n \"name\": \"system node\",\n \"routerMode\": \"interior\",\n \"messagingPort\": 5672,\n \"edgeRouterPort\": 56722,\n \"interRouterPort\": 56721,\n \"host\": \"localhost\",\n \"isSystem\": true,\n \"location\": \"string\",\n \"latitude\": 0,\n \"longitude\": 0,\n \"description\": \"string\",\n \"dockerUrl\": \"string\",\n \"diskLimit\": 0,\n \"diskDirectory\": \"string\",\n \"memoryLimit\": 0,\n \"cpuLimit\": 0,\n \"logLimit\": 0,\n \"logDirectory\": \"string\",\n \"logFileCount\": 0,\n \"statusFrequency\": 0,\n \"changeFrequency\": 0,\n \"deviceScanFrequency\": 0,\n \"bluetoothEnabled\": false,\n \"watchdogEnabled\": true,\n \"abstractedHardwareEnabled\": false,\n \"fogType\": 1\n,\n \"host\": \"1.2.3.4\"\n}" }, "url": { - "raw": "{{host}}/api/v1/iofog", + "raw": "{{host}}/api/v3/iofog", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "iofog" ] } @@ -8362,13 +8362,13 @@ "raw": "{\n \"name\": \"string\",\n \"host\": \"1.2.3.4\",\n \"location\": \"string\",\n \"latitude\": 0,\n \"longitude\": 0,\n \"description\": \"string\",\n \"dockerUrl\": \"string\",\n \"diskLimit\": 0,\n \"diskDirectory\": \"string\",\n \"memoryLimit\": 0,\n \"cpuLimit\": 0,\n \"logLimit\": 0,\n \"logDirectory\": \"string\",\n \"logFileCount\": 0,\n \"statusFrequency\": 0,\n \"changeFrequency\": 0,\n \"deviceScanFrequency\": 0,\n \"bluetoothEnabled\": false,\n \"watchdogEnabled\": true,\n \"abstractedHardwareEnabled\": false,\n \"fogType\": 1,\n \"dockerPruningFrequency\": 35,\n \"availableDiskThreshold\": 95,\n \"logLevel\": \"INFO\"\n,\n \"host\": \"1.2.3.4\"\n}" }, "url": { - "raw": "{{host}}/api/v1/iofog", + "raw": "{{host}}/api/v3/iofog", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "iofog" ] } @@ -8406,13 +8406,13 @@ "raw": "{\n \"action\": \"open\"\n}" }, "url": { - "raw": "{{host}}/api/v1/iofog/{{node-id}}/tunnel", + "raw": "{{host}}/api/v3/iofog/{{node-id}}/tunnel", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "iofog", "{{node-id}}", "tunnel" @@ -8448,13 +8448,13 @@ } ], "url": { - "raw": "{{host}}/api/v1/iofog/{{node-id}}/tunnel", + "raw": "{{host}}/api/v3/iofog/{{node-id}}/tunnel", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "iofog", "{{node-id}}", "tunnel" @@ -8494,13 +8494,13 @@ "raw": "{\n \"action\": \"close\"\n}" }, "url": { - "raw": "{{host}}/api/v1/iofog/{{node-id}}/tunnel", + "raw": "{{host}}/api/v3/iofog/{{node-id}}/tunnel", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "iofog", "{{node-id}}", "tunnel" @@ -8541,13 +8541,13 @@ "raw": "{\n\t\"type\": 1,\n\t\"key\":\"testtesttest\"\n}" }, "url": { - "raw": "{{host}}/api/v1/iofog/{{system-node-id}}", + "raw": "{{host}}/api/v3/iofog/{{system-node-id}}", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "iofog", "{{system-node-id}}" ] @@ -8587,13 +8587,13 @@ "raw": "" }, "url": { - "raw": "{{host}}/api/v1/iofog/{{node-id}}", + "raw": "{{host}}/api/v3/iofog/{{node-id}}", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "iofog", "{{node-id}}" ] @@ -8631,13 +8631,13 @@ "raw": "" }, "url": { - "raw": "{{host}}/api/v1/user/profile", + "raw": "{{host}}/api/v3/user/profile", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "user", "profile" ] @@ -8701,13 +8701,13 @@ "raw": "{\n \"firstName\": \"John\",\n \"lastName\": \"Doe\",\n \"email\": \"user@domain.com\",\n \"password\": \"#Bugs4Fun\",\n \"subscriptionKey\": \"XXXX-XXXX-XXXX-XXXX\"\n}" }, "url": { - "raw": "{{host}}/api/v1/user/signup", + "raw": "{{host}}/api/v3/user/signup", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "user", "signup" ] @@ -8749,13 +8749,13 @@ "raw": "{\n \"email\": \"user@domain.com\",\n \"password\": \"#Bugs4Fun\"\n}" }, "url": { - "raw": "{{host}}/api/v1/user/login", + "raw": "{{host}}/api/v3/user/login", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "user", "login" ] @@ -8801,13 +8801,13 @@ "raw": "{\n \"name\": \"system node\",\n \"routerMode\": \"interior\",\n \"messagingPort\": 5672,\n \"edgeRouterPort\": 56722,\n \"interRouterPort\": 56721,\n \"host\": \"localhost\",\n \"isSystem\": true,\n \"location\": \"string\",\n \"latitude\": 0,\n \"longitude\": 0,\n \"description\": \"string\",\n \"dockerUrl\": \"string\",\n \"diskLimit\": 0,\n \"diskDirectory\": \"string\",\n \"memoryLimit\": 0,\n \"cpuLimit\": 0,\n \"logLimit\": 0,\n \"logDirectory\": \"string\",\n \"logFileCount\": 0,\n \"statusFrequency\": 0,\n \"changeFrequency\": 0,\n \"deviceScanFrequency\": 0,\n \"bluetoothEnabled\": false,\n \"watchdogEnabled\": true,\n \"abstractedHardwareEnabled\": false,\n \"fogType\": 1\n,\n \"host\": \"1.2.3.4\"\n}" }, "url": { - "raw": "{{host}}/api/v1/iofog", + "raw": "{{host}}/api/v3/iofog", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "iofog" ] } @@ -8852,13 +8852,13 @@ "raw": "{\n \"name\": \"string\",\n \"host\": \"1.2.3.4\",\n \"location\": \"string\",\n \"latitude\": 0,\n \"longitude\": 0,\n \"description\": \"string\",\n \"dockerUrl\": \"string\",\n \"diskLimit\": 0,\n \"diskDirectory\": \"string\",\n \"memoryLimit\": 0,\n \"cpuLimit\": 0,\n \"logLimit\": 0,\n \"logDirectory\": \"string\",\n \"logFileCount\": 0,\n \"statusFrequency\": 0,\n \"changeFrequency\": 0,\n \"deviceScanFrequency\": 0,\n \"bluetoothEnabled\": false,\n \"watchdogEnabled\": true,\n \"abstractedHardwareEnabled\": false,\n \"fogType\": 1\n,\n \"host\": \"1.2.3.4\"\n}" }, "url": { - "raw": "{{host}}/api/v1/iofog", + "raw": "{{host}}/api/v3/iofog", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "iofog" ] } @@ -8902,13 +8902,13 @@ "raw": "{\n \"name\": \"application-name\",\n \"description\": \"Description\",\n \"isActivated\": true\n}" }, "url": { - "raw": "{{host}}/api/v1/application", + "raw": "{{host}}/api/v3/application", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "application" ] } @@ -8952,13 +8952,13 @@ "raw": "{\n \"name\": \"application-name-second\",\n \"description\": \"Description\",\n \"isActivated\": true\n}" }, "url": { - "raw": "{{host}}/api/v1/application", + "raw": "{{host}}/api/v3/application", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "application" ] } @@ -9002,13 +9002,13 @@ "raw": "{\n \"name\": \"string\",\n \"description\": \"string\",\n \"category\": \"string\",\n \"images\": [\n {\n \"containerImage\": \"x86 docker image name\",\n \"fogTypeId\": 1\n },\n {\n \"containerImage\": \"ARM docker image name\",\n \"fogTypeId\": 2\n }\n ],\n \"publisher\": \"string\",\n \"diskRequired\": 0,\n \"ramRequired\": 0,\n \"picture\": \"string\",\n \"isPublic\": true,\n \"registryId\": 1,\n \"inputType\": {\n \"infoType\": \"string\",\n \"infoFormat\": \"string\"\n },\n \"outputType\": {\n \"infoType\": \"string\",\n \"infoFormat\": \"string\"\n },\n \"configExample\": \"string\"\n}" }, "url": { - "raw": "{{host}}/api/v1/catalog/microservices", + "raw": "{{host}}/api/v3/catalog/microservices", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "catalog", "microservices" ] @@ -9054,13 +9054,13 @@ "raw": "{\n \"name\": \"name2\",\n \"config\": \"string\",\n \"catalogItemId\": {{item-id}},\n \"application\": \"{{application-name}}\",\n \"iofogUuid\": \"{{node-id}}\",\n \"rootHostAccess\": true,\n \"logSize\": 0,\n \"volumeMappings\": [\n {\n \"hostDestination\": \"/var/dest\",\n \"containerDestination\": \"/var/dest\",\n \"accessMode\": \"rw\"\n }\n ],\n \"ports\": [\n {\n \"internal\": 1,\n \"external\": 1,\n \"publicMode\": false\n }\n ],\n \"routes\": [\n ],\n \"env\": [\n {\n \"key\": \"KEY1\",\n \"value\": \"value1\"\n },\n {\n \"key\": \"KEY2\",\n \"value\": \"value2\"\n }\n ],\n \"cmd\": [\n \t\"test\",\n \t\"--arg1\",\n \t\"--arg2\"\n ]\n}\n" }, "url": { - "raw": "{{host}}/api/v1/microservices", + "raw": "{{host}}/api/v3/microservices", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "microservices" ] } @@ -9102,13 +9102,13 @@ "raw": "{\n \"name\": \"namesec\",\n \"config\": \"string\",\n \"images\": [{\"containerImage\": \"hello-world\"\n,\"fogTypeId\": 1}, {\"containerImage\": \"hello-world\"\n,\"fogTypeId\": 2}]\n, \"registryId\": 1,\n \"application\": \"{{application-name-2}}\",\n \"iofogUuid\": \"{{node-id}}\",\n \"rootHostAccess\": true,\n \"logSize\": 0,\n \"volumeMappings\": [\n {\n \"hostDestination\": \"/var/dest\",\n \"containerDestination\": \"/var/dest\",\n \"accessMode\": \"rw\"\n }\n ],\n \"ports\": [],\n \"routes\": [\n ],\n \"env\": [\n {\n \"key\": \"KEY1\",\n \"value\": \"value1\"\n },\n {\n \"key\": \"KEY2\",\n \"value\": \"value2\"\n }\n ],\n \"cmd\": [\n \t\"test\",\n \t\"--arg1\",\n \t\"--arg2\"\n ]\n}\n" }, "url": { - "raw": "{{host}}/api/v1/microservices", + "raw": "{{host}}/api/v3/microservices", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "microservices" ] } @@ -9153,13 +9153,13 @@ "raw": "{\n \"name\": \"name-without-catalog\",\n \"config\": \"string\",\n \"images\": [{\"containerImage\": \"hello-world\"\n,\"fogTypeId\": 1}, {\"containerImage\": \"hello-world\"\n,\"fogTypeId\": 2}]\n, \"registryId\": 1,\n \"application\": \"{{application-name}}\",\n \"iofogUuid\": \"{{node-id}}\",\n \"rootHostAccess\": true,\n \"logSize\": 0,\n \"volumeMappings\": [\n {\n \"hostDestination\": \"/var/dest\",\n \"containerDestination\": \"/var/dest\",\n \"accessMode\": \"rw\"\n }\n ],\n \"ports\": [\n {\n \"internal\": 2,\n \"external\": 2,\n \"publicMode\": false\n }\n ],\n \"routes\": [\n ],\n \"env\": [\n {\n \"key\": \"KEY1\",\n \"value\": \"value1\"\n },\n {\n \"key\": \"KEY2\",\n \"value\": \"value2\"\n }\n ],\n \"cmd\": [\n \t\"test\",\n \t\"--arg1\",\n \t\"--arg2\"\n ]\n}\n" }, "url": { - "raw": "{{host}}/api/v1/microservices", + "raw": "{{host}}/api/v3/microservices", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "microservices" ] } @@ -9203,13 +9203,13 @@ "raw": "{\n \"name\": \"route-name\",\n \"from\": \"{{ms-no-catalog-name}}\",\n \"to\": \"{{ms-name}}\",\n \"application\": \"{{application-name}}\"\n}\n" }, "url": { - "raw": "{{host}}/api/v1/routes", + "raw": "{{host}}/api/v3/routes", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "routes" ] } @@ -9249,13 +9249,13 @@ "raw": "{\n \"name\": \"route-name-updated\",\n \"from\": \"{{ms-no-catalog-name}}\",\n \"to\": \"{{ms-name}}\",\n \"application\": \"{{application-name}}\"\n}\n" }, "url": { - "raw": "{{host}}/api/v1/routes/{{application-name}}/{{route-name}}", + "raw": "{{host}}/api/v3/routes/{{application-name}}/{{route-name}}", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "routes", "{{application-name}}", "{{route-name}}" @@ -9295,13 +9295,13 @@ "raw": "" }, "url": { - "raw": "{{host}}/api/v1/routes/{{application-name}}/{{route-name}}", + "raw": "{{host}}/api/v3/routes/{{application-name}}/{{route-name}}", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "routes", "{{application-name}}", "{{route-name}}" @@ -9347,13 +9347,13 @@ } ], "url": { - "raw": "{{host}}/api/v1/microservices", + "raw": "{{host}}/api/v3/microservices", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "microservices" ] } @@ -9401,13 +9401,13 @@ } ], "url": { - "raw": "{{host}}/api/v1/microservices?application={{application-name}}", + "raw": "{{host}}/api/v3/microservices?application={{application-name}}", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "microservices" ], "query": [ @@ -9451,13 +9451,13 @@ } ], "url": { - "raw": "{{host}}/api/v1/microservices/{{ms-id}}", + "raw": "{{host}}/api/v3/microservices/{{ms-id}}", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "microservices", "{{ms-id}}" ] @@ -9496,13 +9496,13 @@ } ], "url": { - "raw": "{{host}}/api/v1/microservices/{{ms-no-catalog-id}}", + "raw": "{{host}}/api/v3/microservices/{{ms-no-catalog-id}}", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "microservices", "{{ms-no-catalog-id}}" ] @@ -9541,13 +9541,13 @@ "raw": "{\n \"images\": [{\"containerImage\": \"hello-world-updated\"\n,\"fogTypeId\": 1}, {\"containerImage\": \"hello-world-updated\"\n,\"fogTypeId\": 2}]\n, \"registryId\": 2,\n \"config\": \"string\",\n \"rebuild\": true,\n \"iofogUuid\": \"{{node-id}}\",\n \"rootHostAccess\": true,\n \"logSize\": 0,\n \"volumeMappings\": [\n {\n \"hostDestination\": \"/var/dest\",\n \"containerDestination\": \"/var/dest\",\n \"accessMode\": \"rw\"\n }\n ]\n}" }, "url": { - "raw": "{{host}}/api/v1/microservices/{{ms-no-catalog-id}}", + "raw": "{{host}}/api/v3/microservices/{{ms-no-catalog-id}}", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "microservices", "{{ms-no-catalog-id}}" ] @@ -9589,13 +9589,13 @@ "raw": "{\n \"name\": \"name3\",\n \"config\": \"string\",\n \"rebuild\": true,\n \"iofogUuid\": \"{{node-id}}\",\n \"rootHostAccess\": true,\n \"logSize\": 0,\n \"volumeMappings\": [\n {\n \"hostDestination\": \"/var/dest\",\n \"containerDestination\": \"/var/dest\",\n \"accessMode\": \"rw\"\n }\n ]\n}" }, "url": { - "raw": "{{host}}/api/v1/microservices/{{ms-no-catalog-id}}", + "raw": "{{host}}/api/v3/microservices/{{ms-no-catalog-id}}", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "microservices", "{{ms-no-catalog-id}}" ] @@ -9634,13 +9634,13 @@ } ], "url": { - "raw": "{{host}}/api/v1/microservices/{{ms-no-catalog-id}}", + "raw": "{{host}}/api/v3/microservices/{{ms-no-catalog-id}}", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "microservices", "{{ms-no-catalog-id}}" ] @@ -9679,13 +9679,13 @@ "raw": "{\n \"catalogItemId\": 14,\n \"config\": \"string\",\n \"rebuild\": true,\n \"iofogUuid\": \"{{node-id}}\",\n \"rootHostAccess\": true,\n \"logSize\": 0,\n \"volumeMappings\": [\n {\n \"hostDestination\": \"/var/dest\",\n \"containerDestination\": \"/var/dest\",\n \"accessMode\": \"rw\"\n }\n ]\n}" }, "url": { - "raw": "{{host}}/api/v1/microservices/{{ms-no-catalog-id}}", + "raw": "{{host}}/api/v3/microservices/{{ms-no-catalog-id}}", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "microservices", "{{ms-no-catalog-id}}" ] @@ -9724,13 +9724,13 @@ } ], "url": { - "raw": "{{host}}/api/v1/microservices/{{ms-no-catalog-id}}", + "raw": "{{host}}/api/v3/microservices/{{ms-no-catalog-id}}", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "microservices", "{{ms-no-catalog-id}}" ] @@ -9769,13 +9769,13 @@ "raw": "{\n \"images\": [{\"containerImage\": \"hello-world-updated\"\n,\"fogTypeId\": 1}, {\"containerImage\": \"hello-world-updated\"\n,\"fogTypeId\": 2}]\n, \"registryId\": 2,\n \"catalogItemId\": null,\n \"config\": \"string\",\n \"rebuild\": true,\n \"iofogUuid\": \"{{node-id}}\",\n \"rootHostAccess\": true,\n \"logSize\": 0,\n \"volumeMappings\": [\n {\n \"hostDestination\": \"/var/dest\",\n \"containerDestination\": \"/var/dest\",\n \"accessMode\": \"rw\"\n }\n ]\n}" }, "url": { - "raw": "{{host}}/api/v1/microservices/{{ms-no-catalog-id}}", + "raw": "{{host}}/api/v3/microservices/{{ms-no-catalog-id}}", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "microservices", "{{ms-no-catalog-id}}" ] @@ -9814,13 +9814,13 @@ } ], "url": { - "raw": "{{host}}/api/v1/microservices/{{ms-no-catalog-id}}", + "raw": "{{host}}/api/v3/microservices/{{ms-no-catalog-id}}", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "microservices", "{{ms-no-catalog-id}}" ] @@ -9865,13 +9865,13 @@ "raw": "{\n\"from\": \"{{ms-name}}\",\n \"to\": \"{{ms-name}}\",\n \"name\": \"my-route\",\n \"application\": \"{{application-name}}\"\n}" }, "url": { - "raw": "{{host}}/api/v1/routes", + "raw": "{{host}}/api/v3/routes", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "routes" ] } @@ -9909,13 +9909,13 @@ "raw": "" }, "url": { - "raw": "{{host}}/api/v1/routes/{{application-name}}/{{route-id}}", + "raw": "{{host}}/api/v3/routes/{{application-name}}/{{route-id}}", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "routes", "{{application-name}}", "{{route-id}}" @@ -9955,13 +9955,13 @@ "raw": "{\n \"internal\": 15,\n \"external\": 155,\n \"publicMode\": false\n}" }, "url": { - "raw": "{{host}}/api/v1/microservices/{{ms-id}}/port-mapping", + "raw": "{{host}}/api/v3/microservices/{{ms-id}}/port-mapping", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "microservices", "{{ms-id}}", "port-mapping" @@ -10001,13 +10001,13 @@ } ], "url": { - "raw": "{{host}}/api/v1/microservices/{{ms-id}}/port-mapping", + "raw": "{{host}}/api/v3/microservices/{{ms-id}}/port-mapping", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "microservices", "{{ms-id}}", "port-mapping" @@ -10047,13 +10047,13 @@ "raw": "" }, "url": { - "raw": "{{host}}/api/v1/microservices/{{ms-id}}/port-mapping/15", + "raw": "{{host}}/api/v3/microservices/{{ms-id}}/port-mapping/15", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "microservices", "{{ms-id}}", "port-mapping", @@ -10101,13 +10101,13 @@ "raw": " {\n \"hostDestination\": \"/var/dest7\",\n \"containerDestination\": \"/var/dest\",\n \"accessMode\": \"rw\"\n }" }, "url": { - "raw": "{{host}}/api/v1/microservices/{{ms-id}}/volume-mapping", + "raw": "{{host}}/api/v3/microservices/{{ms-id}}/volume-mapping", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "microservices", "{{ms-id}}", "volume-mapping" @@ -10142,13 +10142,13 @@ } ], "url": { - "raw": "{{host}}/api/v1/microservices/{{ms-id}}/volume-mapping", + "raw": "{{host}}/api/v3/microservices/{{ms-id}}/volume-mapping", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "microservices", "{{ms-id}}", "volume-mapping" @@ -10187,13 +10187,13 @@ "raw": "" }, "url": { - "raw": "{{host}}/api/v1/microservices/{{ms-id}}/volume-mapping/{{volume-id}}", + "raw": "{{host}}/api/v3/microservices/{{ms-id}}/volume-mapping/{{volume-id}}", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "microservices", "{{ms-id}}", "volume-mapping", @@ -10234,13 +10234,13 @@ "raw": "{\n\t\"withCleanup\": false\n}" }, "url": { - "raw": "{{host}}/api/v1/microservices/{{ms-id}}", + "raw": "{{host}}/api/v3/microservices/{{ms-id}}", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "microservices", "{{ms-id}}" ] @@ -10279,13 +10279,13 @@ "raw": "" }, "url": { - "raw": "{{host}}/api/v1/application/{{application-name}}", + "raw": "{{host}}/api/v3/application/{{application-name}}", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "application", "{{application-name}}" ] @@ -10325,13 +10325,13 @@ "raw": "" }, "url": { - "raw": "{{host}}/api/v1/catalog/microservices/{{item-id}}", + "raw": "{{host}}/api/v3/catalog/microservices/{{item-id}}", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "catalog", "microservices", "{{item-id}}" @@ -10372,13 +10372,13 @@ "raw": "" }, "url": { - "raw": "{{host}}/api/v1/iofog/{{system-node-id}}", + "raw": "{{host}}/api/v3/iofog/{{system-node-id}}", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "iofog", "{{system-node-id}}" ] @@ -10418,13 +10418,13 @@ "raw": "{\n\t\"type\": 1,\n\t\"key\":\"testtesttest\"\n}" }, "url": { - "raw": "{{host}}/api/v1/iofog/{{node-id}}", + "raw": "{{host}}/api/v3/iofog/{{node-id}}", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "iofog", "{{node-id}}" ] @@ -10462,13 +10462,13 @@ "raw": "" }, "url": { - "raw": "{{host}}/api/v1/user/profile", + "raw": "{{host}}/api/v3/user/profile", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "user", "profile" ] @@ -10532,13 +10532,13 @@ "raw": "{\n \"firstName\": \"John\",\n \"lastName\": \"Doe\",\n \"email\": \"user@domain.com\",\n \"password\": \"#Bugs4Fun\",\n \"subscriptionKey\": \"XXXX-XXXX-XXXX-XXXX\"\n}" }, "url": { - "raw": "{{host}}/api/v1/user/signup", + "raw": "{{host}}/api/v3/user/signup", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "user", "signup" ] @@ -10580,13 +10580,13 @@ "raw": "{\n \"email\": \"user@domain.com\",\n \"password\": \"#Bugs4Fun\"\n}" }, "url": { - "raw": "{{host}}/api/v1/user/login", + "raw": "{{host}}/api/v3/user/login", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "user", "login" ] @@ -10632,13 +10632,13 @@ "raw": "{\n \"name\": \"system node\",\n \"routerMode\": \"interior\",\n \"messagingPort\": 5672,\n \"edgeRouterPort\": 56722,\n \"interRouterPort\": 56721,\n \"host\": \"localhost\",\n \"isSystem\": true,\n \"location\": \"string\",\n \"latitude\": 0,\n \"longitude\": 0,\n \"description\": \"string\",\n \"dockerUrl\": \"string\",\n \"diskLimit\": 0,\n \"diskDirectory\": \"string\",\n \"memoryLimit\": 0,\n \"cpuLimit\": 0,\n \"logLimit\": 0,\n \"logDirectory\": \"string\",\n \"logFileCount\": 0,\n \"statusFrequency\": 0,\n \"changeFrequency\": 0,\n \"deviceScanFrequency\": 0,\n \"bluetoothEnabled\": false,\n \"watchdogEnabled\": true,\n \"abstractedHardwareEnabled\": false,\n \"fogType\": 1\n,\n \"host\": \"1.2.3.4\"\n}" }, "url": { - "raw": "{{host}}/api/v1/iofog", + "raw": "{{host}}/api/v3/iofog", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "iofog" ] } @@ -10683,13 +10683,13 @@ "raw": "{\n \"name\": \"string\",\n \"host\": \"1.2.3.4\",\n \"location\": \"string\",\n \"latitude\": 0,\n \"longitude\": 0,\n \"description\": \"string\",\n \"dockerUrl\": \"string\",\n \"diskLimit\": 0,\n \"diskDirectory\": \"string\",\n \"memoryLimit\": 0,\n \"cpuLimit\": 0,\n \"logLimit\": 0,\n \"logDirectory\": \"string\",\n \"logFileCount\": 0,\n \"statusFrequency\": 0,\n \"changeFrequency\": 0,\n \"deviceScanFrequency\": 0,\n \"bluetoothEnabled\": false,\n \"watchdogEnabled\": true,\n \"abstractedHardwareEnabled\": false,\n \"fogType\": 1\n,\n \"host\": \"1.2.3.4\"\n}" }, "url": { - "raw": "{{host}}/api/v1/iofog", + "raw": "{{host}}/api/v3/iofog", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "iofog" ] } @@ -10733,13 +10733,13 @@ "raw": "{\n \"name\": \"application-name\",\n \"description\": \"Description\",\n \"isActivated\": true\n}" }, "url": { - "raw": "{{host}}/api/v1/application", + "raw": "{{host}}/api/v3/application", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "application" ] } @@ -10783,13 +10783,13 @@ "raw": "{\n \"name\": \"string\",\n \"description\": \"string\",\n \"category\": \"string\",\n \"images\": [\n {\n \"containerImage\": \"x86 docker image name\",\n \"fogTypeId\": 1\n },\n {\n \"containerImage\": \"ARM docker image name\",\n \"fogTypeId\": 2\n }\n ],\n \"publisher\": \"string\",\n \"diskRequired\": 0,\n \"ramRequired\": 0,\n \"picture\": \"string\",\n \"isPublic\": true,\n \"registryId\": 1,\n \"inputType\": {\n \"infoType\": \"string\",\n \"infoFormat\": \"string\"\n },\n \"outputType\": {\n \"infoType\": \"string\",\n \"infoFormat\": \"string\"\n },\n \"configExample\": \"string\"\n}" }, "url": { - "raw": "{{host}}/api/v1/catalog/microservices", + "raw": "{{host}}/api/v3/catalog/microservices", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "catalog", "microservices" ] @@ -10834,13 +10834,13 @@ "raw": "{\n \"name\": \"name2\",\n \"config\": \"string\",\n \"catalogItemId\": {{item-id}},\n \"application\": \"{{application-name}}\",\n \"iofogUuid\": \"{{node-id}}\",\n \"rootHostAccess\": true,\n \"logSize\": 0,\n \"volumeMappings\": [\n {\n \"hostDestination\": \"/var/dest\",\n \"containerDestination\": \"/var/dest\",\n \"accessMode\": \"rw\"\n }\n ],\n \"ports\": [\n {\n \"internal\": 1,\n \"external\": 1,\n \"publicMode\": false\n }\n ],\n \"routes\": [\n ]\n}\n" }, "url": { - "raw": "{{host}}/api/v1/microservices", + "raw": "{{host}}/api/v3/microservices", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "microservices" ] } @@ -10878,13 +10878,13 @@ "raw": "" }, "url": { - "raw": "{{host}}/api/v1/microservices/{{ms-id}}/image-snapshot", + "raw": "{{host}}/api/v3/microservices/{{ms-id}}/image-snapshot", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "microservices", "{{ms-id}}", "image-snapshot" @@ -10924,13 +10924,13 @@ } ], "url": { - "raw": "{{host}}/api/v1/microservices/{{ms-id}}/image-snapshot", + "raw": "{{host}}/api/v3/microservices/{{ms-id}}/image-snapshot", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "microservices", "{{ms-id}}", "image-snapshot" @@ -10970,13 +10970,13 @@ "raw": "{\n \"enable\": true\n}" }, "url": { - "raw": "{{host}}/api/v1/microservices/{{ms-id}}/strace", + "raw": "{{host}}/api/v3/microservices/{{ms-id}}/strace", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "microservices", "{{ms-id}}", "strace" @@ -11016,13 +11016,13 @@ "raw": "{\n \"ftpHost\": \"string\",\n \"ftpPort\": 0,\n \"ftpUser\": \"string\",\n \"ftpPass\": \"string\",\n \"ftpDestDir\": \"string\"\n}" }, "url": { - "raw": "{{host}}/api/v1/microservices/{{ms-id}}/strace", + "raw": "{{host}}/api/v3/microservices/{{ms-id}}/strace", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "microservices", "{{ms-id}}", "strace" @@ -11063,13 +11063,13 @@ } ], "url": { - "raw": "{{host}}/api/v1/microservices/{{ms-id}}/strace?format=string", + "raw": "{{host}}/api/v3/microservices/{{ms-id}}/strace?format=string", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "microservices", "{{ms-id}}", "strace" @@ -11116,13 +11116,13 @@ "raw": "" }, "url": { - "raw": "{{host}}/api/v1/microservices/{{ms-id}}?withCleanUp=true", + "raw": "{{host}}/api/v3/microservices/{{ms-id}}?withCleanUp=true", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "microservices", "{{ms-id}}" ], @@ -11167,13 +11167,13 @@ "raw": "" }, "url": { - "raw": "{{host}}/api/v1/application/{{application-name}}", + "raw": "{{host}}/api/v3/application/{{application-name}}", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "application", "{{application-name}}" ] @@ -11213,13 +11213,13 @@ "raw": "" }, "url": { - "raw": "{{host}}/api/v1/catalog/microservices/{{item-id}}", + "raw": "{{host}}/api/v3/catalog/microservices/{{item-id}}", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "catalog", "microservices", "{{item-id}}" @@ -11260,13 +11260,13 @@ "raw": "{\n\t\"type\": 1,\n\t\"key\":\"testtesttest\"\n}" }, "url": { - "raw": "{{host}}/api/v1/iofog/{{node-id}}", + "raw": "{{host}}/api/v3/iofog/{{node-id}}", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "iofog", "{{node-id}}" ] @@ -11306,13 +11306,13 @@ "raw": "" }, "url": { - "raw": "{{host}}/api/v1/iofog/{{system-node-id}}", + "raw": "{{host}}/api/v3/iofog/{{system-node-id}}", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "iofog", "{{system-node-id}}" ] @@ -11350,13 +11350,13 @@ "raw": "" }, "url": { - "raw": "{{host}}/api/v1/user/profile", + "raw": "{{host}}/api/v3/user/profile", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "user", "profile" ] @@ -11420,13 +11420,13 @@ "raw": "{\n \"firstName\": \"John\",\n \"lastName\": \"Doe\",\n \"email\": \"user@domain.com\",\n \"password\": \"#Bugs4Fun\",\n \"subscriptionKey\": \"XXXX-XXXX-XXXX-XXXX\"\n}" }, "url": { - "raw": "{{host}}/api/v1/user/signup", + "raw": "{{host}}/api/v3/user/signup", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "user", "signup" ] @@ -11468,13 +11468,13 @@ "raw": "{\n \"email\": \"user@domain.com\",\n \"password\": \"#Bugs4Fun\"\n}" }, "url": { - "raw": "{{host}}/api/v1/user/login", + "raw": "{{host}}/api/v3/user/login", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "user", "login" ] @@ -11520,13 +11520,13 @@ "raw": "{\n \"name\": \"system node\",\n \"routerMode\": \"interior\",\n \"messagingPort\": 5672,\n \"edgeRouterPort\": 56722,\n \"interRouterPort\": 56721,\n \"host\": \"localhost\",\n \"isSystem\": true,\n \"location\": \"string\",\n \"latitude\": 0,\n \"longitude\": 0,\n \"description\": \"string\",\n \"dockerUrl\": \"string\",\n \"diskLimit\": 0,\n \"diskDirectory\": \"string\",\n \"memoryLimit\": 0,\n \"cpuLimit\": 0,\n \"logLimit\": 0,\n \"logDirectory\": \"string\",\n \"logFileCount\": 0,\n \"statusFrequency\": 0,\n \"changeFrequency\": 0,\n \"deviceScanFrequency\": 0,\n \"bluetoothEnabled\": false,\n \"watchdogEnabled\": true,\n \"abstractedHardwareEnabled\": false,\n \"fogType\": 1\n,\n \"host\": \"1.2.3.4\"\n}" }, "url": { - "raw": "{{host}}/api/v1/iofog", + "raw": "{{host}}/api/v3/iofog", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "iofog" ] } @@ -11571,13 +11571,13 @@ "raw": "{\n \"name\": \"string\",\n \"host\": \"1.2.3.4\",\n \"location\": \"string\",\n \"latitude\": 0,\n \"longitude\": 0,\n \"description\": \"string\",\n \"dockerUrl\": \"string\",\n \"diskLimit\": 0,\n \"diskDirectory\": \"string\",\n \"memoryLimit\": 0,\n \"cpuLimit\": 0,\n \"logLimit\": 0,\n \"logDirectory\": \"string\",\n \"logFileCount\": 0,\n \"statusFrequency\": 0,\n \"changeFrequency\": 0,\n \"deviceScanFrequency\": 0,\n \"bluetoothEnabled\": false,\n \"watchdogEnabled\": true,\n \"abstractedHardwareEnabled\": false,\n \"fogType\": 1\n,\n \"host\": \"1.2.3.4\"\n}" }, "url": { - "raw": "{{host}}/api/v1/iofog", + "raw": "{{host}}/api/v3/iofog", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "iofog" ] } @@ -11618,13 +11618,13 @@ } ], "url": { - "raw": "{{host}}/api/v1/iofog/{{node-id}}/provisioning-key", + "raw": "{{host}}/api/v3/iofog/{{node-id}}/provisioning-key", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "iofog", "{{node-id}}", "provisioning-key" @@ -11663,13 +11663,13 @@ } ], "url": { - "raw": "{{host}}/api/v1/iofog-list?filters[0][key]=uuid&filters[0][value]={{node-id}}&filters[0][condition]=equals", + "raw": "{{host}}/api/v3/iofog-list?filters[0][key]=uuid&filters[0][value]={{node-id}}&filters[0][condition]=equals", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "iofog-list" ], "query": [ @@ -11721,13 +11721,13 @@ "raw": "{\n \"name\": \"string\",\n \"isSystem\": false,\n \"location\": \"string\",\n \"latitude\": 0,\n \"longitude\": 0,\n \"description\": \"string\",\n \"dockerUrl\": \"string\",\n \"diskLimit\": 0,\n \"diskDirectory\": \"string\",\n \"memoryLimit\": 0,\n \"cpuLimit\": 0,\n \"logLimit\": 0,\n \"logDirectory\": \"string\",\n \"logFileCount\": 0,\n \"statusFrequency\": 0,\n \"changeFrequency\": 0,\n \"deviceScanFrequency\": 0,\n \"bluetoothEnabled\": false,\n \"watchdogEnabled\": true,\n \"abstractedHardwareEnabled\": false,\n \"fogType\": 1\n}" }, "url": { - "raw": "{{host}}/api/v1/iofog/{{node-id}}", + "raw": "{{host}}/api/v3/iofog/{{node-id}}", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "iofog", "{{node-id}}" ] @@ -11765,13 +11765,13 @@ } ], "url": { - "raw": "{{host}}/api/v1/iofog-list?system=true", + "raw": "{{host}}/api/v3/iofog-list?system=true", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "iofog-list" ], "query": [ @@ -11830,13 +11830,13 @@ } ], "url": { - "raw": "{{host}}/api/v1/iofog/{{node-id}}", + "raw": "{{host}}/api/v3/iofog/{{node-id}}", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "iofog", "{{node-id}}" ] @@ -11879,13 +11879,13 @@ "raw": "" }, "url": { - "raw": "{{host}}/api/v1/iofog/{{node-id}}/version/rollback", + "raw": "{{host}}/api/v3/iofog/{{node-id}}/version/rollback", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "iofog", "{{node-id}}", "version", @@ -11927,13 +11927,13 @@ "raw": "" }, "url": { - "raw": "{{host}}/api/v1/iofog/{{node-id}}/version/upgrade", + "raw": "{{host}}/api/v3/iofog/{{node-id}}/version/upgrade", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "iofog", "{{node-id}}", "version", @@ -11975,13 +11975,13 @@ "raw": "" }, "url": { - "raw": "{{host}}/api/v1/iofog/{{node-id}}/reboot", + "raw": "{{host}}/api/v3/iofog/{{node-id}}/reboot", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "iofog", "{{node-id}}", "reboot" @@ -12021,13 +12021,13 @@ "raw": "" }, "url": { - "raw": "{{host}}/api/v1/iofog/{{node-id}}/prune", + "raw": "{{host}}/api/v3/iofog/{{node-id}}/prune", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "iofog", "{{node-id}}", "prune" @@ -12063,13 +12063,13 @@ } ], "url": { - "raw": "{{host}}/api/v1/iofog/{{node-id}}/hal/hw", + "raw": "{{host}}/api/v3/iofog/{{node-id}}/hal/hw", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "iofog", "{{node-id}}", "hal", @@ -12106,13 +12106,13 @@ } ], "url": { - "raw": "{{host}}/api/v1/iofog/{{node-id}}/hal/usb", + "raw": "{{host}}/api/v3/iofog/{{node-id}}/hal/usb", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "iofog", "{{node-id}}", "hal", @@ -12154,13 +12154,13 @@ "raw": "{\n\t\"type\": 1,\n\t\"key\":\"testtesttest\"\n}" }, "url": { - "raw": "{{host}}/api/v1/iofog/{{system-node-id}}", + "raw": "{{host}}/api/v3/iofog/{{system-node-id}}", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "iofog", "{{system-node-id}}" ] @@ -12199,13 +12199,13 @@ "raw": "" }, "url": { - "raw": "{{host}}/api/v1/iofog/{{node-id}}", + "raw": "{{host}}/api/v3/iofog/{{node-id}}", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "iofog", "{{node-id}}" ] @@ -12243,13 +12243,13 @@ } ], "url": { - "raw": "{{host}}/api/v1/iofog-list?filters[0][key]=uuid&filters[0][value]={{node-id}}&filters[0][condition]=equals", + "raw": "{{host}}/api/v3/iofog-list?filters[0][key]=uuid&filters[0][value]={{node-id}}&filters[0][condition]=equals", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "iofog-list" ], "query": [ @@ -12300,13 +12300,13 @@ "raw": "" }, "url": { - "raw": "{{host}}/api/v1/user/profile", + "raw": "{{host}}/api/v3/user/profile", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "user", "profile" ] @@ -12370,13 +12370,13 @@ "raw": "{\n \"firstName\": \"John\",\n \"lastName\": \"Doe\",\n \"email\": \"user@domain.com\",\n \"password\": \"#Bugs4Fun\",\n \"subscriptionKey\": \"XXXX-XXXX-XXXX-XXXX\"\n}" }, "url": { - "raw": "{{host}}/api/v1/user/signup", + "raw": "{{host}}/api/v3/user/signup", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "user", "signup" ] @@ -12418,13 +12418,13 @@ "raw": "{\n \"email\": \"user@domain.com\",\n \"password\": \"#Bugs4Fun\"\n}" }, "url": { - "raw": "{{host}}/api/v1/user/login", + "raw": "{{host}}/api/v3/user/login", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "user", "login" ] @@ -12470,13 +12470,13 @@ "raw": "{\n \"url\": \"string\",\n \"isPublic\": true,\n \"username\": \"string\",\n \"password\": \"string\",\n \"email\": \"test@gmail.com\",\n \"requiresCert\": false,\n \"certificate\": \"string\"\n}" }, "url": { - "raw": "{{host}}/api/v1/registries", + "raw": "{{host}}/api/v3/registries", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "registries" ] } @@ -12514,13 +12514,13 @@ "raw": "{\n \"url\": \"string2\",\n \"isPublic\": true,\n \"username\": \"string3\",\n \"password\": \"string4\",\n \"email\": \"test2@gmail.com\",\n \"requiresCert\": true,\n \"certificate\": \"string6\"\n}" }, "url": { - "raw": "{{host}}/api/v1/registries/{{reg-id}}", + "raw": "{{host}}/api/v3/registries/{{reg-id}}", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "registries", "{{reg-id}}" ] @@ -12559,13 +12559,13 @@ } ], "url": { - "raw": "{{host}}/api/v1/registries", + "raw": "{{host}}/api/v3/registries", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "registries" ] } @@ -12603,13 +12603,13 @@ "raw": "" }, "url": { - "raw": "{{host}}/api/v1/registries/{{reg-id}}", + "raw": "{{host}}/api/v3/registries/{{reg-id}}", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "registries", "{{reg-id}}" ] @@ -12647,13 +12647,13 @@ "raw": "" }, "url": { - "raw": "{{host}}/api/v1/user/profile", + "raw": "{{host}}/api/v3/user/profile", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "user", "profile" ] @@ -12717,13 +12717,13 @@ "raw": "{\n \"firstName\": \"John\",\n \"lastName\": \"Doe\",\n \"email\": \"user@domain.com\",\n \"password\": \"#Bugs4Fun\",\n \"subscriptionKey\": \"XXXX-XXXX-XXXX-XXXX\"\n}" }, "url": { - "raw": "{{host}}/api/v1/user/signup", + "raw": "{{host}}/api/v3/user/signup", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "user", "signup" ] @@ -12765,13 +12765,13 @@ "raw": "{\n \"email\": \"user@domain.com\",\n \"password\": \"#Bugs4Fun\"\n}" }, "url": { - "raw": "{{host}}/api/v1/user/login", + "raw": "{{host}}/api/v3/user/login", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "user", "login" ] @@ -12817,13 +12817,13 @@ "raw": "{\n \"name\": \"system node\",\n \"routerMode\": \"interior\",\n \"messagingPort\": 5672,\n \"edgeRouterPort\": 56722,\n \"interRouterPort\": 56721,\n \"host\": \"localhost\",\n \"isSystem\": true,\n \"location\": \"string\",\n \"latitude\": 0,\n \"longitude\": 0,\n \"description\": \"string\",\n \"dockerUrl\": \"string\",\n \"diskLimit\": 0,\n \"diskDirectory\": \"string\",\n \"memoryLimit\": 0,\n \"cpuLimit\": 0,\n \"logLimit\": 0,\n \"logDirectory\": \"string\",\n \"logFileCount\": 0,\n \"statusFrequency\": 0,\n \"changeFrequency\": 0,\n \"deviceScanFrequency\": 0,\n \"bluetoothEnabled\": false,\n \"watchdogEnabled\": true,\n \"abstractedHardwareEnabled\": false,\n \"fogType\": 1\n,\n \"host\": \"1.2.3.4\"\n}" }, "url": { - "raw": "{{host}}/api/v1/iofog", + "raw": "{{host}}/api/v3/iofog", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "iofog" ] } @@ -12869,13 +12869,13 @@ "raw": "{\n \"name\": \"string\",\n \"host\": \"1.2.3.4\",\n \"location\": \"string\",\n \"latitude\": 0,\n \"longitude\": 0,\n \"description\": \"string\",\n \"dockerUrl\": \"string\",\n \"diskLimit\": 0,\n \"diskDirectory\": \"string\",\n \"memoryLimit\": 0,\n \"cpuLimit\": 0,\n \"logLimit\": 0,\n \"logDirectory\": \"string\",\n \"logFileCount\": 0,\n \"statusFrequency\": 0,\n \"changeFrequency\": 0,\n \"deviceScanFrequency\": 0,\n \"bluetoothEnabled\": false,\n \"watchdogEnabled\": true,\n \"abstractedHardwareEnabled\": false,\n \"fogType\": 1\n,\n \"host\": \"1.2.3.4\"\n}" }, "url": { - "raw": "{{host}}/api/v1/iofog", + "raw": "{{host}}/api/v3/iofog", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "iofog" ] } @@ -12916,13 +12916,13 @@ } ], "url": { - "raw": "{{host}}/api/v1/iofog/{{node-id}}/provisioning-key", + "raw": "{{host}}/api/v3/iofog/{{node-id}}/provisioning-key", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "iofog", "{{node-id}}", "provisioning-key" @@ -12963,13 +12963,13 @@ "raw": "{\n\t\"type\": 1,\n\t\"key\":\"{{provisioning-key}}\"\n}" }, "url": { - "raw": "{{host}}/api/v1/agent/provision", + "raw": "{{host}}/api/v3/agent/provision", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "agent", "provision" ] @@ -13018,13 +13018,13 @@ "raw": "{\n \"name\": \"com.orange.smart-door\",\n \"version\": \"0.0.1\",\n \"description\": \"Orange Smart Door\",\n \"display\": {\n \"name\": \"Smart Door\",\n \"icon\": \"help\",\n \"color\": \"#ff0000\"\n },\n \"interfaceProtocol\": \"https\",\n \"interface\": {\n \"endpoints\": [\n {\n \"name\": \"liveness\",\n \"url\": \"https://localhost:91121\",\n \"method\": \"GET\"\n }\n ]\n },\n \"orchestrationTags\": [\n \"orange\",\n \"smart-door\"\n ]\n}" }, "url": { - "raw": "{{host}}/api/v1/edgeResource", + "raw": "{{host}}/api/v3/edgeResource", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "edgeResource" ] } @@ -13063,13 +13063,13 @@ "raw": "{\n \"name\": \"com.orange.smart-door\",\n \"version\": \"0.0.2\",\n \"description\": \"Orange Smart Door\",\n \"display\": {\n \"name\": \"Smart Door\",\n \"icon\": \"help\",\n \"color\": \"#ff0000\"\n },\n \"interfaceProtocol\": \"https\",\n \"interface\": {\n \"endpoints\": [\n {\n \"name\": \"liveness\",\n \"url\": \"https://localhost:91121\",\n \"method\": \"GET\"\n }\n ]\n }\n}" }, "url": { - "raw": "{{host}}/api/v1/edgeResource/{{edge-resource-name}}/{{edge-resource-version}}", + "raw": "{{host}}/api/v3/edgeResource/{{edge-resource-name}}/{{edge-resource-version}}", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "edgeResource", "{{edge-resource-name}}", "{{edge-resource-version}}" @@ -13113,13 +13113,13 @@ "raw": "{\n \"name\": \"com.orange.smart-door2\",\n \"version\": \"0.0.1\",\n \"description\": \"Orange Smart Door\",\n \"display\": {\n \"name\": \"Smart Door\",\n \"icon\": \"help\",\n \"color\": \"#ff0000\"\n },\n \"interfaceProtocol\": \"https\",\n \"interface\": {\n \"endpoints\": [\n {\n \"name\": \"liveness\",\n \"url\": \"https://localhost:91121\",\n \"method\": \"GET\"\n },\n {\n \"name\": \"version\",\n \"url\": \"https://localhost:91121/version\",\n \"method\": \"GET\"\n }\n ]\n },\n \"orchestrationTags\": [\n \"orange\",\n \"smart-door\",\n \"smart-door-v0.0.1\"\n ]\n}" }, "url": { - "raw": "{{host}}/api/v1/edgeResource/{{edge-resource-name}}/{{edge-resource-version}}", + "raw": "{{host}}/api/v3/edgeResource/{{edge-resource-name}}/{{edge-resource-version}}", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "edgeResource", "{{edge-resource-name}}", "{{edge-resource-version}}" @@ -13164,13 +13164,13 @@ "raw": "{\n \"name\": \"com.orange.smart-door\"\n}" }, "url": { - "raw": "{{host}}/api/v1/edgeResource/{{edge-resource-name}}/{{edge-resource-version}}", + "raw": "{{host}}/api/v3/edgeResource/{{edge-resource-name}}/{{edge-resource-version}}", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "edgeResource", "{{edge-resource-name}}", "{{edge-resource-version}}" @@ -13209,13 +13209,13 @@ } ], "url": { - "raw": "{{host}}/api/v1/edgeResource/{{edge-resource-name}}/{{edge-resource-version}}", + "raw": "{{host}}/api/v3/edgeResource/{{edge-resource-name}}/{{edge-resource-version}}", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "edgeResource", "{{edge-resource-name}}", "{{edge-resource-version}}" @@ -13256,13 +13256,13 @@ "raw": "{\n \"uuid\": \"{{node-id}}\"\n}" }, "url": { - "raw": "{{host}}/api/v1/edgeResource/{{edge-resource-name}}/{{edge-resource-version}}/link", + "raw": "{{host}}/api/v3/edgeResource/{{edge-resource-name}}/{{edge-resource-version}}/link", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "edgeResource", "{{edge-resource-name}}", "{{edge-resource-version}}", @@ -13303,13 +13303,13 @@ } ], "url": { - "raw": "{{host}}/api/v1/agent/config/changes", + "raw": "{{host}}/api/v3/agent/config/changes", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "agent", "config", "changes" @@ -13356,13 +13356,13 @@ } ], "url": { - "raw": "{{host}}/api/v1/agent/edgeResources", + "raw": "{{host}}/api/v3/agent/edgeResources", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "agent", "edgeResources" ] @@ -13405,13 +13405,13 @@ } ], "url": { - "raw": "{{host}}/api/v1/iofog/{{node-id}}", + "raw": "{{host}}/api/v3/iofog/{{node-id}}", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "iofog", "{{node-id}}" ] @@ -13451,13 +13451,13 @@ "raw": "{\n \"uuid\": \"{{node-id}}\"\n}" }, "url": { - "raw": "{{host}}/api/v1/edgeResource/{{edge-resource-name}}/{{edge-resource-version}}/link", + "raw": "{{host}}/api/v3/edgeResource/{{edge-resource-name}}/{{edge-resource-version}}/link", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "edgeResource", "{{edge-resource-name}}", "{{edge-resource-version}}", @@ -13496,13 +13496,13 @@ } ], "url": { - "raw": "{{host}}/api/v1/iofog/{{node-id}}", + "raw": "{{host}}/api/v3/iofog/{{node-id}}", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "iofog", "{{node-id}}" ] @@ -13551,13 +13551,13 @@ "raw": "{\n \"name\": \"com.orange.smart-door\",\n \"version\": \"0.0.2\",\n \"description\": \"Orange Smart Door\",\n \"display\": {\n \"name\": \"Smart Door\",\n \"icon\": \"help\",\n \"color\": \"#ff0000\"\n },\n \"interfaceProtocol\": \"https\",\n \"interface\": {\n \"endpoints\": [\n {\n \"name\": \"liveness\",\n \"url\": \"https://localhost:91121\",\n \"method\": \"GET\"\n }\n ]\n }\n}" }, "url": { - "raw": "{{host}}/api/v1/edgeResource", + "raw": "{{host}}/api/v3/edgeResource", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "edgeResource" ] } @@ -13591,13 +13591,13 @@ } ], "url": { - "raw": "{{host}}/api/v1/edgeResources", + "raw": "{{host}}/api/v3/edgeResources", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "edgeResources" ] } @@ -13638,13 +13638,13 @@ } ], "url": { - "raw": "{{host}}/api/v1/edgeResource/{{edge-resource-name}}?=", + "raw": "{{host}}/api/v3/edgeResource/{{edge-resource-name}}?=", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "edgeResource", "{{edge-resource-name}}" ], @@ -13690,13 +13690,13 @@ "raw": "" }, "url": { - "raw": "{{host}}/api/v1/edgeResource/{{edge-resource-name}}/{{edge-resource-version-2}}", + "raw": "{{host}}/api/v3/edgeResource/{{edge-resource-name}}/{{edge-resource-version-2}}", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "edgeResource", "{{edge-resource-name}}", "{{edge-resource-version-2}}" @@ -13737,13 +13737,13 @@ "raw": "" }, "url": { - "raw": "{{host}}/api/v1/edgeResource/{{edge-resource-name}}/{{edge-resource-version}}", + "raw": "{{host}}/api/v3/edgeResource/{{edge-resource-name}}/{{edge-resource-version}}", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "edgeResource", "{{edge-resource-name}}", "{{edge-resource-version}}" @@ -13784,13 +13784,13 @@ "raw": "{\n\t\"type\": 1,\n\t\"key\":\"testtesttest\"\n}" }, "url": { - "raw": "{{host}}/api/v1/iofog/{{system-node-id}}", + "raw": "{{host}}/api/v3/iofog/{{system-node-id}}", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "iofog", "{{system-node-id}}" ] @@ -13829,13 +13829,13 @@ "raw": "" }, "url": { - "raw": "{{host}}/api/v1/iofog/{{node-id}}", + "raw": "{{host}}/api/v3/iofog/{{node-id}}", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "iofog", "{{node-id}}" ] @@ -13873,13 +13873,13 @@ "raw": "" }, "url": { - "raw": "{{host}}/api/v1/user/profile", + "raw": "{{host}}/api/v3/user/profile", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "user", "profile" ] @@ -13909,13 +13909,13 @@ "method": "HEAD", "header": [], "url": { - "raw": "{{host}}/api/v1/capabilities/edgeResources", + "raw": "{{host}}/api/v3/capabilities/edgeResources", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "capabilities", "edgeResources" ] @@ -13940,13 +13940,13 @@ "method": "HEAD", "header": [], "url": { - "raw": "{{host}}/api/v1/capabilities/applicationTemplates", + "raw": "{{host}}/api/v3/capabilities/applicationTemplates", "host": [ "{{host}}" ], "path": [ "api", - "v1", + "v3", "capabilities", "applicationTemplates" ] diff --git a/test/src/template/app.yml b/test/src/template/app.yml index 14d3fd98f..756d62eeb 100755 --- a/test/src/template/app.yml +++ b/test/src/template/app.yml @@ -1,6 +1,6 @@ --- -apiVersion: datasance.com/v1 +apiVersion: datasance.com/v3 kind: Application metadata: name: edai-smartbuilding-rules-engine diff --git a/test/src/template/simple.yml b/test/src/template/simple.yml index c009aab6f..a271b3855 100755 --- a/test/src/template/simple.yml +++ b/test/src/template/simple.yml @@ -1,6 +1,6 @@ --- -apiVersion: datasance.com/v1 +apiVersion: datasance.com/v3 kind: Application metadata: name: edai-smartbuilding-rules-engine From 7b5848073489e9240fbbf18923356e0c5f199b3a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Fri, 8 Nov 2024 22:01:13 +0300 Subject: [PATCH 128/146] docker base image updated ubi with nonroot user, old version codebase cleaned --- .github/workflows/ci.yaml | 2 +- Dockerfile | 60 +++++ logrotate.conf | 4 +- package-lock.json | 4 +- package.json | 2 +- src/config/constants.js | 4 +- src/config/default.json | 12 +- src/config/development.json | 4 +- src/config/production.json | 4 +- src/data/constants.js | 3 +- .../managers/microservice-port-manager.js | 16 -- .../microservice-proxy-port-manager.js | 25 -- .../microservice-public-mode-manager.js | 25 -- src/data/models/microserviceProxyPort.js | 70 ------ src/data/models/microserviceport.js | 5 - src/data/models/microservicepublicmode.js | 54 ----- src/helpers/proxy-broker-client.js | 49 ---- src/services/catalog-service.js | 12 +- src/services/microservice-ports/default.js | 14 +- src/services/microservice-ports/factory.js | 22 -- src/services/microservice-ports/proxy.js | 220 ------------------ src/services/microservices-service.js | 2 +- .../services/microservices-service.test.js | 3 - 23 files changed, 80 insertions(+), 536 deletions(-) create mode 100644 Dockerfile delete mode 100644 src/data/managers/microservice-proxy-port-manager.js delete mode 100644 src/data/managers/microservice-public-mode-manager.js delete mode 100644 src/data/models/microserviceProxyPort.js delete mode 100644 src/data/models/microservicepublicmode.js delete mode 100644 src/helpers/proxy-broker-client.js delete mode 100644 src/services/microservice-ports/factory.js delete mode 100644 src/services/microservice-ports/proxy.js diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 63cb78bc6..710d3c332 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -142,7 +142,7 @@ jobs: uses: docker/build-push-action@v3 id: build_push_ghcr with: - file: Dockerfile.dev + file: Dockerfile context: . platforms: linux/amd64, linux/arm64 push: true diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 000000000..45aab3472 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,60 @@ +FROM node:iron-bookworm AS builder + +ARG PKG_VERSION +ARG GITHUB_TOKEN + +WORKDIR /tmp + +RUN npm i -g npm + +COPY package.json . + +COPY . . + +# Set GitHub npm registry with authentication token +RUN sed -i.back "s|PAT|${GITHUB_TOKEN}|g" .npmrc + +RUN npm config set @datasance:registry https://npm.pkg.github.com/ + +RUN npm i --build-from-source --force + +RUN npm version $PKG_VERSION --allow-same-version --no-git-tag-version + +RUN npm pack + +FROM registry.access.redhat.com/ubi9/nodejs-20-minimal:1-63.1726695170 + +USER root +# Install dependencies for logging and development +RUN microdnf install -y logrotate g++ make && microdnf clean all + +COPY logrotate.conf /etc/logrotate.conf + +# Install Python and pip +RUN microdnf install -y python3 && \ + ln -sf python3 /usr/bin/python && \ + python3 -m ensurepip && \ + pip3 install --no-cache --upgrade pip setuptools && \ + microdnf install shadow-utils && \ + microdnf clean all +RUN useradd --uid 10000 --create-home runner +USER 10000 +WORKDIR /home/runner + +ENV NPM_CONFIG_PREFIX=/home/runner/.npm-global +ENV NPM_CONFIG_CACHE=/home/runner/.npm +ENV PATH=$PATH:/home/runner/.npm-global/bin + +COPY --from=builder /tmp/datasance-iofogcontroller-*.tgz /home/runner/iofog-controller.tgz + +ENV PID_BASE=/home/runner + +RUN npm i -g /home/runner/iofog-controller.tgz && \ + rm -rf /home/runner/iofog-controller.tgz && \ + iofog-controller config dev-mode --on + +COPY LICENSE /licenses/LICENSE +LABEL org.opencontainers.image.description=controller +LABEL org.opencontainers.image.source=https://github.com/datasance/controller +LABEL org.opencontainers.image.licenses=EPL2.0 +CMD [ "node", "/home/runner/.npm-global/lib/node_modules/@datasance/iofogcontroller/src/server.js" ] diff --git a/logrotate.conf b/logrotate.conf index 219c0f9ba..bab19729b 100644 --- a/logrotate.conf +++ b/logrotate.conf @@ -1,10 +1,10 @@ -/var/log/iofog-controller/iofog-controller.log { +${PID_BASE}/iofog-controller.log { rotate 10 size 10m compress notifempty missingok postrotate - kill -HUP `cat /usr/local/lib/node_modules/@datasance/iofogcontroller/src/iofog-controller.pid` + kill -HUP `cat ${PID_BASE}/iofog-controller.pid` endscript } diff --git a/package-lock.json b/package-lock.json index 56497bb73..88bc355c4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@datasance/iofogcontroller", - "version": "3.4.1", + "version": "3.4.2", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@datasance/iofogcontroller", - "version": "3.4.1", + "version": "3.4.2", "hasInstallScript": true, "license": "EPL-2.0", "dependencies": { diff --git a/package.json b/package.json index 9c65f83cc..9ad9435af 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@datasance/iofogcontroller", - "version": "3.4.1", + "version": "3.4.2", "description": "ioFog Controller project for Eclipse IoFog @ iofog.org \\nCopyright (c) 2023 Datasance Teknoloji A.S.", "main": "./src/main.js", "author": "Emirhan Durmus", diff --git a/src/config/constants.js b/src/config/constants.js index 0d3d3ae8c..81d99eaa3 100644 --- a/src/config/constants.js +++ b/src/config/constants.js @@ -13,12 +13,12 @@ module.exports = { 'App:Name': 'iofog-controller', - 'Viewer:Port': 80, + 'Viewer:Port': 8008, 'Server:Port': 51121, 'Server:DevMode': false, - 'Service:LogsDirectory': '/var/log/iofog-controller', + 'Service:LogsDirectory': process.env.PID_BASE ? `${process.env.PID_BASE}/iofog-controller` : '/var/log/iofog-controller', 'Service:LogsFileSize': 10485760, 'Service:LogsFileCount': 10, diff --git a/src/config/default.json b/src/config/default.json index e76bd75b4..92898aa60 100644 --- a/src/config/default.json +++ b/src/config/default.json @@ -3,14 +3,14 @@ "Name": "iofog-controller" }, "Viewer": { - "Port": 80 + "Port": 8008 }, "Server": { "Port": 51121, "DevMode": false }, "Service": { - "LogsDirectory": "/var/log/iofog-controller", + "LogsDirectory": "${PID_BASE}/iofog-controller", "LogsFileSize": 10485760, "LogsFileCount": 10 }, @@ -24,9 +24,7 @@ "DiagnosticDir": "diagnostic" }, "PublicPorts": { - "Range": "6001-7999", - "ProxyBrokerUrl": "http://localhost:3000", - "ProxyBrokerToken": "" + "Range": "6001-7999" }, "SystemImages": { "Router": { @@ -36,10 +34,6 @@ "Proxy": { "1": "ghcr.io/datasance/proxy:latest", "2": "ghcr.io/datasance/proxy:latest" - }, - "PortRouter": { - "1": "iofog/port-router:latest", - "2": "iofog/port-router:latest" } } } diff --git a/src/config/development.json b/src/config/development.json index bef344843..ea43d5a4a 100644 --- a/src/config/development.json +++ b/src/config/development.json @@ -3,14 +3,14 @@ "Name": "iofog-controller-dev" }, "Viewer": { - "Port": 80 + "Port": 8008 }, "Server": { "Port": 51121, "DevMode": true }, "Service": { - "LogsDirectory": "/var/log/iofog-controller", + "LogsDirectory": "${PID_BASE}/iofog-controller", "LogsFileSize": 10485760, "LogsFileCount": 10 }, diff --git a/src/config/production.json b/src/config/production.json index 7c31289e8..8437d00d4 100644 --- a/src/config/production.json +++ b/src/config/production.json @@ -3,14 +3,14 @@ "Name": "iofog-controller" }, "Viewer": { - "Port": 80 + "Port": 8008 }, "Server": { "Port": 51121, "DevMode": true }, "Service": { - "LogsDirectory": "/var/log/iofog-controller", + "LogsDirectory": "${PID_BASE}/iofog-controller", "LogsFileSize": 10485760, "LogsFileCount": 10 }, diff --git a/src/data/constants.js b/src/data/constants.js index 83c9b7af6..3ba4ae4fa 100644 --- a/src/data/constants.js +++ b/src/data/constants.js @@ -1,5 +1,4 @@ module.exports = { ROUTER_CATALOG_NAME: 'Router', - PROXY_CATALOG_NAME: 'Proxy', - PORT_ROUTER_CATALOG_NAME: 'PortRouter' + PROXY_CATALOG_NAME: 'Proxy' } diff --git a/src/data/managers/microservice-port-manager.js b/src/data/managers/microservice-port-manager.js index d4764b6b4..deedb758d 100644 --- a/src/data/managers/microservice-port-manager.js +++ b/src/data/managers/microservice-port-manager.js @@ -15,7 +15,6 @@ const BaseManager = require('./base-manager') const models = require('../models') const MicroservicePort = models.MicroservicePort const MicroservicePublicPort = models.MicroservicePublicPort -const MicroserviceProxyPort = models.MicroserviceProxyPort class MicroservicePortManager extends BaseManager { getEntity () { @@ -36,21 +35,6 @@ class MicroservicePortManager extends BaseManager { attributes: ['microserviceUuid'] }, { transaction: transaction }) } - - findAllProxyPorts (transaction) { - return MicroservicePort.findAll({ - include: [ - { - model: MicroserviceProxyPort, - as: 'proxyPort', - required: true, - attributes: ['publicPort', 'protocol', 'host'] - } - ], - where: { isProxy: true }, - attributes: ['microserviceUuid'] - }, { transaction: transaction }) - } } const instance = new MicroservicePortManager() diff --git a/src/data/managers/microservice-proxy-port-manager.js b/src/data/managers/microservice-proxy-port-manager.js deleted file mode 100644 index 2d3c05b0f..000000000 --- a/src/data/managers/microservice-proxy-port-manager.js +++ /dev/null @@ -1,25 +0,0 @@ -/* - * ******************************************************************************* - * * Copyright (c) 2023 Datasance Teknoloji A.S. - * * - * * This program and the accompanying materials are made available under the - * * terms of the Eclipse Public License v. 2.0 which is available at - * * http://www.eclipse.org/legal/epl-2.0 - * * - * * SPDX-License-Identifier: EPL-2.0 - * ******************************************************************************* - * - */ - -const BaseManager = require('./base-manager') -const models = require('../models') -const MicroserviceProxyPort = models.MicroserviceProxyPort - -class MicroserviceProxyPortManager extends BaseManager { - getEntity () { - return MicroserviceProxyPort - } -} - -const instance = new MicroserviceProxyPortManager() -module.exports = instance diff --git a/src/data/managers/microservice-public-mode-manager.js b/src/data/managers/microservice-public-mode-manager.js deleted file mode 100644 index 8990f042a..000000000 --- a/src/data/managers/microservice-public-mode-manager.js +++ /dev/null @@ -1,25 +0,0 @@ -/* - * ******************************************************************************* - * * Copyright (c) 2023 Datasance Teknoloji A.S. - * * - * * This program and the accompanying materials are made available under the - * * terms of the Eclipse Public License v. 2.0 which is available at - * * http://www.eclipse.org/legal/epl-2.0 - * * - * * SPDX-License-Identifier: EPL-2.0 - * ******************************************************************************* - * - */ - -const BaseManager = require('./base-manager') -const models = require('../models') -const MicroservicePublicMode = models.MicroservicePublicMode - -class MicroservicePublicModeManager extends BaseManager { - getEntity () { - return MicroservicePublicMode - } -} - -const instance = new MicroservicePublicModeManager() -module.exports = instance diff --git a/src/data/models/microserviceProxyPort.js b/src/data/models/microserviceProxyPort.js deleted file mode 100644 index 2bf9e8345..000000000 --- a/src/data/models/microserviceProxyPort.js +++ /dev/null @@ -1,70 +0,0 @@ -'use strict' - -module.exports = (sequelize, DataTypes) => { - const MicroserviceProxyPort = sequelize.define('MicroserviceProxyPort', { - id: { - type: DataTypes.INTEGER, - primaryKey: true, - autoIncrement: true, - allowNull: false, - field: 'id' - }, - portId: { - type: DataTypes.INTEGER, - field: 'port_id' - }, - host: { - type: DataTypes.TEXT, - field: 'host' - }, - localProxyId: { - type: DataTypes.TEXT, - field: 'local_proxy_id' - }, - publicPort: { - type: DataTypes.INTEGER, - field: 'public_port' - }, - adminPort: { - type: DataTypes.INTEGER, - field: 'admin_port' - }, - protocol: { - type: DataTypes.TEXT, - field: 'protocol' - }, - proxyToken: { - type: DataTypes.TEXT, - field: 'proxy_token' - }, - portUUID: { - type: DataTypes.TEXT, - field: 'port_uuid' - }, - serverToken: { - type: DataTypes.TEXT, - field: 'server_token' - } - }, { - tableName: 'MicroserviceProxyPorts', - timestamps: true, - underscored: true - }) - MicroserviceProxyPort.associate = function (models) { - MicroserviceProxyPort.belongsTo(models.MicroservicePort, { - foreignKey: { - name: 'portId', - field: 'port_id' - }, - as: 'port', - onDelete: 'cascade' - }) - - MicroserviceProxyPort.hasOne(models.Microservice, { - foreignKey: 'uuid', - as: 'localProxy' - }) - } - - return MicroserviceProxyPort -} diff --git a/src/data/models/microserviceport.js b/src/data/models/microserviceport.js index 405532fed..a6cee0b28 100644 --- a/src/data/models/microserviceport.js +++ b/src/data/models/microserviceport.js @@ -47,11 +47,6 @@ module.exports = (sequelize, DataTypes) => { foreignKey: 'port_id', as: 'publicPort' }) - - MicroservicePort.hasOne(models.MicroserviceProxyPort, { - foreignKey: 'port_id', - as: 'proxyPort' - }) } return MicroservicePort } diff --git a/src/data/models/microservicepublicmode.js b/src/data/models/microservicepublicmode.js deleted file mode 100644 index 0fe2daee1..000000000 --- a/src/data/models/microservicepublicmode.js +++ /dev/null @@ -1,54 +0,0 @@ -'use strict' -module.exports = (sequelize, DataTypes) => { - const MicroservicePublicMode = sequelize.define('MicroservicePublicMode', { - id: { - type: DataTypes.INTEGER, - primaryKey: true, - autoIncrement: true, - allowNull: false, - field: 'id' - } - }, { - tableName: 'MicroservicePublicModes', - timestamps: false, - underscored: true - }) - MicroservicePublicMode.associate = function (models) { - MicroservicePublicMode.belongsTo(models.Microservice, { - foreignKey: { - name: 'microserviceUuid', - field: 'microservice_uuid' - }, - as: 'microservice', - onDelete: 'cascade' - }) - - MicroservicePublicMode.belongsTo(models.Microservice, { - foreignKey: { - name: 'networkMicroserviceUuid', - field: 'network_microservice_uuid' - }, - as: 'networkMicroservice', - onDelete: 'set null' - }) - - MicroservicePublicMode.belongsTo(models.Fog, { - foreignKey: { - name: 'iofogUuid', - field: 'iofog_uuid' - }, - as: 'iofog', - onDelete: 'set null' - }) - - MicroservicePublicMode.belongsTo(models.MicroservicePort, { - foreignKey: { - name: 'microservicePortId', - field: 'microservice_port_id' - }, - as: 'microservicePort', - onDelete: 'set null' - }) - } - return MicroservicePublicMode -} diff --git a/src/helpers/proxy-broker-client.js b/src/helpers/proxy-broker-client.js deleted file mode 100644 index 053837489..000000000 --- a/src/helpers/proxy-broker-client.js +++ /dev/null @@ -1,49 +0,0 @@ -const axios = require('axios') - -const controllerConfig = require('../config') - -const brokerUrl = process.env.PROXY_BROKER_URL || controllerConfig.get('PublicPorts:ProxyBrokerUrl', '') -const brokerToken = process.env.PROXY_BROKER_TOKEN || controllerConfig.get('PublicPorts:ProxyBrokerToken', '') - -function allocatePort (serverToken) { - var options = { - method: 'POST', - url: `${brokerUrl}/port`, - headers: { 'X-Api-Key': brokerToken }, - data: { token: serverToken } - } - - return axios(options) - .then(response => { - return response.data - }) - .catch(err => { - return err - }) -} - -function deallocatePort (portUUID) { - var options = { - method: 'DELETE', - url: `${brokerUrl}/port/${portUUID}`, - headers: { 'X-Api-Key': brokerToken } - } - - return axios(options) -} - -function revokeServerToken (token) { - var options = { - method: 'DELETE', - url: `${brokerUrl}/server-token/${token}`, - headers: { 'X-Api-Key': brokerToken } - } - - return axios(options) -} - -module.exports = { - allocatePort: allocatePort, - deallocatePort: deallocatePort, - revokeServerToken: revokeServerToken -} diff --git a/src/services/catalog-service.js b/src/services/catalog-service.js index a81a513e4..dee5aa6cb 100644 --- a/src/services/catalog-service.js +++ b/src/services/catalog-service.js @@ -161,15 +161,6 @@ async function getProxyCatalogItem (transaction) { }, transaction) } -async function getPortRouterCatalogItem (transaction) { - return CatalogItemManager.findOne({ - name: DBConstants.PORT_ROUTER_CATALOG_NAME, - category: 'SYSTEM', - publisher: 'Eclipse ioFog', - registry_id: 1 - }, transaction) -} - async function getBluetoothCatalogItem (transaction) { return CatalogItemManager.findOne({ name: 'RESTBlue', @@ -388,6 +379,5 @@ module.exports = { getBluetoothCatalogItem: getBluetoothCatalogItem, getHalCatalogItem: getHalCatalogItem, getRouterCatalogItem: getRouterCatalogItem, - getProxyCatalogItem: getProxyCatalogItem, - getPortRouterCatalogItem: getPortRouterCatalogItem + getProxyCatalogItem: getProxyCatalogItem } diff --git a/src/services/microservice-ports/default.js b/src/services/microservice-ports/default.js index a24be57f2..83c2d0e7b 100644 --- a/src/services/microservice-ports/default.js +++ b/src/services/microservice-ports/default.js @@ -27,7 +27,6 @@ const RouterManager = require('../../data/managers/router-manager') const MicroservicePublicPortManager = require('../../data/managers/microservice-public-port-manager') const MicroserviceExtraHostManager = require('../../data/managers/microservice-extra-host-manager') const controllerConfig = require('../../config') -const Proxy = require('./proxy') const { MICROSERVICE_DEFAULT_LOG_SIZE, DEFAULT_ROUTER_NAME, DEFAULT_PROXY_HOST, RESERVED_PORTS } = require('../../helpers/constants') @@ -185,10 +184,7 @@ async function validatePublicPortAppHostTemplate (extraHost, templateArgs, msvc, async function movePublicPortsToNewFog (updatedMicroservice, transaction) { const portMappings = await updatedMicroservice.getPorts() for (const portMapping of portMappings) { - if (portMapping.isProxy) { - Proxy.moveProxyPortsToNewFog(updatedMicroservice, portMapping, transaction) - continue - } else if (!portMapping.isPublic) { + if (!portMapping.isPublic) { continue } @@ -226,8 +222,6 @@ async function createPortMapping (microservice, portMappingData, transaction) { if (portMappingData.public) { return _createPublicPortMapping(microservice, portMappingData, transaction) - } else if (portMappingData.proxy) { - return Proxy.createProxyPortMapping(microservice, portMappingData, transaction) } else { return _createSimplePortMapping(microservice, portMappingData, transaction) } @@ -347,8 +341,6 @@ async function _createPublicPortMapping (microservice, portMappingData, transact async function _deletePortMapping (microservice, portMapping, transaction) { if (portMapping.isPublic) { await _deletePublicPortMapping(microservice, portMapping, transaction) - } else if (portMapping.isProxy) { - return Proxy.deleteProxyPortMapping(microservice, portMapping, transaction) } else { await _deleteSimplePortMapping(microservice, portMapping, transaction) } @@ -429,9 +421,7 @@ function _buildLink (protocol, host, port) { } async function buildPublicPortMapping (pm, mapping, transaction) { - if (pm.isProxy) { - return Proxy.buildProxyPortMapping(pm, mapping, transaction) - } else if (!pm.isPublic) { + if (!pm.isPublic) { return } diff --git a/src/services/microservice-ports/factory.js b/src/services/microservice-ports/factory.js deleted file mode 100644 index e07b1c192..000000000 --- a/src/services/microservice-ports/factory.js +++ /dev/null @@ -1,22 +0,0 @@ -/* - * ******************************************************************************* - * * Copyright (c) 2023 Datasance Teknoloji A.S. - * * - * * This program and the accompanying materials are made available under the - * * terms of the Eclipse Public License v. 2.0 which is available at - * * http://www.eclipse.org/legal/epl-2.0 - * * - * * SPDX-License-Identifier: EPL-2.0 - * ******************************************************************************* - * - */ - -const config = require('../../config') - -function createMicroservicePortProvider () { - let provider = process.env.MSVC_PORT_PROVIDER || config.get('PublicPorts:Provider', 'default') - - return require(`./${provider}`) -} - -module.exports = createMicroservicePortProvider() diff --git a/src/services/microservice-ports/proxy.js b/src/services/microservice-ports/proxy.js deleted file mode 100644 index 0e4af1abf..000000000 --- a/src/services/microservice-ports/proxy.js +++ /dev/null @@ -1,220 +0,0 @@ -/* only "[a-zA-Z0-9][a-zA-Z0-9_.-]" are allowed - * ******************************************************************************* - * * Copyright (c) 2023 Datasance Teknoloji A.S. - * * - * * This program and the accompanying materials are made available under the - * * terms of the Eclipse Public License v. 2.0 which is available at - * * http://www.eclipse.org/legal/epl-2.0 - * * - * * SPDX-License-Identifier: EPL-2.0 - * ******************************************************************************* - * - */ -const crypto = require('crypto') - -const AppHelper = require('../../helpers/app-helper') -const CatalogService = require('../catalog-service') -const ChangeTrackingService = require('../change-tracking-service') -const MicroserviceManager = require('../../data/managers/microservice-manager') -const MicroservicePortManager = require('../../data/managers/microservice-port-manager') -const MicroserviceProxyPortManager = require('../../data/managers/microservice-proxy-port-manager') -const ProxyBrokerClient = require('../../helpers/proxy-broker-client') - -async function _createOrUpdatePortRouterMicroservice (existingProxy, localPort, protocol, portRouterServerConfig, hostUuid, portRouterCatalogId, microserviceUuid, transaction) { - const proxyConfig = { - name: `${microserviceUuid}_${localPort}`, - server_addr: portRouterServerConfig.host, - server_port: portRouterServerConfig.adminPort, - local_port: localPort, - remote_port: portRouterServerConfig.proxyPort, - type: protocol, - proxy_token: portRouterServerConfig.proxyToken, - server_token: portRouterServerConfig.serverToken, - port_uuid: portRouterServerConfig.portUUID - } - - if (existingProxy) { - const config = JSON.parse(existingProxy.config || '{}') - config.proxies = (config.proxies || []).concat(proxyConfig) - existingProxy.config = JSON.stringify(config) - await MicroserviceManager.updateIfChanged({ uuid: existingProxy.uuid }, { config: JSON.stringify(config) }, transaction) - await ChangeTrackingService.update(hostUuid, ChangeTrackingService.events.microserviceConfig, transaction) - return existingProxy - } - - const proxyMicroserviceData = { - uuid: AppHelper.generateRandomString(32), - name: `proxy-${hostUuid}`, - config: JSON.stringify({ - fetch_config_interval: 5, - proxies: [proxyConfig] - }), - catalogItemId: portRouterCatalogId, - iofogUuid: hostUuid, - rootHostAccess: true, - registryId: 1 - } - const res = await MicroserviceManager.create(proxyMicroserviceData, transaction) - await ChangeTrackingService.update(hostUuid, ChangeTrackingService.events.microserviceCommon, transaction) - return res -} - -async function createProxyPortMapping (microservice, portMappingData, transaction) { - const protocol = portMappingData.protocol || 'tcp' - - // create proxy microservices - const portRouterCatalog = await CatalogService.getPortRouterCatalogItem(transaction) - - const existingProxy = await MicroserviceManager.findOne({ catalogItemId: portRouterCatalog.id, iofogUuid: microservice.iofogUuid }, transaction) - let serverToken = crypto.randomUUID() - if (existingProxy) { - const config = JSON.parse(existingProxy.config || '{}') - serverToken = config.proxies[0].server_token - } - - const portRouterServerConfig = await _portRouterServerConfig(serverToken) - - const localPortRouter = await _createOrUpdatePortRouterMicroservice( - existingProxy, - portMappingData.external, - protocol, - portRouterServerConfig, - microservice.iofogUuid, - portRouterCatalog.id, - microservice.uuid, - transaction) - - const mappingData = { - isPublic: false, - isProxy: true, - portInternal: portMappingData.internal, - portExternal: portMappingData.external, - isUdp: protocol === 'udp', - microserviceUuid: microservice.uuid - } - const port = await MicroservicePortManager.create(mappingData, transaction) - - const publicPort = { - portId: port.id, - host: portRouterServerConfig.host, - adminPort: portRouterServerConfig.adminPort, - localProxyId: localPortRouter.uuid, - publicPort: portRouterServerConfig.proxyPort, - proxyToken: portRouterServerConfig.proxyToken, - portUUID: portRouterServerConfig.portUUID, - serverToken: portRouterServerConfig.serverToken, - protocol - } - await MicroserviceProxyPortManager.create(publicPort, transaction) - - return { - proxy: { - host: publicPort.host, - port: publicPort.publicPort, - protocol: publicPort.protocol - } - } -} - -async function buildProxyPortMapping (pm, mapping, transaction) { - const proxyPortMapping = await pm.getProxyPort() - if (!proxyPortMapping) { - return - } - - mapping.proxy = { - host: proxyPortMapping.host, - port: proxyPortMapping.publicPort, - protocol: proxyPortMapping.protocol - } -} - -async function deleteProxyPortMapping (microservice, portMapping, transaction) { - const proxyPort = await portMapping.getProxyPort() - if (proxyPort) { - await _updateOrDeleteProxyMicroservice(proxyPort, false, transaction) - } - - await MicroservicePortManager.delete({ id: portMapping.id }, transaction) -} - -async function _updateOrDeleteProxyMicroservice (proxyPort, isMove, transaction) { - const proxy = await MicroserviceManager.findOne({ uuid: proxyPort.localProxyId }, transaction) - if (!proxy) { - return - } - - const config = JSON.parse(proxy.config || '{}') - config.proxies = (config.proxies || []).filter(mapping => mapping.remote_port !== proxyPort.publicPort) - const removeServerToken = config.proxies.length === 0 - - if (!isMove) { - await ProxyBrokerClient.deallocatePort(proxyPort.portUUID) - if (removeServerToken) { - await ProxyBrokerClient.revokeServerToken(proxyPort.serverToken) - } - } - - if (config.proxies.length === 0) { - await MicroserviceManager.delete({ uuid: proxy.uuid }, transaction) - await ChangeTrackingService.update(proxy.iofogUuid, ChangeTrackingService.events.microserviceConfig, transaction) - } else { - await MicroserviceManager.updateIfChanged({ uuid: proxy.uuid }, { config: JSON.stringify(config) }, transaction) - await ChangeTrackingService.update(proxy.iofogUuid, ChangeTrackingService.events.microserviceCommon, transaction) - } -} - -async function moveProxyPortsToNewFog (updatedMicroservice, portMapping, transaction) { - const proxyPort = await portMapping.getProxyPort() - const localProxy = await MicroserviceManager.findOne({ uuid: proxyPort.localProxyId }, transaction) - await _updateOrDeleteProxyMicroservice(proxyPort, true, transaction) - - const existingProxy = await MicroserviceManager.findOne({ catalogItemId: localProxy.catalogItemId, iofogUuid: updatedMicroservice.iofogUuid }, transaction) - let serverToken = crypto.randomUUID() - if (existingProxy) { - const config = JSON.parse(existingProxy.config || '{}') - serverToken = config.proxies[0].server_token - } - - const portRouterServerConfig = { - host: proxyPort.host, - adminPort: proxyPort.adminPort, - serverToken, - proxyPort: proxyPort.proxyPort, - proxyToken: proxyPort.proxyToken, - portUUID: proxyPort.portUUID - } - - const newProxy = await _createOrUpdatePortRouterMicroservice( - existingProxy, - portMapping.external, - portMapping.protocol, - portRouterServerConfig, - updatedMicroservice.iofogUuid, - localProxy.catalogItemId, - updatedMicroservice.uuid, - transaction) - - proxyPort.localProxyId = newProxy.uuid - proxyPort.serverToken = portRouterServerConfig.serverToken - await MicroserviceProxyPortManager.updateOrCreate({ id: proxyPort.id }, proxyPort.toJSON(), transaction) -} - -async function _portRouterServerConfig (serverToken) { - const allocatedPort = await ProxyBrokerClient.allocatePort(serverToken) - return { - host: allocatedPort.serverAddr, - adminPort: allocatedPort.serverPort, - serverToken, - proxyPort: allocatedPort.proxyPort, - proxyToken: allocatedPort.proxyToken, - portUUID: allocatedPort.portUUID - } -} - -module.exports = { - createProxyPortMapping: createProxyPortMapping, - deleteProxyPortMapping: deleteProxyPortMapping, - buildProxyPortMapping: buildProxyPortMapping, - moveProxyPortsToNewFog: moveProxyPortsToNewFog -} diff --git a/src/services/microservices-service.js b/src/services/microservices-service.js index 191698b78..c5f3e971c 100644 --- a/src/services/microservices-service.js +++ b/src/services/microservices-service.js @@ -17,7 +17,7 @@ const MicroserviceStatusManager = require('../data/managers/microservice-status- const MicroserviceArgManager = require('../data/managers/microservice-arg-manager') const MicroserviceCdiDevManager = require('../data/managers/microservice-cdi-device-manager') const MicroserviceEnvManager = require('../data/managers/microservice-env-manager') -const MicroservicePortService = require('../services/microservice-ports/factory') +const MicroservicePortService = require('../services/microservice-ports/default') const CatalogItemImageManager = require('../data/managers/catalog-item-image-manager') const RegistryManager = require('../data/managers/registry-manager') const MicroserviceStates = require('../enums/microservice-state') diff --git a/test/src/services/microservices-service.test.js b/test/src/services/microservices-service.test.js index cfe2d9ef9..a6744122a 100644 --- a/test/src/services/microservices-service.test.js +++ b/test/src/services/microservices-service.test.js @@ -20,7 +20,6 @@ const MicroserviceEnvManager = require('../../../src/data/managers/microservice- const MicroserviceArgManager = require('../../../src/data/managers/microservice-arg-manager') const RegistryManager = require('../../../src/data/managers/registry-manager') const Op = require('sequelize').Op -const MicroservicePublicModeManager = require('../../../src/data/managers/microservice-public-mode-manager') const MicroservicePublicPortManager = require('../../../src/data/managers/microservice-public-port-manager') const ioFogManager = require('../../../src/data/managers/iofog-manager') const ioFogService = require('../../../src/services/iofog-service') @@ -118,7 +117,6 @@ describe('Microservices Service', () => { $sandbox.stub(MicroserviceExtraHostManager, 'findAll').returns($findExtraHostsResponse) $sandbox.stub(MicroserviceEnvManager, 'findAllExcludeFields').returns($envResponse) $sandbox.stub(MicroserviceArgManager, 'findAllExcludeFields').returns($cmdResponse) - $sandbox.stub(MicroservicePublicModeManager, 'findAll').returns($publicModeResponse) $sandbox.stub(CatalogItemImageManager, 'findAll').returns($imgResponse) $sandbox.stub(MicroserviceStatusManager, 'findAllExcludeFields').returns($statusResponse) $sandbox.stub(ApplicationManager, 'findOne').returns(Promise.resolve(application)) @@ -198,7 +196,6 @@ describe('Microservices Service', () => { $sandbox.stub(MicroserviceExtraHostManager, 'findAll').returns($findExtraHostsResponse) $sandbox.stub(MicroserviceEnvManager, 'findAllExcludeFields').returns($envResponse) $sandbox.stub(MicroserviceArgManager, 'findAllExcludeFields').returns($cmdResponse) - $sandbox.stub(MicroservicePublicModeManager, 'findAll').returns($publicModeResponse) $sandbox.stub(CatalogItemImageManager, 'findAll').returns($imgResponse) $sandbox.stub(MicroserviceStatusManager, 'findAllExcludeFields').returns($statusResponse) $sandbox.stub(ApplicationManager, 'findOne').returns(Promise.resolve(application)) From 56fed80da490632d531ffc2e52b0683b3b5a7a70 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Wed, 13 Nov 2024 19:55:25 +0300 Subject: [PATCH 129/146] docker base image updated and starting of 1st phase of sqlite scripts --- Dockerfile | 2 +- .../migrations/20241111145836-create-flow.js | 48 +++ .../20241111145901-create-registry.js | 49 +++ .../20241111145917-create-catalog-item.js | 77 +++++ .../20241111150318-create-fog-types.js | 47 +++ ...0241111150428-create-catalog-item-image.js | 33 ++ ...11150828-create-catalog-item-input-type.js | 31 ++ ...1150853-create-catalog-item-output-type.js | 31 ++ .../migrations/20241111150954-create-fog.js | 283 ++++++++++++++++++ 9 files changed, 600 insertions(+), 1 deletion(-) create mode 100644 src/data/migrations/20241111145836-create-flow.js create mode 100644 src/data/migrations/20241111145901-create-registry.js create mode 100644 src/data/migrations/20241111145917-create-catalog-item.js create mode 100644 src/data/migrations/20241111150318-create-fog-types.js create mode 100644 src/data/migrations/20241111150428-create-catalog-item-image.js create mode 100644 src/data/migrations/20241111150828-create-catalog-item-input-type.js create mode 100644 src/data/migrations/20241111150853-create-catalog-item-output-type.js create mode 100644 src/data/migrations/20241111150954-create-fog.js diff --git a/Dockerfile b/Dockerfile index 45aab3472..2c098afb8 100644 --- a/Dockerfile +++ b/Dockerfile @@ -22,7 +22,7 @@ RUN npm version $PKG_VERSION --allow-same-version --no-git-tag-version RUN npm pack -FROM registry.access.redhat.com/ubi9/nodejs-20-minimal:1-63.1726695170 +FROM registry.access.redhat.com/ubi9/nodejs-20-minimal:9.5-1730525319 USER root # Install dependencies for logging and development diff --git a/src/data/migrations/20241111145836-create-flow.js b/src/data/migrations/20241111145836-create-flow.js new file mode 100644 index 000000000..6a2eb5ae2 --- /dev/null +++ b/src/data/migrations/20241111145836-create-flow.js @@ -0,0 +1,48 @@ +'use strict' +module.exports = { + up: (queryInterface, Sequelize) => { + return queryInterface.createTable('Flows', { + id: { + type: Sequelize.INTEGER, + primaryKey: true, + autoIncrement: true, + allowNull: false, + field: 'id' + + }, + name: { + type: Sequelize.TEXT, + field: 'name', + defaultValue: 'New Application' + }, + description: { + type: Sequelize.TEXT, + field: 'description', + defaultValue: '' + }, + isActivated: { + type: Sequelize.BOOLEAN, + field: 'is_activated', + defaultValue: false + }, + isSystem: { + type: Sequelize.BOOLEAN, + field: 'is_system', + defaultValue: false + }, + createdAt: { + allowNull: false, + type: Sequelize.DATE, + field: 'created_at' + }, + updatedAt: { + allowNull: false, + type: Sequelize.DATE, + field: 'updated_at' + } + }) + }, + down: (queryInterface, Sequelize) => { + return queryInterface.dropTable('Flows') + } +} diff --git a/src/data/migrations/20241111145901-create-registry.js b/src/data/migrations/20241111145901-create-registry.js new file mode 100644 index 000000000..a6cfd9e41 --- /dev/null +++ b/src/data/migrations/20241111145901-create-registry.js @@ -0,0 +1,49 @@ +'use strict' +module.exports = { + up: (queryInterface, Sequelize) => { + return queryInterface.createTable('Registries', { + id: { + type: Sequelize.INTEGER, + primaryKey: true, + autoIncrement: true, + allowNull: false, + field: 'id' + }, + url: { + type: Sequelize.TEXT, + field: 'url' + }, + isPublic: { + type: Sequelize.BOOLEAN, + field: 'is_public' + }, + secure: { + type: Sequelize.BOOLEAN, + field: 'secure' + }, + certificate: { + type: Sequelize.TEXT, + field: 'certificate' + }, + requiresCert: { + type: Sequelize.BOOLEAN, + field: 'requires_cert' + }, + username: { + type: Sequelize.TEXT, + field: 'user_name' + }, + password: { + type: Sequelize.TEXT, + field: 'password' + }, + userEmail: { + type: Sequelize.TEXT, + field: 'user_email' + } + }) + }, + down: (queryInterface, Sequelize) => { + return queryInterface.dropTable('Registries') + } +} diff --git a/src/data/migrations/20241111145917-create-catalog-item.js b/src/data/migrations/20241111145917-create-catalog-item.js new file mode 100644 index 000000000..934fd85f3 --- /dev/null +++ b/src/data/migrations/20241111145917-create-catalog-item.js @@ -0,0 +1,77 @@ +'use strict' + +const { convertToInt } = require('../../helpers/app-helper') + +module.exports = { + up: (queryInterface, Sequelize) => { + return queryInterface.createTable('CatalogItems', { + id: { + type: Sequelize.INTEGER, + primaryKey: true, + autoIncrement: true, + allowNull: false, + field: 'id' + }, + name: { + type: Sequelize.TEXT, + field: 'name', + defaultValue: 'New Catalog Item' + }, + description: { + type: Sequelize.TEXT, + field: 'description', + defaultValue: '' + }, + category: { + type: Sequelize.TEXT, + field: 'category' + }, + configExample: { + type: Sequelize.TEXT, + field: 'config_example', + defaultValue: '{}' + }, + publisher: { + type: Sequelize.TEXT, + field: 'publisher' + }, + diskRequired: { + type: Sequelize.BIGINT, + get () { + return convertToInt(this.getDataValue('diskRequired')) + }, + field: 'disk_required', + defaultValue: 0 + }, + ramRequired: { + type: Sequelize.BIGINT, + get () { + return convertToInt(this.getDataValue('ramRequired')) + }, + field: 'ram_required', + defaultValue: 0 + }, + picture: { + type: Sequelize.TEXT, + field: 'picture', + defaultValue: 'images/shared/default.png' + }, + isPublic: { + type: Sequelize.BOOLEAN, + field: 'is_public', + defaultValue: false + }, + registryId: { + type: Sequelize.INTEGER, + field: 'registry_id', + as: 'registryId', + references: { model: 'Registries', key: 'id' }, + onDelete: 'set null', + defaultValue: 1 + } + }) + }, + down: (queryInterface, Sequelize) => { + return queryInterface.dropTable('CatalogItems') + } +} diff --git a/src/data/migrations/20241111150318-create-fog-types.js b/src/data/migrations/20241111150318-create-fog-types.js new file mode 100644 index 000000000..8a9607648 --- /dev/null +++ b/src/data/migrations/20241111150318-create-fog-types.js @@ -0,0 +1,47 @@ +'use strict' +module.exports = { + up: (queryInterface, Sequelize) => { + return queryInterface.createTable('FogTypes', { + id: { + type: Sequelize.INTEGER, + primaryKey: true, + autoIncrement: true, + allowNull: false, + field: 'id' + }, + name: { + type: Sequelize.TEXT, + field: 'name' + }, + image: { + type: Sequelize.TEXT, + field: 'image' + }, + description: { + type: Sequelize.TEXT, + field: 'description' + }, + networkCatalogItemId: { + type: Sequelize.INTEGER, + field: 'network_catalog_item_id', + references: { model: 'CatalogItems', key: 'id' }, + onDelete: 'cascade' + }, + halCatalogItemId: { + type: Sequelize.INTEGER, + field: 'hal_catalog_item_id', + references: { model: 'CatalogItems', key: 'id' }, + onDelete: 'cascade' + }, + bluetoothCatalogItemId: { + type: Sequelize.INTEGER, + field: 'bluetooth_catalog_item_id', + references: { model: 'CatalogItems', key: 'id' }, + onDelete: 'cascade' + } + }) + }, + down: (queryInterface, Sequelize) => { + return queryInterface.dropTable('FogTypes') + } +} diff --git a/src/data/migrations/20241111150428-create-catalog-item-image.js b/src/data/migrations/20241111150428-create-catalog-item-image.js new file mode 100644 index 000000000..b69109136 --- /dev/null +++ b/src/data/migrations/20241111150428-create-catalog-item-image.js @@ -0,0 +1,33 @@ +'use strict' +module.exports = { + up: (queryInterface, Sequelize) => { + return queryInterface.createTable('CatalogItemImages', { + id: { + type: Sequelize.INTEGER, + primaryKey: true, + autoIncrement: true, + allowNull: false, + field: 'id' + }, + containerImage: { + type: Sequelize.TEXT, + field: 'container_image' + }, + catalogItemId: { + type: Sequelize.INTEGER, + field: 'catalog_item_id', + references: { model: 'CatalogItems', key: 'id' }, + onDelete: 'cascade' + }, + fogTypeId: { + type: Sequelize.INTEGER, + field: 'fog_type_id', + references: { model: 'FogTypes', key: 'id' }, + onDelete: 'cascade' + } + }) + }, + down: (queryInterface, Sequelize) => { + return queryInterface.dropTable('CatalogItemImages') + } +} diff --git a/src/data/migrations/20241111150828-create-catalog-item-input-type.js b/src/data/migrations/20241111150828-create-catalog-item-input-type.js new file mode 100644 index 000000000..0606561b2 --- /dev/null +++ b/src/data/migrations/20241111150828-create-catalog-item-input-type.js @@ -0,0 +1,31 @@ +'use strict' +module.exports = { + up: (queryInterface, Sequelize) => { + return queryInterface.createTable('CatalogItemInputTypes', { + id: { + type: Sequelize.INTEGER, + primaryKey: true, + autoIncrement: true, + allowNull: false, + field: 'id' + }, + infoType: { + type: Sequelize.TEXT, + field: 'info_type' + }, + infoFormat: { + type: Sequelize.TEXT, + field: 'info_format' + }, + catalogItemId: { + type: Sequelize.INTEGER, + field: 'catalog_item_id', + references: { model: 'CatalogItems', key: 'id' }, + onDelete: 'cascade' + } + }) + }, + down: (queryInterface, Sequelize) => { + return queryInterface.dropTable('CatalogItemInputTypes') + } +} diff --git a/src/data/migrations/20241111150853-create-catalog-item-output-type.js b/src/data/migrations/20241111150853-create-catalog-item-output-type.js new file mode 100644 index 000000000..5b1a8d0ee --- /dev/null +++ b/src/data/migrations/20241111150853-create-catalog-item-output-type.js @@ -0,0 +1,31 @@ +'use strict' +module.exports = { + up: (queryInterface, Sequelize) => { + return queryInterface.createTable('CatalogItemOutputTypes', { + id: { + type: Sequelize.INTEGER, + primaryKey: true, + autoIncrement: true, + allowNull: false, + field: 'id' + }, + infoType: { + type: Sequelize.TEXT, + field: 'info_type' + }, + infoFormat: { + type: Sequelize.TEXT, + field: 'info_format' + }, + catalogItemId: { + type: Sequelize.INTEGER, + field: 'catalog_item_id', + references: { model: 'CatalogItems', key: 'id' }, + onDelete: 'cascade' + } + }) + }, + down: (queryInterface, Sequelize) => { + return queryInterface.dropTable('CatalogItemOutputTypes') + } +} diff --git a/src/data/migrations/20241111150954-create-fog.js b/src/data/migrations/20241111150954-create-fog.js new file mode 100644 index 000000000..612700a5e --- /dev/null +++ b/src/data/migrations/20241111150954-create-fog.js @@ -0,0 +1,283 @@ +'use strict' + +const { convertToInt } = require('../../helpers/app-helper') + +module.exports = { + up: (queryInterface, Sequelize) => { + return queryInterface.createTable('Fogs', { + uuid: { + type: Sequelize.STRING(32), + primaryKey: true, + allowNull: false, + field: 'uuid' + }, + name: { + type: Sequelize.TEXT, + defaultValue: 'Unnamed ioFog 1', + field: 'name' + }, + location: { + type: Sequelize.TEXT, + field: 'location' + }, + gpsMode: { + type: Sequelize.TEXT, + field: 'gps_mode' + }, + latitude: { + type: Sequelize.FLOAT, + field: 'latitude' + }, + longitude: { + type: Sequelize.FLOAT, + field: 'longitude' + }, + description: { + type: Sequelize.TEXT, + field: 'description' + }, + lastactive: { + type: Sequelize.BIGINT, + get () { + return convertToInt(this.getDataValue('lastactive')) + }, + field: 'last_active' + }, + daemonStatus: { + type: Sequelize.TEXT, + defaultValue: 'UNKNOWN', + field: 'daemon_status' + }, + daemonOperatingDuration: { + type: Sequelize.BIGINT, + get () { + return convertToInt(this.getDataValue('daemonOperatingDuration')) + }, + defaultValue: 0, + field: 'daemon_operating_duration' + }, + daemonLastStart: { + type: Sequelize.BIGINT, + get () { + return convertToInt(this.getDataValue('daemonLastStart')) + }, + field: 'daemon_last_start' + }, + memoryUsage: { + type: Sequelize.FLOAT, + defaultValue: 0.000, + field: 'memory_usage' + }, + diskUsage: { + type: Sequelize.FLOAT, + defaultValue: 0.000, + field: 'disk_usage' + }, + cpuUsage: { + type: Sequelize.FLOAT, + defaultValue: 0.00, + field: 'cpu_usage' + }, + memoryViolation: { + type: Sequelize.TEXT, + field: 'memory_violation' + }, + diskViolation: { + type: Sequelize.TEXT, + field: 'disk_violation' + }, + cpuViolation: { + type: Sequelize.TEXT, + field: 'cpu_violation' + }, + cpuViolation: { + type: Sequelize.TEXT, + field: 'cpu_violation' + }, + cpuViolation: { + type: Sequelize.TEXT, + field: 'cpu_violation' + }, + cpuViolation: { + type: Sequelize.TEXT, + field: 'cpu_violation' + }, + catalogItemStatus: { + type: Sequelize.TEXT, + field: 'catalog_item_status' + }, + repositoryCount: { + type: Sequelize.BIGINT, + get () { + return convertToInt(this.getDataValue('repositoryCount')) + }, + field: 'repository_count' + }, + repositoryStatus: { + type: Sequelize.TEXT, + field: 'repository_status' + }, + systemTime: { + type: Sequelize.BIGINT, + get () { + return convertToInt(this.getDataValue('systemTime')) + }, + field: 'system_time' + }, + lastStatusTime: { + type: Sequelize.BIGINT, + get () { + return convertToInt(this.getDataValue('lastStatusTime')) + }, + field: 'last_status_time' + }, + ipAddress: { + type: Sequelize.TEXT, + defaultValue: '0.0.0.0', + field: 'ip_address' + }, + processedMessages: { + type: Sequelize.BIGINT, + get () { + return convertToInt(this.getDataValue('processedMessages')) + }, + defaultValue: 0, + field: 'processed_messages' + }, + catalogItemMessageCounts: { + type: Sequelize.TEXT, + field: 'catalog_item_message_counts' + }, + messageSpeed: { + type: Sequelize.BIGINT, + get () { + return convertToInt(this.getDataValue('messageSpeed')) + }, + field: 'message_speed' + }, + lastCommandTime: { + type: Sequelize.BIGINT, + get () { + return convertToInt(this.getDataValue('lastCommandTime')) + }, + field: 'last_command_time' + }, + networkInterface: { + type: Sequelize.TEXT, + defaultValue: 'eth0', + field: 'network_interface' + }, + dockerUrl: { + type: Sequelize.TEXT, + defaultValue: 'unix:///var/run/docker.sock', + field: 'docker_url' + }, + diskLimit: { + type: Sequelize.FLOAT, + defaultValue: 50, + field: 'disk_limit' + }, + diskDirectory: { + type: Sequelize.TEXT, + defaultValue: '/var/lib/iofog/', + field: 'disk_directory' + }, + memoryLimit: { + type: Sequelize.FLOAT, + defaultValue: 4096, + field: 'memory_limit' + }, + cpuLimit: { + type: Sequelize.FLOAT, + defaultValue: 80, + field: 'cpu_limit' + }, + logLimit: { + type: Sequelize.FLOAT, + defaultValue: 10, + field: 'log_limit' + }, + logDirectory: { + type: Sequelize.TEXT, + defaultValue: '/var/log/iofog/', + field: 'log_directory' + }, + bluetoothEnabled: { + type: Sequelize.BOOLEAN, + defaultValue: false, + field: 'bluetooth' + }, + abstractedHardwareEnabled: { + type: Sequelize.BOOLEAN, + defaultValue: false, + field: 'hal' + }, + logFileCount: { + type: Sequelize.BIGINT, + get () { + return convertToInt(this.getDataValue('logFileCount')) + }, + defaultValue: 10, + field: 'log_file_count' + }, + version: { + type: Sequelize.TEXT, + field: 'version' + }, + isReadyToUpgrade: { + type: Sequelize.BOOLEAN, + defaultValue: true, + field: 'is_ready_to_upgrade' + }, + isReadyToRollback: { + type: Sequelize.BOOLEAN, + defaultValue: false, + field: 'is_ready_to_rollback' + }, + statusFrequency: { + type: Sequelize.INTEGER, + defaultValue: 10, + field: 'status_frequency' + }, + changeFrequency: { + type: Sequelize.INTEGER, + defaultValue: 20, + field: 'change_frequency' + }, + deviceScanFrequency: { + type: Sequelize.INTEGER, + defaultValue: 20, + field: 'device_scan_frequency' + }, + tunnel: { + type: Sequelize.TEXT, + defaultValue: '', + field: 'tunnel' + }, + watchdogEnabled: { + type: Sequelize.BOOLEAN, + defaultValue: true, + field: 'isolated_docker_container' + }, + createdAt: { + allowNull: false, + type: Sequelize.DATE, + field: 'created_at' + }, + updatedAt: { + allowNull: false, + type: Sequelize.DATE, + field: 'updated_at' + }, + fogTypeId: { + type: Sequelize.INTEGER, + field: 'fog_type_id', + references: { model: 'FogTypes', key: 'id' }, + onDelete: 'set null' + } + }) + }, + down: (queryInterface, Sequelize) => { + return queryInterface.dropTable('Fogs') + } +} From 40b5b87e85f20a815d571d358f62df24ffb1f31a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Wed, 13 Nov 2024 20:00:52 +0300 Subject: [PATCH 130/146] docker base image updated --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 45aab3472..2c098afb8 100644 --- a/Dockerfile +++ b/Dockerfile @@ -22,7 +22,7 @@ RUN npm version $PKG_VERSION --allow-same-version --no-git-tag-version RUN npm pack -FROM registry.access.redhat.com/ubi9/nodejs-20-minimal:1-63.1726695170 +FROM registry.access.redhat.com/ubi9/nodejs-20-minimal:9.5-1730525319 USER root # Install dependencies for logging and development From 509636ebfdb1990bd5b21c7f52ef215367aa6f39 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Wed, 13 Nov 2024 20:06:59 +0300 Subject: [PATCH 131/146] version updated --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 88bc355c4..1b3f30595 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@datasance/iofogcontroller", - "version": "3.4.2", + "version": "3.4.3", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@datasance/iofogcontroller", - "version": "3.4.2", + "version": "3.4.3", "hasInstallScript": true, "license": "EPL-2.0", "dependencies": { diff --git a/package.json b/package.json index 9ad9435af..ff3570561 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@datasance/iofogcontroller", - "version": "3.4.2", + "version": "3.4.3", "description": "ioFog Controller project for Eclipse IoFog @ iofog.org \\nCopyright (c) 2023 Datasance Teknoloji A.S.", "main": "./src/main.js", "author": "Emirhan Durmus", From b9a8876a1920368969d84bfafdc61183c5d62094 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Thu, 14 Nov 2024 17:44:25 +0300 Subject: [PATCH 132/146] isconsumer fixed, old version data models cleaning --- Dockerfile | 2 +- package-lock.json | 4 +- package.json | 2 +- src/data/managers/microservice-manager.js | 8 +--- .../migrations/20241111150954-create-fog.js | 12 ------ src/data/models/microservice.js | 5 --- src/data/models/routing.js | 41 ------------------- src/services/microservices-service.js | 2 +- 8 files changed, 7 insertions(+), 69 deletions(-) diff --git a/Dockerfile b/Dockerfile index 2c098afb8..bfd09abfc 100644 --- a/Dockerfile +++ b/Dockerfile @@ -22,7 +22,7 @@ RUN npm version $PKG_VERSION --allow-same-version --no-git-tag-version RUN npm pack -FROM registry.access.redhat.com/ubi9/nodejs-20-minimal:9.5-1730525319 +FROM registry.access.redhat.com/ubi9/nodejs-20-minimal:latest USER root # Install dependencies for logging and development diff --git a/package-lock.json b/package-lock.json index 88bc355c4..1b3f30595 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@datasance/iofogcontroller", - "version": "3.4.2", + "version": "3.4.3", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@datasance/iofogcontroller", - "version": "3.4.2", + "version": "3.4.3", "hasInstallScript": true, "license": "EPL-2.0", "dependencies": { diff --git a/package.json b/package.json index 9ad9435af..ff3570561 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@datasance/iofogcontroller", - "version": "3.4.2", + "version": "3.4.3", "description": "ioFog Controller project for Eclipse IoFog @ iofog.org \\nCopyright (c) 2023 Datasance Teknoloji A.S.", "main": "./src/main.js", "author": "Emirhan Durmus", diff --git a/src/data/managers/microservice-manager.js b/src/data/managers/microservice-manager.js index c8a54a058..559ad59bf 100644 --- a/src/data/managers/microservice-manager.js +++ b/src/data/managers/microservice-manager.js @@ -35,7 +35,6 @@ const microserviceExcludedFields = [ 'created_at', 'updated_at', 'updatedBy', - 'isNetwork', 'rebuild', 'deleteWithCleanUp', 'imageSnapshot', @@ -131,8 +130,7 @@ class MicroserviceManager extends BaseManager { attributes: ['uuid'] }], attributes: { exclude: ['id', 'source_microservice_uuid', - 'sourceMicroserviceUuid', 'destMicroserviceUuid', 'sourceNetworkMicroserviceUuid', - 'destNetworkMicroserviceUuid', 'sourceIofogUuid', 'destIofogUuid'] } + 'sourceMicroserviceUuid', 'destMicroserviceUuid'] } } ], where: where, @@ -317,9 +315,7 @@ class MicroserviceManager extends BaseManager { attributes: ['uuid'] }], attributes: { exclude: ['id', - 'sourceMicroserviceUuid', 'destMicroserviceUuid', - 'sourceNetworkMicroserviceUuid', 'destNetworkMicroserviceUuid', - 'sourceIofogUuid', 'destIofogUuid'] } + 'sourceMicroserviceUuid', 'destMicroserviceUuid'] } } ], where: where, diff --git a/src/data/migrations/20241111150954-create-fog.js b/src/data/migrations/20241111150954-create-fog.js index 612700a5e..cb97959e7 100644 --- a/src/data/migrations/20241111150954-create-fog.js +++ b/src/data/migrations/20241111150954-create-fog.js @@ -90,18 +90,6 @@ module.exports = { type: Sequelize.TEXT, field: 'cpu_violation' }, - cpuViolation: { - type: Sequelize.TEXT, - field: 'cpu_violation' - }, - cpuViolation: { - type: Sequelize.TEXT, - field: 'cpu_violation' - }, - cpuViolation: { - type: Sequelize.TEXT, - field: 'cpu_violation' - }, catalogItemStatus: { type: Sequelize.TEXT, field: 'catalog_item_status' diff --git a/src/data/models/microservice.js b/src/data/models/microservice.js index 7ce25b690..a3c080cf7 100644 --- a/src/data/models/microservice.js +++ b/src/data/models/microservice.js @@ -27,11 +27,6 @@ module.exports = (sequelize, DataTypes) => { }, field: 'config_last_updated' }, - isNetwork: { - type: DataTypes.BOOLEAN, - field: 'is_network', - defaultValue: false - }, rebuild: { type: DataTypes.BOOLEAN, field: 'rebuild', diff --git a/src/data/models/routing.js b/src/data/models/routing.js index be63e3f09..3f748ae77 100644 --- a/src/data/models/routing.js +++ b/src/data/models/routing.js @@ -12,11 +12,6 @@ module.exports = (sequelize, DataTypes) => { type: DataTypes.TEXT, allowNull: false, field: 'name' - }, - isNetworkConnection: { - type: DataTypes.BOOLEAN, - defaultValue: false, - field: 'is_network_connection' } }, { tableName: 'Routings', @@ -42,42 +37,6 @@ module.exports = (sequelize, DataTypes) => { onDelete: 'cascade' }) - Routing.belongsTo(models.Microservice, { - foreignKey: { - name: 'sourceNetworkMicroserviceUuid', - field: 'source_network_microservice_uuid' - }, - as: 'sourceNetworkMicroservice', - onDelete: 'set null' - }) - - Routing.belongsTo(models.Microservice, { - foreignKey: { - name: 'destNetworkMicroserviceUuid', - field: 'dest_network_microservice_uuid' - }, - as: 'destNetworkMicroservice', - onDelete: 'set null' - }) - - Routing.belongsTo(models.Fog, { - foreignKey: { - name: 'sourceIofogUuid', - field: 'source_iofog_uuid' - }, - as: 'sourceIofog', - onDelete: 'set null' - }) - - Routing.belongsTo(models.Fog, { - foreignKey: { - name: 'destIofogUuid', - field: 'dest_iofog_uuid' - }, - as: 'destIofog', - onDelete: 'set null' - }) - Routing.belongsTo(models.Application, { foreignKey: { name: 'applicationId', diff --git a/src/services/microservices-service.js b/src/services/microservices-service.js index c5f3e971c..c919d2770 100644 --- a/src/services/microservices-service.js +++ b/src/services/microservices-service.js @@ -966,7 +966,7 @@ async function getReceiverMicroservices (microservice, transaction) { async function isMicroserviceConsumer (microservice, transaction) { const routes = await RoutingManager.findAll({ destMicroserviceUuid: microservice.uuid }, transaction) - return !!(routes && routes.length > 0) + return Boolean(routes.length) } async function createVolumeMappingEndPoint (microserviceUuid, volumeMappingData, isCLI, transaction) { From 14493aafd25578e919f0eb3337fa47f0efbbde9d Mon Sep 17 00:00:00 2001 From: Alpaslan DOGAN Date: Thu, 14 Nov 2024 17:45:49 +0300 Subject: [PATCH 133/146] Swagger feature added. --- package-lock.json | 229 +++++++++++++++++++++++++++++++++++++++++++++- package.json | 4 +- src/server.js | 47 +++++++++- swagger.js | 22 +++++ 4 files changed, 296 insertions(+), 6 deletions(-) create mode 100644 swagger.js diff --git a/package-lock.json b/package-lock.json index 1b3f30595..d8720fcf0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -51,10 +51,12 @@ "sequelize": "6.37.3", "sqlite3": "^5.1.7", "string-format": "2.0.0", + "swagger-jsdoc": "^6.2.8", "swagger-ui-express": "^5.0.0", "umzug": "^3.7.0", "underscore": "1.13.6", - "xss-clean": "0.1.1" + "xss-clean": "0.1.1", + "yamljs": "^0.3.0" }, "bin": { "iofog-controller": "src/main.js" @@ -92,6 +94,46 @@ "node": ">=6.0.0" } }, + "node_modules/@apidevtools/json-schema-ref-parser": { + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-9.1.2.tgz", + "integrity": "sha512-r1w81DpR+KyRWd3f+rk6TNqMgedmAxZP5v5KWlXQWlgMUUtyEJch0DKEci1SorPMiSeM8XPl7MZ3miJ60JIpQg==", + "dependencies": { + "@jsdevtools/ono": "^7.1.3", + "@types/json-schema": "^7.0.6", + "call-me-maybe": "^1.0.1", + "js-yaml": "^4.1.0" + } + }, + "node_modules/@apidevtools/openapi-schemas": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@apidevtools/openapi-schemas/-/openapi-schemas-2.1.0.tgz", + "integrity": "sha512-Zc1AlqrJlX3SlpupFGpiLi2EbteyP7fXmUOGup6/DnkRgjP9bgMM/ag+n91rsv0U1Gpz0H3VILA/o3bW7Ua6BQ==", + "engines": { + "node": ">=10" + } + }, + "node_modules/@apidevtools/swagger-methods": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@apidevtools/swagger-methods/-/swagger-methods-3.0.2.tgz", + "integrity": "sha512-QAkD5kK2b1WfjDS/UQn/qQkbwF31uqRjPTrsCs5ZG9BQGAkjwvqGFjjPqAuzac/IYzpPtRzjCP1WrTuAIjMrXg==" + }, + "node_modules/@apidevtools/swagger-parser": { + "version": "10.0.3", + "resolved": "https://registry.npmjs.org/@apidevtools/swagger-parser/-/swagger-parser-10.0.3.tgz", + "integrity": "sha512-sNiLY51vZOmSPFZA5TF35KZ2HbgYklQnTSDnkghamzLb3EkNtcQnrBQEj5AOCxHpTtXpqMCRM1CrmV2rG6nw4g==", + "dependencies": { + "@apidevtools/json-schema-ref-parser": "^9.0.6", + "@apidevtools/openapi-schemas": "^2.0.4", + "@apidevtools/swagger-methods": "^3.0.2", + "@jsdevtools/ono": "^7.1.3", + "call-me-maybe": "^1.0.1", + "z-schema": "^5.0.1" + }, + "peerDependencies": { + "openapi-types": ">=7" + } + }, "node_modules/@babel/code-frame": { "version": "7.24.2", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.2.tgz", @@ -1006,6 +1048,11 @@ "@jridgewell/sourcemap-codec": "^1.4.14" } }, + "node_modules/@jsdevtools/ono": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/@jsdevtools/ono/-/ono-7.1.3.tgz", + "integrity": "sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==" + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -1388,6 +1435,11 @@ "@types/ms": "*" } }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==" + }, "node_modules/@types/ms": { "version": "0.7.34", "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz", @@ -2315,6 +2367,11 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/call-me-maybe": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.2.tgz", + "integrity": "sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==" + }, "node_modules/caller-path": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", @@ -4209,7 +4266,6 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "devOptional": true, "engines": { "node": ">=0.10.0" } @@ -7088,6 +7144,11 @@ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "dev": true }, + "node_modules/lodash.mergewith": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz", + "integrity": "sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==" + }, "node_modules/log-symbols": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", @@ -8619,7 +8680,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "devOptional": true, "engines": { "node": ">=0.10.0" } @@ -12135,6 +12195,95 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/swagger-jsdoc": { + "version": "6.2.8", + "resolved": "https://registry.npmjs.org/swagger-jsdoc/-/swagger-jsdoc-6.2.8.tgz", + "integrity": "sha512-VPvil1+JRpmJ55CgAtn8DIcpBs0bL5L3q5bVQvF4tAW/k/9JYSj7dCpaYCAv5rufe0vcCbBRQXGvzpkWjvLklQ==", + "dependencies": { + "commander": "6.2.0", + "doctrine": "3.0.0", + "glob": "7.1.6", + "lodash.mergewith": "^4.6.2", + "swagger-parser": "^10.0.3", + "yaml": "2.0.0-1" + }, + "bin": { + "swagger-jsdoc": "bin/swagger-jsdoc.js" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/swagger-jsdoc/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==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/swagger-jsdoc/node_modules/commander": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.0.tgz", + "integrity": "sha512-zP4jEKbe8SHzKJYQmq8Y9gYjtO/POJLgIdKgV7B9qNmABVFVc+ctqSX6iXh4mCpJfRBOabiZ2YKPg8ciDw6C+Q==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/swagger-jsdoc/node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/swagger-jsdoc/node_modules/glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/swagger-jsdoc/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/swagger-parser": { + "version": "10.0.3", + "resolved": "https://registry.npmjs.org/swagger-parser/-/swagger-parser-10.0.3.tgz", + "integrity": "sha512-nF7oMeL4KypldrQhac8RyHerJeGPD1p2xDh900GPvc+Nk7nWP6jX2FcC7WmkinMoAmoO774+AFXcWsW8gMWEIg==", + "dependencies": { + "@apidevtools/swagger-parser": "10.0.3" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/swagger-ui-dist": { "version": "5.17.10", "resolved": "https://registry.npmjs.org/swagger-ui-dist/-/swagger-ui-dist-5.17.10.tgz", @@ -13289,6 +13438,80 @@ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, + "node_modules/yaml": { + "version": "2.0.0-1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.0.0-1.tgz", + "integrity": "sha512-W7h5dEhywMKenDJh2iX/LABkbFnBxasD27oyXWDS/feDsxiw0dD5ncXdYXgkvAsXIY2MpW/ZKkr9IU30DBdMNQ==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/yamljs": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/yamljs/-/yamljs-0.3.0.tgz", + "integrity": "sha512-C/FsVVhht4iPQYXOInoxUM/1ELSf9EsgKH34FofQOp6hwCPrW4vG4w5++TED3xRUo8gD7l0P1J1dLlDYzODsTQ==", + "dependencies": { + "argparse": "^1.0.7", + "glob": "^7.0.5" + }, + "bin": { + "json2yaml": "bin/json2yaml", + "yaml2json": "bin/yaml2json" + } + }, + "node_modules/yamljs/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/yamljs/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==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/yamljs/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "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/yamljs/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/yamljs/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/yargs": { "version": "16.2.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", diff --git a/package.json b/package.json index ff3570561..6e04eda77 100644 --- a/package.json +++ b/package.json @@ -96,10 +96,12 @@ "sequelize": "6.37.3", "sqlite3": "^5.1.7", "string-format": "2.0.0", + "swagger-jsdoc": "^6.2.8", "swagger-ui-express": "^5.0.0", "umzug": "^3.7.0", "underscore": "1.13.6", - "xss-clean": "0.1.1" + "xss-clean": "0.1.1", + "yamljs": "^0.3.0" }, "devDependencies": { "acorn": "8.11.3", diff --git a/src/server.js b/src/server.js index 15a12acd3..4dd15989e 100755 --- a/src/server.js +++ b/src/server.js @@ -28,7 +28,27 @@ const { renderFile } = require('ejs') const xss = require('xss-clean') const { substitutionMiddleware } = require('./helpers/template-helper') const swaggerUi = require('swagger-ui-express') -const swaggerFile = require('../docs/swagger.json') +const yaml = require('yamljs') +const swaggerDocument = yaml.load('/home/runner/.npm-global/lib/node_modules/@datasance/iofogcontroller/docs/swagger.yaml') + +if (!swaggerDocument.components) { + swaggerDocument.components = {} +} + +swaggerDocument.components.securitySchemes = { + userToken: { + type: 'http', + scheme: 'bearer', + bearerFormat: 'JWT' + } +} + +swaggerDocument.security = [ + { + userToken: [] + } +] + const multer = require('multer') const multerMemStorage = multer.memoryStorage() const uploadFile = (fileName) => multer({ @@ -235,4 +255,27 @@ initState() startHttpServer({ api: app, viewer: viewerApp }, { api: apiPort, viewer: viewerPort }, jobs) } }) -app.use('/docs', swaggerUi.serve, swaggerUi.setup(swaggerFile)) +app.use('/docs', swaggerUi.serve) + +app.use('/docs', (req, res, next) => { + const userToken = req.query && req.query.userToken ? req.query.userToken : '' + + const options = { + swaggerOptions: { + authAction: { + userToken: { + name: 'userToken', + schema: { + type: 'http', + in: 'header', + name: 'Authorization', + description: 'Bearer Token (User Token)' + }, + value: `${userToken}` + } + } + } + } + + swaggerUi.setup(swaggerDocument, options)(req, res, next) +}) diff --git a/swagger.js b/swagger.js new file mode 100644 index 000000000..cd25b89e8 --- /dev/null +++ b/swagger.js @@ -0,0 +1,22 @@ +// swagger.js +const swaggerJsDoc = require('swagger-jsdoc') + +const swaggerOptions = { + swaggerDefinition: { + openapi: '3.0.0', + info: { + title: 'API Documentation', + version: '1.0.0', + description: 'Datasancae API Documentation' + }, + servers: [ + { + url: 'http://localhost:3000' + } + ] + }, + apis: ['./routes/*.js'] +} + +const swaggerDocs = swaggerJsDoc(swaggerOptions) +module.exports = swaggerDocs From c48a29ec57d400f5e9127418635b5cc8e878ba1e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Wed, 27 Nov 2024 13:44:56 +0300 Subject: [PATCH 134/146] sqli migration and seeder scripts added, user refresh token endpoint created, proxy host configured --- .gitignore | 3 +- docs/swagger.json | 26 +- docs/swagger.yaml | 47 +- src/controllers/user-controller.js | 13 + .../migrations/20241111145836-create-flow.js | 48 -- .../20241111145901-create-registry.js | 49 -- .../20241111145917-create-catalog-item.js | 77 --- .../20241111150318-create-fog-types.js | 47 -- ...0241111150428-create-catalog-item-image.js | 33 - ...11150828-create-catalog-item-input-type.js | 31 - ...1150853-create-catalog-item-output-type.js | 31 - .../migrations/20241111150954-create-fog.js | 271 --------- src/data/migrations/db_migration_v1.0.2.sql | 567 ++++++++++++++++++ src/data/models/index.js | 14 + src/data/providers/database-provider.js | 153 ++++- src/data/seeders/db_seeder_v1.0.1.sql | 91 +++ src/routes/user.js | 29 + src/schemas/user.js | 12 +- src/services/microservice-ports/default.js | 2 +- src/services/user-service.js | 46 +- 20 files changed, 977 insertions(+), 613 deletions(-) delete mode 100644 src/data/migrations/20241111145836-create-flow.js delete mode 100644 src/data/migrations/20241111145901-create-registry.js delete mode 100644 src/data/migrations/20241111145917-create-catalog-item.js delete mode 100644 src/data/migrations/20241111150318-create-fog-types.js delete mode 100644 src/data/migrations/20241111150428-create-catalog-item-image.js delete mode 100644 src/data/migrations/20241111150828-create-catalog-item-input-type.js delete mode 100644 src/data/migrations/20241111150853-create-catalog-item-output-type.js delete mode 100644 src/data/migrations/20241111150954-create-fog.js create mode 100644 src/data/migrations/db_migration_v1.0.2.sql create mode 100644 src/data/seeders/db_seeder_v1.0.1.sql diff --git a/.gitignore b/.gitignore index 3524ddf39..a80448af3 100644 --- a/.gitignore +++ b/.gitignore @@ -16,4 +16,5 @@ node_modules .DS_Store iofogcontroller-*.tgz diagnostic/ -iofog-iofogcontroller-*.tgz \ No newline at end of file +iofog-iofogcontroller-*.tgz +.npmrc \ No newline at end of file diff --git a/docs/swagger.json b/docs/swagger.json index 88a597df3..a90060f22 100644 --- a/docs/swagger.json +++ b/docs/swagger.json @@ -2,7 +2,7 @@ "openapi" : "3.0.0", "info" : { "version" : "1.0.0", - "title" : "Datasance PoT-ioFog Controller" + "title" : "Datasance PoT Controller" }, "tags" : [ { "name" : "Controller", @@ -2672,6 +2672,30 @@ } } }, + "/user/refresh" : { + "post" : { + "tags" : [ "Refresh" ], + "summary" : "Refresh accessToken with refreshToken", + "operationId" : "refresh", + "parameters" : [ ], + "responses" : { + "200" : { + "description" : "Success", + "headers" : { + "X-Timestamp" : { + "description" : "FogController server timestamp" + } + } + }, + "400" : { + "description" : "bad request" + }, + "401" : { + "description" : "incorrect credentials" + } + } + } + }, "/user/logout" : { "post" : { "tags" : [ "User" ], diff --git a/docs/swagger.yaml b/docs/swagger.yaml index 7aea9f6ce..52a2e1106 100755 --- a/docs/swagger.yaml +++ b/docs/swagger.yaml @@ -1,7 +1,7 @@ openapi : "3.0.0" info: version: 1.0.0 - title: Datasance PoT-ioFog Controller + title: Datasance PoT Controller paths: /status: get: @@ -2524,6 +2524,34 @@ paths: description: bad request "401": description: incorrect credentials + /user/refresh: + post: + tags: + - Refresh + summary: Refresh accessToken with refreshToken + operationId: refresh + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/RefreshRequest" + required: true + responses: + "200": + description: Success + headers: + X-Timestamp: + description: FogController server timestamp + schema: + type: number + content: + application/json: + schema: + $ref: "#/components/schemas/RefreshSuccessResponse" + "400": + description: bad request + "401": + description: incorrect credentials /user/logout: post: tags: @@ -4531,6 +4559,10 @@ components: - email - password - totp + RefreshRequest: + type: string + required: + - refreshToken properties: email: type: string @@ -4542,9 +4574,22 @@ components: type: object required: - accessToken + - refreshToken properties: accessToken: type: string + refreshToken: + type: string + RefreshSuccessResponse: + type: object + required: + - accessToken + - refreshToken + properties: + accessToken: + type: string + refreshToken: + type: string UserProfileDetailsResponse: type: object properties: diff --git a/src/controllers/user-controller.js b/src/controllers/user-controller.js index 5291dc5ec..9cff77445 100644 --- a/src/controllers/user-controller.js +++ b/src/controllers/user-controller.js @@ -28,6 +28,18 @@ const userLoginEndPoint = async function (req) { return UserService.login(credentials, false) } +const refreshTokenEndPoint = async function (req) { + const token = req.body + + await Validator.validate(token, Validator.schemas.refresh) + + const credentials = { + refreshToken: token.refreshToken + + } + return UserService.refresh(credentials, false) +} + const getUserProfileEndPoint = async function (req) { return UserService.profile(req, false) } @@ -38,6 +50,7 @@ const userLogoutEndPoint = async function (req) { module.exports = { userLoginEndPoint: userLoginEndPoint, + refreshTokenEndPoint: refreshTokenEndPoint, getUserProfileEndPoint: getUserProfileEndPoint, userLogoutEndPoint: userLogoutEndPoint } diff --git a/src/data/migrations/20241111145836-create-flow.js b/src/data/migrations/20241111145836-create-flow.js deleted file mode 100644 index 6a2eb5ae2..000000000 --- a/src/data/migrations/20241111145836-create-flow.js +++ /dev/null @@ -1,48 +0,0 @@ -'use strict' -module.exports = { - up: (queryInterface, Sequelize) => { - return queryInterface.createTable('Flows', { - id: { - type: Sequelize.INTEGER, - primaryKey: true, - autoIncrement: true, - allowNull: false, - field: 'id' - - }, - name: { - type: Sequelize.TEXT, - field: 'name', - defaultValue: 'New Application' - }, - description: { - type: Sequelize.TEXT, - field: 'description', - defaultValue: '' - }, - isActivated: { - type: Sequelize.BOOLEAN, - field: 'is_activated', - defaultValue: false - }, - isSystem: { - type: Sequelize.BOOLEAN, - field: 'is_system', - defaultValue: false - }, - createdAt: { - allowNull: false, - type: Sequelize.DATE, - field: 'created_at' - }, - updatedAt: { - allowNull: false, - type: Sequelize.DATE, - field: 'updated_at' - } - }) - }, - down: (queryInterface, Sequelize) => { - return queryInterface.dropTable('Flows') - } -} diff --git a/src/data/migrations/20241111145901-create-registry.js b/src/data/migrations/20241111145901-create-registry.js deleted file mode 100644 index a6cfd9e41..000000000 --- a/src/data/migrations/20241111145901-create-registry.js +++ /dev/null @@ -1,49 +0,0 @@ -'use strict' -module.exports = { - up: (queryInterface, Sequelize) => { - return queryInterface.createTable('Registries', { - id: { - type: Sequelize.INTEGER, - primaryKey: true, - autoIncrement: true, - allowNull: false, - field: 'id' - }, - url: { - type: Sequelize.TEXT, - field: 'url' - }, - isPublic: { - type: Sequelize.BOOLEAN, - field: 'is_public' - }, - secure: { - type: Sequelize.BOOLEAN, - field: 'secure' - }, - certificate: { - type: Sequelize.TEXT, - field: 'certificate' - }, - requiresCert: { - type: Sequelize.BOOLEAN, - field: 'requires_cert' - }, - username: { - type: Sequelize.TEXT, - field: 'user_name' - }, - password: { - type: Sequelize.TEXT, - field: 'password' - }, - userEmail: { - type: Sequelize.TEXT, - field: 'user_email' - } - }) - }, - down: (queryInterface, Sequelize) => { - return queryInterface.dropTable('Registries') - } -} diff --git a/src/data/migrations/20241111145917-create-catalog-item.js b/src/data/migrations/20241111145917-create-catalog-item.js deleted file mode 100644 index 934fd85f3..000000000 --- a/src/data/migrations/20241111145917-create-catalog-item.js +++ /dev/null @@ -1,77 +0,0 @@ -'use strict' - -const { convertToInt } = require('../../helpers/app-helper') - -module.exports = { - up: (queryInterface, Sequelize) => { - return queryInterface.createTable('CatalogItems', { - id: { - type: Sequelize.INTEGER, - primaryKey: true, - autoIncrement: true, - allowNull: false, - field: 'id' - }, - name: { - type: Sequelize.TEXT, - field: 'name', - defaultValue: 'New Catalog Item' - }, - description: { - type: Sequelize.TEXT, - field: 'description', - defaultValue: '' - }, - category: { - type: Sequelize.TEXT, - field: 'category' - }, - configExample: { - type: Sequelize.TEXT, - field: 'config_example', - defaultValue: '{}' - }, - publisher: { - type: Sequelize.TEXT, - field: 'publisher' - }, - diskRequired: { - type: Sequelize.BIGINT, - get () { - return convertToInt(this.getDataValue('diskRequired')) - }, - field: 'disk_required', - defaultValue: 0 - }, - ramRequired: { - type: Sequelize.BIGINT, - get () { - return convertToInt(this.getDataValue('ramRequired')) - }, - field: 'ram_required', - defaultValue: 0 - }, - picture: { - type: Sequelize.TEXT, - field: 'picture', - defaultValue: 'images/shared/default.png' - }, - isPublic: { - type: Sequelize.BOOLEAN, - field: 'is_public', - defaultValue: false - }, - registryId: { - type: Sequelize.INTEGER, - field: 'registry_id', - as: 'registryId', - references: { model: 'Registries', key: 'id' }, - onDelete: 'set null', - defaultValue: 1 - } - }) - }, - down: (queryInterface, Sequelize) => { - return queryInterface.dropTable('CatalogItems') - } -} diff --git a/src/data/migrations/20241111150318-create-fog-types.js b/src/data/migrations/20241111150318-create-fog-types.js deleted file mode 100644 index 8a9607648..000000000 --- a/src/data/migrations/20241111150318-create-fog-types.js +++ /dev/null @@ -1,47 +0,0 @@ -'use strict' -module.exports = { - up: (queryInterface, Sequelize) => { - return queryInterface.createTable('FogTypes', { - id: { - type: Sequelize.INTEGER, - primaryKey: true, - autoIncrement: true, - allowNull: false, - field: 'id' - }, - name: { - type: Sequelize.TEXT, - field: 'name' - }, - image: { - type: Sequelize.TEXT, - field: 'image' - }, - description: { - type: Sequelize.TEXT, - field: 'description' - }, - networkCatalogItemId: { - type: Sequelize.INTEGER, - field: 'network_catalog_item_id', - references: { model: 'CatalogItems', key: 'id' }, - onDelete: 'cascade' - }, - halCatalogItemId: { - type: Sequelize.INTEGER, - field: 'hal_catalog_item_id', - references: { model: 'CatalogItems', key: 'id' }, - onDelete: 'cascade' - }, - bluetoothCatalogItemId: { - type: Sequelize.INTEGER, - field: 'bluetooth_catalog_item_id', - references: { model: 'CatalogItems', key: 'id' }, - onDelete: 'cascade' - } - }) - }, - down: (queryInterface, Sequelize) => { - return queryInterface.dropTable('FogTypes') - } -} diff --git a/src/data/migrations/20241111150428-create-catalog-item-image.js b/src/data/migrations/20241111150428-create-catalog-item-image.js deleted file mode 100644 index b69109136..000000000 --- a/src/data/migrations/20241111150428-create-catalog-item-image.js +++ /dev/null @@ -1,33 +0,0 @@ -'use strict' -module.exports = { - up: (queryInterface, Sequelize) => { - return queryInterface.createTable('CatalogItemImages', { - id: { - type: Sequelize.INTEGER, - primaryKey: true, - autoIncrement: true, - allowNull: false, - field: 'id' - }, - containerImage: { - type: Sequelize.TEXT, - field: 'container_image' - }, - catalogItemId: { - type: Sequelize.INTEGER, - field: 'catalog_item_id', - references: { model: 'CatalogItems', key: 'id' }, - onDelete: 'cascade' - }, - fogTypeId: { - type: Sequelize.INTEGER, - field: 'fog_type_id', - references: { model: 'FogTypes', key: 'id' }, - onDelete: 'cascade' - } - }) - }, - down: (queryInterface, Sequelize) => { - return queryInterface.dropTable('CatalogItemImages') - } -} diff --git a/src/data/migrations/20241111150828-create-catalog-item-input-type.js b/src/data/migrations/20241111150828-create-catalog-item-input-type.js deleted file mode 100644 index 0606561b2..000000000 --- a/src/data/migrations/20241111150828-create-catalog-item-input-type.js +++ /dev/null @@ -1,31 +0,0 @@ -'use strict' -module.exports = { - up: (queryInterface, Sequelize) => { - return queryInterface.createTable('CatalogItemInputTypes', { - id: { - type: Sequelize.INTEGER, - primaryKey: true, - autoIncrement: true, - allowNull: false, - field: 'id' - }, - infoType: { - type: Sequelize.TEXT, - field: 'info_type' - }, - infoFormat: { - type: Sequelize.TEXT, - field: 'info_format' - }, - catalogItemId: { - type: Sequelize.INTEGER, - field: 'catalog_item_id', - references: { model: 'CatalogItems', key: 'id' }, - onDelete: 'cascade' - } - }) - }, - down: (queryInterface, Sequelize) => { - return queryInterface.dropTable('CatalogItemInputTypes') - } -} diff --git a/src/data/migrations/20241111150853-create-catalog-item-output-type.js b/src/data/migrations/20241111150853-create-catalog-item-output-type.js deleted file mode 100644 index 5b1a8d0ee..000000000 --- a/src/data/migrations/20241111150853-create-catalog-item-output-type.js +++ /dev/null @@ -1,31 +0,0 @@ -'use strict' -module.exports = { - up: (queryInterface, Sequelize) => { - return queryInterface.createTable('CatalogItemOutputTypes', { - id: { - type: Sequelize.INTEGER, - primaryKey: true, - autoIncrement: true, - allowNull: false, - field: 'id' - }, - infoType: { - type: Sequelize.TEXT, - field: 'info_type' - }, - infoFormat: { - type: Sequelize.TEXT, - field: 'info_format' - }, - catalogItemId: { - type: Sequelize.INTEGER, - field: 'catalog_item_id', - references: { model: 'CatalogItems', key: 'id' }, - onDelete: 'cascade' - } - }) - }, - down: (queryInterface, Sequelize) => { - return queryInterface.dropTable('CatalogItemOutputTypes') - } -} diff --git a/src/data/migrations/20241111150954-create-fog.js b/src/data/migrations/20241111150954-create-fog.js deleted file mode 100644 index cb97959e7..000000000 --- a/src/data/migrations/20241111150954-create-fog.js +++ /dev/null @@ -1,271 +0,0 @@ -'use strict' - -const { convertToInt } = require('../../helpers/app-helper') - -module.exports = { - up: (queryInterface, Sequelize) => { - return queryInterface.createTable('Fogs', { - uuid: { - type: Sequelize.STRING(32), - primaryKey: true, - allowNull: false, - field: 'uuid' - }, - name: { - type: Sequelize.TEXT, - defaultValue: 'Unnamed ioFog 1', - field: 'name' - }, - location: { - type: Sequelize.TEXT, - field: 'location' - }, - gpsMode: { - type: Sequelize.TEXT, - field: 'gps_mode' - }, - latitude: { - type: Sequelize.FLOAT, - field: 'latitude' - }, - longitude: { - type: Sequelize.FLOAT, - field: 'longitude' - }, - description: { - type: Sequelize.TEXT, - field: 'description' - }, - lastactive: { - type: Sequelize.BIGINT, - get () { - return convertToInt(this.getDataValue('lastactive')) - }, - field: 'last_active' - }, - daemonStatus: { - type: Sequelize.TEXT, - defaultValue: 'UNKNOWN', - field: 'daemon_status' - }, - daemonOperatingDuration: { - type: Sequelize.BIGINT, - get () { - return convertToInt(this.getDataValue('daemonOperatingDuration')) - }, - defaultValue: 0, - field: 'daemon_operating_duration' - }, - daemonLastStart: { - type: Sequelize.BIGINT, - get () { - return convertToInt(this.getDataValue('daemonLastStart')) - }, - field: 'daemon_last_start' - }, - memoryUsage: { - type: Sequelize.FLOAT, - defaultValue: 0.000, - field: 'memory_usage' - }, - diskUsage: { - type: Sequelize.FLOAT, - defaultValue: 0.000, - field: 'disk_usage' - }, - cpuUsage: { - type: Sequelize.FLOAT, - defaultValue: 0.00, - field: 'cpu_usage' - }, - memoryViolation: { - type: Sequelize.TEXT, - field: 'memory_violation' - }, - diskViolation: { - type: Sequelize.TEXT, - field: 'disk_violation' - }, - cpuViolation: { - type: Sequelize.TEXT, - field: 'cpu_violation' - }, - catalogItemStatus: { - type: Sequelize.TEXT, - field: 'catalog_item_status' - }, - repositoryCount: { - type: Sequelize.BIGINT, - get () { - return convertToInt(this.getDataValue('repositoryCount')) - }, - field: 'repository_count' - }, - repositoryStatus: { - type: Sequelize.TEXT, - field: 'repository_status' - }, - systemTime: { - type: Sequelize.BIGINT, - get () { - return convertToInt(this.getDataValue('systemTime')) - }, - field: 'system_time' - }, - lastStatusTime: { - type: Sequelize.BIGINT, - get () { - return convertToInt(this.getDataValue('lastStatusTime')) - }, - field: 'last_status_time' - }, - ipAddress: { - type: Sequelize.TEXT, - defaultValue: '0.0.0.0', - field: 'ip_address' - }, - processedMessages: { - type: Sequelize.BIGINT, - get () { - return convertToInt(this.getDataValue('processedMessages')) - }, - defaultValue: 0, - field: 'processed_messages' - }, - catalogItemMessageCounts: { - type: Sequelize.TEXT, - field: 'catalog_item_message_counts' - }, - messageSpeed: { - type: Sequelize.BIGINT, - get () { - return convertToInt(this.getDataValue('messageSpeed')) - }, - field: 'message_speed' - }, - lastCommandTime: { - type: Sequelize.BIGINT, - get () { - return convertToInt(this.getDataValue('lastCommandTime')) - }, - field: 'last_command_time' - }, - networkInterface: { - type: Sequelize.TEXT, - defaultValue: 'eth0', - field: 'network_interface' - }, - dockerUrl: { - type: Sequelize.TEXT, - defaultValue: 'unix:///var/run/docker.sock', - field: 'docker_url' - }, - diskLimit: { - type: Sequelize.FLOAT, - defaultValue: 50, - field: 'disk_limit' - }, - diskDirectory: { - type: Sequelize.TEXT, - defaultValue: '/var/lib/iofog/', - field: 'disk_directory' - }, - memoryLimit: { - type: Sequelize.FLOAT, - defaultValue: 4096, - field: 'memory_limit' - }, - cpuLimit: { - type: Sequelize.FLOAT, - defaultValue: 80, - field: 'cpu_limit' - }, - logLimit: { - type: Sequelize.FLOAT, - defaultValue: 10, - field: 'log_limit' - }, - logDirectory: { - type: Sequelize.TEXT, - defaultValue: '/var/log/iofog/', - field: 'log_directory' - }, - bluetoothEnabled: { - type: Sequelize.BOOLEAN, - defaultValue: false, - field: 'bluetooth' - }, - abstractedHardwareEnabled: { - type: Sequelize.BOOLEAN, - defaultValue: false, - field: 'hal' - }, - logFileCount: { - type: Sequelize.BIGINT, - get () { - return convertToInt(this.getDataValue('logFileCount')) - }, - defaultValue: 10, - field: 'log_file_count' - }, - version: { - type: Sequelize.TEXT, - field: 'version' - }, - isReadyToUpgrade: { - type: Sequelize.BOOLEAN, - defaultValue: true, - field: 'is_ready_to_upgrade' - }, - isReadyToRollback: { - type: Sequelize.BOOLEAN, - defaultValue: false, - field: 'is_ready_to_rollback' - }, - statusFrequency: { - type: Sequelize.INTEGER, - defaultValue: 10, - field: 'status_frequency' - }, - changeFrequency: { - type: Sequelize.INTEGER, - defaultValue: 20, - field: 'change_frequency' - }, - deviceScanFrequency: { - type: Sequelize.INTEGER, - defaultValue: 20, - field: 'device_scan_frequency' - }, - tunnel: { - type: Sequelize.TEXT, - defaultValue: '', - field: 'tunnel' - }, - watchdogEnabled: { - type: Sequelize.BOOLEAN, - defaultValue: true, - field: 'isolated_docker_container' - }, - createdAt: { - allowNull: false, - type: Sequelize.DATE, - field: 'created_at' - }, - updatedAt: { - allowNull: false, - type: Sequelize.DATE, - field: 'updated_at' - }, - fogTypeId: { - type: Sequelize.INTEGER, - field: 'fog_type_id', - references: { model: 'FogTypes', key: 'id' }, - onDelete: 'set null' - } - }) - }, - down: (queryInterface, Sequelize) => { - return queryInterface.dropTable('Fogs') - } -} diff --git a/src/data/migrations/db_migration_v1.0.2.sql b/src/data/migrations/db_migration_v1.0.2.sql new file mode 100644 index 000000000..8321a99d8 --- /dev/null +++ b/src/data/migrations/db_migration_v1.0.2.sql @@ -0,0 +1,567 @@ + +CREATE TABLE IF NOT EXISTS Flows ( + id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, + name VARCHAR(255) UNIQUE, + description VARCHAR(255) DEFAULT '', + is_activated BOOLEAN DEFAULT false, + is_system BOOLEAN DEFAULT false, + created_at DATETIME, + updated_at DATETIME +); + +CREATE TABLE IF NOT EXISTS Registries ( + id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, + url VARCHAR(255), + is_public BOOLEAN, + secure BOOLEAN, + certificate TEXT, + requires_cert BOOLEAN, + user_name TEXT, + password TEXT, + user_email TEXT +); + + +CREATE TABLE IF NOT EXISTS CatalogItems ( + id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, + name VARCHAR(255) UNIQUE, + description VARCHAR(255), + category TEXT, + config_example VARCHAR(255) DEFAULT '{}', + publisher TEXT, + disk_required BIGINT DEFAULT 0, + ram_required BIGINT DEFAULT 0, + picture VARCHAR(255) DEFAULT 'images/shared/default.png', + is_public BOOLEAN DEFAULT false, + registry_id INT, + FOREIGN KEY (registry_id) REFERENCES Registries (id) ON DELETE SET NULL +); + +CREATE INDEX idx_catalog_item_registry_id ON CatalogItems (registry_id); + + +CREATE TABLE IF NOT EXISTS FogTypes ( + id INT PRIMARY KEY, + name TEXT, + image TEXT, + description TEXT, + network_catalog_item_id INT, + hal_catalog_item_id INT, + bluetooth_catalog_item_id INT, + FOREIGN KEY (network_catalog_item_id) REFERENCES CatalogItems (id) ON DELETE CASCADE, + FOREIGN KEY (hal_catalog_item_id) REFERENCES CatalogItems (id) ON DELETE CASCADE, + FOREIGN KEY (bluetooth_catalog_item_id) REFERENCES CatalogItems (id) ON DELETE CASCADE +); + +CREATE INDEX idx_fog_type_network_catalog_item_id ON FogTypes (network_catalog_item_id); +CREATE INDEX idx_fog_type_hal_catalog_item_id ON FogTypes (hal_catalog_item_id); +CREATE INDEX idx_fog_type_bluetooth_catalog_item_id ON FogTypes (bluetooth_catalog_item_id); + + +CREATE TABLE IF NOT EXISTS Fogs ( + uuid VARCHAR(32) PRIMARY KEY NOT NULL, + name VARCHAR(255) DEFAULT 'Unnamed ioFog 1', + location TEXT, + gps_mode TEXT, + latitude FLOAT, + longitude FLOAT, + description TEXT, + last_active BIGINT, + daemon_status VARCHAR(32) DEFAULT 'UNKNOWN', + daemon_operating_duration BIGINT DEFAULT 0, + daemon_last_start BIGINT, + memory_usage FLOAT DEFAULT 0.000, + disk_usage FLOAT DEFAULT 0.000, + cpu_usage FLOAT DEFAULT 0.00, + memory_violation TEXT, + disk_violation TEXT, + cpu_violation TEXT, + system_available_disk BIGINT, + system_available_memory BIGINT, + system_total_cpu FLOAT, + security_status VARCHAR(32) DEFAULT 'OK', + security_violation_info VARCHAR(32) DEFAULT 'No violation', + catalog_item_status TEXT, + repository_count BIGINT DEFAULT 0, + repository_status TEXT, + system_time BIGINT, + last_status_time BIGINT, + ip_address VARCHAR(32) DEFAULT '0.0.0.0', + ip_address_external VARCHAR(32) DEFAULT '0.0.0.0', + host VARCHAR(32), + processed_messages BIGINT DEFAULT 0, + catalog_item_message_counts TEXT, + message_speed FLOAT DEFAULT 0.000, + last_command_time BIGINT, + network_interface VARCHAR(32) DEFAULT 'eth0', + docker_url VARCHAR(255) DEFAULT 'unix:///var/run/docker.sock', + disk_limit FLOAT DEFAULT 50, + disk_directory VARCHAR(255) DEFAULT '/var/lib/iofog/', + memory_limit FLOAT DEFAULT 4096, + cpu_limit FLOAT DEFAULT 80, + log_limit FLOAT DEFAULT 10, + log_directory VARCHAR(255) DEFAULT '/var/log/iofog/', + bluetooth BOOLEAN DEFAULT FALSE, + hal BOOLEAN DEFAULT FALSE, + log_file_count BIGINT DEFAULT 10, + `version` TEXT, + is_ready_to_upgrade BOOLEAN DEFAULT TRUE, + is_ready_to_rollback BOOLEAN DEFAULT FALSE, + status_frequency INT DEFAULT 10, + change_frequency INT DEFAULT 20, + device_scan_frequency INT DEFAULT 20, + tunnel VARCHAR(255) DEFAULT '', + isolated_docker_container BOOLEAN DEFAULT TRUE, + docker_pruning_freq INT DEFAULT 1, + available_disk_threshold FLOAT DEFAULT 20, + log_level VARCHAR(10) DEFAULT 'INFO', + is_system BOOLEAN DEFAULT FALSE, + router_id INT DEFAULT 0, + time_zone VARCHAR(32) DEFAULT 'Etc/UTC', + created_at DATETIME, + updated_at DATETIME, + fog_type_id INT DEFAULT 0, + FOREIGN KEY (fog_type_id) REFERENCES FogTypes (id) +); + +CREATE INDEX idx_fog_fog_type_id ON Fogs (fog_type_id); + +CREATE TABLE IF NOT EXISTS ChangeTrackings ( + id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, + microservice_config BOOLEAN DEFAULT false, + reboot BOOLEAN DEFAULT false, + deletenode BOOLEAN DEFAULT false, + version BOOLEAN DEFAULT false, + microservice_list BOOLEAN DEFAULT false, + config BOOLEAN DEFAULT false, + routing BOOLEAN DEFAULT false, + registries BOOLEAN DEFAULT false, + tunnel BOOLEAN DEFAULT false, + diagnostics BOOLEAN DEFAULT false, + router_changed BOOLEAN DEFAULT false, + image_snapshot BOOLEAN DEFAULT false, + prune BOOLEAN DEFAULT false, + linked_edge_resources BOOLEAN DEFAULT false, + last_updated VARCHAR(255) DEFAULT false, + iofog_uuid VARCHAR(32), + FOREIGN KEY (iofog_uuid) REFERENCES Fogs (uuid) ON DELETE CASCADE +); + +CREATE INDEX idx_change_tracking_iofog_uuid ON ChangeTrackings (iofog_uuid); + +CREATE TABLE IF NOT EXISTS FogAccessTokens ( + id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, + expiration_time BIGINT, + token TEXT, + iofog_uuid VARCHAR(32), + FOREIGN KEY (iofog_uuid) REFERENCES Fogs (uuid) ON DELETE CASCADE +); + +CREATE INDEX idx_fog_access_tokens_iofogUuid ON FogAccessTokens (iofog_uuid); + +CREATE TABLE IF NOT EXISTS FogProvisionKeys ( + id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, + provisioning_string VARCHAR(100), + expiration_time BIGINT, + iofog_uuid VARCHAR(32), + FOREIGN KEY (iofog_uuid) REFERENCES Fogs (uuid) ON DELETE CASCADE +); + +CREATE INDEX idx_fog_provision_keys_iofogUuid ON FogProvisionKeys (iofog_uuid); + +CREATE TABLE IF NOT EXISTS FogVersionCommands ( + id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, + version_command VARCHAR(100), + iofog_uuid VARCHAR(32), + FOREIGN KEY (iofog_uuid) REFERENCES Fogs (uuid) ON DELETE CASCADE +); + +CREATE INDEX idx_fog_version_commands_iofogUuid ON FogVersionCommands (iofog_uuid); + +CREATE TABLE IF NOT EXISTS HWInfos ( + id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, + info TEXT, + created_at DATETIME, + updated_at DATETIME, + iofog_uuid VARCHAR(32), + FOREIGN KEY (iofog_uuid) REFERENCES Fogs (uuid) ON DELETE CASCADE +); + +CREATE INDEX idx_hw_infos_iofogUuid ON HWInfos (iofog_uuid); + +CREATE TABLE IF NOT EXISTS USBInfos ( + id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, + info TEXT, + created_at DATETIME, + updated_at DATETIME, + iofog_uuid VARCHAR(32), + FOREIGN KEY (iofog_uuid) REFERENCES Fogs (uuid) ON DELETE CASCADE +); + +CREATE INDEX idx_usb_infos_iofogUuid ON USBInfos (iofog_uuid); + +CREATE TABLE IF NOT EXISTS Tunnels ( + id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, + username TEXT, + password TEXT, + host TEXT, + remote_port INT, + local_port INT DEFAULT 22, + rsa_key TEXT, + closed BOOLEAN DEFAULT false, + iofog_uuid VARCHAR(32), + FOREIGN KEY (iofog_uuid) REFERENCES Fogs (uuid) ON DELETE CASCADE +); + +CREATE INDEX idx_tunnels_iofogUuid ON Tunnels (iofog_uuid); + +CREATE TABLE IF NOT EXISTS Microservices ( + uuid VARCHAR(32) PRIMARY KEY NOT NULL, + config TEXT, + name VARCHAR(255) DEFAULT 'New Microservice', + config_last_updated BIGINT, + rebuild BOOLEAN DEFAULT false, + root_host_access BOOLEAN DEFAULT false, + log_size BIGINT DEFAULT 0, + image_snapshot VARCHAR(255) DEFAULT '', + `delete` BOOLEAN DEFAULT false, + delete_with_cleanup BOOLEAN DEFAULT false, + created_at DATETIME, + updated_at DATETIME, + catalog_item_id INT, + registry_id INT DEFAULT 1, + iofog_uuid VARCHAR(32), + application_id INT, + run_as_user TEXT, + platform TEXT, + runtime TEXT, + FOREIGN KEY (catalog_item_id) REFERENCES CatalogItems (id) ON DELETE CASCADE, + FOREIGN KEY (registry_id) REFERENCES Registries (id) ON DELETE SET NULL, + FOREIGN KEY (iofog_uuid) REFERENCES Fogs (uuid) ON DELETE CASCADE, + FOREIGN KEY (application_id) REFERENCES Flows (id) ON DELETE CASCADE +); + +CREATE INDEX idx_microservices_catalogItemId ON Microservices (catalog_item_id); +CREATE INDEX idx_microservices_registryId ON Microservices (registry_id); +CREATE INDEX idx_microservices_iofogUuid ON Microservices (iofog_uuid); +CREATE INDEX idx_microservices_applicationId ON Microservices (application_id); + +CREATE TABLE IF NOT EXISTS MicroserviceArgs ( + id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, + cmd TEXT, + microservice_uuid VARCHAR(32), + FOREIGN KEY (microservice_uuid) REFERENCES Microservices (uuid) ON DELETE CASCADE +); + +CREATE INDEX idx_microservice_args_microserviceUuid ON MicroserviceArgs (microservice_uuid); + +CREATE TABLE IF NOT EXISTS MicroserviceEnvs ( + id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, + `key` TEXT, + `value` TEXT, + microservice_uuid VARCHAR(32), + FOREIGN KEY (microservice_uuid) REFERENCES Microservices (uuid) ON DELETE CASCADE +); + +CREATE INDEX idx_microservice_envs_microserviceUuid ON MicroserviceEnvs (microservice_uuid); + +CREATE TABLE IF NOT EXISTS MicroserviceExtraHost ( + id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, + template_type TEXT, + name TEXT, + public_port INT, + template TEXT, + `value` TEXT, + microservice_uuid VARCHAR(32), + target_microservice_uuid VARCHAR(32), + target_fog_uuid VARCHAR(32), + FOREIGN KEY (microservice_uuid) REFERENCES Microservices (uuid) ON DELETE CASCADE, + FOREIGN KEY (target_microservice_uuid) REFERENCES Microservices (uuid) ON DELETE CASCADE, + FOREIGN KEY (target_fog_uuid) REFERENCES Fogs (uuid) ON DELETE CASCADE +); + +CREATE INDEX idx_microservice_extra_host_microserviceUuid ON MicroserviceExtraHost (microservice_uuid); +CREATE INDEX idx_microservice_extra_host_targetMicroserviceUuid ON MicroserviceExtraHost (target_microservice_uuid); +CREATE INDEX idx_microservice_extra_host_targetFogUuid ON MicroserviceExtraHost (target_fog_uuid); + +CREATE TABLE IF NOT EXISTS MicroservicePorts ( + id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, + port_internal INT, + port_external INT, + is_udp BOOLEAN, + is_public BOOLEAN, + is_proxy BOOLEAN, + created_at DATETIME, + updated_at DATETIME, + microservice_uuid VARCHAR(32), + FOREIGN KEY (microservice_uuid) REFERENCES Microservices (uuid) ON DELETE CASCADE +); + +CREATE INDEX idx_microservice_port_microserviceUuid ON MicroservicePorts (microservice_uuid); + +CREATE TABLE IF NOT EXISTS MicroservicePublicPorts ( + id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, + port_id INT UNIQUE, + host_id VARCHAR(255) UNIQUE, + local_proxy_id TEXT, + remote_proxy_id TEXT, + public_port INT, + queue_name TEXT, + schemes VARCHAR(255) DEFAULT '["https"]', + is_tcp BOOLEAN DEFAULT false, + created_at DATETIME, + updated_at DATETIME, + protocol VARCHAR(255) AS (CASE WHEN is_tcp THEN 'tcp' ELSE 'http' END) VIRTUAL, + FOREIGN KEY (port_id) REFERENCES MicroservicePorts (id) ON DELETE CASCADE, + FOREIGN KEY (host_id) REFERENCES Fogs (uuid) ON DELETE CASCADE +); + +CREATE INDEX idx_microservice_public_port_portId ON MicroservicePublicPorts (port_id); +CREATE INDEX idx_microservice_public_port_hostId ON MicroservicePublicPorts (host_id); + + +CREATE TABLE IF NOT EXISTS MicroserviceStatuses ( + id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, + status VARCHAR(255) DEFAULT 'QUEUED', + operating_duration BIGINT DEFAULT 0, + start_time BIGINT DEFAULT 0, + cpu_usage FLOAT DEFAULT 0.000, + memory_usage BIGINT DEFAULT 0, + container_id VARCHAR(255) DEFAULT '', + percentage FLOAT DEFAULT 0.00, + error_message VARCHAR(255) DEFAULT '', + microservice_uuid VARCHAR(32), + created_at DATETIME, + updated_at DATETIME, + FOREIGN KEY (microservice_uuid) REFERENCES Microservices (uuid) ON DELETE CASCADE +); + +CREATE INDEX idx_microservice_status_microserviceUuid ON MicroserviceStatuses (microservice_uuid); + +CREATE TABLE IF NOT EXISTS StraceDiagnostics ( + id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, + strace_run BOOLEAN, + buffer VARCHAR(255) DEFAULT '', + microservice_uuid VARCHAR(32), + FOREIGN KEY (microservice_uuid) REFERENCES Microservices (uuid) ON DELETE CASCADE +); + +CREATE INDEX idx_strace_diagnostics_microserviceUuid ON StraceDiagnostics (microservice_uuid); + +CREATE TABLE IF NOT EXISTS VolumeMappings ( + uuid INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, + host_destination TEXT, + container_destination TEXT, + access_mode TEXT, + type TEXT, + microservice_uuid VARCHAR(32), + FOREIGN KEY (microservice_uuid) REFERENCES Microservices (uuid) ON DELETE CASCADE +); + +CREATE INDEX idx_volume_mappings_microserviceUuid ON VolumeMappings (microservice_uuid); + + +CREATE TABLE IF NOT EXISTS CatalogItemImages ( + id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, + container_image TEXT, + catalog_item_id INT, + microservice_uuid VARCHAR(32), + fog_type_id INT, + FOREIGN KEY (catalog_item_id) REFERENCES CatalogItems (id) ON DELETE CASCADE, + FOREIGN KEY (microservice_uuid) REFERENCES Microservices (uuid) ON DELETE CASCADE, + FOREIGN KEY (fog_type_id) REFERENCES FogTypes (id) ON DELETE CASCADE +); + +CREATE INDEX idx_catalog_item_image_catalog_item_id ON CatalogItemImages (catalog_item_id); +CREATE INDEX idx_catalog_item_image_microservice_uuid ON CatalogItemImages (microservice_uuid); +CREATE INDEX idx_catalog_item_image_fog_type_id ON CatalogItemImages (fog_type_id); + +CREATE TABLE IF NOT EXISTS CatalogItemInputTypes ( + id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, + info_type TEXT, + info_format TEXT, + catalog_item_id INT, + FOREIGN KEY (catalog_item_id) REFERENCES CatalogItems (id) ON DELETE CASCADE +); + +CREATE INDEX idx_catalog_item_input_type_catalog_item_id ON CatalogItemInputTypes (catalog_item_id); + +CREATE TABLE IF NOT EXISTS CatalogItemOutputTypes ( + id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, + info_type TEXT, + info_format TEXT, + catalog_item_id INT, + FOREIGN KEY (catalog_item_id) REFERENCES CatalogItems (id) ON DELETE CASCADE +); + +CREATE INDEX idx_catalog_item_output_type_catalog_item_id ON CatalogItemOutputTypes (catalog_item_id); + + +CREATE TABLE IF NOT EXISTS Routings ( + id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, + name TEXT NOT NULL, + source_microservice_uuid VARCHAR(32), + dest_microservice_uuid VARCHAR(32), + application_id INT, + FOREIGN KEY (source_microservice_uuid) REFERENCES Microservices (uuid) ON DELETE CASCADE, + FOREIGN KEY (dest_microservice_uuid) REFERENCES Microservices (uuid) ON DELETE CASCADE, + FOREIGN KEY (application_id) REFERENCES Flows (id) ON DELETE CASCADE +); + +CREATE INDEX idx_routing_sourceMicroserviceUuid ON Routings (source_microservice_uuid); +CREATE INDEX idx_routing_destMicroserviceUuid ON Routings (dest_microservice_uuid); +CREATE INDEX idx_routing_applicationId ON Routings (application_id); + +CREATE TABLE IF NOT EXISTS Routers ( + id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, + is_edge BOOLEAN DEFAULT true, + messaging_port INT DEFAULT 5672, + edge_router_port INT, + inter_router_port INT, + host TEXT, + is_default BOOLEAN DEFAULT false, + iofog_uuid VARCHAR(32), + created_at DATETIME, + updated_at DATETIME, + FOREIGN KEY (iofog_uuid) REFERENCES Fogs (uuid) ON DELETE CASCADE + +); + +CREATE INDEX idx_router_iofogUuid ON Routers (iofog_uuid); + + +CREATE TABLE RouterConnections ( + id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, + source_router INT, + dest_router INT, + created_at DATETIME NOT NULL, + updated_at DATETIME NOT NULL, + FOREIGN KEY (source_router) REFERENCES Routers(id) ON DELETE CASCADE, + FOREIGN KEY (dest_router) REFERENCES Routers(id) ON DELETE CASCADE +); + +CREATE INDEX idx_routerconnections_sourceRouter ON RouterConnections (source_router); +CREATE INDEX idx_routerconnections_destRouter ON RouterConnections (dest_router); + + + +CREATE TABLE IF NOT EXISTS Config ( + id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, + `key` VARCHAR(255) NOT NULL UNIQUE, + value VARCHAR(255) NOT NULL, + created_at DATETIME, + updated_at DATETIME +); + +CREATE INDEX idx_config_key ON Config (`key`); + + +CREATE TABLE IF NOT EXISTS Tags ( + id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, + value VARCHAR(255) UNIQUE NOT NULL +); + +CREATE TABLE IF NOT EXISTS IofogTags ( + id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, + fog_uuid VARCHAR(32), + tag_id INT, + FOREIGN KEY (fog_uuid) REFERENCES Fogs (uuid) ON DELETE CASCADE, + FOREIGN KEY (tag_id) REFERENCES Tags (id) ON DELETE CASCADE +); + +CREATE INDEX idx_iofogtags_fog_uuid ON IofogTags (fog_uuid); +CREATE INDEX idx_iofogtags_tag_id ON IofogTags (tag_id); + +CREATE TABLE IF NOT EXISTS EdgeResources ( + id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, + name VARCHAR(255) NOT NULL, + version TEXT, + description TEXT, + display_name TEXT, + display_color TEXT, + display_icon TEXT, + interface_protocol TEXT, + interface_id INT, + custom TEXT +); + + +CREATE TABLE IF NOT EXISTS AgentEdgeResources ( + id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, + fog_uuid VARCHAR(32), + edge_resource_id INT, + FOREIGN KEY (fog_uuid) REFERENCES Fogs (uuid) ON DELETE CASCADE, + FOREIGN KEY (edge_resource_id) REFERENCES EdgeResources (id) ON DELETE CASCADE +); + +CREATE TABLE IF NOT EXISTS EdgeResourceOrchestrationTags ( + id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, + edge_resource_id INT, + tag_id INT, + FOREIGN KEY (edge_resource_id) REFERENCES EdgeResources (id) ON DELETE CASCADE, + FOREIGN KEY (tag_id) REFERENCES Tags (id) ON DELETE CASCADE +); + +CREATE INDEX idx_agentedgeresources_fog_id ON AgentEdgeResources (fog_uuid); +CREATE INDEX idx_agentedgeresources_edge_resource_id ON AgentEdgeResources (edge_resource_id); +CREATE INDEX idx_edgeresourceorchestrationtags_edge_resource_id ON EdgeResourceOrchestrationTags (edge_resource_id); +CREATE INDEX idx_edgeresourceorchestrationtags_tag_id ON EdgeResourceOrchestrationTags (tag_id); + +CREATE TABLE IF NOT EXISTS HTTPBasedResourceInterfaces ( + id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, + edge_resource_id INT, + FOREIGN KEY (edge_resource_id) REFERENCES EdgeResources (id) ON DELETE CASCADE +); + +CREATE TABLE IF NOT EXISTS HTTPBasedResourceInterfaceEndpoints ( + id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, + interface_id INT, + name TEXT, + description TEXT, + `method` TEXT, + url TEXT, + requestType TEXT, + responseType TEXT, + requestPayloadExample TEXT, + responsePayloadExample TEXT, + FOREIGN KEY (interface_id) REFERENCES HTTPBasedResourceInterfaces (id) ON DELETE CASCADE +); + +CREATE INDEX idx_httpbasedresourceinterfaces_edge_resource_id ON HTTPBasedResourceInterfaces (edge_resource_id); +CREATE INDEX idx_httpbasedresourceinterfaceendpoints_interface_id ON HTTPBasedResourceInterfaceEndpoints (interface_id); + + +CREATE TABLE IF NOT EXISTS ApplicationTemplates ( + id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, + name VARCHAR(255) UNIQUE NOT NULL DEFAULT 'new-application', + description VARCHAR(255) DEFAULT '', + schema_version VARCHAR(255) DEFAULT '', + application_json LONGTEXT, + created_at DATETIME, + updated_at DATETIME + +); + + +CREATE TABLE IF NOT EXISTS ApplicationTemplateVariables ( + id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, + application_template_id INT NOT NULL, + `key` TEXT, + description VARCHAR(255) DEFAULT '', + default_value VARCHAR(255), + created_at DATETIME, + updated_at DATETIME, + FOREIGN KEY (application_template_id) REFERENCES ApplicationTemplates (id) ON DELETE CASCADE +); + +CREATE INDEX idx_applicationtemplatevariables_application_template_id ON ApplicationTemplateVariables (application_template_id); + +CREATE TABLE IF NOT EXISTS MicroserviceCdiDevices ( + id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, + cdi_devices TEXT, + microservice_uuid VARCHAR(32), + FOREIGN KEY (microservice_uuid) REFERENCES Microservices (uuid) ON DELETE CASCADE +); + +CREATE INDEX idx_microservice_cdiDevices_microserviceUuid ON MicroserviceCdiDevices (microservice_uuid); + diff --git a/src/data/models/index.js b/src/data/models/index.js index 9c74bfd34..5a2886c83 100644 --- a/src/data/models/index.js +++ b/src/data/models/index.js @@ -47,6 +47,20 @@ db.initDB = async (isStart) => { await databaseProvider.initDB(isStart) if (isStart) { + if (databaseProvider instanceof require('../providers/sqlite')) { + const sqliteDbPath = databaseProvider.sequelize.options.storage + + // Check if the database file exists + if (fs.existsSync(sqliteDbPath)) { + console.log('Database file exists. Running migrations only...') + await databaseProvider.runMigration(sqliteDbPath) // Ensure migration finishes before moving on + } else { + console.log('Database file does not exist. Running migrations and seeders...') + await databaseProvider.runMigration(sqliteDbPath) // Wait for migration to finish + await databaseProvider.runSeeder(sqliteDbPath) // Wait for seeding to finish + } + } + // Configure system images const fogTypes = await db.FogType.findAll({}) await configureImage(db, constants.ROUTER_CATALOG_NAME, fogTypes, config.get('SystemImages:Router', {})) diff --git a/src/data/providers/database-provider.js b/src/data/providers/database-provider.js index 067946283..dbc1e61d6 100644 --- a/src/data/providers/database-provider.js +++ b/src/data/providers/database-provider.js @@ -1,36 +1,149 @@ const path = require('path') -const Sequelize = require('sequelize') -const Umzug = require('umzug') +const fs = require('fs') +const sqlite3 = require('sqlite3').verbose() class DatabaseProvider { constructor () { this.basename = path.basename(__filename) } - async initDB () { - throw new Error('Not Implemented') + // Async function for the migration process + async runMigration (dbName) { + const migrationSqlPath = path.resolve(__dirname, '../migrations/db_migration_v1.0.2.sql') + + if (!fs.existsSync(migrationSqlPath)) { + console.error(`Migration file not found: ${migrationSqlPath}`) + throw new Error('Migration file not found') + } + + const migrationSql = fs.readFileSync(migrationSqlPath).toString() + const dataArr = migrationSql.split(';') // Split by semicolon + + let db = new sqlite3.Database(dbName, (err) => { + if (err) { + console.error(err.message) + throw err + } + console.log('Connected to the SQLite database for migration.') + }) + + try { + db.serialize(() => { + db.run('PRAGMA foreign_keys=OFF;') // Disable foreign key checks during migration + db.run('BEGIN TRANSACTION;') // Start transaction + }) + + for (let query of dataArr) { + if (query.trim()) { + query = query.trim() + ';' // Ensure semicolon is added back + console.log(`Running migration query: ${query}`) + + // Run each query sequentially + await new Promise((resolve, reject) => { + db.run(query, (err) => { + if (err) { + if ( + err.message.includes('already exists') || + err.message.includes('duplicate') + ) { + console.warn(`Ignored error: ${err.message}`) + resolve() // Ignore specific errors + } else { + db.run('ROLLBACK;') // Rollback transaction on error + reject(err) // Reject on other errors + } + } else { + resolve() + } + }) + }) + } + } + + // Commit the transaction if all queries succeed + db.run('COMMIT;') + console.log('Migration completed successfully.') + } catch (err) { + console.error('Migration failed:', err) + throw err + } finally { + db.close((err) => { + if (err) { + console.error('Error closing database connection:', err.message) + } else { + console.log('Database connection closed after migration.') + } + }) + } } - createUmzug (path) { - if (!this.sequelize) { - throw new Error('Sequelize is not initialized') + // Async function for the seeding process + async runSeeder (dbName) { + const seederSqlPath = path.resolve(__dirname, '../seeders/db_seeder_v1.0.1.sql') + + if (!fs.existsSync(seederSqlPath)) { + console.error(`Seeder file not found: ${seederSqlPath}`) + throw new Error('Seeder file not found') } - return new Umzug({ - storage: 'sequelize', - storageOptions: { - sequelize: this.sequelize - }, - logging: false, - migrations: { - params: [ - this.sequelize.getQueryInterface(), - Sequelize - ], - path, - pattern: /\.js$/ + const seederSql = fs.readFileSync(seederSqlPath).toString() + const dataArr = seederSql.split(';') // Split by semicolon + + let db = new sqlite3.Database(dbName, (err) => { + if (err) { + console.error(err.message) + throw err } + console.log('Connected to the SQLite database for seeding.') }) + + try { + db.serialize(() => { + db.run('BEGIN TRANSACTION;') // Start transaction + }) + + for (let query of dataArr) { + if (query.trim()) { + query = query.trim() + ';' // Ensure semicolon is added back + console.log(`Running seeder query: ${query}`) + + // Run each query sequentially + await new Promise((resolve, reject) => { + db.run(query, (err) => { + if (err) { + if ( + err.message.includes('already exists') || + err.message.includes('duplicate') + ) { + console.warn(`Ignored error: ${err.message}`) + resolve() // Ignore specific errors + } else { + db.run('ROLLBACK;') // Rollback transaction on error + reject(err) // Reject on other errors + } + } else { + resolve() + } + }) + }) + } + } + + // Commit the transaction if all queries succeed + db.run('COMMIT;') + console.log('Seeding completed successfully.') + } catch (err) { + console.error('Seeding failed:', err) + throw err + } finally { + db.close((err) => { + if (err) { + console.error('Error closing database connection:', err.message) + } else { + console.log('Database connection closed after seeding.') + } + }) + } } } diff --git a/src/data/seeders/db_seeder_v1.0.1.sql b/src/data/seeders/db_seeder_v1.0.1.sql new file mode 100644 index 000000000..14f97371b --- /dev/null +++ b/src/data/seeders/db_seeder_v1.0.1.sql @@ -0,0 +1,91 @@ + +INSERT INTO "Registries" (url, is_public, secure, certificate, requires_cert, user_name, password, user_email) +VALUES + ('registry.hub.docker.com', true, true, '', false, '', '', ''), + ('from_cache', true, true, '', false, '', '', ''); + + +INSERT INTO "CatalogItems" (name, description, category, publisher, disk_required, ram_required, picture, config_example, is_public, registry_id) +VALUES + ('Networking Tool', 'The built-in networking tool for Eclipse ioFog.', 'SYSTEM', 'Eclipse ioFog', 0, 0, 'none.png', NULL, false, 1), + ('RESTBlue', 'REST API for Bluetooth Low Energy layer.', 'SYSTEM', 'Eclipse ioFog', 0, 0, 'none.png', NULL, false, 1), + ('HAL', 'REST API for Hardware Abstraction layer.', 'SYSTEM', 'Eclipse ioFog', 0, 0, 'none.png', NULL, false, 1), + ('Diagnostics', '0', 'UTILITIES', 'Eclipse ioFog', 0, 0, 'images/build/580.png', NULL, true, 1), + ('Hello Web Demo', 'A simple web server to test Eclipse ioFog.', 'UTILITIES', 'Eclipse ioFog', 0, 0, 'images/build/4.png', NULL, true, 1), + ('Open Weather Map Data', 'A stream of data from the Open Weather Map API in JSON format', 'SENSORS', 'Eclipse ioFog', 0, 0, 'images/build/8.png', NULL, true, 1), + ('JSON REST API', 'A configurable REST API that gives JSON output', 'UTILITIES', 'Eclipse ioFog', 0, 0, 'images/build/49.png', NULL, true, 1), + ('Temperature Converter', 'A simple temperature format converter', 'UTILITIES', 'Eclipse ioFog', 0, 0, 'images/build/58.png', NULL, true, 1), + ('JSON Sub-Select', 'Performs sub-selection and transform operations on any JSON messages', 'UTILITIES', 'Eclipse ioFog', 0, 0, 'images/build/59.png', NULL, true, 1), + ('Humidity Sensor Simulator', 'Humidity Sensor Simulator for Eclipse ioFog', 'SIMULATOR', 'Eclipse ioFog', 0, 0, 'images/build/simulator.png', NULL, true, 1), + ('Seismic Sensor Simulator', 'Seismic Sensor Simulator for Eclipse ioFog', 'SIMULATOR', 'Eclipse ioFog', 0, 0, 'images/build/simulator.png', NULL, true, 1), + ('Temperature Sensor Simulator', 'Temperature Sensor Simulator for Eclipse ioFog', 'SIMULATOR', 'Eclipse ioFog', 0, 0, 'images/build/simulator.png', NULL, true, 1), + ('Common Logging', 'Container which gathers logs and provides REST API for adding and querying logs from containers', 'UTILITIES', 'Eclipse ioFog', 0, 0, 'none.png', '{"access_tokens": ["Some_Access_Token"], "cleanfrequency": "1h40m", "ttl": "24h"}', false, 1), + ('JSON Generator', 'Container generates ioMessages with contentdata as complex JSON object.', 'UTILITIES', 'Eclipse ioFog', 0, 0, 'none.png', '{}', true, 1), + ('Router', 'The built-in router for Datasance PoT.', 'SYSTEM', 'Eclipse ioFog', 0, 0, 'none.png', NULL, false, 1), + ('Proxy', 'The built-in proxy for Datasance PoT.', 'SYSTEM', 'Eclipse ioFog', 0, 0, 'none.png', NULL, false, 1); + + + +INSERT INTO "FogTypes" (id, name, image, description, network_catalog_item_id, hal_catalog_item_id, bluetooth_catalog_item_id) +VALUES + (0, 'Unspecified', 'iointegrator0.png', 'Unspecified device. Fog Type will be selected on provision', 1, 3, 2), + (1, 'Standard Linux (x86)', 'iointegrator1.png', 'A standard Linux server of at least moderate processing power and capacity. Compatible with common Linux types such as Ubuntu, Red Hat, and CentOS.', 1, 3, 2), + (2, 'ARM Linux', 'iointegrator2.png', 'A version of ioFog meant to run on Linux systems with ARM processors. Microservices for this ioFog type will be tailored to ARM systems.', 1, 3, 2); + +UPDATE "Fogs" +SET fog_type_id = 0 +WHERE fog_type_id IS NULL; + + +INSERT INTO "CatalogItemImages" (catalog_item_id, fog_type_id, container_image) +VALUES + (1, 1, 'iofog/core-networking'), + (1, 2, 'iofog/core-networking-arm'), + (2, 1, 'iofog/restblue'), + (2, 2, 'iofog/restblue-arm'), + (3, 1, 'ghcr.io/datasance/hal'), + (3, 2, 'ghcr.io/datasance/hal-arm'), + (4, 1, 'iofog/diagnostics'), + (4, 2, 'iofog/diagnostics-arm'), + (5, 1, 'iofog/hello-web'), + (5, 2, 'iofog/hello-web-arm'), + (6, 1, 'iofog/open-weather-map'), + (6, 2, 'iofog/open-weather-map-arm'), + (7, 1, 'iofog/json-rest-api'), + (7, 2, 'iofog/json-rest-api-arm'), + (8, 1, 'iofog/temperature-conversion'), + (8, 2, 'iofog/temperature-conversion-arm'), + (9, 1, 'iofog/json-subselect'), + (9, 2, 'iofog/json-subselect-arm'), + (10, 1, 'iofog/humidity-sensor-simulator'), + (10, 2, 'iofog/humidity-sensor-simulator-arm'), + (11, 1, 'iofog/seismic-sensor-simulator'), + (11, 2, 'iofog/seismic-sensor-simulator-arm'), + (12, 1, 'iofog/temperature-sensor-simulator'), + (12, 2, 'iofog/temperature-sensor-simulator-arm'), + (13, 1, 'iofog/common-logging'), + (13, 2, 'iofog/common-logging-arm'), + (14, 1, 'iofog/json-generatorg'), + (14, 2, 'iofog/json-generator-arm'), + (15, 1, 'ghcr.io/datasance/router:3.2.0'), + (15, 2, 'ghcr.io/datasance/router:3.2.0'), + (16, 1, 'ghcr.io/datasance/proxy:3.0.2'), + (16, 2, 'ghcr.io/datasance/proxy:3.0.2'); + + +UPDATE "CatalogItems" +SET config_example = '{"citycode":"5391997","apikey":"6141811a6136148a00133488eadff0fb","frequency":1000}' +WHERE name = 'Open Weather Map Data'; + +UPDATE "CatalogItems" +SET config_example = '{"buffersize":3,"contentdataencoding":"utf8","contextdataencoding":"utf8","outputfields":{"publisher":"source","contentdata":"temperature","timestamp":"time"}}' +WHERE name = 'JSON REST API'; + +UPDATE "CatalogItems" +SET config_example = '{}' +WHERE name = 'JSON Sub-Select'; + +UPDATE "CatalogItems" +SET is_public = true +WHERE name = 'Common Logging'; + diff --git a/src/routes/user.js b/src/routes/user.js index ed3bcb015..93eaa1f84 100644 --- a/src/routes/user.js +++ b/src/routes/user.js @@ -46,6 +46,35 @@ module.exports = [ // don't use req and responseObject as args, because they have password and token } }, + { + method: 'post', + path: '/api/v3/user/refresh', + middleware: async (req, res) => { + logger.apiReq('POST /api/v3/user/refresh') // don't use req as arg, because password not encrypted + + const successCode = constants.HTTP_CODE_SUCCESS + const errorCodes = [ + { + code: constants.HTTP_CODE_BAD_REQUEST, + errors: [Errors.ValidationError] + }, + { + code: constants.HTTP_CODE_UNAUTHORIZED, + errors: [Errors.InvalidCredentialsError] + } + ] + + const refreshTokenEndPoint = ResponseDecorator.handleErrors(UserController.refreshTokenEndPoint, successCode, errorCodes) + const responseObject = await refreshTokenEndPoint(req) + + res + .status(responseObject.code) + .send(responseObject.body) + + logger.apiRes('POST /api/v3/user/refresh', { args: { statusCode: responseObject.code } }) + // don't use req and responseObject as args, because they have password and token + } + }, { method: 'get', path: '/api/v3/user/profile', diff --git a/src/schemas/user.js b/src/schemas/user.js index 304068b66..d069afebd 100644 --- a/src/schemas/user.js +++ b/src/schemas/user.js @@ -27,7 +27,17 @@ const login = { additionalProperties: true } +const refresh = { + id: '/refresh', + type: 'object', + properties: { + refreshToken: { type: 'string' } + }, + required: ['refreshToken'], + additionalProperties: true +} + module.exports = { - mainSchemas: [login], + mainSchemas: [login, refresh], innerSchemas: [] } diff --git a/src/services/microservice-ports/default.js b/src/services/microservice-ports/default.js index 83c2d0e7b..a80eca2d0 100644 --- a/src/services/microservice-ports/default.js +++ b/src/services/microservice-ports/default.js @@ -196,7 +196,7 @@ async function movePublicPortsToNewFog (updatedMicroservice, transaction) { const destAgent = await FogManager.findOne({ uuid: updatedMicroservice.iofogUuid }, transaction) const destAgentsRouter = destAgent.routerId ? await RouterManager.findOne({ id: destAgent.routerId }, transaction) : await RouterManager.findOne({ iofogUuid: destAgent.uuid }, transaction) const networkRouter = { - host: destAgentsRouter.host, + host: 'localhost', port: destAgentsRouter.messagingPort } const newProxy = await _createOrUpdateProxyMicroservice(localMapping, networkRouter, updatedMicroservice.iofogUuid, localProxy.catalogItemId, transaction) diff --git a/src/services/user-service.js b/src/services/user-service.js index 50638b1a1..fcbed54d4 100644 --- a/src/services/user-service.js +++ b/src/services/user-service.js @@ -49,8 +49,51 @@ const login = async function (credentials, isCLI, transaction) { // Extract the access token from the response const accessToken = response.data.access_token + const refreshToken = response.data.refresh_token return { - accessToken + accessToken, + refreshToken + } + } catch (error) { + console.error('Error during login:', error) + throw new Errors.InvalidCredentialsError() + } +} + +const refresh = async function (credentials, isCLI, transaction) { + try { + const data = qs.stringify({ + grant_type: 'refresh_token', + refresh_token: credentials.refreshToken, + client_id: process.env.KC_CLIENT, + client_secret: process.env.KC_CLIENT_SECRET + }) + + const agent = new https.Agent({ + rejectUnauthorized: false // Ignore SSL certificate errors + }) + + const config = { + method: 'post', + maxBodyLength: Infinity, + url: `${process.env.KC_URL}realms/${process.env.KC_REALM}/protocol/openid-connect/token`, + headers: { + 'Cache-Control': 'no-cache', + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data, + httpsAgent: agent + } + + // Make a POST request to Keycloak token endpoint + const response = await axios.request(config) + + // Extract the access token from the response + const accessToken = response.data.access_token + const refreshToken = response.data.refresh_token + return { + accessToken, + refreshToken } } catch (error) { console.error('Error during login:', error) @@ -120,6 +163,7 @@ const logout = async function (req, isCLI, transaction) { module.exports = { login: TransactionDecorator.generateTransaction(login), + refresh: TransactionDecorator.generateTransaction(refresh), profile: TransactionDecorator.generateTransaction(profile), logout: TransactionDecorator.generateTransaction(logout) } From 3a5d122205077d37a5ca1bdcc3140afbe6633c8c Mon Sep 17 00:00:00 2001 From: Alpaslan DOGAN Date: Thu, 5 Dec 2024 17:17:33 +0300 Subject: [PATCH 135/146] custom swagger ui x custom baseurl --- docs/swagger.yaml | 1 - src/public/datasance-logo-white.png | Bin 0 -> 31664 bytes src/server.js | 54 +++++++++++++++++++++++++--- 3 files changed, 50 insertions(+), 5 deletions(-) create mode 100644 src/public/datasance-logo-white.png diff --git a/docs/swagger.yaml b/docs/swagger.yaml index 52a2e1106..e2bfc97e3 100755 --- a/docs/swagger.yaml +++ b/docs/swagger.yaml @@ -3064,7 +3064,6 @@ tags: description: Manage your users servers: - url: http://localhost:51121/api/v3 - - url: https://localhost:51121/api/v3 components: securitySchemes: userToken: diff --git a/src/public/datasance-logo-white.png b/src/public/datasance-logo-white.png new file mode 100644 index 0000000000000000000000000000000000000000..15e92a20d79abacdfd8b534a6725b5cf63334f02 GIT binary patch literal 31664 zcmeEu_ghoR8}CWz9YKl|!3IiK=_Ry9MWssb!Xmv$M+k`^u!@L^6agtB5PI(|h=2=1 zsM1N0UW2p%fpE`m*n9tl`@@&#@eya{E%SNHymMy8m-@PQndo`w0RUjqzW0YA0MH-- zfKr~88f;k}YSRS&qVv9I?h616?En0M04ZtQU?arW@U8|>(#N*~{)5sPA73_30CTUad(Q+$1LWw95#c3w=+oFCu8fng@MIW$^DW;mP!uMgGbc zd_a{r4NuM`odRG znSrC7%wS6pihF*4)~n>`Q)iGhOQdAlZANlWAUnXKPmk~&!E1X@Yh9?6CK+8j>#_yA zUUy?-cgtyCV1^DfBc;eB4#L32x93TuGzqVW=v4;;{^O9AT(yI<$=m%wiKck>6)Ry4 z%X!M@-Xj)Usn1X5h`tBvd6^3Bw6c9`EMZDS(UdwvN$H;g8vu|dbVwS($kuqjL+&&FJPP=pRsQ2O#c$8ZBU|VO!`PCe2nTP)M31RjQ>>f z0FY^T%E0Ww#@I1rW<-I|Z98t1HgY6mrO&~Erb*Q34Bf|H9b!xl zvh~=Sx_DKC^$fIhIwVUWi^XW9;2BaX3iQlERN-AK+ksL-aGs&;?Ck%%$x;Y_m7Rwo z?kDB7jqSQL-B;fdBP(F{pb80VQVqYkI(Q(Tfx+esfP0sJe%zk}2U~p+HKe5KHq0JfN&=eB2%7O7KhA-`ne#jLAH3*anNK^fL(JD({H zKw0nx0Mkv<%i@r(RbueSBD1QCw|0ta^LkTs>6-N6JH_ctg_6qx^| zm12Y9qQ0mdxQO-9ZF(No?v9c|`A$_#>nsmPTk7|hB+@jkvTJWplCF_OIi~~3u?e!n z!ShlFjne5K)>g4jW=H*OJpXoQ21D&?Jg*7%73XJsSgTO{*uFA!a4izOM21r>o)W#T zLl>2i_*;`UlEpDa11ERZ<4cL=Gg7Fnd*HxknkChkREV_A5&SR2ouhzcb?xWgCA8@; z)Pe+#yd}t)LG2MGn$g0AS4DfS%V*@)vqm4PEzu7wLSAUV^-j{VnMjvdknPC3Ho2qM+gH?s!aOm!!ArMU5!NJ$&wkbD+u^2kXFyQj0T|sx)VHKLIoibjLx=hgfRUGt z@-+HCQb9`emf8*4uy+!zQ9I9XUm}|X4bUQI-x;!o@_@0|$X#n|NP8?x#zUSPBIW+P zrvFq?`_dMX+=c_Wlxf|dP5;u<$Q>xNrFVl8#zOAe-$X#%b?9MEF3Q>ng~c6jY>wcu z3%Rc>Pz3q-?tRPUxSM^hxE|^B9I2-N$nH={t>0r-y=%o3n%3FH7EXq-Oc)bj2!uBj9D&;}B_wBxopby1xEMzx8+t4B(#~IQp>m)6??B2W>55}3>nOI+_-540< z82fY3jIN-xT-F0=a?jWeC!igYqwfbsuY+=W62SLwJCdIjXn&r=8WgPS$+gk=aLydY zu5d=7D4scsHspSGE+(%@zSG3X4YWvba$v|*?jOMp z&^dTc>Kxg{P0=46#lJSccw` zN5};-Z{=6Fky)2-TvgFYvdz}{Z&c7#@l3Fl51uMfYJV=VX0az2eTHrX9Wv_{Xype< zO9M}6kNsd7wHCAFz%28%P}9sY)IXB8hIM}Ssgc1v>Q^~Sr?QuUs8>0xbun7BQ(Bfs zW@$82_6fKD)dAh-3}NDU0C5qB3FwDcGpCuxSTH1>4_z`_Q<}945X^~my zu2GWCdwilxvs6h#k6#%A>(le1tpc+xVOFJ%A9BDAU+5NK> zvhE$g&6A{o19Q4>RhHh|$N%`q4MBN$lD-ZO`2`DjEDy?)YY)Kl3zYkg9V}z%wx4S5 zZ|T*fLWD2Je@Q4*i%ROXn#;%IM`9M&M1$6!gG*A6|{~L2JFkHva^Tch*q~ zy7?c5w4q@9{=qww@bf2m66c|I+#kfn^{bCTS0g*H(s^ zOjwd<_d1>4j=MDUqPKv5k9g*PtF0{xh&q>wS<)L?cr=VZ92giloAe!BP){>@9k6sv zLS=~9{VNm+0{1QH{=XI1YA!w5p}AEcQg116p^2WJRMT3`Pi_EV7s)DK0X_GvrMhiy zPa$gZD%H3oSrfZ&MgYa>eaPyh-=V_lNS+i?n>_yY2YNf4?G0tnM`KW?dH?ah&4EUn z8X_k;ektSTQ1NHF*j0gCY_(@yG9DKF8(^G5RfUtpS7pd%L%th;^3)B5!cIR(=w<5)-}oMOwr*U>f^yek zBn?XA$!c<+gGhPj{j=r|PtrfTm4Oi^hl~`Pg&GCn{-xEY4WYVo@~gKWT-ra2Y;FiR zhh{_MvyY&%y8l;MR)E3{%(0VxAGJQ6)qZGNFi47ujRwPBAI;M*3g^5h2XLmj2=aM# z4&a|Cv1E`D8u0tf;L@O-%HAD@&gAsunY}2GsecIBuO;i#F9iy{WBAuZUXPbS#@uGtfzIWnk@FHf(vk`tMl z10_1)0mLdvB3^oXuhGZ)P4ud1r>%?Ce5>yBaV@mW%Eh$Yo;6gD*fi!W31r@c;$9WK zXx1A#xWsu04-=L2_4j6ee)`ZM@l-L=87}3@VG2PM{^I{v0q0mC2z|dSv3-Wi<(NCJ zaCJH%=GIJ}ln3W)!yIF@*Px2hnW>||?MCj47KJVNg_y0{+=6Z^9fb#T%2aOnhyhd; zy}W6eDmk4Y{~39i${E~zC~%6WySe3r#Pd;SM0ex<8Fx@mWG73032p=KkNn9D*UOIW zC&+@ew=~K7iFcz&F_a`e9iMk*5L(C<s!Fd#a5bC zb#ag+(!TswII)^ZuuG%vHFlE%`1v?gz_WlKEt2`A(Tx6UU+5u z=4uubd1>rtglxU}!YXFUK}xy9RaB_wkn**TpguBqavC^Xy`s)b&efT87HVGRE`+o~ z0o4~@7ugrZV_gLn6xKeS`D%NT@RLeE1@S9FFQ z*~s%rUd>z5sSN6GFM~L3g+_8LWLiLRObI66G6sXr@qKkU;tw5UYv5Tj;L0GE5}B@G|Cj#X zF3yL_l(u0k8n{^{Ma71DN#?_v{~-bnk)cD-y-FrN{<`;afYF_%pMla&hp~|ZFx)?cYW!{0}4%kS#gN{5^%l=0viWq{Fl{!&ynKHE?YKdFLvyPPO9bAp-XlXzJn=Cu=XflE2@H46{ZS;{1 zCD8;_>8zYH${hb^{L*bDTk0arNd*Evtj=(jfat|dfx^WGSsM27?BT%PU;s~vY2*BCl@&GVG_=aO$`U`HCmNYIgRMl3bvlDvQpl?ROp4YJ_+2c&;p;! zes-Lq-+$x9O#oGmE4D`|Ab6ck&h3ow?! zFdxsEo2PC3TI(1;CbZlbojZ8e7T~W=kUe2Sz|FzR;n=$55Ywz>Z71d#w7KZCQR@XcRvf?nvqv@6sU10e)3&FjaaOe=&C3yyq)J%8z@i!N*S9v- z9qD$DPR?l6{BEu~Cc>@Ya=~1)xDu5$uZbp}r!roRy*ilFo`l&jY(ydmfZ1gCx3GFC z;#E#|qC|<1d}IIg_NbglOauG^BKLQ_Rpfa!<8J%Y)jHCT=?>q(xzm~5Q(qbB9){bM z(h@_r13A5Q8f>?f?G?iQn(n)_>GQ~LKjBth-CrHyF$z>lz8(-2)wSNrtXm7d$}c;d z0uNP2J3M7??#=pszgX=4b8_W`pEpd>QLZWG;9;5n=+8fP{Qc8^cBB_g;YYE0+eCua zmh;_#zx*m64lX#L160a+pAtllj$yS2mKnFoGrk$`^_B?jN52)m7p$>+R}4xoNlBr< zS&uQukXs>rq*ne~&Gq+)R)RHE6EVP`Q!G}s`NJE%kF{YLoiTL{wU%XRkLIb8^jwY| zXL{hC=4!3JS2VPKR9;A^$hzV6XUew`rJbz3r!x4X_NJKV>v-WFqLQt!0seU7D72SI zORzBKvhEw-wjJHNVAhOvDo1e#w0hkG7z5c4Hl72?9(9j3ZhuJn2~X{?_wm~dv%W4F zDrt|{KAkBw$k>q%i>pbqESio@i2T6!LgmJ2;@2|&1)>{g3 zJtwPDrikeq#hZ|xxhFm^3zi)b#d;k!iX*y4woiU`{UTm(t^Dz0r(Vb0$;#6?`48fg zryTFCgM=^CM#&XDfr~9V%(RYP1)>^ND!-S9K<#9oiu*Yie-517X84_?FFD<~bkmT- zbbdQ1ebUk{qW8{`nb`gGkD5P=f9Q4b9L+2g7Tm*()g(K4{pnB9j}J#}`=Tqoe1M(h{yK|ujw!HtL8oB*(B=x z&>*~9onqbB{i;m7*{8u;%>l)2xJvCdYYW8SKg%sz&6RJf>?<}^PC0SP;$<9jx=*hD zz$PAy!RnH{){@C^Ccwy-dl{80BD`F?dQ0md2gI@meBQFv7LKx}Dp9cxbe zSyl)Lt9xfeELjr^C8gNU)Uao7oHvb0==)1GI^;B~&%XRZ$Oqm>RA}$$tPPxd0#FAR zZPN@pXY45Z&}m?qp+ey+DpnS#IZzFP(}uI;hQekdwLWMjN3PY1)na_58{_qJG zqk%wQcH=;IXZOPGR_GuVz^%YaLN=Cpx=KL<$ z3*7n%#WmGUQn`1DsQ~FTN=dNBV0(fam!B1t&Vp}QfjA3x$QF~w zuCRK{5i7mB_2KdS&M(~vi`|>Qqz)!JyN{>jFrGu^V+X!hAX^(R94rUAe(`6qP+yzI z9x6$eG6l4;_72MLlvG%UW7XwjqL%&y*F^#Q-{F*#TOmid#*BSIctBpcSu$_cO&T;5 zYXBb2;*?zBVj_A^+FB{ma-yGx zeB>7|l=BCd?8(a4-LmZ=>|aHx3ruLLrZA~Q#ABPWRR_&mtfT`BXCm}3ojy3WO`oS12ept9Yao{WrRh1KvB|EGH& z57H2&;&9nP)d%SgOZ5TiP8lzP_s76}hBRhTLV;E93L;~{fl>KN&5~(Gb9*<$?2vyR z|5aN*MuL;qq%{-~>@;pQ-XFh&7}~NDcy%0dP~GI^H}Li+)b2U|o*o~KYH)cBPjG%rSeY+633Fwz@d#{fI-p88+Q zE6v=Wq);~EDgy;`232WVhcZp9#ljGWpB6p|9)uk_{i%t;`IiTcIzNffcY}BffPPjc ziKWzh^7vKGQ0SBfMNF}jSx#)?&(=Q=%~Lb#`%0$OY>@OZFCC;_YVG~KRIx1oQgM8@ z-7wt=aSJ0PYAxpDpM3jLAinAc|5!vt`K9R1hN`M72(M2sUg4AymKt0M&mQ(f4M~Xn zQ%fy{O=R%c_z<~E&Cv-~vHJtR&aV%P;a+h@x`{B<3AZJSaq+uZHxc^&E(m4L4c`B& z*eH6%zT8$=12-+IexDib?&Gy6^m@r5> zfb!LtqesPb+dNOsZB^$-erTja-1Xx0X9Ijc1@GU>XI83X=iLl&S|DwP|MY+ApSX%@ zhkKM$Qy;oo zJO2qU2%}jUotT6(Ytfx-FH&b6)%m;3vj*{8(U;wG_MgcOeR7;P0RqnrV4xQ1+Avt8Y?hIPus-R5x+`{rC0Xf=co&o4O|%v;x}5e z=y6*8Z9zpkGSQGS8@bzVu2YZCYvcAeP^X=81wt=wc~{zHG@vvEjxTuEK9c-iCId&& z&Ut3L>m|21=?->`?}$}bWICt!!gU{58jC#QjH(VTNz&vgu(<*=G#OY9@9oruA+FrEhT({(E zAEo)&d#}_V*FOHdAi?}}WyFs*!8Js;o6!P<3Ms2U8 z+J{wJ2Js@-Cqseed>i0Cv@&?VtT>IJ#AI>vRsGN07p+CJVmyyFLogJc+f|{bEcbgL zWtrhR3;UQ#J1-GM(cKI?ZSFS3Cc*ZAAJCt-qtxtpycYQC~(lwO=;$v;h^-kt~X!F6v^qrED1d zxF+kJzcfGX2P*$AhO&Z=O8x2+C+o#=iYhkJ&x(Ohy$A{(1uMtvc|1hj55 z)nTQlCF8mON(86AgWPLo+AmJz%7&S-MO8}tGx7AsqQZrLl?3mZpgMXR(+NdA$|1?H zNZ(aUxuae#QC@zWgpToPqLiK|S_t-GX`xMqA4m#l0qxjpq5Po*ioMH!Waq+J){;RH zB=(8R%ryQva@E$efAx+RL@HIEN?AEfV56sXE}lC-VQaLx51x`w5+}f8J~@pQAE)ts zgAYBU^3E-mT$5*D&WcgoZR47FSCKX6Bg+bUDRQrxoAx0^%g=cOy#?+uwMb!4QaTU^ppCkaX z`b4?K{SQa8kK3B)gciRe*92eW__ySU>+&D|e%lu?m9&dFR!sBieP*FZl*1CN(d{P| zeLAYir!k!i)>SLf$ChHSGVgd7Z`$gIeAV{E(k7|B%XTWZHg9=tiy}YW@EwOW1y!{0 z(MmtPW86T{v$rCU97CIf>m^6$>RfBbI_i2qdmK({63+kJ8&>9JzFZpp!~SY_s5_5$ zYhnRn=iL)U4>2*U0eBPVWno|%)jD~q8ib`OA#qsE3y61MYb>S`SfsCDsj?rl%F^p$!xXa$=H$J3W zR`Vp`P3B?qf_Z(-j5W^XurIk2^7=AhLiK}x#tk1LC4yXAaQd3N{q@7A_$_aduVcek zMOY}if2oP`-`$4(4(4giyE)kz{xmpxrANSN^mNZHMpW;Y>(iV?JNa6K=d+6`r-y@h z39Nu@X=Mr5O8TKAqxyNq@7qcNoEtq$8ArPI{Jln}opqZ;WyJTp4vPx=hb2qw3#|xF zQ4D5#=GM!OMq3yuFJ}KZjikV`ec{3bD(`(+BgjrQjMM24UvAJ#VN|vQZ$8k-|4e7T z*wM)=n}7|;HK^tMiiL6Fv+xA|zNxCZ_X)RA4Q66ir>y>wUyDsoB^I1WSM5}KdT%*F z)*tPR5EiDe5_KhUTFx~^Z`VypBzR)iv-z4j>>W#SAIp3ae>=RD5sry2(>0y3?Cbf< zr|(F+ii3IyCP}c-9vD> zjsZPnA-n^HO9`#sF33s_6K$eqBwx07X`y5x^9?9rg%Q>qx7 z=1w?%F^Auw=2mLn z^7*LtcuFtZ8Z6OJY5YuezW0KodmVzQgGIBB)!(=(zB+d!=8p_b4yl;^$9mxr*Oh`{ zcc=#8w+fc#8wT-GdVfWQGXHS>{+1%@cpbx_7yK(M`1?zjkNS(+#H%GDUY&xcQ?0QS z*Hw2gZQLqeIorz9UG-Nw-ez#Yj{}8|w=qf4p>1NbKUaNgW1b#}pG*~6qwlqXDs6s- zRZ828G||>nnEPI!)%&%ztuZna_(MR$eEAtyd-W8mGIWN;C0*rPNT9$reokA|Bh$@7 z(rz~;c(ktMSMZqZZn=Do1MA4UQKqWYo_O#ZbEWgna*nx}Y+m1ILnf-W5X_f5T<-G} zN#Nwp39q#8!{q;Z1&a=L!dBu`yI<_|Z|g|M ze^X9eX~rH6OOTvQMeu&iZsVZ}k06kHxi}2JwAbMBx+l}(m**;a+RA6oYj0$W!yO&+ zm$}hJ@L=d3Yttwp_lmQt`nUV zIUPA#TxIV1wCi!eTdsMZ*3C+Ll~er4!Ma&kr^U9VOQ1!wN}!FINx;d41kVz4)1&%D zj4MnskjmkLkBE_F?h;T~0P9MNUf5kosc z?L-Ex2GF!}dP{`VDK>(~1H9tsqH7~*#?5}n-@zCkq4MSlFOQkh#!ygAsZ-x|%hZ&I zZ)Q-OEK$xF2A;Uz4+?D)C(E(}zQ9ARU8H#Dma1n3gU%c8akNUu2{oYxm_;v_N*=Qu zDQ8;Wz|$yruYVRd?sF7zZRxi%jgRrpLGdmuP~J$0H29Wu~$#j+_0)9*9ybW(BU+t}AxzN$1W z3LcN=A=dF6t*O^X+Je*f9h70b`C-#l<%j5H`i~-{lMRo#nbVG-g`e{AWo{l1kGQcH zI5mxW>}>+hO*zJAU@CqIvOLD8Y%>I<{Fr|=uKe6Bhey8EE{$r7^{`%P9EWY>LsSjY zhm39u{bdNB=)R0*G000Ez5fw{Uyd_LL}^iu9=))*`y5R8Hkp_tB2_+Fwn07kDG%v{KpR zD=zxS(39Bnz4M5DiPc0zo@#9QU-?C;iz2&L>*hl{2l6MUVfAr3CD}~KopyKBmL$?%<(0eRHlCK<@SyiCl}FBVkwrONe~#52TYZ|^BACjJ zhX(H-F^AM8Bz@=9z#ZEkR^>7QIn%-7N9D%3o&`T3m|w2%p0cHWx*I4vxHP{02H|mG z9{l2_zR8-n*&7;HErlV$aNT0DJJK`w9fgJpy5*`DZNdXH19u8tr`-t&h9{F+sdq*; zgV{&F;v_hCs*d4f#lHm*>{nGO!FJHQ?4KVMPf(8YB|Fy-CXP2TDMxwNW4e%7i&t5a{LWWdwkg?zk3UEiJHcoDh->_ zD!*)4l(8Om;4CWs!Gh`eE5Qy|B6XmA2jy;tcNi#l=afBIHv&H?W%zHnX$Jdt6x#jR zCcrmSr2g8k>5;1AD>tz8|JjhfxOBG{vslsB@4DwjdU!k!UkMwP-O%~9*~{C!idA23 zH;}e1I**xG{aN9u_;*INH6rm&2=$iX$N8n(xeb}dhYwb?y}c7YE!=LX?7Von^?I`N zx~b#R<(b?SU*spq4~dZ$v{9;I?9q+YMA7Sobd(}W(T5-RS0@c%Zof5rz;&z&_ zt-H4|_=0%UWc&mclLk2!tVCsQT{`j9bNJ1V;Pc3T274POc^G&rc7OhJX+C~1x-na% z?xoDoE+%QzqXG3u;4Aj@y18w-=5U2)irlVh9RHE+YpX-HgB#Aqq?65E&2M*fKVL*p z6K)O2|8@Myn8@%jMyd6&q?p~hsre7$wN=@d4Z{`Jrx*~m!lz=sqBG!qG}Xm^xoFDl znb#}92-e{A>ATZHZD#XMe=yhiET1+-xi$@k%c(9AoqMi|jND_GN^QEaLyyggdpmkO zC@;#py&W}ZF6~2kf58JoWF^fwUt3$tW{zjG!2ejLz!klVyx+<)>Dzi&J z!O3F7shAe|-1S38xA}14!ue!d_b39ebmC~ytRN|=}##@#ijt&u* zynFGr!UKtXq;x8!Aq``Hi|nv-dttUMY^0ge^8q8<%&kMWW2n%g+ms?r-)nzOd6u>X zpW8c7u{&^Oz9IzCe@6{{o&v>5tY+p2RuwJ=*Tg1zbh{;B9uzLYc=SmMuBCOh1wPr< z3*z2hmyaE-m6)aiu5&ehqH)Vd1qlVNr+j-ui##o?mc8mQd{-&{d*U(oUfH=9ZH3CO zm!X+3=<}21&&*IeXQPds_3jChZ|$-5&I6c0bJXoHIb+gCi{;KBtCgjapPY4a=SUTa zgIN{1mveG#$|ob{U!$T3HJ_&A!K3c`ycCzbn~%)aUsVa-7F_7@XY;Rf|K0KGiLqs| zO*#WGf>LG$?>G~W01Fe}>mWeMIlqgHq^jL{JlqRbKVQz7D2kD70tGzhX~(Vymz58C ze2$8pQYyU91z_zK#ON>CTOWDT9_j0RzF2_B|J!_+Xq}_Nub*upH{;h<17}z3d18Q9 zp3Kc?5HAe7Ti#+!FK>Z@mTdSEe5+>VjNiGVIzvulo91S_?-anIHiAq&GO5tDtWeWD zmRbDU5x<)79Yp?}VDl3Hp|9}(3S&N;|LW(91pnv*S>%(1;C&)09;mZ{zs_DIG#q0r ziAQc+38*@%O@FSHN*|uG-20-~>adwNJZ~7L|MoQpLZf$QyJJ?tYYl6f2TEoM)rdYL z;8CiDoH%$&Snvq?9OTbX^Y?|+{+1ooBd+1=rfo3Zxe1d6UWvq(m}gb2q-yCwY*B`n6-4%bENTR>&M}*%h@nXd!6a74#eQW#~gn#&dR; zGhgD8Y3r=hc?!j^nh*LBjEq$=7R`6KnF*g);#Qxz;g2Mq2m&O^OWxpak(B7kzE^fC zDWe#tn4bo9-Lo9l)*7p704z+`e&JHWuS;0KRD0ByEk+t}zcO;r6NDv19wHy1^q9<1_f_z2f6&gGFz#ZX-(5 zL)=?(vZTpakzhJm-+I)?di%x+LGdtH1Zc^Ymgjvl%zUKfO)nXRJ^dIBmvNmioi9$3 z6fs%*dX@c=TCuB@^b@`BD=I9R{?%_P8#9d-t4mD%+jLeE2uxK7*yzzm;`a_38GrnW zuVtu^N!$KKmv_IvEENC;=~3~Hyhmk{H>}g*cJQC*jpWOWP9F3gq2i^WC}V-We8&MD zfxR(ChZ!e`w5TLo$xYN+I9sz+seiNbO!vIa>WQh9@1@7?Xe z>nB$jDdLT8kp$Nnlxw9Ah(cb&Ix2miC6*uwgKy5;J(bbb4QS&F1kd#F=|9b zuVNjK*%nrFt?I;q^!_a=MFH5wD26?={FEc!)K8|xHT1NjV&co$Fri#z3LSFEVCNgY za@O&LVC6_rmCaI@A+T+Asdkjc7nM)7=~#eJxT7=D+N}KN&Bp7Ke~J^S(CiOH-$%`f z?R#VqaS{RV3d4MFz&Ln>nq&<|yG2+`EoNKj%8FpCk2C=*;*OZktrHQ-sN7wH3<>#a zE)fJ?0zR^vTF>2U#j1?9$1xfUk1P8wzpd}*KCGK6Q*{R>Fm-q-ZjyZP0;_qeFK#l78{ zg_p;=%3EGNlgB1i$N1<3%+Mp9WL+7GtvgzCj5${b?N$T=qQN$jt?E(s$TWhy837|EU&= zqnfYjpBzi_%qw%*h}Vk75!8>Goe5JPJcc{$*mMgSkk2l(_vJ0Zk)=MI#G3vaj3plB zSBuj3v!~ibXYp5$?C!^JT&pkhKtFYzIIW$RsxZFR>KkzL9Aqn8VuR&av&c*B%7KSj z3F$-vbPVSgFK-|_KtGdM?O&z5C&#y>Kx@Lm=%4RF(xBSfo?*oQi3z`vESYAab7?GD z?X|;*-zGjhCxH(@z(!2KAYuQmzST2uv8~a0(o=qr)M85;mRj@j$mUixf*QDvk(l_| z(Pi9LxN9W*nhl*Z@=oH*n)|#28{kF zZ~t;+CsHjTrNkm{!{vXEcv@3Kr7M1))U5g!9W9dKsWZ!`!th6eRu0@#EM0{MbrZEL zDRK`DKWV{5=@E3eVK8@^#p?+7A?sX;h6bFm|wRw)t3j4UPZt zsS5FgzWQ}`WNY4z>4(A?x?{QPx;DSl-+Y%m&bMyMzK+lOME&Oq_1+Wtuu4P65!XVJ z4tV<(-4M#TcMs34=g=&Bcn|*qzK&%X`kks($+nW-AgcY;#&^r;gp97<^rrfACawrE}LLhF7GRB$G@D zTsN~guk`x%P-9fUcP@|5L+?7Vjb*f42QP+oXVREBZc``U;o3VFbu%($Q=pYPZ}4ut z(BCKE#n}tSGy>3BzuOOlHIw4bGb7RwB<0P3%8;Zum;hn{Bc0zL@)XA-V{)2KQ}s8T z2buUKFrB9>#dq>sYhlFDzK{~$9epo_#YZpG1d4MRu1olqikt(TC21jdV13Co*sCG-z0eYu~0cf%eE#c_O}Ezw6R44b|C-5DNT!z8I-ZRMx7ye%LA zYvnu1wyw(S=2FhI$&QSgW0rO)O_98#D&RN3nKl1o`y$e1c81XA;qmLUqP&jK2`BM4 zUIKS7IPH_)(;azY$@F(uyELYr)$HED{cHXP8P;g&me-232)*m#$>PD7L+O23fI%t1 zU6%x^A8)EYvi|Fdk;m+K8JA6i-H`B&?xQo>KFegUQul-=n-}}Cfmx3Tby(y+gJ!*DBG_j0* zHoxP}PRt}oJs*!OgV=Ef|3a{H#keyQtmQv8i4e8M7!J&==S>EJ6Nssy$Dft@j^>{R zG;|?2I>&+H)z7e2>WA4eieJh{&Cw$b@;({%;Qev|7s(ol)ty_{O=dC{C&%>EJT#U8 zsnmh_)9gB0;NkHjkr0R;-T*duqQ*T{*MweblIkK6E}gfBs4|OMcGWC8U%*Me=|*cKTabRY@Thf^Nc?EKA7GHU*~$%V)*eD;z!NzO_xKu@t*;N_2ZKE2M_DdO^{o85 z%%}_5>X|+0Jvj1vT?whv&Jp((zvUn@6Mc!;3e-hD-U{L*%D$JWAmB9&ft!5)w^bYahP2&he*Ja@{PcK?}xyucgqJ_u%w?~e+ka$lGt-%6NQ8WUQl z0flKqy7)mn4sN{xUxFNbu`=FOUahM18b3BlhloAc<8n(RP?Q9RPQ0qDb3WJ1|Hd{7 z-#NeW4OGjFjsp#_vxD%w6XI(?4FyZ_vKsTG}4uq#VK|-$@L!(*i{%~sl?Z$JPxr@+N{H3EdIPJt2Wdp&H3Q`NpV=38h znbLtzpz2K0y*I%J4+tlzH1_-r=Yl(9AfP-{5Y8zylMn5&rvB$%5L-fpDpi|Y58eh0 zh@y8}Tz1r;tKCni4b!b@`_qT^sk0^x`UfS%TTYWUjq|=T?FPkzkx0RV`P{o$^9jKpVI@{h*ct?>%k3qqa~jBz;1opdP%y56`-#TnUC7 zwEZ3sp|_SAh}(RPnSVN!vxH}Kz2bJFkgCK$kt3kBlSZbF6vnCVYR`J1)F{jzdO}h* z8?Ax(zemvd*LLH}x0m2Ag#Ud0F?OFiOp4Dd;=M}G2-;fOUb?U5I~zdSKtRxrck$pIY3fdPHkn5!A&cYXbWL0Hf=P%_4#4@g za3YM^BV+bYL(Apadn4#@T*Zl5$b;pk-o9)ADA~~hyg!1kb>!P$d>fk0-cQ&oK*YTj z&aucZ0j{S65cN6Ly*UgYEMs?0Dn)|RnwbEcPzDu{M2CD%bo&#Fo!9o33_kta11S5D zbm=(q7j1Y{8T zQ2kmb0dn5$Jf$k%8*Badp7LQOS#0ugl?W#ADLU~`=?!?nZ_hOcx}xQ6JEo3QJefn0VPSHyOs%ztGZ$dpza}qGj4O+#z@>qu$fzE@d(!! z<%<(D%7Tck_zz?KDNKZ8WuoWY4}PciUu-y^`dG};or@PF2JE14zLi!;(S6O3mi_jp z7pKfiG(s+3#s9LGF-CM`j0jm{p+eUmGE>N^Z*LC1+cn6O2rVsq$HkwX=TMg`*S<9F z9my+9syt3zVMWtMlYXEM z=5$C1>}MAx__~zsFmi9y*+GAVt6`!w=up|Y{Mz&-yMrr;O)*x0{@rH1b=6WCT8JNy zZ!Xr^Z_k_eB`Jeh%zC{&E3X`zmw1>%NU5sZdwf3gck@i(<1{Ay_|?vZ6@}HquYWWp z4Ti&n1VPgsC`^1rO4z^8Gn{n3tIF5P*pwUAIu_JLWjzg8t=R1Z z>x^eIZzhN2S3H0&MfaDc5wPyS0_>9HO$hj~Q39{ICpOW~($#}&sWB*>_D*vhm_n+K|Pc%Q~Pod5~rOv(I7o5DKR8xS!=lv>p5hmXkg+IyK;zIopT21>l#?%!t zn@;@WfMMwV+}P~BY4^bZp?v#2?e$WHH?^_s7dppRY)(Cfg(I6)8JFfFLT%^~kO_l1 zm1c(IJ333Pkt{#%1B|geLYEC4)gO#h6sX2kzC8M3g25ilJio6J*YG82UO2c-M*v;q z!yTI5j+3+(pw0_e)2JhA8>9198{W<|HlQ9Tjv8(iHnOQji11?qAwwt^Fi1GMEiU>>WZRAN zx(v7@oP=)mM(+@+CnmJyf)hnmaSid<6f(4&ebE~IniAcgJhe&~buNs2@e^|wCH2?6 z;^i8Meku4qNtLf4EK4x|zX& z>lqWsn~}RJVxe{>;FrsL*|T_1cJ?PN6&q(Q8fl!7$347=F%>N$%dUOzFrdoIyMQ^2 zkGN_#l4=@qzDLn`&lRS^f?q=y#g#c2dBokg8$P*9!n)F zph>~Qgox)7%8h$uPIP*#+8>@%h}m4Tie^Gh=9mmbOC5L=StfP0Ru&eW?6d=R9!IFS zfVzh{xgt0n^g~LtetlFs*0&fbT>erqje+?5&affV{$=Eo*I*uW@}_?=^tC~*T=zj_ zMJg)dsVrI%+{RjP4jHzjaB3BVI>|!qP-gA3UIIe7d6)kJ%)W0~=}LN9f6(Iwm>!H0 zyuYj|Z*ZkqXyr)-ajlgP!`7?U37%<8Wx6r}REJhdRzll>!93EyweDTYb zzuiBFhSO$pR2NN+9Q~hmzVolC?fE+NCZHmqvVX5=8+4feX?M9WK&KkPbD0$;MO zrT8Xi51!PFnB<|~7=L(R=r9Wn9lm7DoO@Z(n1!6Fd;KWIS4;|zlR9@Byru#&D+llo zooLRk5lvO2raOXkGDctiP^!Ui-DTngOy1=be6*%d=aj4Pm|!Xm0!oPAd6G5l?Fr9u z5%qa(o^;KhkI(HsEr?}tFDzoJ>+*jFaNJ&>VMr(2gHNiI&juw<3^6^)w>>2YP_yZ3 z^f);@eJnw+pT;eY{Z_8awfysd(VjpxZ`LSDrQ?!9Dj7!EU#5ZXZ~*JDW5uNXXo@l| zB$Bxy5)jk2+Du70C$-H!g9w2_Q0S+ek-j#~0#*-)_dlno^8%0+AP3F!?LVf{b*yEH zNQQoj0$r4pc`OMB!>lyw2dw^CLjG%F;IrAzKi{3&~={7~t# z#w2Ps_Qlx%K_I=7(}{Jm{FRH{s$F9EYBBSyXhgnG&dpV0+~qD+feuKGA7mJYDhN5_ z36A~pw3D8!*CyF*{+@R1PU`#%w7Vb=(dx*PXNoQ&x&F5zUL#JZbf8@iw!Xs4_{lzX6OI44UZ{7Cp=xq&j08LTSJeIUEcHpu`MNAf7PVhMRP< zh6~{$YJClwVCnaHt1Z^U?VTFAE7sMAG#xoWV?fvI<4oCwcV00Q6ZbHw^%1RC0VxT) ztYdVqov_FR&gC4WA+-M6x5L!0+AIi#7=ph6VXhIn*v|wSa^T+$T18>6G`u=g;ZA%B zx~S)Lu{pbn%XN%Qon;}C?OZMj`O|&O=GZKZXJg|LZ@%SHBtjorIjP<_9co1P+%r(5 zuIf1^mgC2)6TOXM*wofR2eG3fZ3F?ax1K+414#@nnV2Z_QaOa|`F&UHMC5!Xka(8a z2wNDG$)>WhRXAAkEQwVPYNx`H2uR}a$)7Q6dW#w+e>N#;6ktx848?s)%yd8jEecQ# z;x|vnlLFf_u0RduAm_jJsJC*Ij#`dAbVBt2CYPr3R)y%za1l#Pq%7L+F?VhIdVwv6 zh~1!?TtJ_qC|>(I2&#mu%c-hK3au|hf^CX=KScun`Oc~-nlw6A9by%WRuo~eX!|}i zAGx}a=NoPTnyQkfpH-xv4Z6rrPr2{G(1@*TG~w;EG!EH>D|mL50dfxI2E$~?NDlaI zbgdzf-WtoiYAC6p6bn`Ay{m_ib8*W1Xz>r$-zziB$0)(4FvUt(UKEn}@I`R%wi$t@ z()Z=_16GGu&nKW6D4pMG`<@}Pg` z`W1zr^Na`v;y zp7;ZKV;iGJVakZbZc@X=R>F2V$srv&LQtP(g(;G75{gO``R<9>kdOYYujpX z_|)7=4m8m*Jm*1e@3(#{FyUPZm^)GU$*xs6I+bUeM&=J`WMF|NDU8By7YWWCMRy|h?V1FWwma{;%CfyU_LpC zv*I46Xxl)^!;BUAw9canDMoKoliRPJ8dT?B=Fv*n8j`)0Bd`(gT^%M{s>q=|syUs? zT%;`xG2tQ@PRv}1#OL}Y_&Hj#hA)k%s~#q5>XO{t)5*R4RT~kCw5&2_Q)$$peV%bZ&;D&YDwV7`jRn_@@n@BlTF_xcsNIozRWiUGUG4Mz zL5V{v!F$($e{_h`8=ElXa{6HX2H69u|b=u&^Y5!+EYeFVw!GXvqrG~w0jBKn@^a&Yx&c|Mh! zju(!;tPvBDyIOo2z)TenBw)D`7{&gmZ6zFFsFV%V>ik1rfPmpTpwqqqtS78l&O0|D zp+!sB;5axA3Jtfxns1g=(SA%OYJz>0p7&V04=oY^XZyZTYP1|`1g{#4aCVSWgQ>CR zlc@l{B>gsxLAsH>#?Mi0Ht{eBx`@%dY@t(zOCAHaW z-KkOu09$(oY=GD0YTK{CXF(kcLgDeIdtZW!i!V4N+FSIsqb<_HXGb9{p3($qBM^Dl z0NlH!17Mp_(8!v4MK1OjmX8ZJudT>kG2%FRow6jjSTUHq0$t5rMKRy8AalT;0dt@#-t7a>RZw`E6ZTse1&$m2x%!VxE4uK~`E-rB4y zriwldzqSd_8(CCu1c+qBwR1aXw3RHnzD?kJ6BAC*{pHx-Q*6CVQM4Rx2L<#*I zm4|+EKW8#?w-|SL(UDw2mhBl?p_^618aJ~{ssKTg>g{VUsi^4YJJ#NyT|_^leisX# z@pR6}Tin#(5H+0K_OW!cLnmG1f5smAv{5Jc=!aTZG#U#a!VH}>VVgS1~HO9A~QEW!F=<2NGAi%y)VY%l{Ja+Pi}T8Rk9{ryJT%(W>DJ#wh=~M&-=*j+p}heZnolY6N>;U6C#8UAUGy_i zj_(=1$u-bo)Cdo-OYX^=N_p%7N(D0|$e-bWbL5fASYtYl(5ET=?A$Hn4V7~zCTk^m zqkf#RPqMfe)n58lnlPyVP|@w(UW2tE&D>(h?@{A~G^(RgHu|6!4JMK8fc)^p^6TG( z%lGe%Z|P7VUGIC|mycP4F~vYXP31^;k;};y-Be(I-`Pk8B6m9~@FbgHJ8o4xZZaRs6JSKIJqEYZx_fA^Gvq zx~{>bbnW0hg&BEIHd>y1PS%zd)7{jJWx?+WdRl)Doq0&B8-v>qzV9LLyx+VJz|vVl zdpaTf{v29x9FApadbt-acznD$K)~xA!qBe{vQHOvhw`z<4}Z43roP9Uh;V%A8gT#X z+lL4F&@GgQV%p)DDMvP~6G~>Aj8W0h3bq-pdz1-oimmNvK@I&@6b$XIDoeX-*(TNr z-J`YSa``N^E$PekU>29AP0Ku2k{9cBPBsS=G5k?l1R5oHN?enki)tK2~|3lj>; z4IYPdomdUd?Krkkw{Ab%Neg|kz+xN3TI}!-2Czr;?2dE&-EACz*E}AGps3%7Ej(!Y z$lR24nX@WM1Uuh&6T_vAge7~IS1RZf7G=fkRdzh0PVAiDdLk=k8k&<}ZQt^#B+Pz( ziBw{cJMGnQ=`GyFO68Nd&VWc6F4LntZ7I;8^E4B^(r}y+$9A8zjtTsWqSKp0>k6sp|Z@t^EETG2fmOCv}l zIKsDUR8Y|?!Vq87TBeBe$wEu=^BHDwSw|xxlF#I5MiWe9@dg`7lU@5-BmKc~X$g?* z;;L{^O&r^tNp?Xg%dOZUZ)H9gQhDfh-qC^#2E5WV$;5Jvr8##d+F5dCK~*aAE99() zSO0nzkqUFHj;4ACw?kJ)JJ7`5b$og4MMrBLP{U<9N(Ezc?qFZy`bB4z>Tb_9^T}_EjrblVzN;G-fM_?|<6oHe>O!5n( zR6(%j%~4&{nVUJS?j~&5!2=T|IZh-+FZAHIE7Y1Qsku+d+xE_$2YGlz(7H-Yx%m~4 z)jLoCFk~>;X&)*3>{k5ASO7K)P9hb(ovWj{qv1+N(2|MPr89fQaLQ=r!<>^w) zMGxrG{aBNs*7;Jn4tqGp+$EDVka;14toqd>d*kmgNj4MAibD?{O+yiPRj`JXW9Z*OR;{Khi zr{*&vZGpXPzrSf#@%3F0=iW0P|6cz$YMp9nHqVqg_*3fffPcfQD&Yc8LN!tFB#Aaw zVo19JMcmw@3R}G0a~uDze)ofJ4ICMKU4qB!Be5{i^z&uw2cW5Tbjh^OL-dHy+br|( zw}=rD1e`5IP_|(1#dSCPK-YjKj7#!ylk$9`)|8IasXPGedU@CK?o1%&zQydsVEC9k z7)T9Ek@DC1lj@S*gA!u}jJ;Vy65_0ez@s$+iNRVtPm;_MpkUk&Od@shsITB^u}6mD ziN8=d0XnO=BswqA{#De@Dxe&@JMGVXe}g3u{1tg)^5q)2oWX$yQm!`G7TP6UqbT-E}#og-!s3=MN~KwM+S*gK~L>?OSe;bw1er$08Pn; z?@qzIqLG(dYxm6cY!oe($<-Ss1ZRHr3Zf@gG~3N_HWHCL+J0onTE_OF%?`f*a@88L zH~5OLT13)Dl|Zcn`npcP<$XxDLG31Vj+3Rr*SeD$*!NHAA@Sie721%EFa@DWVt}fU zGxtCR+;BDH)LXHqmD9&L`WPLBzY%LXxIwR2nHGLNB$Yqs_lg53?c4tu#Dv3klh&>2 zK>~4UzBtk%mx~uzpFcnWpAa&Wdu)a+{Oe0#Y!#Rv^xRQtc4NRLQb&~Bn-D(Z^X<#G z-SV@0sR+0bcXV_D+sbYbZ*zVloA#|>!R1m4b8*gL!mE^mL+Y#wDBboziKb|Sh?blc zTi8B{4t2W0NTZ~^Bd+b-vZZ?ks<8{avsJ;;1_4_sUebv@D{XZAA)5)*rg|mn9P>>tgtVH3 zS@^ZRl8LA&1&VY5=F^yb7eFw$w;gHw>vE%XZlfP|!y=JSaIv*Mmu_3zyhAnV+dF-Z z<*xa??%wDtm1eN@T$;pV=vEo5B4m+}%3(a2KOSe4sQeoR9O@@+o4f?i+ zGSe1wp1bpd8WJAZZ0iVJd6OcN8gv79SDTDkocx3U-{IQ=q^M;W@%gRPvquFx3(6}k z2Z}|Hz7eDq#+Zwg&U`iwFcqu(%?@DjBMW?b<>y&tZ#3?}&y4;-QNeQyc^}D?UW29swLKbnQ5F zPl2OIqQ)Rqf=8nw3&+m#yCK(`vQzhu8B!%Lf;SbInDvJr;pupYv&8}H@?roxQy}jW}%>(drC*ga`AfU|C1 zj&5H3RMV3gHhO*_(Nj?*dQ*DJ3d~`A{1&j}%FzO!(XqFz?ZZm0Q9OGE^L%hk!u;UD z?f7eF^PUu(47gyP)k^t%zSqz9d2Po)OCq6qp)5T^&p8=YHJ>eX@5WXpj9eX)v$R6W zVJNw_aG(SThIOQ5aAU@~>ehF?7IP?!hAKc9vqUzN28?Jc+-LesD5S$&t7a+4~5#t zUbpNw9P$qG1z$#xZkFA;t1r;8+aj=Amez)D_~M@r#GvBtP5l z8;C6w3J1G?PqZkgU@Owr-pg1hKbvV8Xh=hrR`hO<28o5^h$)k&Z$3LuchOFvZzN)mY@=SNBQR&E6XS5~4P`R5m zwEK_ptbM&A5(^p;H62ehlj?<5WSYNG(fTTe3AAo+-MXXNcp<1NVJXVv#zO4{Msj%N za#k4MIzWezl=y9n@dsKjpXMC{3K;i<+z7O0g3w;He?rCbq*(Lrcsn}e>5%Vb5VRS7 zdi0zR0e>z!eYr>5>0EO`HW%YWYMkv9B%9mhioRNqmf1*zVpxBdji}e9!!dm`w+Oq1 z&W}FR+4lSuZv33?sP~YtR=e&G+3m0@6FRed?Dw~x%Sid{Z4Rck9Stiimcru+Qk9Wb z(U$8=JR}kAf?cds zzjMwT5iRdfpU%Egf1Xic!#GvNd37eSaIBG(GLo_CF9^EX)zqvjS@7Ha)fWB81^OhC z^Aj-dg+FYe`s@FkjG+B}WwUzA`Go!v$lbgS3C1eZ_AR61t^28oLtH_Z#Dycq1=q6u z3~YiS9-bE%b2}flAdUxo_ph3=$!W2M+$QrQmR7G~E$Q?gUL1+B48Ya#3^)H?u?HWS z7yq4g#zyTC z`1*}OTg36M=F)I<)Cj0uAj&p1dSNn3X}xnEY4dsM&!#ob(!zpa80871=97%B-ih-8 zvl&_|>;1Qr+EC4@u^|JPiq6m7&^?BI&&;#63~f)%Lhb-ti1&2wGPz7p=+%sUU7!B2 z-VDj|(PG05ytX1dp&CqJ&TC!{lsI#v7s`k)uc`1FuC*>6Dl0p51piNVECrB|d-9;X7cyTJ>nU87FZ*jf4Q!OS?7O7BJAPOi>48EJX)HywWp$%rwn~90 zeP)vX60G@ZMQ2@tPh(CMp8L7nU%aC>C&h#4^`>S=jn&HN`S4pgLG-DobPDZ1!;SJwwVGpaVOhRaFP&}zZ}m7= zS`slpS;)FWIU4{G&UEPT7$i>+5s%^Aqoge26=8zLU30zcwT!(RH?N3zt?!OM`89Ma@bCw{{Ye01`+ifoaJl5f=j(hp2~r3bXo zW&|5qeA|}%%eZChXCsDrJnGnHA~JxMv&r(Pm$s4q2RZkgEIji86KYAa(J~iOh?mF-&-@ z0CeC~U6`jVF(fj$Gvbf#I?KGX&49Y)4~AFPBSVl#`33$+=-#LUyNuo?b}AD2CWlmF z7U)a9AdqKPVVB@CzqWCf*}wmp?;;U)+{6)~73UoTEGW;Ht`C}Q4tjhU&fkIEMF=Ha zb9Ni)I5{{#6Dw*ZHL%7CNP~BScAG;T=%f9U{`)RNF==SOE{>z#`?*mHGI={-!kGK9;K(I1k9CkZhw*IdT4s0jGhX)j&#GAq_hR;_>nX7&G z1kB#_+aB`qh8GJO_y7Z$HAgv0u13zR*HnS=KQ(yEjJ`5$ zkH2_qZ*8>=$A=I$NOMhVOk5sbD-+n7$wYCb7~cBr430HoMleUWhMiEHT zA4^T2eA~u#cyzG2MVx+VIPDFa{o+b2>F=G<(t8ZD0J*2@OHTV#1pF&(n$AW)OFxeq zM{~xD?fk27nXUz7MtSt9DSiKncZMzk8RUEF^nogLFL*AXp13cCVn_We&1l9z=XL+Z z+5K_KAA2wB{4VN0Xq(Xr?SF!pHtLMcQJ2(aw}~X$th`|}O@1$f3@!-y-@|w5yuu=z zN6+v7s{`813H(|>Z8o8;W6-R+`ap4=H2JR-C&&ws5^dQ^Z3c+6+fL>M>l-97%JCJ{ zMBD%LMK?7-7B!-bn=f$g75(RfgmzBiFec;wQ;`R@z|`&nBZl9>l#z-oGbIxawvVkj zg8p5FjTQYYJEtw>*?xemkaaukjGiX{_VV^pMvwyP1hrB^z_17W`^#AXsN?J!ZndB0 zJl(Gk3Az09Ux)plwB>&v|9Rj)5B%qW|2*)Y2mbTGe;)YH1OLByAk^;&ewDQ { const userToken = req.query && req.query.userToken ? req.query.userToken : '' + const baseUrl = req.query && req.query.baseUrl ? req.query.baseUrl : 'http://localhost:51121/api/v3' + + const customCss = ` + .swagger-ui .topbar { + background-color: #10253dff; + } + .swagger-ui .topbar img { + content: none; + } + .swagger-ui .topbar a { + background-image: url('/datasance-logo-white.png'); + background-size: contain; + background-repeat: no-repeat; + width: 150px; + height: 50px; + display: block; + text-indent: -9999px; + overflow: hidden; + } +` + + const swaggerFilePath = path.normalize('/home/runner/.npm-global/lib/node_modules/@datasance/iofogcontroller/docs/swagger.yaml') + let swaggerDocumentCustom + + try { + const fileContent = fs.readFileSync(swaggerFilePath, 'utf8') + swaggerDocumentCustom = yaml.load(fileContent) + } catch (error) { + console.error('Swagger YAML dosyası okunamadı:', error.message) + return res.status(500).send(`Swagger dosyası yüklenirken bir hata oluştu: ${error.message}`) + } + + const swaggerDocumentWithBaseUrl = { + ...swaggerDocumentCustom, + servers: [ + { + url: `${baseUrl}` + } + ] + } const options = { + customCss, swaggerOptions: { + persistAuthorization: true, authAction: { userToken: { name: 'userToken', @@ -277,5 +323,5 @@ app.use('/docs', (req, res, next) => { } } - swaggerUi.setup(swaggerDocument, options)(req, res, next) + swaggerUi.setup(swaggerDocumentWithBaseUrl, options)(req, res, next) }) From 5a0a4d055e6f4fd917c368295302a07edc2b0ae6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Thu, 5 Dec 2024 18:18:10 +0300 Subject: [PATCH 136/146] release prep and ecn viewer version updated. system apps endpoint roles edited --- package-lock.json | 457 +++++++++++------------- package.json | 9 +- src/data/providers/database-provider.js | 2 - src/routes/application.js | 2 +- 4 files changed, 211 insertions(+), 259 deletions(-) diff --git a/package-lock.json b/package-lock.json index d8720fcf0..de7c2f3fd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,16 +1,16 @@ { "name": "@datasance/iofogcontroller", - "version": "3.4.3", + "version": "3.4.4", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@datasance/iofogcontroller", - "version": "3.4.3", + "version": "3.4.4", "hasInstallScript": true, "license": "EPL-2.0", "dependencies": { - "@datasance/ecn-viewer": "0.3.8", + "@datasance/ecn-viewer": "0.3.9", "axios": "1.7.4", "body-parser": "^1.20.3", "child_process": "1.0.2", @@ -55,8 +55,7 @@ "swagger-ui-express": "^5.0.0", "umzug": "^3.7.0", "underscore": "1.13.6", - "xss-clean": "0.1.1", - "yamljs": "^0.3.0" + "xss-clean": "0.1.1" }, "bin": { "iofog-controller": "src/main.js" @@ -67,7 +66,7 @@ "chai": "5.1.1", "chai-as-promised": "7.1.2", "chai-http": "4.4.0", - "eslint": "9.2.0", + "eslint": "9.16.0", "eslint-config-google": "0.14.0", "mocha": "10.6.0", "mocha-junit-reporter": "2.2.1", @@ -599,9 +598,9 @@ } }, "node_modules/@datasance/ecn-viewer": { - "version": "0.3.8", - "resolved": "https://npm.pkg.github.com/download/@datasance/ecn-viewer/0.3.8/ee97a29a58feb79a047c90cf19387581a237fc9d", - "integrity": "sha512-wyM86fnIkCG937beYgzWI5I07HrX7htT0EECTkyzSZDXqZCwjEQmFFKbIcb6kYSxtnMqVu6iiTew8P9DXDP3pQ==" + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@datasance/ecn-viewer/-/ecn-viewer-0.3.9.tgz", + "integrity": "sha512-G/12I6CEh/cHQv3h0yYwRlVZ/ff+F5wSM2i/IXCBW7NKcgJT4pd4IhPChB36gwv1dKq08RHR+Ngh9NrYWUQM4w==" }, "node_modules/@eslint-community/eslint-utils": { "version": "4.4.0", @@ -631,18 +630,86 @@ } }, "node_modules/@eslint-community/regexpp": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", - "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", + "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", "dev": true, "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, + "node_modules/@eslint/config-array": { + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.19.0.tgz", + "integrity": "sha512-zdHg2FPIFNKPdcHWtiNT+jEFCHYVplAXRDlQDyqy0zGx/q2parwh7brGJSiTxRk/TSMkbM//zt/f5CHgyTyaSQ==", + "dev": true, + "dependencies": { + "@eslint/object-schema": "^2.1.4", + "debug": "^4.3.1", + "minimatch": "^3.1.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/config-array/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/@eslint/config-array/node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@eslint/config-array/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/@eslint/config-array/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==", + "dev": true + }, + "node_modules/@eslint/core": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.9.0.tgz", + "integrity": "sha512-7ATR9F0e4W85D/0w7cU0SNj7qkAexMG+bAHEZOjo9akvGuhHE2m7umzWzfnpa0XAg5Kxc1BWmtPMV67jJ+9VUg==", + "dev": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, "node_modules/@eslint/eslintrc": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.0.2.tgz", - "integrity": "sha512-wV19ZEGEMAC1eHgrS7UQPqsdEiCIbTKTasEfcXAigzoXICcqZSjBZEHlZwNVvKg6UBCjSlos84XiLqsRJnIcIg==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.2.0.tgz", + "integrity": "sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==", "dev": true, "dependencies": { "ajv": "^6.12.4", @@ -673,12 +740,12 @@ } }, "node_modules/@eslint/eslintrc/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", "dev": true, "dependencies": { - "ms": "2.1.2" + "ms": "^2.1.3" }, "engines": { "node": ">=6.0" @@ -702,20 +769,41 @@ } }, "node_modules/@eslint/eslintrc/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==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true }, "node_modules/@eslint/js": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.2.0.tgz", - "integrity": "sha512-ESiIudvhoYni+MdsI8oD7skpprZ89qKocwRM2KEvhhBJ9nl5MRh7BXU5GTod7Mdygq+AUl+QzId6iWJKR/wABA==", + "version": "9.16.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.16.0.tgz", + "integrity": "sha512-tw2HxzQkrbeuvyj1tG2Yqq+0H9wGoI2IMk4EOsQeX+vmd75FtJAzf+gTA69WF+baUKRYQ3x2kbLE08js5OsTVg==", + "dev": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/object-schema": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.4.tgz", + "integrity": "sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==", "dev": true, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, + "node_modules/@eslint/plugin-kit": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.3.tgz", + "integrity": "sha512-2b/g5hRmpbb1o4GnTZax9N9m0FXzz9OV42ZzI4rDDMDuHUqigAiQCEWChBWCY4ztAGVRjoWT19v0yMmc5/L5kA==", + "dev": true, + "dependencies": { + "levn": "^0.4.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, "node_modules/@faker-js/faker": { "version": "5.5.3", "resolved": "https://registry.npmjs.org/@faker-js/faker/-/faker-5.5.3.tgz", @@ -728,65 +816,41 @@ "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", "optional": true }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", - "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==", + "node_modules/@humanfs/core": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", "dev": true, - "dependencies": { - "@humanwhocodes/object-schema": "^2.0.3", - "debug": "^4.3.1", - "minimatch": "^3.0.5" - }, "engines": { - "node": ">=10.10.0" + "node": ">=18.18.0" } }, - "node_modules/@humanwhocodes/config-array/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==", + "node_modules/@humanfs/node": { + "version": "0.16.6", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz", + "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==", "dev": true, "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/@humanwhocodes/config-array/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.3.0" }, "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "node": ">=18.18.0" } }, - "node_modules/@humanwhocodes/config-array/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", + "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, "engines": { - "node": "*" + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" } }, - "node_modules/@humanwhocodes/config-array/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, "node_modules/@humanwhocodes/module-importer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", @@ -800,16 +864,10 @@ "url": "https://github.com/sponsors/nzakas" } }, - "node_modules/@humanwhocodes/object-schema": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", - "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", - "dev": true - }, "node_modules/@humanwhocodes/retry": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.2.4.tgz", - "integrity": "sha512-Ttl/jHpxfS3st5sxwICYfk4pOH0WrLI1SpW283GgQL7sCWU7EHIOhX4b4fkIxr3tkfzwg8+FNojtzsIEE7Ecgg==", + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.1.tgz", + "integrity": "sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==", "dev": true, "engines": { "node": ">=18.18" @@ -1053,41 +1111,6 @@ "resolved": "https://registry.npmjs.org/@jsdevtools/ono/-/ono-7.1.3.tgz", "integrity": "sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==" }, - "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/@one-ini/wasm": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/@one-ini/wasm/-/wasm-0.1.1.tgz", @@ -1435,6 +1458,12 @@ "@types/ms": "*" } }, + "node_modules/@types/estree": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", + "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", + "dev": true + }, "node_modules/@types/json-schema": { "version": "7.0.15", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", @@ -3035,9 +3064,9 @@ } }, "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==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dev": true, "dependencies": { "path-key": "^3.1.0", @@ -3862,28 +3891,32 @@ } }, "node_modules/eslint": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.2.0.tgz", - "integrity": "sha512-0n/I88vZpCOzO+PQpt0lbsqmn9AsnsJAQseIqhZFI8ibQT0U1AkEKRxA3EVMos0BoHSXDQvCXY25TUjB5tr8Og==", + "version": "9.16.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.16.0.tgz", + "integrity": "sha512-whp8mSQI4C8VXd+fLgSM0lh3UlmcFtVwUQjyKCFfsp+2ItAIYhlq/hqGahGqHE6cv9unM41VlqKk2VtKYR2TaA==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^3.0.2", - "@eslint/js": "9.2.0", - "@humanwhocodes/config-array": "^0.13.0", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.19.0", + "@eslint/core": "^0.9.0", + "@eslint/eslintrc": "^3.2.0", + "@eslint/js": "9.16.0", + "@eslint/plugin-kit": "^0.2.3", + "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", - "@humanwhocodes/retry": "^0.2.3", - "@nodelib/fs.walk": "^1.2.8", + "@humanwhocodes/retry": "^0.4.1", + "@types/estree": "^1.0.6", + "@types/json-schema": "^7.0.15", "ajv": "^6.12.4", "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", + "cross-spawn": "^7.0.5", "debug": "^4.3.2", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^8.0.1", - "eslint-visitor-keys": "^4.0.0", - "espree": "^10.0.1", - "esquery": "^1.4.2", + "eslint-scope": "^8.2.0", + "eslint-visitor-keys": "^4.2.0", + "espree": "^10.3.0", + "esquery": "^1.5.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^8.0.0", @@ -3892,15 +3925,11 @@ "ignore": "^5.2.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", "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", - "text-table": "^0.2.0" + "optionator": "^0.9.3" }, "bin": { "eslint": "bin/eslint.js" @@ -3909,7 +3938,15 @@ "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://opencollective.com/eslint" + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } } }, "node_modules/eslint-config-google": { @@ -4091,9 +4128,9 @@ } }, "node_modules/eslint-scope": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.0.1.tgz", - "integrity": "sha512-pL8XjgP4ZOmmwfFE8mEhSxA7ZY4C+LWyqjQ3o4yWkkmD0qcMT9kkW3zWHOczhWcjTSgqycYAgwSlXvZltv65og==", + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.2.0.tgz", + "integrity": "sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==", "dev": true, "dependencies": { "esrecurse": "^4.3.0", @@ -4128,9 +4165,9 @@ } }, "node_modules/eslint-visitor-keys": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.0.0.tgz", - "integrity": "sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", + "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", "dev": true, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -4200,14 +4237,14 @@ } }, "node_modules/espree": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-10.0.1.tgz", - "integrity": "sha512-MWkrWZbJsL2UwnjxTX3gG8FneachS/Mwg7tdGXce011sJd5b0JG54vat5KHnfSBODZ3Wvzd2WnjxyzsRoVv+ww==", + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz", + "integrity": "sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==", "dev": true, "dependencies": { - "acorn": "^8.11.3", + "acorn": "^8.14.0", "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^4.0.0" + "eslint-visitor-keys": "^4.2.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -4216,6 +4253,18 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/espree/node_modules/acorn": { + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", + "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", @@ -4340,9 +4389,9 @@ } }, "node_modules/execa/node_modules/cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "version": "6.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.6.tgz", + "integrity": "sha512-VqCUuhcd1iB+dsv8gxPttb5iZh/D0iubSP21g36KXdEuf6I5JiioesUVjpCdHV9MZRUfVFlvwtIUyPfxo5trtw==", "dependencies": { "nice-try": "^1.0.4", "path-key": "^2.0.1", @@ -4628,15 +4677,6 @@ "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", "dev": true }, - "node_modules/fastq": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", - "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", - "dev": true, - "dependencies": { - "reusify": "^1.0.4" - } - }, "node_modules/fd-slicer": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", @@ -5711,9 +5751,9 @@ ] }, "node_modules/ignore": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", - "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", "dev": true, "engines": { "node": ">= 4" @@ -6220,15 +6260,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "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-obj": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", @@ -10113,16 +10144,6 @@ "resolved": "https://registry.npmjs.org/retry-as-promised/-/retry-as-promised-7.0.4.tgz", "integrity": "sha512-XgmCoxKWkDofwH8WddD0w85ZfqYz+ZHlr5yo+3YUCfycWawU56T5ckWXsScsj5B8tqUcIG67DxXByo3VUgiAdA==" }, - "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/roarr": { "version": "2.15.4", "resolved": "https://registry.npmjs.org/roarr/-/roarr-2.15.4.tgz", @@ -11433,9 +11454,9 @@ "dev": true }, "node_modules/standard/node_modules/cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "version": "6.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.6.tgz", + "integrity": "sha512-VqCUuhcd1iB+dsv8gxPttb5iZh/D0iubSP21g36KXdEuf6I5JiioesUVjpCdHV9MZRUfVFlvwtIUyPfxo5trtw==", "dev": true, "dependencies": { "nice-try": "^1.0.4", @@ -13446,72 +13467,6 @@ "node": ">= 6" } }, - "node_modules/yamljs": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/yamljs/-/yamljs-0.3.0.tgz", - "integrity": "sha512-C/FsVVhht4iPQYXOInoxUM/1ELSf9EsgKH34FofQOp6hwCPrW4vG4w5++TED3xRUo8gD7l0P1J1dLlDYzODsTQ==", - "dependencies": { - "argparse": "^1.0.7", - "glob": "^7.0.5" - }, - "bin": { - "json2yaml": "bin/json2yaml", - "yaml2json": "bin/yaml2json" - } - }, - "node_modules/yamljs/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/yamljs/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==", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/yamljs/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "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/yamljs/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/yamljs/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/yargs": { "version": "16.2.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", diff --git a/package.json b/package.json index 6e04eda77..68c5cff1c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@datasance/iofogcontroller", - "version": "3.4.3", + "version": "3.4.4", "description": "ioFog Controller project for Eclipse IoFog @ iofog.org \\nCopyright (c) 2023 Datasance Teknoloji A.S.", "main": "./src/main.js", "author": "Emirhan Durmus", @@ -55,7 +55,7 @@ "iofog-controller": "src/main.js" }, "dependencies": { - "@datasance/ecn-viewer": "0.3.8", + "@datasance/ecn-viewer": "0.3.9", "axios": "1.7.4", "body-parser": "^1.20.3", "child_process": "1.0.2", @@ -100,8 +100,7 @@ "swagger-ui-express": "^5.0.0", "umzug": "^3.7.0", "underscore": "1.13.6", - "xss-clean": "0.1.1", - "yamljs": "^0.3.0" + "xss-clean": "0.1.1" }, "devDependencies": { "acorn": "8.11.3", @@ -109,7 +108,7 @@ "chai": "5.1.1", "chai-as-promised": "7.1.2", "chai-http": "4.4.0", - "eslint": "9.2.0", + "eslint": "9.16.0", "eslint-config-google": "0.14.0", "mocha": "10.6.0", "mocha-junit-reporter": "2.2.1", diff --git a/src/data/providers/database-provider.js b/src/data/providers/database-provider.js index dbc1e61d6..23a53f11b 100644 --- a/src/data/providers/database-provider.js +++ b/src/data/providers/database-provider.js @@ -36,7 +36,6 @@ class DatabaseProvider { for (let query of dataArr) { if (query.trim()) { query = query.trim() + ';' // Ensure semicolon is added back - console.log(`Running migration query: ${query}`) // Run each query sequentially await new Promise((resolve, reject) => { @@ -105,7 +104,6 @@ class DatabaseProvider { for (let query of dataArr) { if (query.trim()) { query = query.trim() + ';' // Ensure semicolon is added back - console.log(`Running seeder query: ${query}`) // Run each query sequentially await new Promise((resolve, reject) => { diff --git a/src/routes/application.js b/src/routes/application.js index d5bc48424..5185cbfbc 100644 --- a/src/routes/application.js +++ b/src/routes/application.js @@ -63,7 +63,7 @@ module.exports = [ const getApplicationsBySystemEndPoint = ResponseDecorator.handleErrors(ApplicationController.getApplicationsBySystemEndPoint, successCode, errorCodes) // Add keycloak.protect() middleware to protect the route - await keycloak.protect(['SRE', 'Developer', 'Viewer'])(req, res, async () => { + await keycloak.protect(['SRE'])(req, res, async () => { const responseObject = await getApplicationsBySystemEndPoint(req) const user = req.kauth.grant.access_token.content.preferred_username res From bc642804e148be044c8185a8deea37f7d8730790 Mon Sep 17 00:00:00 2001 From: Alpaslan DOGAN Date: Tue, 10 Dec 2024 18:04:44 +0300 Subject: [PATCH 137/146] swagger ui removed controller side. --- docs/swagger.json | 2 +- docs/swagger.yaml | 2 +- package.json | 2 -- src/server.js | 92 ----------------------------------------------- 4 files changed, 2 insertions(+), 96 deletions(-) diff --git a/docs/swagger.json b/docs/swagger.json index a90060f22..98745d609 100644 --- a/docs/swagger.json +++ b/docs/swagger.json @@ -2674,7 +2674,7 @@ }, "/user/refresh" : { "post" : { - "tags" : [ "Refresh" ], + "tags" : [ "User" ], "summary" : "Refresh accessToken with refreshToken", "operationId" : "refresh", "parameters" : [ ], diff --git a/docs/swagger.yaml b/docs/swagger.yaml index e2bfc97e3..180cf9c1b 100755 --- a/docs/swagger.yaml +++ b/docs/swagger.yaml @@ -2527,7 +2527,7 @@ paths: /user/refresh: post: tags: - - Refresh + - User summary: Refresh accessToken with refreshToken operationId: refresh requestBody: diff --git a/package.json b/package.json index 68c5cff1c..93b53a1d5 100644 --- a/package.json +++ b/package.json @@ -96,8 +96,6 @@ "sequelize": "6.37.3", "sqlite3": "^5.1.7", "string-format": "2.0.0", - "swagger-jsdoc": "^6.2.8", - "swagger-ui-express": "^5.0.0", "umzug": "^3.7.0", "underscore": "1.13.6", "xss-clean": "0.1.1" diff --git a/src/server.js b/src/server.js index 4a75065a4..5c91faacc 100755 --- a/src/server.js +++ b/src/server.js @@ -27,32 +27,6 @@ const path = require('path') const { renderFile } = require('ejs') const xss = require('xss-clean') const { substitutionMiddleware } = require('./helpers/template-helper') -const swaggerUi = require('swagger-ui-express') -const yaml = require('js-yaml') -const swaggerDocument = yaml.load(fs.readFileSync('/home/runner/.npm-global/lib/node_modules/@datasance/iofogcontroller/docs/swagger.yaml')) - -if (!swaggerDocument.components) { - swaggerDocument.components = {} -} - -if (!swaggerDocument.components.securitySchemes) { - swaggerDocument.components.securitySchemes = {} -} - -swaggerDocument.components.securitySchemes = { - userToken: { - type: 'http', - scheme: 'bearer', - bearerFormat: 'JWT' - } -} - -swaggerDocument.security = [ - { - userToken: [] - } -] - const multer = require('multer') const multerMemStorage = multer.memoryStorage() const uploadFile = (fileName) => multer({ @@ -259,69 +233,3 @@ initState() startHttpServer({ api: app, viewer: viewerApp }, { api: apiPort, viewer: viewerPort }, jobs) } }) -app.use('/datasance-logo-white.png', express.static(path.normalize('/home/runner/.npm-global/lib/node_modules/@datasance/iofogcontroller/src/public/datasance-logo-white.png'))) -app.use('/docs', swaggerUi.serve) -app.use('/docs', (req, res, next) => { - const userToken = req.query && req.query.userToken ? req.query.userToken : '' - const baseUrl = req.query && req.query.baseUrl ? req.query.baseUrl : 'http://localhost:51121/api/v3' - - const customCss = ` - .swagger-ui .topbar { - background-color: #10253dff; - } - .swagger-ui .topbar img { - content: none; - } - .swagger-ui .topbar a { - background-image: url('/datasance-logo-white.png'); - background-size: contain; - background-repeat: no-repeat; - width: 150px; - height: 50px; - display: block; - text-indent: -9999px; - overflow: hidden; - } -` - - const swaggerFilePath = path.normalize('/home/runner/.npm-global/lib/node_modules/@datasance/iofogcontroller/docs/swagger.yaml') - let swaggerDocumentCustom - - try { - const fileContent = fs.readFileSync(swaggerFilePath, 'utf8') - swaggerDocumentCustom = yaml.load(fileContent) - } catch (error) { - console.error('Swagger YAML dosyası okunamadı:', error.message) - return res.status(500).send(`Swagger dosyası yüklenirken bir hata oluştu: ${error.message}`) - } - - const swaggerDocumentWithBaseUrl = { - ...swaggerDocumentCustom, - servers: [ - { - url: `${baseUrl}` - } - ] - } - - const options = { - customCss, - swaggerOptions: { - persistAuthorization: true, - authAction: { - userToken: { - name: 'userToken', - schema: { - type: 'http', - in: 'header', - name: 'Authorization', - description: 'Bearer Token (User Token)' - }, - value: `${userToken}` - } - } - } - } - - swaggerUi.setup(swaggerDocumentWithBaseUrl, options)(req, res, next) -}) From e2296e22efdc3718ed2838c47098b27d6199dc97 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Tue, 10 Dec 2024 22:37:16 +0300 Subject: [PATCH 138/146] viewer updated --- package-lock.json | 206 +++++----------------------------------------- package.json | 4 +- 2 files changed, 22 insertions(+), 188 deletions(-) diff --git a/package-lock.json b/package-lock.json index de7c2f3fd..646a1ed52 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,7 +10,7 @@ "hasInstallScript": true, "license": "EPL-2.0", "dependencies": { - "@datasance/ecn-viewer": "0.3.9", + "@datasance/ecn-viewer": "0.3.11", "axios": "1.7.4", "body-parser": "^1.20.3", "child_process": "1.0.2", @@ -21,7 +21,7 @@ "cors": "2.8.5", "daemonize2": "0.4.2", "ejs": "3.1.10", - "express": "4.21.1", + "express": "4.21.2", "express-session": "1.18.1", "formidable": "3.5.1", "ftp": "0.3.10", @@ -51,8 +51,6 @@ "sequelize": "6.37.3", "sqlite3": "^5.1.7", "string-format": "2.0.0", - "swagger-jsdoc": "^6.2.8", - "swagger-ui-express": "^5.0.0", "umzug": "^3.7.0", "underscore": "1.13.6", "xss-clean": "0.1.1" @@ -93,46 +91,6 @@ "node": ">=6.0.0" } }, - "node_modules/@apidevtools/json-schema-ref-parser": { - "version": "9.1.2", - "resolved": "https://registry.npmjs.org/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-9.1.2.tgz", - "integrity": "sha512-r1w81DpR+KyRWd3f+rk6TNqMgedmAxZP5v5KWlXQWlgMUUtyEJch0DKEci1SorPMiSeM8XPl7MZ3miJ60JIpQg==", - "dependencies": { - "@jsdevtools/ono": "^7.1.3", - "@types/json-schema": "^7.0.6", - "call-me-maybe": "^1.0.1", - "js-yaml": "^4.1.0" - } - }, - "node_modules/@apidevtools/openapi-schemas": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@apidevtools/openapi-schemas/-/openapi-schemas-2.1.0.tgz", - "integrity": "sha512-Zc1AlqrJlX3SlpupFGpiLi2EbteyP7fXmUOGup6/DnkRgjP9bgMM/ag+n91rsv0U1Gpz0H3VILA/o3bW7Ua6BQ==", - "engines": { - "node": ">=10" - } - }, - "node_modules/@apidevtools/swagger-methods": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@apidevtools/swagger-methods/-/swagger-methods-3.0.2.tgz", - "integrity": "sha512-QAkD5kK2b1WfjDS/UQn/qQkbwF31uqRjPTrsCs5ZG9BQGAkjwvqGFjjPqAuzac/IYzpPtRzjCP1WrTuAIjMrXg==" - }, - "node_modules/@apidevtools/swagger-parser": { - "version": "10.0.3", - "resolved": "https://registry.npmjs.org/@apidevtools/swagger-parser/-/swagger-parser-10.0.3.tgz", - "integrity": "sha512-sNiLY51vZOmSPFZA5TF35KZ2HbgYklQnTSDnkghamzLb3EkNtcQnrBQEj5AOCxHpTtXpqMCRM1CrmV2rG6nw4g==", - "dependencies": { - "@apidevtools/json-schema-ref-parser": "^9.0.6", - "@apidevtools/openapi-schemas": "^2.0.4", - "@apidevtools/swagger-methods": "^3.0.2", - "@jsdevtools/ono": "^7.1.3", - "call-me-maybe": "^1.0.1", - "z-schema": "^5.0.1" - }, - "peerDependencies": { - "openapi-types": ">=7" - } - }, "node_modules/@babel/code-frame": { "version": "7.24.2", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.2.tgz", @@ -598,9 +556,9 @@ } }, "node_modules/@datasance/ecn-viewer": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@datasance/ecn-viewer/-/ecn-viewer-0.3.9.tgz", - "integrity": "sha512-G/12I6CEh/cHQv3h0yYwRlVZ/ff+F5wSM2i/IXCBW7NKcgJT4pd4IhPChB36gwv1dKq08RHR+Ngh9NrYWUQM4w==" + "version": "0.3.11", + "resolved": "https://registry.npmjs.org/@datasance/ecn-viewer/-/ecn-viewer-0.3.11.tgz", + "integrity": "sha512-COtxGA1kCQdPyzXXqTTcLvozB46Ot2UGTjrU4m3WP+sIxM46T6AR6RCr1CBKpbVuRC5MYABoBPof+MsMI+AHjg==" }, "node_modules/@eslint-community/eslint-utils": { "version": "4.4.0", @@ -1106,11 +1064,6 @@ "@jridgewell/sourcemap-codec": "^1.4.14" } }, - "node_modules/@jsdevtools/ono": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/@jsdevtools/ono/-/ono-7.1.3.tgz", - "integrity": "sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==" - }, "node_modules/@one-ini/wasm": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/@one-ini/wasm/-/wasm-0.1.1.tgz", @@ -1467,7 +1420,8 @@ "node_modules/@types/json-schema": { "version": "7.0.15", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", - "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==" + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true }, "node_modules/@types/ms": { "version": "0.7.34", @@ -2396,11 +2350,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/call-me-maybe": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.2.tgz", - "integrity": "sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==" - }, "node_modules/caller-path": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", @@ -4315,6 +4264,7 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "devOptional": true, "engines": { "node": ">=0.10.0" } @@ -4458,9 +4408,9 @@ } }, "node_modules/express": { - "version": "4.21.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.21.1.tgz", - "integrity": "sha512-YSFlK1Ee0/GC8QaO91tHcDxJiE/X4FbpAyQWkxAvG6AXCuR65YzK8ua6D9hvi/TzUfZMpc+BwuM1IPw8fmQBiQ==", + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz", + "integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==", "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", @@ -4481,7 +4431,7 @@ "methods": "~1.1.2", "on-finished": "2.4.1", "parseurl": "~1.3.3", - "path-to-regexp": "0.1.10", + "path-to-regexp": "0.1.12", "proxy-addr": "~2.0.7", "qs": "6.13.0", "range-parser": "~1.2.1", @@ -4496,6 +4446,10 @@ }, "engines": { "node": ">= 0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/express-session": { @@ -7175,11 +7129,6 @@ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "dev": true }, - "node_modules/lodash.mergewith": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz", - "integrity": "sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==" - }, "node_modules/log-symbols": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", @@ -8711,6 +8660,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "devOptional": true, "engines": { "node": ">=0.10.0" } @@ -8761,9 +8711,9 @@ } }, "node_modules/path-to-regexp": { - "version": "0.1.10", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.10.tgz", - "integrity": "sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==" + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", + "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==" }, "node_modules/pathval": { "version": "2.0.0", @@ -12216,114 +12166,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/swagger-jsdoc": { - "version": "6.2.8", - "resolved": "https://registry.npmjs.org/swagger-jsdoc/-/swagger-jsdoc-6.2.8.tgz", - "integrity": "sha512-VPvil1+JRpmJ55CgAtn8DIcpBs0bL5L3q5bVQvF4tAW/k/9JYSj7dCpaYCAv5rufe0vcCbBRQXGvzpkWjvLklQ==", - "dependencies": { - "commander": "6.2.0", - "doctrine": "3.0.0", - "glob": "7.1.6", - "lodash.mergewith": "^4.6.2", - "swagger-parser": "^10.0.3", - "yaml": "2.0.0-1" - }, - "bin": { - "swagger-jsdoc": "bin/swagger-jsdoc.js" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/swagger-jsdoc/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==", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/swagger-jsdoc/node_modules/commander": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.0.tgz", - "integrity": "sha512-zP4jEKbe8SHzKJYQmq8Y9gYjtO/POJLgIdKgV7B9qNmABVFVc+ctqSX6iXh4mCpJfRBOabiZ2YKPg8ciDw6C+Q==", - "engines": { - "node": ">= 6" - } - }, - "node_modules/swagger-jsdoc/node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/swagger-jsdoc/node_modules/glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/swagger-jsdoc/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/swagger-parser": { - "version": "10.0.3", - "resolved": "https://registry.npmjs.org/swagger-parser/-/swagger-parser-10.0.3.tgz", - "integrity": "sha512-nF7oMeL4KypldrQhac8RyHerJeGPD1p2xDh900GPvc+Nk7nWP6jX2FcC7WmkinMoAmoO774+AFXcWsW8gMWEIg==", - "dependencies": { - "@apidevtools/swagger-parser": "10.0.3" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/swagger-ui-dist": { - "version": "5.17.10", - "resolved": "https://registry.npmjs.org/swagger-ui-dist/-/swagger-ui-dist-5.17.10.tgz", - "integrity": "sha512-fp8SYeEK216KS1/noDvursUOGojEbkvtckOpOmAGZUjlx/ma7VLD2PLQwyermjlzFrlHI5uCt1V+M1C3qBvRyQ==" - }, - "node_modules/swagger-ui-express": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/swagger-ui-express/-/swagger-ui-express-5.0.0.tgz", - "integrity": "sha512-tsU9tODVvhyfkNSvf03E6FAk+z+5cU3lXAzMy6Pv4av2Gt2xA0++fogwC4qo19XuFf6hdxevPuVCSKFuMHJhFA==", - "dependencies": { - "swagger-ui-dist": ">=5.0.0" - }, - "engines": { - "node": ">= v0.10.32" - }, - "peerDependencies": { - "express": ">=4.0.0 || >=5.0.0-beta" - } - }, "node_modules/symbol-observable": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.1.tgz", @@ -13459,14 +13301,6 @@ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, - "node_modules/yaml": { - "version": "2.0.0-1", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.0.0-1.tgz", - "integrity": "sha512-W7h5dEhywMKenDJh2iX/LABkbFnBxasD27oyXWDS/feDsxiw0dD5ncXdYXgkvAsXIY2MpW/ZKkr9IU30DBdMNQ==", - "engines": { - "node": ">= 6" - } - }, "node_modules/yargs": { "version": "16.2.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", diff --git a/package.json b/package.json index 93b53a1d5..7290d889d 100644 --- a/package.json +++ b/package.json @@ -55,7 +55,7 @@ "iofog-controller": "src/main.js" }, "dependencies": { - "@datasance/ecn-viewer": "0.3.9", + "@datasance/ecn-viewer": "0.3.11", "axios": "1.7.4", "body-parser": "^1.20.3", "child_process": "1.0.2", @@ -66,7 +66,7 @@ "cors": "2.8.5", "daemonize2": "0.4.2", "ejs": "3.1.10", - "express": "4.21.1", + "express": "4.21.2", "express-session": "1.18.1", "formidable": "3.5.1", "ftp": "0.3.10", From a5884eafd19d1e02af13e32f765813fdfdf91334 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Wed, 11 Dec 2024 18:50:41 +0300 Subject: [PATCH 139/146] ecn viewer version updated --- package-lock.json | 8 ++++---- package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index 646a1ed52..e2d48ef7f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,7 +10,7 @@ "hasInstallScript": true, "license": "EPL-2.0", "dependencies": { - "@datasance/ecn-viewer": "0.3.11", + "@datasance/ecn-viewer": "0.3.13", "axios": "1.7.4", "body-parser": "^1.20.3", "child_process": "1.0.2", @@ -556,9 +556,9 @@ } }, "node_modules/@datasance/ecn-viewer": { - "version": "0.3.11", - "resolved": "https://registry.npmjs.org/@datasance/ecn-viewer/-/ecn-viewer-0.3.11.tgz", - "integrity": "sha512-COtxGA1kCQdPyzXXqTTcLvozB46Ot2UGTjrU4m3WP+sIxM46T6AR6RCr1CBKpbVuRC5MYABoBPof+MsMI+AHjg==" + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@datasance/ecn-viewer/-/ecn-viewer-0.3.13.tgz", + "integrity": "sha512-nR6bDO24A8LFccR9LrQrsy5OquSOBBqn5UTcztsgVfNoq/fDjVFo0zPZzV7G9/rXiQT6/IbZjm+LTO37Vy3ysg==" }, "node_modules/@eslint-community/eslint-utils": { "version": "4.4.0", diff --git a/package.json b/package.json index 7290d889d..f61618cc4 100644 --- a/package.json +++ b/package.json @@ -55,7 +55,7 @@ "iofog-controller": "src/main.js" }, "dependencies": { - "@datasance/ecn-viewer": "0.3.11", + "@datasance/ecn-viewer": "0.3.13", "axios": "1.7.4", "body-parser": "^1.20.3", "child_process": "1.0.2", From b982e937f30c370a03a37669f981d72004895ced Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Fri, 27 Dec 2024 23:18:31 +0300 Subject: [PATCH 140/146] iofog service system agen query fixed, db colum altering for mscv status --- package-lock.json | 4 ++-- package.json | 2 +- src/data/migrations/db_migration_v1.0.2.sql | 2 +- src/services/iofog-service.js | 8 ++++---- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index e2d48ef7f..85f8b1986 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@datasance/iofogcontroller", - "version": "3.4.4", + "version": "3.4.5", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@datasance/iofogcontroller", - "version": "3.4.4", + "version": "3.4.5", "hasInstallScript": true, "license": "EPL-2.0", "dependencies": { diff --git a/package.json b/package.json index f61618cc4..9202f7019 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@datasance/iofogcontroller", - "version": "3.4.4", + "version": "3.4.5", "description": "ioFog Controller project for Eclipse IoFog @ iofog.org \\nCopyright (c) 2023 Datasance Teknoloji A.S.", "main": "./src/main.js", "author": "Emirhan Durmus", diff --git a/src/data/migrations/db_migration_v1.0.2.sql b/src/data/migrations/db_migration_v1.0.2.sql index 8321a99d8..0779e09cc 100644 --- a/src/data/migrations/db_migration_v1.0.2.sql +++ b/src/data/migrations/db_migration_v1.0.2.sql @@ -329,7 +329,7 @@ CREATE TABLE IF NOT EXISTS MicroserviceStatuses ( memory_usage BIGINT DEFAULT 0, container_id VARCHAR(255) DEFAULT '', percentage FLOAT DEFAULT 0.00, - error_message VARCHAR(255) DEFAULT '', + error_message TEXT, microservice_uuid VARCHAR(32), created_at DATETIME, updated_at DATETIME, diff --git a/src/services/iofog-service.js b/src/services/iofog-service.js index 4a27ddb3a..1b2353d5a 100644 --- a/src/services/iofog-service.js +++ b/src/services/iofog-service.js @@ -454,10 +454,10 @@ async function getFogEndPoint (fogData, isCLI, transaction) { async function getFogListEndPoint (filters, isCLI, isSystem, transaction) { await Validator.validate(filters, Validator.schemas.iofogFilters) - // If listing system agent through REST API, make sure user is authenticated - if (isSystem && !isCLI && !lget('id')) { - throw new Errors.AuthenticationError('Unauthorized') - } + // // If listing system agent through REST API, make sure user is authenticated + // if (isSystem && !isCLI && !lget('id')) { + // throw new Errors.AuthenticationError('Unauthorized') + // } const queryFogData = isSystem ? { isSystem } : (isCLI ? {} : { isSystem: false }) From 2710c7b24d86dd30fbc2509064d7d09ae22cfed6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Sun, 29 Dec 2024 16:18:03 +0300 Subject: [PATCH 141/146] logoptions and cli fixed --- Dockerfile | 7 ++- logrotate.conf | 12 ++-- package-lock.json | 4 +- package.json | 2 +- src/cli/application.js | 24 ++++---- src/cli/catalog.js | 16 +++--- src/cli/controller.js | 8 +-- src/cli/diagnostics.js | 12 ++-- src/cli/index.js | 1 - src/cli/iofog.js | 60 ++++++++++---------- src/cli/microservice.js | 108 ++++++++++++++++-------------------- src/cli/registry.js | 22 ++++---- src/cli/tunnel.js | 12 ++-- src/config/constants.js | 4 +- src/config/default.json | 4 +- src/config/development.json | 4 +- src/config/production.json | 4 +- src/logger/index.js | 2 +- 18 files changed, 151 insertions(+), 155 deletions(-) diff --git a/Dockerfile b/Dockerfile index f547f56fb..e55366136 100644 --- a/Dockerfile +++ b/Dockerfile @@ -29,7 +29,7 @@ USER root # Install dependencies for logging and development RUN microdnf install -y logrotate g++ make && microdnf clean all -COPY logrotate.conf /etc/logrotate.conf +COPY logrotate.conf /etc/logrotate.d/iofog-controller # Install Python and pip RUN microdnf install -y python3 && \ @@ -39,6 +39,9 @@ RUN microdnf install -y python3 && \ microdnf install shadow-utils && \ microdnf clean all RUN useradd --uid 10000 --create-home runner +RUN mkdir -p /var/log/iofog-controller && \ + chown runner:runner /var/log/iofog-controller && \ + chmod 755 /var/log/iofog-controller USER 10000 WORKDIR /home/runner @@ -54,6 +57,8 @@ RUN npm i -g /home/runner/iofog-controller.tgz && \ rm -rf /home/runner/iofog-controller.tgz && \ iofog-controller config dev-mode --on +RUN rm -rf /home/runner/.npm-global/lib/node_modules/@datasance/iofogcontroller/src/data/sqlite_files/* + COPY LICENSE /licenses/LICENSE LABEL org.opencontainers.image.description=controller LABEL org.opencontainers.image.source=https://github.com/datasance/controller diff --git a/logrotate.conf b/logrotate.conf index bab19729b..7656fa264 100644 --- a/logrotate.conf +++ b/logrotate.conf @@ -1,10 +1,14 @@ -${PID_BASE}/iofog-controller.log { +/var/log/iofog-controller/iofog-controller.log { rotate 10 - size 10m + size 100m compress notifempty missingok postrotate - kill -HUP `cat ${PID_BASE}/iofog-controller.pid` + if [ -f /home/runner/iofog-controller.pid ]; then + kill -HUP `cat /home/runner/iofog-controller.pid`; + elif [ -f /opt/iofog/controller/lib/node_modules/@datasance/iofogcontroller/src/iofog-controller.pid ]; then + kill -HUP `cat /opt/iofog/controller/lib/node_modules/@datasance/iofogcontroller/src/iofog-controller.pid`; + fi endscript -} +} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 85f8b1986..d2ca71734 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@datasance/iofogcontroller", - "version": "3.4.5", + "version": "3.4.6", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@datasance/iofogcontroller", - "version": "3.4.5", + "version": "3.4.6", "hasInstallScript": true, "license": "EPL-2.0", "dependencies": { diff --git a/package.json b/package.json index 9202f7019..df5caed82 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@datasance/iofogcontroller", - "version": "3.4.5", + "version": "3.4.6", "description": "ioFog Controller project for Eclipse IoFog @ iofog.org \\nCopyright (c) 2023 Datasance Teknoloji A.S.", "main": "./src/main.js", "author": "Emirhan Durmus", diff --git a/src/cli/application.js b/src/cli/application.js index db8ae7901..e5997dd81 100644 --- a/src/cli/application.js +++ b/src/cli/application.js @@ -90,19 +90,19 @@ class Application extends BaseCLIHandler { switch (command) { case constants.CMD_ADD: - await _executeCase(applicationCommand, constants.CMD_ADD, _createApplication, true) + await _executeCase(applicationCommand, constants.CMD_ADD, _createApplication) break case constants.CMD_UPDATE: - await _executeCase(applicationCommand, constants.CMD_UPDATE, _updateApplication, true) + await _executeCase(applicationCommand, constants.CMD_UPDATE, _updateApplication) break case constants.CMD_REMOVE: - await _executeCase(applicationCommand, constants.CMD_REMOVE, _deleteApplication, true) + await _executeCase(applicationCommand, constants.CMD_REMOVE, _deleteApplication) break case constants.CMD_LIST: - await _executeCase(applicationCommand, constants.CMD_LIST, _getAllApplications, false) + await _executeCase(applicationCommand, constants.CMD_LIST, _getAllApplications) break case constants.CMD_INFO: - await _executeCase(applicationCommand, constants.CMD_INFO, _getApplication, false) + await _executeCase(applicationCommand, constants.CMD_INFO, _getApplication) break case constants.CMD_HELP: default: @@ -126,7 +126,7 @@ class Application extends BaseCLIHandler { } } -const _executeCase = async function (applicationCommand, commandName, f, isUserRequired) { +const _executeCase = async function (applicationCommand, commandName, f) { try { const item = applicationCommand[commandName] await f(item) @@ -135,33 +135,33 @@ const _executeCase = async function (applicationCommand, commandName, f, isUserR } } -const _createApplication = async function (applicationData, user) { +const _createApplication = async function (applicationData) { const application = applicationData.file ? JSON.parse(fs.readFileSync(applicationData.file, 'utf8')) : _createApplicationObject(applicationData) logger.cliReq('application add', { args: application }) - const createdApplication = await ApplicationService.createApplicationEndPoint(application, user, true) + const createdApplication = await ApplicationService.createApplicationEndPoint(application, true) logger.cliRes(JSON.stringify({ id: createdApplication.id, name: createdApplication.name }, null, 2)) } -const _updateApplication = async function (applicationData, user) { +const _updateApplication = async function (applicationData) { const application = applicationData.file ? JSON.parse(fs.readFileSync(applicationData.file, 'utf8')) : _createApplicationObject(applicationData) const name = applicationData.name logger.cliReq('application update', { args: application }) - await ApplicationService.patchApplicationEndPoint(application, { name }, user, true) + await ApplicationService.patchApplicationEndPoint(application, { name }, true) logger.cliRes('Application updated successfully.') } -const _deleteApplication = async function (applicationData, user) { +const _deleteApplication = async function (applicationData) { const name = applicationData.name logger.cliReq('application remove', { args: { name } }) - await ApplicationService.deleteApplicationEndPoint({ name }, user, true) + await ApplicationService.deleteApplicationEndPoint({ name }, true) logger.cliRes('Application removed successfully.') } diff --git a/src/cli/catalog.js b/src/cli/catalog.js index c4df259ec..9f15b4519 100644 --- a/src/cli/catalog.js +++ b/src/cli/catalog.js @@ -212,19 +212,19 @@ class Catalog extends BaseCLIHandler { switch (command) { case constants.CMD_ADD: - await _executeCase(catalogCommand, constants.CMD_ADD, _createCatalogItem, true) + await _executeCase(catalogCommand, constants.CMD_ADD, _createCatalogItem) break case constants.CMD_UPDATE: - await _executeCase(catalogCommand, constants.CMD_UPDATE, _updateCatalogItem, false) + await _executeCase(catalogCommand, constants.CMD_UPDATE, _updateCatalogItem) break case constants.CMD_REMOVE: - await _executeCase(catalogCommand, constants.CMD_REMOVE, _deleteCatalogItem, false) + await _executeCase(catalogCommand, constants.CMD_REMOVE, _deleteCatalogItem) break case constants.CMD_LIST: - await _executeCase(catalogCommand, constants.CMD_LIST, _listCatalogItems, false) + await _executeCase(catalogCommand, constants.CMD_LIST, _listCatalogItems) break case constants.CMD_INFO: - await _executeCase(catalogCommand, constants.CMD_INFO, _getCatalogItem, false) + await _executeCase(catalogCommand, constants.CMD_INFO, _getCatalogItem) break case constants.CMD_HELP: default: @@ -248,7 +248,7 @@ class Catalog extends BaseCLIHandler { } } -const _executeCase = async function (catalogCommand, commandName, f, isUserRequired) { +const _executeCase = async function (catalogCommand, commandName, f) { try { const item = catalogCommand[commandName] await f(item) @@ -257,13 +257,13 @@ const _executeCase = async function (catalogCommand, commandName, f, isUserRequi } } -const _createCatalogItem = async function (obj, user) { +const _createCatalogItem = async function (obj) { const item = obj.file ? JSON.parse(fs.readFileSync(obj.file, 'utf8')) : _createCatalogItemObject(obj) logger.cliReq('catalog add', { args: item }) - const catalogItemIdObject = await CatalogItemService.createCatalogItemEndPoint(item, user) + const catalogItemIdObject = await CatalogItemService.createCatalogItemEndPoint(item) logger.cliRes(JSON.stringify({ id: catalogItemIdObject.id }, null, 2)) diff --git a/src/cli/controller.js b/src/cli/controller.js index d5f98d4f6..9ae8561ca 100644 --- a/src/cli/controller.js +++ b/src/cli/controller.js @@ -46,13 +46,13 @@ class Controller extends BaseCLIHandler { switch (command) { case constants.CMD_STATUS: - await _executeCase(controllerCommand, constants.CMD_STATUS, _getStatus, false) + await _executeCase(controllerCommand, constants.CMD_STATUS, _getStatus) break case constants.CMD_FOG_TYPES: - await _executeCase(controllerCommand, constants.CMD_FOG_TYPES, _getFogTypes, false) + await _executeCase(controllerCommand, constants.CMD_FOG_TYPES, _getFogTypes) break case constants.CMD_VERSION: - await _executeCase(controllerCommand, constants.CMD_VERSION, _getVersion, false) + await _executeCase(controllerCommand, constants.CMD_VERSION, _getVersion) break case constants.CMD_HELP: default: @@ -64,7 +64,7 @@ class Controller extends BaseCLIHandler { } } -const _executeCase = async function (userCommand, commandName, f, isUserRequired) { +const _executeCase = async function (userCommand, commandName, f) { try { const item = userCommand[commandName] await f(item) diff --git a/src/cli/diagnostics.js b/src/cli/diagnostics.js index ab716cb4b..165c55ed6 100644 --- a/src/cli/diagnostics.js +++ b/src/cli/diagnostics.js @@ -113,19 +113,19 @@ class Diagnostics extends BaseCLIHandler { switch (command) { case constants.CMD_STRACE_UPDATE: - await _executeCase(diagnosticCommand, constants.CMD_STRACE_UPDATE, _changeMicroserviceStraceState, false) + await _executeCase(diagnosticCommand, constants.CMD_STRACE_UPDATE, _changeMicroserviceStraceState) break case constants.CMD_STRACE_INFO: - await _executeCase(diagnosticCommand, constants.CMD_STRACE_INFO, _getMicroserviceStraceData, false) + await _executeCase(diagnosticCommand, constants.CMD_STRACE_INFO, _getMicroserviceStraceData) break case constants.CMD_STRACE_FTP_POST: - await _executeCase(diagnosticCommand, constants.CMD_STRACE_FTP_POST, _postMicroserviceStraceDataToFtp, false) + await _executeCase(diagnosticCommand, constants.CMD_STRACE_FTP_POST, _postMicroserviceStraceDataToFtp) break case constants.CMD_IMAGE_SNAPSHOT_CREATE: - await _executeCase(diagnosticCommand, constants.CMD_IMAGE_SNAPSHOT_CREATE, _postMicroserviceImageSnapshotCreate, false) + await _executeCase(diagnosticCommand, constants.CMD_IMAGE_SNAPSHOT_CREATE, _postMicroserviceImageSnapshotCreate) break case constants.CMD_IMAGE_SNAPSHOT_GET: - await _executeCase(diagnosticCommand, constants.CMD_IMAGE_SNAPSHOT_GET, _getMicroserviceImageSnapshot, false) + await _executeCase(diagnosticCommand, constants.CMD_IMAGE_SNAPSHOT_GET, _getMicroserviceImageSnapshot) break case constants.CMD_HELP: default: @@ -137,7 +137,7 @@ class Diagnostics extends BaseCLIHandler { } } -const _executeCase = async function (diagnosticCommand, commandName, f, isUserRequired) { +const _executeCase = async function (diagnosticCommand, commandName, f) { try { const item = diagnosticCommand[commandName] await f(item) diff --git a/src/cli/index.js b/src/cli/index.js index 56961ddb9..a905bf1dd 100644 --- a/src/cli/index.js +++ b/src/cli/index.js @@ -37,7 +37,6 @@ class Cli extends BaseCLIHandler { // [constants.CMD_INIT_DB]: 'Init sqlite db for iofog-controller.', [constants.CMD_CONTROLLER]: 'Display iofog-controller service information.', [constants.CMD_HELP]: 'Display usage information.', - [constants.CMD_USER]: 'User operations.', [constants.CMD_CONFIG]: 'Set/Display iofog-controller service config.', [constants.CMD_TUNNEL]: 'Tunnel operations.', [constants.CMD_IOFOG]: 'ioFog nodes operations.', diff --git a/src/cli/iofog.js b/src/cli/iofog.js index 8ac4d0081..8ea90aae2 100644 --- a/src/cli/iofog.js +++ b/src/cli/iofog.js @@ -301,37 +301,37 @@ class IOFog extends BaseCLIHandler { switch (command) { case constants.CMD_ADD: - await _executeCase(iofogCommand, constants.CMD_ADD, _createFog, true) + await _executeCase(iofogCommand, constants.CMD_ADD, _createFog) break case constants.CMD_UPDATE: - await _executeCase(iofogCommand, constants.CMD_UPDATE, _updateFog, true) + await _executeCase(iofogCommand, constants.CMD_UPDATE, _updateFog) break case constants.CMD_REMOVE: - await _executeCase(iofogCommand, constants.CMD_REMOVE, _deleteFog, true) + await _executeCase(iofogCommand, constants.CMD_REMOVE, _deleteFog) break case constants.CMD_LIST: - await _executeCase(iofogCommand, constants.CMD_LIST, _getFogList, false) + await _executeCase(iofogCommand, constants.CMD_LIST, _getFogList) break case constants.CMD_INFO: - await _executeCase(iofogCommand, constants.CMD_INFO, _getFog, false) + await _executeCase(iofogCommand, constants.CMD_INFO, _getFog) break case constants.CMD_PROVISIONING_KEY: - await _executeCase(iofogCommand, constants.CMD_PROVISIONING_KEY, _generateProvision, false) + await _executeCase(iofogCommand, constants.CMD_PROVISIONING_KEY, _generateProvision) break case constants.CMD_IOFOG_REBOOT: - await _executeCase(iofogCommand, constants.CMD_IOFOG_REBOOT, _setFogRebootCommand, false) + await _executeCase(iofogCommand, constants.CMD_IOFOG_REBOOT, _setFogRebootCommand) break case constants.CMD_VERSION: - await _executeCase(iofogCommand, constants.CMD_VERSION, _setFogVersionCommand, false) + await _executeCase(iofogCommand, constants.CMD_VERSION, _setFogVersionCommand) break case constants.CMD_HAL_HW: - await _executeCase(iofogCommand, constants.CMD_HAL_HW, _getHalHardwareInfo, false) + await _executeCase(iofogCommand, constants.CMD_HAL_HW, _getHalHardwareInfo) break case constants.CMD_HAL_USB: - await _executeCase(iofogCommand, constants.CMD_HAL_USB, _getHalUsbInfo, false) + await _executeCase(iofogCommand, constants.CMD_HAL_USB, _getHalUsbInfo) break case constants.CMD_IOFOG_PRUNE: - await _executeCase(iofogCommand, constants.CMD_IOFOG_PRUNE, _setFogPruneCommand, false) + await _executeCase(iofogCommand, constants.CMD_IOFOG_PRUNE, _setFogPruneCommand) break case constants.CMD_HELP: default: @@ -354,7 +354,7 @@ class IOFog extends BaseCLIHandler { } } -async function _executeCase (commands, commandName, f, isUserRequired) { +async function _executeCase (commands, commandName, f) { try { const obj = commands[commandName] await f(obj) @@ -363,19 +363,19 @@ async function _executeCase (commands, commandName, f, isUserRequired) { } } -async function _createFog (obj, user) { +async function _createFog (obj) { const fog = obj.file ? JSON.parse(fs.readFileSync(obj.file, 'utf8')) : _createFogObject(obj) logger.cliReq('fog add', { args: fog }) - const result = await FogService.createFogEndPoint(fog, user, true) + const result = await FogService.createFogEndPoint(fog, true) logger.cliRes(JSON.stringify({ uuid: result.uuid }, null, 2)) } -async function _updateFog (obj, user) { +async function _updateFog (obj) { const fog = obj.file ? JSON.parse(fs.readFileSync(obj.file, 'utf8')) : _createFogObject(obj) @@ -383,52 +383,52 @@ async function _updateFog (obj, user) { fog.uuid = obj.iofogUuid logger.cliReq('fog update', { args: fog }) - await FogService.updateFogEndPoint(fog, user, true) + await FogService.updateFogEndPoint(fog, true) logger.cliRes('ioFog node has been updated successfully.') } -async function _deleteFog (obj, user) { +async function _deleteFog (obj) { const fog = _createFogObject(obj) logger.cliReq('fog remove', { args: fog }) - await FogService.deleteFogEndPoint(fog, user, true) + await FogService.deleteFogEndPoint(fog, true) logger.cliRes('ioFog node has been removed successfully') } -async function _getFogList (obj, user) { +async function _getFogList (obj) { logger.cliReq('fog list') const emptyFilters = [] - const list = await FogService.getFogListEndPoint(emptyFilters, user, true, false) + const list = await FogService.getFogListEndPoint(emptyFilters, true, false) logger.cliRes(JSON.stringify(list, null, 2)) } -async function _getFog (obj, user) { +async function _getFog (obj) { const fog = _createFogObject(obj) logger.cliReq('fog info', { args: fog }) - const res = await FogService.getFogEndPoint(fog, user, true) + const res = await FogService.getFogEndPoint(fog, true) logger.cliRes(JSON.stringify(res, null, 2)) } -async function _generateProvision (obj, user) { +async function _generateProvision (obj) { const fog = _createFogObject(obj) logger.cliReq('fog provisioning-key', { args: fog }) - const response = await FogService.generateProvisioningKeyEndPoint(fog, user, true) + const response = await FogService.generateProvisioningKeyEndPoint(fog, true) logger.cliRes(JSON.stringify(response), null, 2) } -async function _setFogRebootCommand (obj, user) { +async function _setFogRebootCommand (obj) { const fog = _createFogObject(obj) logger.cliReq('fog reboot', { args: fog }) - await FogService.setFogRebootCommandEndPoint(fog, user, true) + await FogService.setFogRebootCommandEndPoint(fog, true) logger.cliRes('ioFog reboot command has been set successfully') } -async function _setFogVersionCommand (obj, user) { +async function _setFogVersionCommand (obj) { const fog = { uuid: obj.iofogUuid, versionCommand: obj.versionCommand } logger.cliReq('fog version', { args: fog }) - await FogService.setFogVersionCommandEndPoint(fog, user, true) + await FogService.setFogVersionCommandEndPoint(fog, true) logger.cliRes('ioFog version command has been set successfully') } @@ -462,10 +462,10 @@ async function _getHalUsbInfo (obj) { } } -async function _setFogPruneCommand (obj, user) { +async function _setFogPruneCommand (obj) { const fog = _createFogObject(obj) logger.cliReq('fog prune', { args: fog }) - await FogService.setFogPruneCommandEndPoint(fog, user, true) + await FogService.setFogPruneCommandEndPoint(fog, true) logger.cliRes('ioFog prune command has been set successfully') } diff --git a/src/cli/microservice.js b/src/cli/microservice.js index 79c56a2c8..7ccdf6173 100644 --- a/src/cli/microservice.js +++ b/src/cli/microservice.js @@ -66,15 +66,9 @@ const JSON_SCHEMA_ADD = AppHelper.stringifyCliJsonSchema( cdiDevices: [ 'string' ], - runAsUser: [ - 'string' - ], - platform: [ - 'string' - ], - runtime: [ - 'string' - ] + runAsUser: 'string', + platform: 'string', + runtime: 'string' } ) @@ -114,15 +108,9 @@ const JSON_SCHEMA_UPDATE = AppHelper.stringifyCliJsonSchema( cdiDevices: [ 'string' ], - runAsUser: [ - 'string' - ], - platform: [ - 'string' - ], - runtime: [ - 'string' - ] + runAsUser: 'string', + platform: 'string', + runtime: 'string' } ) @@ -314,7 +302,7 @@ class Microservice extends BaseCLIHandler { }, { name: 'cdiDevices', - alias: 'd', + alias: 'D', type: String, description: 'Map CDI devices to microservice container', multiple: true, @@ -322,7 +310,7 @@ class Microservice extends BaseCLIHandler { }, { name: 'user', - alias: 'u', + alias: 'U', type: String, description: 'Run Microservice as a user)', multiple: true, @@ -330,7 +318,7 @@ class Microservice extends BaseCLIHandler { }, { name: 'platform', - alias: 'o', + alias: 'L', type: String, description: 'Microservice image platform to be used', multiple: true, @@ -372,43 +360,43 @@ class Microservice extends BaseCLIHandler { switch (command) { case constants.CMD_ADD: - await _executeCase(microserviceCommand, constants.CMD_ADD, _createMicroservice, true) + await _executeCase(microserviceCommand, constants.CMD_ADD, _createMicroservice) break case constants.CMD_UPDATE: - await _executeCase(microserviceCommand, constants.CMD_UPDATE, _updateMicroservice, false) + await _executeCase(microserviceCommand, constants.CMD_UPDATE, _updateMicroservice) break case constants.CMD_REMOVE: - await _executeCase(microserviceCommand, constants.CMD_REMOVE, _removeMicroservice, false) + await _executeCase(microserviceCommand, constants.CMD_REMOVE, _removeMicroservice) break case constants.CMD_LIST: - await _executeCase(microserviceCommand, constants.CMD_LIST, _listMicroservices, false) + await _executeCase(microserviceCommand, constants.CMD_LIST, _listMicroservices) break case constants.CMD_INFO: - await _executeCase(microserviceCommand, constants.CMD_INFO, _getMicroservice, false) + await _executeCase(microserviceCommand, constants.CMD_INFO, _getMicroservice) break case constants.CMD_ROUTE_CREATE: - await _executeCase(microserviceCommand, constants.CMD_ROUTE_CREATE, _createRoute, false) + await _executeCase(microserviceCommand, constants.CMD_ROUTE_CREATE, _createRoute) break case constants.CMD_ROUTE_REMOVE: - await _executeCase(microserviceCommand, constants.CMD_ROUTE_REMOVE, _removeRoute, false) + await _executeCase(microserviceCommand, constants.CMD_ROUTE_REMOVE, _removeRoute) break case constants.CMD_PORT_MAPPING_CREATE: - await _executeCase(microserviceCommand, constants.CMD_PORT_MAPPING_CREATE, _createPortMapping, false) + await _executeCase(microserviceCommand, constants.CMD_PORT_MAPPING_CREATE, _createPortMapping) break case constants.CMD_PORT_MAPPING_REMOVE: - await _executeCase(microserviceCommand, constants.CMD_PORT_MAPPING_REMOVE, _removePortMapping, false) + await _executeCase(microserviceCommand, constants.CMD_PORT_MAPPING_REMOVE, _removePortMapping) break case constants.CMD_PORT_MAPPING_LIST: - await _executeCase(microserviceCommand, constants.CMD_PORT_MAPPING_LIST, _listPortMappings, false) + await _executeCase(microserviceCommand, constants.CMD_PORT_MAPPING_LIST, _listPortMappings) break case constants.CMD_VOLUME_MAPPING_CREATE: - await _executeCase(microserviceCommand, constants.CMD_VOLUME_MAPPING_CREATE, _createVolumeMapping, false) + await _executeCase(microserviceCommand, constants.CMD_VOLUME_MAPPING_CREATE, _createVolumeMapping) break case constants.CMD_VOLUME_MAPPING_REMOVE: - await _executeCase(microserviceCommand, constants.CMD_VOLUME_MAPPING_REMOVE, _removeVolumeMapping, false) + await _executeCase(microserviceCommand, constants.CMD_VOLUME_MAPPING_REMOVE, _removeVolumeMapping) break case constants.CMD_VOLUME_MAPPING_LIST: - await _executeCase(microserviceCommand, constants.CMD_VOLUME_MAPPING_LIST, _listVolumeMappings, false) + await _executeCase(microserviceCommand, constants.CMD_VOLUME_MAPPING_LIST, _listVolumeMappings) break case constants.CMD_HELP: default: @@ -485,7 +473,7 @@ class Microservice extends BaseCLIHandler { } } -async function _executeCase (commands, commandName, f, isUserRequired) { +async function _executeCase (commands, commandName, f) { try { const obj = commands[commandName] await f(obj) @@ -494,13 +482,13 @@ async function _executeCase (commands, commandName, f, isUserRequired) { } } -const _createRoute = async function (obj, user) { +const _createRoute = async function (obj) { try { const arr = obj.route.split(':') const sourceMicroserviceUuid = arr[0] const destMicroserviceUuid = arr[1] logger.cliReq('microservice route-create', { args: { source: sourceMicroserviceUuid, dest: destMicroserviceUuid } }) - await MicroserviceService.createRouteEndPoint(sourceMicroserviceUuid, destMicroserviceUuid, user, true) + await MicroserviceService.createRouteEndPoint(sourceMicroserviceUuid, destMicroserviceUuid, true) logger.cliRes(`Microservice route with source microservice ${sourceMicroserviceUuid} and dest microservice ${destMicroserviceUuid} has been created successfully.`) } catch (e) { @@ -508,13 +496,13 @@ const _createRoute = async function (obj, user) { } } -const _removeRoute = async function (obj, user) { +const _removeRoute = async function (obj) { try { const arr = obj.route.split(':') const sourceMicroserviceUuid = arr[0] const destMicroserviceUuid = arr[1] logger.cliReq('microservice route-remove', { args: { source: sourceMicroserviceUuid, dest: destMicroserviceUuid } }) - await MicroserviceService.deleteRouteEndPoint(sourceMicroserviceUuid, destMicroserviceUuid, user, true) + await MicroserviceService.deleteRouteEndPoint(sourceMicroserviceUuid, destMicroserviceUuid, true) logger.cliRes('Microservice route with source microservice ' + sourceMicroserviceUuid + ' and dest microservice ' + destMicroserviceUuid + 'has been removed successfully.') } catch (e) { @@ -522,83 +510,83 @@ const _removeRoute = async function (obj, user) { } } -const _createPortMapping = async function (obj, user) { +const _createPortMapping = async function (obj) { const mapping = parsePortMappingObject(obj.mapping, ErrorMessages.CLI.INVALID_PORT_MAPPING) logger.cliReq('microservice port-mapping-create', { args: mapping }) - await MicroserviceService.createPortMappingEndPoint(obj.microserviceUuid, mapping, user, true) + await MicroserviceService.createPortMappingEndPoint(obj.microserviceUuid, mapping, true) logger.cliRes('Port mapping has been created successfully.') } -const _createVolumeMapping = async function (obj, user) { +const _createVolumeMapping = async function (obj) { const mapping = parseVolumeMappingObject(obj.mapping, ErrorMessages.CLI.INVALID_VOLUME_MAPPING) logger.cliReq('microservice volume-mapping-create', { args: mapping }) - const result = await MicroserviceService.createVolumeMappingEndPoint(obj.microserviceUuid, mapping, user, true) + const result = await MicroserviceService.createVolumeMappingEndPoint(obj.microserviceUuid, mapping, true) logger.cliRes(JSON.stringify({ id: result.id }, null, 2)) } -const _removePortMapping = async function (obj, user) { +const _removePortMapping = async function (obj) { try { logger.cliReq('microservice port-mapping-remove', { args: obj }) - await MicroserviceService.deletePortMappingEndPoint(obj.microserviceUuid, obj.internalPort, user, true) + await MicroserviceService.deletePortMappingEndPoint(obj.microserviceUuid, obj.internalPort, true) logger.cliRes('Port mapping has been removed successfully.') } catch (e) { logger.error(e.message) } } -const _removeVolumeMapping = async function (obj, user) { +const _removeVolumeMapping = async function (obj) { try { logger.cliReq('microservice volume-mapping-remove', { args: obj }) - await MicroserviceService.deleteVolumeMappingEndPoint(obj.microserviceUuid, obj.mappingId, user, true) + await MicroserviceService.deleteVolumeMappingEndPoint(obj.microserviceUuid, obj.mappingId, true) logger.cliRes('Volume mapping has been deleted successfully.') } catch (e) { logger.error(e.message) } } -const _listPortMappings = async function (obj, user) { +const _listPortMappings = async function (obj) { logger.cliReq('microservice port-mapping-list', { args: { microserviceUuid: obj.microserviceUuid } }) - const result = await MicroserviceService.listMicroservicePortMappingsEndPoint(obj.microserviceUuid, user, true) + const result = await MicroserviceService.listMicroservicePortMappingsEndPoint(obj.microserviceUuid, true) logger.cliRes(JSON.stringify(result, null, 2)) } -const _listVolumeMappings = async function (obj, user) { +const _listVolumeMappings = async function (obj) { logger.cliReq('microservice volume-mapping-list', { args: { microserviceUuid: obj.microserviceUuid } }) - const result = await MicroserviceService.listVolumeMappingsEndPoint(obj.microserviceUuid, user, true) + const result = await MicroserviceService.listVolumeMappingsEndPoint(obj.microserviceUuid, true) logger.cliRes(JSON.stringify(result, null, 2)) } -const _removeMicroservice = async function (obj, user) { +const _removeMicroservice = async function (obj) { const microserviceData = { withCleanup: obj.cleanup } logger.cliReq('microservice remove', { args: { microserviceUuid: obj.microserviceUuid, withCleanup: obj.cleanup } }) - await MicroserviceService.deleteMicroserviceEndPoint(obj.microserviceUuid, microserviceData, user, true) + await MicroserviceService.deleteMicroserviceEndPoint(obj.microserviceUuid, microserviceData, true) logger.cliRes('Microservice has been removed successfully.') } const _listMicroservices = async function () { logger.cliReq('microservice list') - const result = await MicroserviceService.listMicroservicesEndPoint('', {}, true) + const result = await MicroserviceService.listMicroservicesEndPoint('', true) logger.cliRes(JSON.stringify(result, null, 2)) } -const _getMicroservice = async function (obj, user) { +const _getMicroservice = async function (obj) { logger.cliReq('microservice info', { args: { microserviceUuid: obj.microserviceUuid } }) - const result = await MicroserviceService.getMicroserviceEndPoint(obj.microserviceUuid, user, true) + const result = await MicroserviceService.getMicroserviceEndPoint(obj.microserviceUuid, true) logger.cliRes(JSON.stringify(result, null, 2)) } -const _createMicroservice = async function (obj, user) { +const _createMicroservice = async function (obj) { const microservice = obj.file ? JSON.parse(fs.readFileSync(obj.file, 'utf8')) : _createMicroserviceObject(obj) logger.cliReq('microservice add', { args: microservice }) - const result = await MicroserviceService.createMicroserviceEndPoint(microservice, user, true) + const result = await MicroserviceService.createMicroserviceEndPoint(microservice, true) const output = { uuid: result.uuid } @@ -609,13 +597,13 @@ const _createMicroservice = async function (obj, user) { logger.cliRes(JSON.stringify(output, null, 2)) } -const _updateMicroservice = async function (obj, user) { +const _updateMicroservice = async function (obj) { const microservice = obj.file ? JSON.parse(fs.readFileSync(obj.file, 'utf8')) : _updateMicroserviceObject(obj) logger.cliReq('microservice update', { args: microservice }) - await MicroserviceService.updateMicroserviceEndPoint(obj.microserviceUuid, microservice, user, true) + await MicroserviceService.updateMicroserviceEndPoint(obj.microserviceUuid, microservice, true) logger.cliRes('Microservice has been updated successfully.') } diff --git a/src/cli/registry.js b/src/cli/registry.js index 4afae2bf2..046bdbc12 100644 --- a/src/cli/registry.js +++ b/src/cli/registry.js @@ -111,16 +111,16 @@ class Registry extends BaseCLIHandler { switch (command) { case constants.CMD_ADD: - await _executeCase(registryCommand, constants.CMD_ADD, _createRegistry, true) + await _executeCase(registryCommand, constants.CMD_ADD, _createRegistry) break case constants.CMD_REMOVE: - await _executeCase(registryCommand, constants.CMD_REMOVE, _deleteRegistry, false) + await _executeCase(registryCommand, constants.CMD_REMOVE, _deleteRegistry) break case constants.CMD_UPDATE: - await _executeCase(registryCommand, constants.CMD_UPDATE, _updateRegistry, false) + await _executeCase(registryCommand, constants.CMD_UPDATE, _updateRegistry) break case constants.CMD_LIST: - await _executeCase(registryCommand, constants.CMD_LIST, _getRegistries, false) + await _executeCase(registryCommand, constants.CMD_LIST, _getRegistries) break case constants.CMD_HELP: default: @@ -132,28 +132,28 @@ class Registry extends BaseCLIHandler { } } -async function _createRegistry (obj, user) { +async function _createRegistry (obj) { const registry = _createRegistryObject(obj) const logRegistry = Object.assign({}, registry) delete logRegistry.password logger.cliReq('registry add', { args: logRegistry }) - const response = await RegistryService.createRegistry(registry, user) + const response = await RegistryService.createRegistry(registry) logger.cliRes(JSON.stringify({ id: response.id }, null, 2)) } -async function _getRegistries (obj, user) { +async function _getRegistries (obj) { logger.cliReq('registry list') - const result = await RegistryService.findRegistries(user, true) + const result = await RegistryService.findRegistries(true) logger.cliRes(JSON.stringify(result, null, 2)) } -async function _deleteRegistry (obj, user) { +async function _deleteRegistry (obj) { logger.cliReq('registry remove', { args: { id: obj.itemId } }) - await RegistryService.deleteRegistry({ id: obj.itemId }, user, true) + await RegistryService.deleteRegistry({ id: obj.itemId }, true) logger.cliRes('Registry has been removed successfully.') } @@ -168,7 +168,7 @@ async function _updateRegistry (obj) { logger.cliRes('Registry has been updated successfully.') } -async function _executeCase (commands, commandName, f, isUserRequired) { +async function _executeCase (commands, commandName, f) { try { const obj = commands[commandName] await f(obj) diff --git a/src/cli/tunnel.js b/src/cli/tunnel.js index 287b391ec..75efe9ff8 100644 --- a/src/cli/tunnel.js +++ b/src/cli/tunnel.js @@ -98,10 +98,10 @@ class Tunnel extends BaseCLIHandler { switch (command) { case constants.CMD_UPDATE: - await _executeCase(tunnelCommand, constants.CMD_UPDATE, _updateTunnel, false) + await _executeCase(tunnelCommand, constants.CMD_UPDATE, _updateTunnel) break case constants.CMD_LIST: - await _executeCase(tunnelCommand, constants.CMD_LIST, _tunnelList, false) + await _executeCase(tunnelCommand, constants.CMD_LIST, _tunnelList) break default: return this.help([]) @@ -112,7 +112,7 @@ class Tunnel extends BaseCLIHandler { } } -async function _updateTunnel (obj, user) { +async function _updateTunnel (obj) { const action = obj.action const tunnel = _createTunnelObject(obj) @@ -126,10 +126,10 @@ async function _updateTunnel (obj, user) { switch (action) { case 'open': - await TunnelService.openTunnel(tunnel, user, true) + await TunnelService.openTunnel(tunnel, true) break case 'close': - await TunnelService.closeTunnel({ iofogUuid: tunnel.iofogUuid }, user) + await TunnelService.closeTunnel({ iofogUuid: tunnel.iofogUuid }) break default: throw new Errors.ValidationError(ErrorMessages.INVALID_ACTION_PROPERTY) @@ -143,7 +143,7 @@ async function _tunnelList () { logger.cliRes(JSON.stringify(tunnels, null, 2)) } -async function _executeCase (commands, commandName, f, isUserRequired) { +async function _executeCase (commands, commandName, f) { try { const obj = commands[commandName] await f(obj) diff --git a/src/config/constants.js b/src/config/constants.js index 81d99eaa3..1167cf99f 100644 --- a/src/config/constants.js +++ b/src/config/constants.js @@ -18,8 +18,8 @@ module.exports = { 'Server:Port': 51121, 'Server:DevMode': false, - 'Service:LogsDirectory': process.env.PID_BASE ? `${process.env.PID_BASE}/iofog-controller` : '/var/log/iofog-controller', - 'Service:LogsFileSize': 10485760, + 'Service:LogsDirectory': '/var/log/iofog-controller', + 'Service:LogsFileSize': 104857600, 'Service:LogsFileCount': 10, 'Settings:DefaultJobIntervalSeconds': 120, diff --git a/src/config/default.json b/src/config/default.json index 92898aa60..ff9ea9676 100644 --- a/src/config/default.json +++ b/src/config/default.json @@ -10,8 +10,8 @@ "DevMode": false }, "Service": { - "LogsDirectory": "${PID_BASE}/iofog-controller", - "LogsFileSize": 10485760, + "LogsDirectory": "/var/log/iofog-controller", + "LogsFileSize": 104857600, "LogsFileCount": 10 }, "Settings": { diff --git a/src/config/development.json b/src/config/development.json index ea43d5a4a..0fed88803 100644 --- a/src/config/development.json +++ b/src/config/development.json @@ -10,8 +10,8 @@ "DevMode": true }, "Service": { - "LogsDirectory": "${PID_BASE}/iofog-controller", - "LogsFileSize": 10485760, + "LogsDirectory": "/var/log/iofog-controller", + "LogsFileSize": 104857600, "LogsFileCount": 10 }, "Settings": { diff --git a/src/config/production.json b/src/config/production.json index 8437d00d4..82bd77082 100644 --- a/src/config/production.json +++ b/src/config/production.json @@ -10,8 +10,8 @@ "DevMode": true }, "Service": { - "LogsDirectory": "${PID_BASE}/iofog-controller", - "LogsFileSize": 10485760, + "LogsDirectory": "/var/log/iofog-controller", + "LogsFileSize": 104857600, "LogsFileCount": 10 }, "Settings": { diff --git a/src/logger/index.js b/src/logger/index.js index 453f83ede..03bc2d2df 100644 --- a/src/logger/index.js +++ b/src/logger/index.js @@ -81,7 +81,7 @@ try { fileLogger = pino( { ...defaultFormat, - level: 'warn' + level: 'apiRes' }, logDestination) process.on('SIGHUP', () => logDestination.reopen()) From 3a4f2f74d1fbc91374ce2b29780fe0acf890de73 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Mon, 6 Jan 2025 01:15:43 +0300 Subject: [PATCH 142/146] catalog updated --- package-lock.json | 4 +- package.json | 2 +- src/data/providers/database-provider.js | 2 +- src/data/seeders/db_seeder_v1.0.1.sql | 91 ------------------------- src/data/seeders/db_seeder_v1.0.2.sql | 38 +++++++++++ src/services/catalog-service.js | 14 ++-- 6 files changed, 49 insertions(+), 102 deletions(-) delete mode 100644 src/data/seeders/db_seeder_v1.0.1.sql create mode 100644 src/data/seeders/db_seeder_v1.0.2.sql diff --git a/package-lock.json b/package-lock.json index d2ca71734..27e6ab6b6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@datasance/iofogcontroller", - "version": "3.4.6", + "version": "3.4.7", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@datasance/iofogcontroller", - "version": "3.4.6", + "version": "3.4.7", "hasInstallScript": true, "license": "EPL-2.0", "dependencies": { diff --git a/package.json b/package.json index df5caed82..9541d57b4 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@datasance/iofogcontroller", - "version": "3.4.6", + "version": "3.4.7", "description": "ioFog Controller project for Eclipse IoFog @ iofog.org \\nCopyright (c) 2023 Datasance Teknoloji A.S.", "main": "./src/main.js", "author": "Emirhan Durmus", diff --git a/src/data/providers/database-provider.js b/src/data/providers/database-provider.js index 23a53f11b..67fd47dfa 100644 --- a/src/data/providers/database-provider.js +++ b/src/data/providers/database-provider.js @@ -78,7 +78,7 @@ class DatabaseProvider { // Async function for the seeding process async runSeeder (dbName) { - const seederSqlPath = path.resolve(__dirname, '../seeders/db_seeder_v1.0.1.sql') + const seederSqlPath = path.resolve(__dirname, '../seeders/db_seeder_v1.0.2.sql') if (!fs.existsSync(seederSqlPath)) { console.error(`Seeder file not found: ${seederSqlPath}`) diff --git a/src/data/seeders/db_seeder_v1.0.1.sql b/src/data/seeders/db_seeder_v1.0.1.sql deleted file mode 100644 index 14f97371b..000000000 --- a/src/data/seeders/db_seeder_v1.0.1.sql +++ /dev/null @@ -1,91 +0,0 @@ - -INSERT INTO "Registries" (url, is_public, secure, certificate, requires_cert, user_name, password, user_email) -VALUES - ('registry.hub.docker.com', true, true, '', false, '', '', ''), - ('from_cache', true, true, '', false, '', '', ''); - - -INSERT INTO "CatalogItems" (name, description, category, publisher, disk_required, ram_required, picture, config_example, is_public, registry_id) -VALUES - ('Networking Tool', 'The built-in networking tool for Eclipse ioFog.', 'SYSTEM', 'Eclipse ioFog', 0, 0, 'none.png', NULL, false, 1), - ('RESTBlue', 'REST API for Bluetooth Low Energy layer.', 'SYSTEM', 'Eclipse ioFog', 0, 0, 'none.png', NULL, false, 1), - ('HAL', 'REST API for Hardware Abstraction layer.', 'SYSTEM', 'Eclipse ioFog', 0, 0, 'none.png', NULL, false, 1), - ('Diagnostics', '0', 'UTILITIES', 'Eclipse ioFog', 0, 0, 'images/build/580.png', NULL, true, 1), - ('Hello Web Demo', 'A simple web server to test Eclipse ioFog.', 'UTILITIES', 'Eclipse ioFog', 0, 0, 'images/build/4.png', NULL, true, 1), - ('Open Weather Map Data', 'A stream of data from the Open Weather Map API in JSON format', 'SENSORS', 'Eclipse ioFog', 0, 0, 'images/build/8.png', NULL, true, 1), - ('JSON REST API', 'A configurable REST API that gives JSON output', 'UTILITIES', 'Eclipse ioFog', 0, 0, 'images/build/49.png', NULL, true, 1), - ('Temperature Converter', 'A simple temperature format converter', 'UTILITIES', 'Eclipse ioFog', 0, 0, 'images/build/58.png', NULL, true, 1), - ('JSON Sub-Select', 'Performs sub-selection and transform operations on any JSON messages', 'UTILITIES', 'Eclipse ioFog', 0, 0, 'images/build/59.png', NULL, true, 1), - ('Humidity Sensor Simulator', 'Humidity Sensor Simulator for Eclipse ioFog', 'SIMULATOR', 'Eclipse ioFog', 0, 0, 'images/build/simulator.png', NULL, true, 1), - ('Seismic Sensor Simulator', 'Seismic Sensor Simulator for Eclipse ioFog', 'SIMULATOR', 'Eclipse ioFog', 0, 0, 'images/build/simulator.png', NULL, true, 1), - ('Temperature Sensor Simulator', 'Temperature Sensor Simulator for Eclipse ioFog', 'SIMULATOR', 'Eclipse ioFog', 0, 0, 'images/build/simulator.png', NULL, true, 1), - ('Common Logging', 'Container which gathers logs and provides REST API for adding and querying logs from containers', 'UTILITIES', 'Eclipse ioFog', 0, 0, 'none.png', '{"access_tokens": ["Some_Access_Token"], "cleanfrequency": "1h40m", "ttl": "24h"}', false, 1), - ('JSON Generator', 'Container generates ioMessages with contentdata as complex JSON object.', 'UTILITIES', 'Eclipse ioFog', 0, 0, 'none.png', '{}', true, 1), - ('Router', 'The built-in router for Datasance PoT.', 'SYSTEM', 'Eclipse ioFog', 0, 0, 'none.png', NULL, false, 1), - ('Proxy', 'The built-in proxy for Datasance PoT.', 'SYSTEM', 'Eclipse ioFog', 0, 0, 'none.png', NULL, false, 1); - - - -INSERT INTO "FogTypes" (id, name, image, description, network_catalog_item_id, hal_catalog_item_id, bluetooth_catalog_item_id) -VALUES - (0, 'Unspecified', 'iointegrator0.png', 'Unspecified device. Fog Type will be selected on provision', 1, 3, 2), - (1, 'Standard Linux (x86)', 'iointegrator1.png', 'A standard Linux server of at least moderate processing power and capacity. Compatible with common Linux types such as Ubuntu, Red Hat, and CentOS.', 1, 3, 2), - (2, 'ARM Linux', 'iointegrator2.png', 'A version of ioFog meant to run on Linux systems with ARM processors. Microservices for this ioFog type will be tailored to ARM systems.', 1, 3, 2); - -UPDATE "Fogs" -SET fog_type_id = 0 -WHERE fog_type_id IS NULL; - - -INSERT INTO "CatalogItemImages" (catalog_item_id, fog_type_id, container_image) -VALUES - (1, 1, 'iofog/core-networking'), - (1, 2, 'iofog/core-networking-arm'), - (2, 1, 'iofog/restblue'), - (2, 2, 'iofog/restblue-arm'), - (3, 1, 'ghcr.io/datasance/hal'), - (3, 2, 'ghcr.io/datasance/hal-arm'), - (4, 1, 'iofog/diagnostics'), - (4, 2, 'iofog/diagnostics-arm'), - (5, 1, 'iofog/hello-web'), - (5, 2, 'iofog/hello-web-arm'), - (6, 1, 'iofog/open-weather-map'), - (6, 2, 'iofog/open-weather-map-arm'), - (7, 1, 'iofog/json-rest-api'), - (7, 2, 'iofog/json-rest-api-arm'), - (8, 1, 'iofog/temperature-conversion'), - (8, 2, 'iofog/temperature-conversion-arm'), - (9, 1, 'iofog/json-subselect'), - (9, 2, 'iofog/json-subselect-arm'), - (10, 1, 'iofog/humidity-sensor-simulator'), - (10, 2, 'iofog/humidity-sensor-simulator-arm'), - (11, 1, 'iofog/seismic-sensor-simulator'), - (11, 2, 'iofog/seismic-sensor-simulator-arm'), - (12, 1, 'iofog/temperature-sensor-simulator'), - (12, 2, 'iofog/temperature-sensor-simulator-arm'), - (13, 1, 'iofog/common-logging'), - (13, 2, 'iofog/common-logging-arm'), - (14, 1, 'iofog/json-generatorg'), - (14, 2, 'iofog/json-generator-arm'), - (15, 1, 'ghcr.io/datasance/router:3.2.0'), - (15, 2, 'ghcr.io/datasance/router:3.2.0'), - (16, 1, 'ghcr.io/datasance/proxy:3.0.2'), - (16, 2, 'ghcr.io/datasance/proxy:3.0.2'); - - -UPDATE "CatalogItems" -SET config_example = '{"citycode":"5391997","apikey":"6141811a6136148a00133488eadff0fb","frequency":1000}' -WHERE name = 'Open Weather Map Data'; - -UPDATE "CatalogItems" -SET config_example = '{"buffersize":3,"contentdataencoding":"utf8","contextdataencoding":"utf8","outputfields":{"publisher":"source","contentdata":"temperature","timestamp":"time"}}' -WHERE name = 'JSON REST API'; - -UPDATE "CatalogItems" -SET config_example = '{}' -WHERE name = 'JSON Sub-Select'; - -UPDATE "CatalogItems" -SET is_public = true -WHERE name = 'Common Logging'; - diff --git a/src/data/seeders/db_seeder_v1.0.2.sql b/src/data/seeders/db_seeder_v1.0.2.sql new file mode 100644 index 000000000..9a2cdccda --- /dev/null +++ b/src/data/seeders/db_seeder_v1.0.2.sql @@ -0,0 +1,38 @@ +INSERT INTO `Registries` (url, is_public, secure, certificate, requires_cert, user_name, password, user_email) +VALUES + ('registry.hub.docker.com', true, true, '', false, '', '', ''), + ('from_cache', true, true, '', false, '', '', ''); + +INSERT INTO `CatalogItems` (name, description, category, publisher, disk_required, ram_required, picture, config_example, is_public, registry_id) +VALUES + ('NATs', 'NATs server microservice for Datasance PoT', 'UTILITIES', 'Datasance', 0, 0, 'none.png', NULL, true, 1), + ('RESTBlue', 'REST API for Bluetooth Low Energy layer.', 'SYSTEM', 'Datasance', 0, 0, 'none.png', NULL, true, 1), + ('HAL', 'REST API for Hardware Abstraction layer.', 'SYSTEM', 'Datasance', 0, 0, 'none.png', NULL, true, 1), + ('EdgeGuard', 'Security and monitoring component for edge devices running ioFog Agents.', 'UTILITIES', 'Datasance', 0, 0, 'none.png', NULL, true, 1), + ('Router', 'The built-in router for Datasance PoT.', 'SYSTEM', 'Datasance', 0, 0, 'none.png', NULL, false, 1), + ('Proxy', 'The built-in proxy for Datasance PoT.', 'SYSTEM', 'Datasance', 0, 0, 'none.png', NULL, false, 1); + +INSERT INTO `FogTypes` (id, name, image, description, network_catalog_item_id, hal_catalog_item_id, bluetooth_catalog_item_id) +VALUES + (0, 'Unspecified', 'iointegrator0.png', 'Unspecified device. Fog Type will be selected on provision', 1, 3, 2), + (1, 'Standard Linux (x86)', 'iointegrator1.png', 'A standard Linux server of at least moderate processing power and capacity. Compatible with common Linux types such as Ubuntu, Red Hat, and CentOS.', 1, 3, 2), + (2, 'ARM Linux', 'iointegrator2.png', 'A version of ioFog meant to run on Linux systems with ARM processors. Microservices for this ioFog type will be tailored to ARM systems.', 1, 3, 2); + +UPDATE `Fogs` +SET fog_type_id = 0 +WHERE fog_type_id IS NULL; + +INSERT INTO `CatalogItemImages` (catalog_item_id, fog_type_id, container_image) +VALUES + (1, 1, 'ghcr.io/datasance/nats:latest'), + (1, 2, 'ghcr.io/datasance/nats:latest'), + (2, 1, 'ghcr.io/datasance/restblue:latest'), + (2, 2, 'ghcr.io/datasance/restblue:latest'), + (3, 1, 'ghcr.io/datasance/hal:latest'), + (3, 2, 'ghcr.io/datasance/hal:latest'), + (4, 1, 'ghcr.io/datasance/edge-guard:latest'), + (4, 2, 'ghcr.io/datasance/edge-guard:latest'), + (5, 1, 'ghcr.io/datasance/router:latest'), + (5, 2, 'ghcr.io/datasance/router:latest'), + (6, 1, 'ghcr.io/datasance/proxy:latest'), + (6, 2, 'ghcr.io/datasance/proxy:latest'); diff --git a/src/services/catalog-service.js b/src/services/catalog-service.js index dee5aa6cb..8bd9e568f 100644 --- a/src/services/catalog-service.js +++ b/src/services/catalog-service.js @@ -136,9 +136,9 @@ const deleteCatalogItemEndPoint = async function (id, isCLI, transaction) { async function getNetworkCatalogItem (transaction) { return CatalogItemManager.findOne({ - name: 'Networking Tool', - category: 'SYSTEM', - publisher: 'Eclipse ioFog', + name: 'NATs', + category: 'UTILITIES', + publisher: 'Datasance', registry_id: 1 }, transaction) } @@ -147,7 +147,7 @@ async function getRouterCatalogItem (transaction) { return CatalogItemManager.findOne({ name: DBConstants.ROUTER_CATALOG_NAME, category: 'SYSTEM', - publisher: 'Eclipse ioFog', + publisher: 'Datasance', registry_id: 1 }, transaction) } @@ -156,7 +156,7 @@ async function getProxyCatalogItem (transaction) { return CatalogItemManager.findOne({ name: DBConstants.PROXY_CATALOG_NAME, category: 'SYSTEM', - publisher: 'Eclipse ioFog', + publisher: 'Datasance', registry_id: 1 }, transaction) } @@ -165,7 +165,7 @@ async function getBluetoothCatalogItem (transaction) { return CatalogItemManager.findOne({ name: 'RESTBlue', category: 'SYSTEM', - publisher: 'Eclipse ioFog', + publisher: 'Datasance', registry_id: 1 }, transaction) } @@ -174,7 +174,7 @@ async function getHalCatalogItem (transaction) { return CatalogItemManager.findOne({ name: 'HAL', category: 'SYSTEM', - publisher: 'Eclipse ioFog', + publisher: 'Dataance', registry_id: 1 }, transaction) } From 0b3b6e6dea4db1495a9db758463f3cede7979f28 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= <51929176+emirhandurmus@users.noreply.github.com> Date: Mon, 6 Jan 2025 02:14:50 +0300 Subject: [PATCH 143/146] Update README.md --- README.md | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index ad333414f..da3e8d7c6 100644 --- a/README.md +++ b/README.md @@ -2,32 +2,30 @@ ### Status -![](https://img.shields.io/github/release/iofog/controller.svg?style=flat) +![](https://img.shields.io/github/release/datasance/controller.svg?style=flat) -![](https://img.shields.io/github/repo-size/iofog/controller.svg?style=flat) -![](https://img.shields.io/github/last-commit/iofog/controller.svg?style=flat) -![](https://img.shields.io/github/contributors/iofog/controller.svg?style=flat) -![](https://img.shields.io/github/issues/iofog/controller.svg?style=flat) +![](https://img.shields.io/github/repo-size/datasance/controller.svg?style=flat) +![](https://img.shields.io/github/last-commit/datasance/controller.svg?style=flat) +![](https://img.shields.io/github/contributors/datasance/controller.svg?style=flat) +![](https://img.shields.io/github/issues/datasance/controller.svg?style=flat) ![Supports amd64 Architecture][amd64-shield] ![Supports aarch64 Architecture][arm64-shield] -![Supports armhf Architecture][arm-shield] [arm64-shield]: https://img.shields.io/badge/aarch64-yes-green.svg [amd64-shield]: https://img.shields.io/badge/amd64-yes-green.svg -[arm-shield]: https://img.shields.io/badge/armhf-yes-green.svg [![JavaScript Style Guide](https://img.shields.io/badge/code_style-standard-brightgreen.svg)](https://standardjs.com) ## Install -The entire ioFog platform is best deployed through the unified CLI: `iofogctl`. +The entire Datasance PoT platform is best deployed through the unified CLI: `potctl`. -Go to [iofog.org](https://iofog.org/docs/) to learn how to deploy the ioFog Control Plane and Agents. +Go to [Datasance Docs](https://docs.datasance.com) to learn how to deploy the ioFog Control Plane and Agents. ## Usage ``` iofog-controller ``` -For full installation and usage, visit [iofog.org](https://iofog.org/docs/). +For full installation and usage, visit [Datasance Docs](https://docs.datasance.com). From 21efbe254175b3902596c0d01cc9a2bac55e4723 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Sat, 11 Jan 2025 23:27:17 +0300 Subject: [PATCH 144/146] hal and restble catalog edited --- package-lock.json | 4 ++-- package.json | 2 +- src/services/catalog-service.js | 2 +- src/services/iofog-service.js | 15 +++++++++++++-- 4 files changed, 17 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 27e6ab6b6..3b0751b8f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@datasance/iofogcontroller", - "version": "3.4.7", + "version": "3.4.8", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@datasance/iofogcontroller", - "version": "3.4.7", + "version": "3.4.8", "hasInstallScript": true, "license": "EPL-2.0", "dependencies": { diff --git a/package.json b/package.json index 9541d57b4..fb77e0271 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@datasance/iofogcontroller", - "version": "3.4.7", + "version": "3.4.8", "description": "ioFog Controller project for Eclipse IoFog @ iofog.org \\nCopyright (c) 2023 Datasance Teknoloji A.S.", "main": "./src/main.js", "author": "Emirhan Durmus", diff --git a/src/services/catalog-service.js b/src/services/catalog-service.js index 8bd9e568f..5c0b7883c 100644 --- a/src/services/catalog-service.js +++ b/src/services/catalog-service.js @@ -174,7 +174,7 @@ async function getHalCatalogItem (transaction) { return CatalogItemManager.findOne({ name: 'HAL', category: 'SYSTEM', - publisher: 'Dataance', + publisher: 'Datasance', registry_id: 1 }, transaction) } diff --git a/src/services/iofog-service.js b/src/services/iofog-service.js index 1b2353d5a..c2505bf0f 100644 --- a/src/services/iofog-service.js +++ b/src/services/iofog-service.js @@ -30,6 +30,7 @@ const MicroserviceService = require('./microservices-service') const EdgeResourceService = require('./edge-resource-service') const RouterManager = require('../data/managers/router-manager') const MicroserviceExtraHostManager = require('../data/managers/microservice-extra-host-manager') +const MicroserviceStatusManager = require('../data/managers/microservice-status-manager') const RouterConnectionManager = require('../data/managers/router-connection-manager') const RouterService = require('./router-service') const Constants = require('../helpers/constants') @@ -607,7 +608,7 @@ async function _createHalMicroserviceForFog (fogData, oldFog, transaction) { const halMicroserviceData = { uuid: AppHelper.generateRandomString(32), - name: `Hal for Fog ${fogData.uuid}`, + name: `hal-${fogData.uuid.toLowerCase()}`, config: '{}', catalogItemId: halItem.id, iofogUuid: fogData.uuid, @@ -616,7 +617,10 @@ async function _createHalMicroserviceForFog (fogData, oldFog, transaction) { configLastUpdated: Date.now() } + const application = await ApplicationManager.findOne({ name: `system-${fogData.uuid.toLowerCase()}` }, transaction) + halMicroserviceData.applicationId = application.id await MicroserviceManager.create(halMicroserviceData, transaction) + await MicroserviceStatusManager.create({ microserviceUuid: halMicroserviceData.uuid }, transaction) } async function _deleteHalMicroserviceByFog (fogData, transaction) { @@ -626,6 +630,8 @@ async function _deleteHalMicroserviceByFog (fogData, transaction) { catalogItemId: halItem.id } + const application = await ApplicationManager.findOne({ name: `system-${fogData.uuid.toLowerCase()}` }, transaction) + deleteHalMicroserviceData.applicationId = application.id await MicroserviceManager.delete(deleteHalMicroserviceData, transaction) } @@ -634,7 +640,7 @@ async function _createBluetoothMicroserviceForFog (fogData, oldFog, transaction) const bluetoothMicroserviceData = { uuid: AppHelper.generateRandomString(32), - name: `Bluetooth for Fog ${fogData.uuid}`, + name: `ble-${fogData.uuid.toLowerCase()}`, config: '{}', catalogItemId: bluetoothItem.id, iofogUuid: fogData.uuid, @@ -643,7 +649,10 @@ async function _createBluetoothMicroserviceForFog (fogData, oldFog, transaction) configLastUpdated: Date.now() } + const application = await ApplicationManager.findOne({ name: `system-${fogData.uuid.toLowerCase()}` }, transaction) + bluetoothMicroserviceData.applicationId = application.id await MicroserviceManager.create(bluetoothMicroserviceData, transaction) + await MicroserviceStatusManager.create({ microserviceUuid: bluetoothMicroserviceData.uuid }, transaction) } async function _deleteBluetoothMicroserviceByFog (fogData, transaction) { @@ -652,6 +661,8 @@ async function _deleteBluetoothMicroserviceByFog (fogData, transaction) { iofogUuid: fogData.uuid, catalogItemId: bluetoothItem.id } + const application = await ApplicationManager.findOne({ name: `system-${fogData.uuid.toLowerCase()}` }, transaction) + deleteBluetoothMicroserviceData.applicationId = application.id await MicroserviceManager.delete(deleteBluetoothMicroserviceData, transaction) } From 376dd1b08a28004c585e3eb88780ec1344a4b768 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Mon, 3 Feb 2025 16:32:25 +0300 Subject: [PATCH 145/146] agent router ssl configuration options added, public extrahosts fixed, microservice dynamic routing based on pub and sub tags added, agent networkinterface config added, new controller rest api endpoint for listing microservices based on pub and sub tags added --- Dockerfile | 2 + docs/swagger.yaml | 260 ++++++++++++++++++-- package-lock.json | 12 +- package.json | 4 +- src/controllers/microservices-controller.js | 12 + src/data/managers/microservice-manager.js | 55 ++++- src/data/migrations/db_migration_v1.0.2.sql | 30 ++- src/data/models/fog.js | 2 +- src/data/models/microservice.js | 3 + src/data/models/microservicePubTags.js | 9 + src/data/models/microserviceSubTags.js | 9 + src/data/models/router.js | 28 +++ src/data/models/tags.js | 2 + src/helpers/error-messages.js | 6 +- src/public/datasance-logo-white.png | Bin 31664 -> 61421 bytes src/routes/microservices.js | 62 +++++ src/schemas/iofog.js | 23 ++ src/schemas/microservice.js | 25 +- src/services/iofog-service.js | 11 +- src/services/microservice-ports/default.js | 21 +- src/services/microservices-service.js | 194 ++++++++++++++- src/services/router-service.js | 59 ++++- src/services/yaml-parser-service.js | 3 + 23 files changed, 761 insertions(+), 71 deletions(-) create mode 100644 src/data/models/microservicePubTags.js create mode 100644 src/data/models/microserviceSubTags.js diff --git a/Dockerfile b/Dockerfile index e55366136..4ac88738f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -38,6 +38,8 @@ RUN microdnf install -y python3 && \ pip3 install --no-cache --upgrade pip setuptools && \ microdnf install shadow-utils && \ microdnf clean all +RUN microdnf reinstall -y tzdata && microdnf clean all +RUN microdnf -y remove microdnf RUN useradd --uid 10000 --create-home runner RUN mkdir -p /var/log/iofog-controller && \ chown runner:runner /var/log/iofog-controller && \ diff --git a/docs/swagger.yaml b/docs/swagger.yaml index 180cf9c1b..a39a8195e 100755 --- a/docs/swagger.yaml +++ b/docs/swagger.yaml @@ -1,6 +1,6 @@ openapi : "3.0.0" info: - version: 1.0.0 + version: 3.4.9 title: Datasance PoT Controller paths: /status: @@ -1683,6 +1683,68 @@ paths: type: string security: - userToken: [] + /microservices/pub/{tag}: + get: + tags: + - Microservices + summary: Get list of microservices with filtered pub tag + operationId: listMicroserviceInfoByPubTag + parameters: + - in: path + name: tag + description: Microservice Pub Tags + required: true + schema: + type: string + security: + - userToken: [] + responses: + "200": + description: Success + headers: + X-Timestamp: + description: FogController server timestamp + schema: + type: number + content: + application/json: + schema: + $ref: "#/components/schemas/GetMicroservicesResponse" + "401": + description: Not Authorized + "500": + description: Internal Server Error + /microservices/sub/{tag}: + get: + tags: + - Microservices + summary: Get list of microservices with filtered sub tag + operationId: listMicroserviceInfoBySubTag + parameters: + - in: path + name: tag + description: Microservice Pub Tags + required: true + schema: + type: string + security: + - userToken: [] + responses: + "200": + description: Success + headers: + X-Timestamp: + description: FogController server timestamp + schema: + type: number + content: + application/json: + schema: + $ref: "#/components/schemas/GetMicroservicesResponse" + "401": + description: Not Authorized + "500": + description: Internal Server Error /microservices/system/{uuid}: patch: tags: @@ -3294,6 +3356,14 @@ components: type: array items: $ref: "#/components/schemas/PortMappingsRequest" + pubTags: + type: array + items: + type: string + subTags: + type: array + items: + type: string routes: type: array items: @@ -3427,6 +3497,14 @@ components: type: array items: $ref: "#/components/schemas/PortMappingsRequest" + pubTags: + type: array + items: + type: string + subTags: + type: array + items: + type: string routes: type: array items: @@ -3741,6 +3819,20 @@ components: type: number edgeRouterPort: type: number + requireSsl: + type: string + sslProfile: + type: string + saslMechanisms: + type: string + authenticatePeer: + type: string + caCert: + type: string + tlsCert: + type: string + tlsKey: + type: string host: type: string tags: @@ -4140,14 +4232,37 @@ components: protocol: type: string enum: - - tcp - - udp - proxy: - type: boolean + - tcp + - udp + public: + type: object + properties: + enabled: + type: boolean + schemes: + type: array + items: + type: string + protocol: + type: string + enum: + - tcp + - http + router: + type: object + properties: + host: + type: string + port: + type: number + required: [] + required: + - schemes + - protocol required: - - internal - - external - - protocol + - internal + - external + - protocol PortMappingsRequest: type: object properties: @@ -4158,20 +4273,77 @@ components: protocol: type: string enum: - - tcp - - udp - proxy: - type: boolean + - tcp + - udp + public: + type: object + properties: + enabled: + type: boolean + schemes: + type: array + items: + type: string + protocol: + type: string + enum: + - tcp + - http + router: + type: object + properties: + host: + type: string + port: + type: number + required: [] + required: + - schemes + - protocol required: - - internal - - external + - internal + - external PortMappingsPublicResponse: type: object properties: - publicIp: - type: string - publicPort: + internal: type: number + external: + type: number + protocol: + type: string + enum: + - tcp + - udp + public: + type: object + properties: + enabled: + type: boolean + schemes: + type: array + items: + type: string + protocol: + type: string + enum: + - tcp + - http + router: + type: object + properties: + host: + type: string + port: + type: number + required: [] + required: + - schemes + - protocol + required: + - internal + - external + - protocol PortMappingsListResponse: type: object properties: @@ -4186,12 +4358,40 @@ components: type: number external: type: number - publicMode: - type: boolean - publicIp: + protocol: type: string - publicPort: - type: number + enum: + - tcp + - udp + public: + type: object + properties: + enabled: + type: boolean + schemes: + type: array + items: + type: string + protocol: + type: string + enum: + - tcp + - http + router: + type: object + properties: + host: + type: string + port: + type: number + required: [] + required: + - schemes + - protocol + required: + - internal + - external + - protocol PortMappingAgentRequest: type: object properties: @@ -4494,6 +4694,14 @@ components: type: array items: type: string + pubTags: + type: array + items: + type: string + subTags: + type: array + items: + type: string UpdateMicroserviceRequest: type: object required: @@ -4539,6 +4747,14 @@ components: type: array items: type: string + pubTags: + type: array + items: + type: string + subTags: + type: array + items: + type: string IOFogNodeTunnelStatusInfoResponse: type: object properties: diff --git a/package-lock.json b/package-lock.json index 3b0751b8f..0c5f9d408 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,16 +1,16 @@ { "name": "@datasance/iofogcontroller", - "version": "3.4.8", + "version": "3.4.9", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@datasance/iofogcontroller", - "version": "3.4.8", + "version": "3.4.9", "hasInstallScript": true, "license": "EPL-2.0", "dependencies": { - "@datasance/ecn-viewer": "0.3.13", + "@datasance/ecn-viewer": "0.4.1", "axios": "1.7.4", "body-parser": "^1.20.3", "child_process": "1.0.2", @@ -556,9 +556,9 @@ } }, "node_modules/@datasance/ecn-viewer": { - "version": "0.3.13", - "resolved": "https://registry.npmjs.org/@datasance/ecn-viewer/-/ecn-viewer-0.3.13.tgz", - "integrity": "sha512-nR6bDO24A8LFccR9LrQrsy5OquSOBBqn5UTcztsgVfNoq/fDjVFo0zPZzV7G9/rXiQT6/IbZjm+LTO37Vy3ysg==" + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@datasance/ecn-viewer/-/ecn-viewer-0.4.1.tgz", + "integrity": "sha512-RTcAH8/5dJNdOriw1D8WragMscqus2kpHgiPb9Bh/QgmBwdkv6/ZElyFIIKAYctcKmWLggrKpuX4sik+iZLo2g==" }, "node_modules/@eslint-community/eslint-utils": { "version": "4.4.0", diff --git a/package.json b/package.json index fb77e0271..3f3804162 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@datasance/iofogcontroller", - "version": "3.4.8", + "version": "3.4.9", "description": "ioFog Controller project for Eclipse IoFog @ iofog.org \\nCopyright (c) 2023 Datasance Teknoloji A.S.", "main": "./src/main.js", "author": "Emirhan Durmus", @@ -55,7 +55,7 @@ "iofog-controller": "src/main.js" }, "dependencies": { - "@datasance/ecn-viewer": "0.3.13", + "@datasance/ecn-viewer": "0.4.1", "axios": "1.7.4", "body-parser": "^1.20.3", "child_process": "1.0.2", diff --git a/src/controllers/microservices-controller.js b/src/controllers/microservices-controller.js index 98315be9a..6b35b3e1a 100644 --- a/src/controllers/microservices-controller.js +++ b/src/controllers/microservices-controller.js @@ -32,6 +32,16 @@ const getMicroserviceEndPoint = async function (req) { return MicroservicesService.getMicroserviceEndPoint(microserviceUuid, false) } +const listMicroserviceByPubTagEndPoint = async function (req) { + const pubTag = req.params.tag + return MicroservicesService.listMicroserviceByPubTagEndPoint(pubTag) +} + +const listMicroserviceBySubTagEndPoint = async function (req) { + const subTag = req.params.tag + return MicroservicesService.listMicroserviceBySubTagEndPoint(subTag) +} + const updateMicroserviceEndPoint = async function (req) { const microservice = req.body const microserviceUuid = req.params.uuid @@ -155,6 +165,8 @@ const listAllPublicPortsEndPoint = async function (req) { module.exports = { createMicroserviceOnFogEndPoint: (createMicroserviceOnFogEndPoint), getMicroserviceEndPoint: (getMicroserviceEndPoint), + listMicroserviceByPubTagEndPoint: (listMicroserviceByPubTagEndPoint), + listMicroserviceBySubTagEndPoint: (listMicroserviceBySubTagEndPoint), updateMicroserviceEndPoint: (updateMicroserviceEndPoint), updateSystemMicroserviceEndPoint: (updateSystemMicroserviceEndPoint), deleteMicroserviceEndPoint: (deleteMicroserviceEndPoint), diff --git a/src/data/managers/microservice-manager.js b/src/data/managers/microservice-manager.js index 559ad59bf..00320b391 100644 --- a/src/data/managers/microservice-manager.js +++ b/src/data/managers/microservice-manager.js @@ -24,6 +24,7 @@ const StraceDiagnostics = models.StraceDiagnostics const CatalogItem = models.CatalogItem const CatalogItemImage = models.CatalogItemImage const Fog = models.Fog +const Tags = models.Tags const Application = models.Application const Routing = models.Routing const Registry = models.Registry @@ -213,6 +214,18 @@ class MicroserviceManager extends BaseManager { as: 'application', required: false, attributes: ['isActivated'] + }, + { + model: Tags, + as: 'pubTags', + attributes: ['value'], + through: { attributes: [] } + }, + { + model: Tags, + as: 'subTags', + attributes: ['value'], + through: { attributes: [] } } ], where: { @@ -374,12 +387,25 @@ class MicroserviceManager extends BaseManager { async findOneExcludeFields (where, transaction) { return Microservice.findOne({ + include: [ + { + model: Tags, + as: 'pubTags', + attributes: ['value'], + through: { attributes: [] } + }, + { + model: Tags, + as: 'subTags', + attributes: ['value'], + through: { attributes: [] } + } + ], where: where, attributes: { exclude: microserviceExcludedFields - } }, { - transaction: transaction - }) + } + }, { transaction: transaction }) } async findAllExcludeFields (where, transaction) { @@ -389,18 +415,27 @@ class MicroserviceManager extends BaseManager { model: Application, as: 'application', required: true, - where: { - isSystem: false - } + where: { isSystem: false } + }, + { + model: Tags, + as: 'pubTags', + attributes: ['value'], + through: { attributes: [] } + }, + { + model: Tags, + as: 'subTags', + attributes: ['value'], + through: { attributes: [] } } ], where: where, - order: [ [ 'name', 'ASC' ] ], + order: [['name', 'ASC']], attributes: { exclude: microserviceExcludedFields - } }, { - transaction: transaction - }) + } + }, { transaction: transaction }) } findOneWithCategory (where, transaction) { diff --git a/src/data/migrations/db_migration_v1.0.2.sql b/src/data/migrations/db_migration_v1.0.2.sql index 0779e09cc..769defbee 100644 --- a/src/data/migrations/db_migration_v1.0.2.sql +++ b/src/data/migrations/db_migration_v1.0.2.sql @@ -93,7 +93,7 @@ CREATE TABLE IF NOT EXISTS Fogs ( catalog_item_message_counts TEXT, message_speed FLOAT DEFAULT 0.000, last_command_time BIGINT, - network_interface VARCHAR(32) DEFAULT 'eth0', + network_interface VARCHAR(32) DEFAULT 'dynamic', docker_url VARCHAR(255) DEFAULT 'unix:///var/run/docker.sock', disk_limit FLOAT DEFAULT 50, disk_directory VARCHAR(255) DEFAULT '/var/lib/iofog/', @@ -565,3 +565,31 @@ CREATE TABLE IF NOT EXISTS MicroserviceCdiDevices ( CREATE INDEX idx_microservice_cdiDevices_microserviceUuid ON MicroserviceCdiDevices (microservice_uuid); +ALTER TABLE Routers ADD COLUMN require_ssl TEXT; +ALTER TABLE Routers ADD COLUMN ssl_profile TEXT; +ALTER TABLE Routers ADD COLUMN sasl_mechanisms TEXT; +ALTER TABLE Routers ADD COLUMN authenticate_peer TEXT; +ALTER TABLE Routers ADD COLUMN ca_cert TEXT; +ALTER TABLE Routers ADD COLUMN tls_cert TEXT; +ALTER TABLE Routers ADD COLUMN tls_key TEXT; + +CREATE TABLE IF NOT EXISTS MicroservicePubTags ( + id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, + microservice_uuid VARCHAR(32), + tag_id INT, + FOREIGN KEY (microservice_uuid) REFERENCES Microservices (uuid) ON DELETE CASCADE, + FOREIGN KEY (tag_id) REFERENCES Tags (id) ON DELETE CASCADE +); + +CREATE TABLE IF NOT EXISTS MicroserviceSubTags ( + id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, + microservice_uuid VARCHAR(32), + tag_id INT, + FOREIGN KEY (microservice_uuid) REFERENCES Microservices (uuid) ON DELETE CASCADE, + FOREIGN KEY (tag_id) REFERENCES Tags (id) ON DELETE CASCADE +); + +CREATE INDEX idx_microservicepubtags_microservice_uuid ON MicroservicePubTags (microservice_uuid); +CREATE INDEX idx_microservicesubtags_microservice_uuid ON MicroservicesubTags (microservice_uuid); +CREATE INDEX idx_microservicepubtags_tag_id ON MicroservicePubTags (tag_id); +CREATE INDEX idx_microservicesubtags_tag_id ON MicroservicesubTags (tag_id); diff --git a/src/data/models/fog.js b/src/data/models/fog.js index 07e02c87e..df198da4d 100644 --- a/src/data/models/fog.js +++ b/src/data/models/fog.js @@ -185,7 +185,7 @@ module.exports = (sequelize, DataTypes) => { }, networkInterface: { type: DataTypes.TEXT, - defaultValue: 'eth0', + defaultValue: 'dynamic', field: 'network_interface' }, dockerUrl: { diff --git a/src/data/models/microservice.js b/src/data/models/microservice.js index a3c080cf7..1856805d0 100644 --- a/src/data/models/microservice.js +++ b/src/data/models/microservice.js @@ -164,6 +164,9 @@ module.exports = (sequelize, DataTypes) => { foreignKey: 'microservice_uuid', as: 'extraHosts' }) + + Microservice.belongsToMany(models.Tags, { as: 'pubTags', through: 'MicroservicePubTags' }) + Microservice.belongsToMany(models.Tags, { as: 'subTags', through: 'MicroserviceSubTags' }) } return Microservice diff --git a/src/data/models/microservicePubTags.js b/src/data/models/microservicePubTags.js new file mode 100644 index 000000000..1cd759355 --- /dev/null +++ b/src/data/models/microservicePubTags.js @@ -0,0 +1,9 @@ +'use strict' +module.exports = (sequelize, DataTypes) => { + const MicroservicePubTags = sequelize.define('MicroservicePubTags', {}, { + tableName: 'MicroservicePubTags', + timestamps: false, + underscored: true + }) + return MicroservicePubTags +} diff --git a/src/data/models/microserviceSubTags.js b/src/data/models/microserviceSubTags.js new file mode 100644 index 000000000..7de19bd48 --- /dev/null +++ b/src/data/models/microserviceSubTags.js @@ -0,0 +1,9 @@ +'use strict' +module.exports = (sequelize, DataTypes) => { + const MicroserviceSubTags = sequelize.define('MicroserviceSubTags', {}, { + tableName: 'MicroserviceSubTags', + timestamps: false, + underscored: true + }) + return MicroserviceSubTags +} diff --git a/src/data/models/router.js b/src/data/models/router.js index a033f1f57..97d75e940 100644 --- a/src/data/models/router.js +++ b/src/data/models/router.js @@ -35,6 +35,34 @@ module.exports = (sequelize, DataTypes) => { type: DataTypes.BOOLEAN, field: 'is_default', defaultValue: false + }, + requireSsl: { + type: DataTypes.TEXT, + field: 'require_ssl' + }, + sslProfile: { + type: DataTypes.TEXT, + field: 'ssl_profile' + }, + saslMechanisms: { + type: DataTypes.TEXT, + field: 'sasl_mechanisms' + }, + authenticatePeer: { + type: DataTypes.TEXT, + field: 'authenticate_peer' + }, + caCert: { + type: DataTypes.TEXT, + field: 'ca_cert' + }, + tlsCert: { + type: DataTypes.TEXT, + field: 'tls_cert' + }, + tlsKey: { + type: DataTypes.TEXT, + field: 'tls_key' } }, { tableName: 'Routers', diff --git a/src/data/models/tags.js b/src/data/models/tags.js index 585703a18..356cf4624 100644 --- a/src/data/models/tags.js +++ b/src/data/models/tags.js @@ -22,6 +22,8 @@ module.exports = (sequelize, DataTypes) => { Tags.associate = function (models) { Tags.belongsToMany(models.Fog, { through: 'IofogTags', as: 'iofogs' }) Tags.belongsToMany(models.EdgeResource, { through: 'EdgeResourceOrchestrationTags', as: 'edgeResources' }) + Tags.belongsToMany(models.Microservice, { through: 'MicroservicePubTags', as: 'pubMicroservices' }) + Tags.belongsToMany(models.Microservice, { through: 'MicroserviceSubTags', as: 'subMicroservices' }) } return Tags } diff --git a/src/helpers/error-messages.js b/src/helpers/error-messages.js index cc4818f3f..3eac8674f 100644 --- a/src/helpers/error-messages.js +++ b/src/helpers/error-messages.js @@ -110,5 +110,9 @@ module.exports = { INVALID_APPLICATION_TEMPLATE_NAME: 'Could not find Application Template {}', APPLICATION_TEMPLATE_INVALID: 'Application Tempalte {} is invalid', WRONG_PUBLIC_LINK_PROTOCOL: 'Public port {} has a scheme of {} and cannot use protocol {}', - NO_AVAILABLE_PUBLIC_PORT: 'No public port available in range for {}' + NO_AVAILABLE_PUBLIC_PORT: 'No public port available in range for {}', + INVALID_MICROSERVICE_PUB_TAG: 'Invalid microservice Pub Tag \'{}\'', + INVALID_MICROSERVICE_SUB_TAG: 'Invalid microservice Sub Tag \'{}\'', + NOTFOUND_MICROSERVICE_PUB_TAG: 'No microservice found for Pub Tag \'{}\'', + NOTFOUND_MICROSERVICE_SUB_TAG: 'No microservice found for Sub Tag \'{}\'' } diff --git a/src/public/datasance-logo-white.png b/src/public/datasance-logo-white.png index 15e92a20d79abacdfd8b534a6725b5cf63334f02..759c70e2ad2bcd352a2eb0ec65865b9b166d3a41 100644 GIT binary patch literal 61421 zcmYIw2UJsc`!Hgut%$z93J5aPGPF#^0FmV=BC=epgeeF@OppW!k!gK}DoYb&hM;0W zfg~6pA%vxraRrhpBSIKrA`t=vg6#EO{|)`_Ii4QV-|xB4efIRhC1*Q@ovJ%!WMmZV zFZ^~zM&_p(85vpBPd|dcoV#?F*h585t$*?|-)0U(o_j$ZW%0u{$e6VXKXU zfB7N!jMEtznb#TeYyNUFGUDIue>-z6dfVjCj+$GpII|h7Ovn-0D?jX|{;~5T%Wr#( z`(*2X15ynDWk~B^H&4<}7PY>7p!52CfYWa+={`LlD-OBs|10H+;&}a(xN#7}SG>zx z=*-QXTeaeBdSW|I5#xw}i0eUt;ms-fPShNN{x*PW-e zEX6QXM^OE@Ec>F>yf>cV<=YrW7Yv;Z!5^VEP%JTOwNo%DNEHZypMeJe0N?=Vl+do| zvOD-q-=C&I6-E7Dyt&9i|3bleAX3D&J%t>6wepQr>kdIhU9T{%OD(uS@Dg(2< zSn+Z=x-)vses$&M$x{sJ%|z{IiOI~K$RS9XIIl987KUyXL;+odGDT4la(&tO0Vf$+_uMrDynrl;ib#$GRKxR_yr3C3D^H?=)}I*P!MYfeZKOX z1fp2vATPagAXQc)=v}mYc|oaB57Q3K6J!CVE&Apq;K8hO1S4Ht@HAx$ErsWa$=cjV zZ&5L3Q?LM#@rr<3i>0{@)EXK~+>?I3s8CUQw1T~V#@LlVRe>T6Li&xE4m3DZN!eEP z7v`FTET|A500xo;%FF*f?#}Oj*w-8B&1#KuS#a6ysA0Te($NM0$%H3>GGX8OqW3qp zj;=kF)%cMcIaI8&;G~ghsn7JJ;m-8h_F{!N7s-9WPeV8x>A8x|qo4fmMS3%kNo{T;A;N_}ZziWRQ%z$Z z+XDC_$W5Qtf+&q#OJk-By88Fgg4|fc<=c|n_cyCbrKkMP9Q))?uBGrG&3A$At$d1H zH|DHldBS2&?UZU-yywgp1)!kzsb=2dIP$$e~m=GIsQq>zKJ!dT3 zKQog6iV(Ni2RH+4I#8|}vz#4=@pb)5aOs&&6FJMOw*>|!mO8kzG+&zQo3)$X(G8F4 zAh^YwCu?iAFiSuB$+Hy%)p9DsQ6t}r<+oAbwY~t`gsP@BY~f|RWB-i42`Kg1qdves z!gf6JVK3W(t(wtz!P(x~iG9J@#o2-F$ks^kJ;-qyE*PXGg?mUkCs>EPe_;mAQ{OLS zcccT(d@sz}y1S7Z>nQXj4kLO0{$_;#wtw(wN*yToPy*4g)pR)+Y-`|4{u<;e;R{{} zY6LrgJ!M88K=lkhsTwJ|lMH19_asU_+IVoqT>*?Eb#ytHo+PBj(o92m2hade{P1L$ zkEzSF4SN>qV#HZ`L*x}IZ&BrddbHBVni_r*V1h4k_x<`>t?EdDua3>D24f*8eT467 zP#Nk6<>-}(gHHahS)#V5{O%Vh{WHm}y%LLF6%+%c-mn6?7bT_diO>Kj!=z^zN`dF> z-5ITPjT^bxIWsAkuKp;eN>%!@L}tvEH!v)j!cMPUjC=w5=?shF#nZESr~XG5zPS zO_egBoar<-<4bf_x!3C`WQTX*y~-1@f393F=<^l|K<0RMJ;F^jRa&D{Ev}6`6GkBf zcdE^86Q@*Tkdjg2=G=E5@%<^ju!96O9hM!R1?2Jdp&JF6Ro8PkT7^#Og?*+TUe$HG zOKvQ^HE+a=sERX#x=i@|{Q$kt_@Qv3=9e0utXV6H)jxn_ifutiC#P$==`we2bYb8B z1ptfq3|C*{@atXAzWjYR*jr#Zc&NFakbJH2J}(N==%#ISaTtP7FO&lCu-q9vc7Yo? zHGk*2WKd8HNvNG*{Izmg!W6JTo0yu1*%=)VX9I33DEK-KcZ-JY62{K03pDYY*V?!L z1ElH2(NDSiyt!89&Az&f(q;4+$pgVvet7TAlM|tLL3Lpfi`;HUWeehg0>TucA=YY{ zCwNq6t-NLBc3s%U*>w;*7}BDaK&+A_IfYtRkzY4ljw>l>#`BfPH-nvaM)wUZqLF|EUFC?m(KW$6Ab^1AJ%Q(Y_bUY7F!%*J zOeW~+6sq~2oBKQkkhV;rJ_)pL7dK8YYx3jBpFYb2CIkaS?!^9?T}RsDy98K*QPkY! zPK>{#G_Y;ULyY-yBjH+{i_YUgBUrr6MM`032i<31_pwhZUR>o*SLUmVUWr+Y49i$MRP)5M&FUF3uXiz z%)-jhZ4q(ryS716o6$bI%T)*ggZj+|1Pg65rzj^1$t#DLsg@gSupCO-)P_8o%fWrl)bU2_?EL>K70CMUA}JU!fR-#h4ID zy}+n1s&Vcq{L^kroHb9&#c{)o`4qk?TIm&pObJ8%reO9PPeoL~bLcvy;9i1*+kUAG z8MA0LHWMpHlDljBdv-#GbIY&VJ&hgl0fK84K&x#5X{(hp_yk~>NVFrvKizry@;>}( zLx7}kXi}+h{RHj`dVY(rK@Lja!U(bT`A%i{Y;8EXZB{Ll$V1lkRSQBP$+dENAefIQ zac+!-bPGgx{KkFA8RljIL8xsr6?9dk6w$o}D9eW%X8Y|O%G4sMd~)S1k<6XTfh9k# zMrK!A4-;-(!4$*mWJzv+MTVFWh1h-Z-k43eR>s$r-*Y{?*0Bm%8T>| zM=X}Z&ESU9D@fY(lhjbFFTo23N80}Od2;JA<^}wzEXi^spw>SHTRXeHZtrwPBbXpy z12Ke@+I~qIrBHs1azWuAU@~KFN)ycsF2C>ran9cv0^TqM#;f%YgdPXr~ia1r|e-H}7u`b3(Zu zJhnKiJQS!-x&_BPhZAK_

~@!-8ts`NnKD-{w1)oZ8ee&Qw=N zFE&Q6{f?hg+Xk)<8Txbe;%|~wCN5=SL{GW*!+_bcBfG<)mAa+f9jUUUv`o20MHTC; zx~i3QRfjLX3qA>~0TVDBdJU-vA8qLhJvC5`OTMm3DIBaR4&Vw-LAFaYmg6N=gLMw` z;?a)K@mtw-FIUcztfb*y;tktvob&BxSJzEqp-lG^rGL&139ul*Gk`zvV&~o{mnh0O z6M0;LoEV&vm+sV>VP+zUhg#xJqpU5LFB*_7bPGEN(T#tt?fQom6^BP}!IXUUk4Vh|#>*DrQ?{>pFXyg+;9D=D6!mNZ& zOB3?jU!`o#0>x)OQ*Pe-M65N=*}$7yAWu-%F#{d7_| zX%)Z9*Gee#y5>;iy~=TR3u1e|J90(}tN8TYzwWf3y(8)jcSI+{PKhZEw}py82*f*B zOUV7Ee?vL*iy$?R5@Iuarz1v`DlkIN72E55W!7Z1#shnEV>Gq`M16fZOVObeA@_n$ zW`3A6{nekdLxM8^->&F=Mreo{yxX8*$?dp88#iLTYV5aRgk5m7mt;l|Q+*ON^oxPJ z@A&7ZNd0Hx{i4KRgI0J@y$Q~q=IS(p18lTbGtL*C!*_%}5WMEFZ$~(B%u+&b%0b$C zBZ!2xnz0Kp9BoaYYdhY(FM@T6JbnXcOc!cNzf$QBSyI`f`;vN-SZ&;GgES)@hDzG` z1ZzW5u3U0ogc>2hnx0cb6#51(U2|$Pn~M(aReLvQ4Z-=$^FrgEWt|uO_^rCrX?064 zQskKa7^Yib)g8cr39X@a=QI$LKFuNa7_1y*cnc3lrFxle{}yY>C| z>k4=N4-~B-TmRa7zx3b?!O+l$PUWfNJg;h}t*GdE``INnV56-Z+0FPB7fQ43s{wx&@XHv7wS+(404Xbx%hy=NJR@z#efL!z)HhjL$BwZ8 zJF_o zY$7m%tImMnHtM4PVC+Ra^a`x;y$(f#cKgbx~~snh?kkOaQiEp3cBG6ZU*rPG}7B zN)Hz9%5X%Pu{GvJe5lp3Kl(Sx;|XfFL+CFN>kGHToQszSe6rR&B?Fe5|E9Y^XSiV@ zb4jRL!wVb5@K*TG2DPZW7Bl*J6ftdX0<})BK6MJ`hMHA`^&f9bA@JHA0inU`bH#9Ue$N_j$9^Yc>yI^D7`CaK;@~8IJt=a zszgdjP$4jVC1>LEXoD*7hp5}>#DEr0bHDMv6MH6!{;KM)Hz+^ip#qi)DnGWmm_G_M z3cU;lh0>Qb)p@?W&(r@cEO!(F6osA|&Q*JKf6-)Tj`pI1DHUMFj1{OO4&^#Hvu}?G zwnNmBlvtOo_r6df&%GVdaiNSy$4PcP#QN!2RTT%U3W6X{XNi*kO{DBKDg$Byxsg;A z<6L&xk;XpIw8As&e^xA9fowyj+xukYXE+pJ)?Xr0 zL_V4Nuwc`F?k46kJiD0srkiJy63PJ!6I`@XkIhxg^}z>$yuh;AY_@|l=eXCEj!W#e zmn#Mt6w)nNoY|k17;82~4$r?u#W}nJD&!1qXhV-0lAo|q zqLbidbTOV(_gac;P9D?n6YzY2V6t}3X_$lGG~3f+0o9EOGC#@;MiT_E`FuIc;IWwW z&S($GUA6Al)lKMfa?R&qU^~G=i>1Tsp{Bsu?-tjz`0j*7E#ExG^hMmp)O>xMq$03U z@MEv?vFfu~4rK{LF71oe0c#!(>9a(b7x~hw`lRj&Et6T1HkE5Pw_cB^-vO`ZTWB5f1p`Igw1Kw!4^P|5IOPbgTa|? zE)8M4Sxj9G@Aj11)D?N1wuov$4(d*PWAV`p>>S0YBDc!4jdD~9y{1n8sIMLvgyWER zW5s#lxO9$#;e@G=-VeB_E~Z+uHSm7O*gAi*Vs{1;#2+RfEwReiEgVmpB?OMZjG@I` zY&Rw)k7hYG4A>6|)U$8-N+DOklaj#EOfH6!)Rr9G>R;?B#6gxEo0!x64Z0 zfU;U()gImU9b@c8wkQdUVu|xiyc_@Q;j)0}ZkR^Q4Krf3;>_ArGZniCQO%8ymhG=o z@%vc7YB%gGZVeu_PK1O|x1xftE9B=oQ%eFmgfCHJ*f(&U*bF=wkuF%aZpp#X( zKEHO4YWBn_W?;CpnB2_lK3QPavgjcFT<@0x{H?1FB)7+?)-z)IK4~CsojcXWd*6b5l zX$#|dd3!jHI_q9x1(WU$!gRjl6^mq-mvWC6=kBX$MF&TIE*UHxN6JU?xG9$yO8{(Ewm4Y2eYeV0U&Z&7>;- z;hSCl5`fw)ck9O{l#aD+54|((Rw*t9*bsFGTHK{!d2;kk7>_lT*~Y6>x-dMF99(l1 zeGN%8#GR9T8x-Dv+>_K<=Z%8ZaR@X&)m`bt@f;xuljYl`k%&Yr+rj>ya@9H6Ut0s*GYM3@v_IkiCTy^_tiN3 za(84s>@-;E5eRCR1F04WC7Yti|>06Ka{v zppsOxviKO9DXP#bM=d)Rx_n;3kKJ5`1h-;%bLiC7z*s-0^D*LecMX0Nu8zNza4DEx zm9zBx38j8_7*3d4lT-^vJ#RPEjCG$ZTuizJIf=~fiEvt-%?oMVt=xCw5%iO?inRs% zd8m4_HEHm*4u1fEpTLgj3M=)btTk;fM?RZ>E+9dmcDj3V`JW5Mgb=Hep2^i4PTVR@ zD)e=+=*9KJffS2hn%4=MTtSt=p3Udd%OCwrt~PZ?4o#U@HtLiZ1lmC52j+Z;Gevo% zfY61w#^RF5;@rT)e?1A2vsCW+rUutf?ZlM?M_+NG9}-h}Zm=!w_%Zi^EJ=Tjj`SEV zxaC6#ca{w52X2OSHBx)N#a0LT^8PzT%S)#k*)A4a2Jy~{4now)m%g@Nf0in2P}U+0 zjFol`i95U+5L=2o9Q5aQ7v3oZCy(fUW7}$1^#SWgL{JMJlB_|KOcgDw>?V&#+Zhyu zcsCYupjMS0=6vW(3k0f%SKeanT#2Z5WJ*W$C@_e=^WfQZ;RtAp7GoDj)&r&bjpj^-DKHpo%y-cvdfb?b@`sck8$>p}SCwt%GZ#; zLCHu8IYFx!N*Pczdow5+NCZw7WMY^8`A^Jq1ze+fQ-WqJKJhO2~$ ziY^RW^v1lbALDc5FW5LNz&rR9(EOndG9pE@7}YBl!JJa<%(jtZOwdsHMe@&}{9Dtx`*nyHXU^IsUy9JD>39wBgBcXsZF?7uIOi>cF$_X^dWN zL$u#dv6|l zQVR8Sztjb0OT#X|g{rf61&u6V`MOz&dZ6iV>5(i!{ZMO&ty*$~{NLj*L{w^9RNQP+ ztNAfz?nraaLrGZOI}SAA9m_uO4WesJ zCh>zJt*|N6PIs1eG*xh%+COh=u8ciMQ8cuwJ@6a*OPZNv-XmXkO9(4}k!P}W+M)<^ z-(aoiHI^>NsewBW-{bv6Q!63&malxN$fDk|T*SC}D#1X=|0YNSHmXUr+P{ACd5d_dIXuzPG&W%c3ruZTYXh>A9Vn%a>I`QLF~|tT+a$8{5@8L*b0-}LrdZLfqNI7 zR7fzwEJg6WAxL{(AUYUSWB1_{;DuQG(oHDTD(u9aD$aUL%s`$PG-KM*0%$kTC^TB~ zMSy|oX7~K~b>(^f_Rs^#UvO$32M=)qx_4piVSBIef+i+_`@k{aF%XOy3GVrCJBFv- zoS==Rjz$1i(T-uqOfPbkBh-nOFLn4%xPq+6yW0N_A$bzs(-UK2UcWz)Oe!3`475O0Hi-!TN~r{WVmSVpShCWx%IgWNJ1oyBJnH9W z)u>~^odk>PRu9v%nBU}8hCK-3A_1^v#=hO~j}r<~Q76(b(2atw_~geCgt|L)ZR`!z z8c{+mn~T;tmW(*xuGefOn0siff@AZuf@#Bh?YKe6va^}WRHfg)@>@&uSX}`%(RtdZ zlUQeny=a~1Mc1GTS6NU40hm*Hy;9@YV7tT5(4LQZrTY^Er+{rh5kWVtjiqA|xgPbu z?r4pvS)*wkzRi}bjss_>)Cmq?v=w*!sw6KJ@2(?^JXq|lmw>+oR$H$&Vg9UbaOkVD ztQxyUT7}d$9PGuie6gjqbt!nNF2|8h{<$Ndj-H>oVBHw7WixP|Plqg*(Pk=Tcydba zV{SmQU6zkEa8@wtZ4;o$NG;@Wv})LaV1D2w+(M{BV@fEyNR z_OtI+RJXzTODTc>H1LYI(nd7MEced;>9>Yuk0#)Gy~Y|uwG+VSABvwxK49K);-DaQ z=(rK%W;48vi)q<>WdPW=(PI``A!JXqk@7}y5S3LS&StCEy!2$=`=pO9|80tWWb@Jm zr7W8(`!al)rjVo3k< zvEL{ni@>Gm^*izXm&iA#yP1t6z^b4OQZXoe!xZoNGIlOBn!}0P#A@)jy6E4F%W?5$ zD!STS%FkfbdQ0PR>~r{PlUcJG;`Lt)LCRg;D_F6xLPUJ2D%U@2IvVcWuOpB z{!|@Szz0jUwdsV}&228+NQ>a5g1l5A*rk*YJ;eV#-|au&eh<8Mkg`76j5qpXjeYs$ z3l?!o<637yoiA&bFL}J?<;s!9+}?TKrd5NENUYOyUzoa!`Vv^0V@Lf@YCKMuMeHDz zXj$~lSm($IT(}iJ@Hk=eGxi%~>Bw}52=-$ueA`fMG2aJQSMU(`jcV^sz&x;cE~%WYqn*1tA)BcgX` zCwO<910xWaw+Y2;Hzo*-_AQz>`vmo+K^|j7ClgCBtv`&bd&96(!(I!$Zz}AaA(4c2 zTcK6ftHa7TUerZi-^}pi`+Uvb)2#&oK355ICAif5-p?$Q6F2f9Zhk_rmPe#&CHLLp zY4=wa2Q&t9^AbB-Y}hlysy=!@uB}VC=2843*ptJK;4UkOdsG|BI2giED0%=I=V{O| z75cpfzAF%{%MwSC5S3u9#{9OL@*ud#BeFU#-R(v6y*wg){*xS}PB>QiuZ#6aN}6bz z13P=F!#2VG8|A7Ol#&_c;}N);#hRBPkG)~vi}V2=2?c6y&7rmyoP)G;+#j4?{K9sv ziE?U>c8(8MpmuQ*yrhEM@%MSGdIPh^>3xcZ|rc|31{ zfBfnDo8RVkWt5ISjE0@zYL3Nk){iy2LA>GI!209MJ_=%B*|EPt3NtJB@Tr-#%e1Qs zVu&ZP@nuq^D37$G@A|6!y!xf$(YLew<86}o4cjDLtsUG}sP*za!ANL4(YG7&z<{#B zsgdU-^vu9Yp4&+6Q{s)FqMgzIH)hct8a;Ax*sGak>%>8ZzFt2GeO1h7fxVlGUaUkDD{aIjk^Askx|Meink`K+Gwm|GK>wme`iUxHkGviQy}^pu?C z4ws_n5*1Bu2YSvMQf`H5#CEMG{LA3GY5iwK8KKc+Uh829w5|7BdFhu?Ti_T(Wh#EN z%I|pHvlaGPLPV%!G>?+e8#u-iMtC#+_U@Dlh#L=VS?ZTg=Z`*B9WK-T7+11<*@=S< zRcRN^&+js_H!Sn7UX2Nw-u(Ex+#|$tiOR++9Z@xo$VWVsLkb7I(k?=^t=@ z0P^MzlCDmEU&X-lxkhea9KBe0uR6Bw*mAO}v)(Z74cO-{{JrG^J%7c`>AarmT0Tsb z%=+6CQciE-i=`o7(}{{1rN*rFT2 z9A=J#mq+lcjwA}TsQMnpxWX#Y>g!(4-gBY6?bbE*%7~u@;YREk2BfZJ%p|yM%NE=| z_~C8|5`pegb%S@thd8y#hf0PCa#L3kxxn$wfTSILN!SC>BTT#L66E%XkTBSGQtlVnJ!kpf7g# zYEwD$Xy>j!)Hv}f*1pa0=TEMtS}03Z=ut~QH?leZx3;86XjZUxc2qNrUVzQ2tegIx zr|4%D)J?N=jV`8NG_1uV_(VawK-=4Q$pj;*Gj$m5R&cp2?Xp$;-N)SSqI8MDo~aMC zRS<1}5jMa22ehM6`^<-d3i4luVlhGai-+N_K|VgKT_#mW{y??`IIvo&q+5`Np;|dG z7Kw`Ko}Ds9(a*z@pVfyRDA5s@H#EPS@Pfsal$!b&Z@^YDy!gqw@BuDIW5l|0#n3L8 zr6F{nbVMPmon5Ey)JD;6%u_=|9`oR&R9!KGmxZ$bazKMLx*byP3N%0$=A;D&zinif zZJb|D)HNnm|H_=bqNpOsfsL~75zKU0JxL+=_j4RJaDB>s!rq#XW2(SHukv8kt!%H# zmEZGCQC1r(ZhUe5imESy0YChgDgSj`+*gD6AXmMG5V=F-nbE;;wr0W(uz?|)%>yROGB!|h%DN< z_L@&)pY+WW^!O=+5qneLHq9_wunOk$cy;;uYd0u|9OI<-+|xS{Lk>)y{rKS_ny#6E zWX;ypUI^}h&?wZs>oKvB@4J&i#qZ@?nda00y|2(XqDdP+gg=|j=QVoq#qh&_%i#*W zy!7kp*x3TrWyWA^q(X^eKAi)$>;BRHrn9h;-IkuI$QC7CSKkZAGwC@A_w*Mw%7cDO z$JizXYwyr8BkK*rL^Xnaz1XQ`XVT`MEfb%K>SZGf!QAjD)lD2{g5iUZgOa05yzSuo zJI?5Bgs3OL_PX#iCUtuolby@souSCJ`KZ-Ec)USU=MJ;ZnXU=>g`^LZG<8fGajV5F zALK0`t&ul+4^n=v@;@=uyvxur`b_NlgvFbaWKsL;4&-cfow~DV_`}1R0n-4MHn*(d zsIV271|lc8!k7 z#8?Cat9J&t(+Z+t&p*~9UJF`nPk|F`W4+1-Q`XLUeIe=*uyAL+&;2j_#;Z{7LY-i( z5^%0fSIfpJo)~Kbg}ImaKf-<4P_c$JuS81{>sr0H{MMstrJ2CJbmaZ2U;FEly6GML zzob-T@86frtxz1Ed<=H|&djSvxMAOi$XSpt1h;dQvo7+2ULoK2(#H^T*5nvY=`43( zs_@uMZhE-CpM{v!dmFZ+D*p?_aw|1ZY7Y|4SS^;1rdU{)MhAO%>W@5M0STR7RxjeV zKx14RTYA|5#6ekI37%huGH2%vWWm7^ysL9Qo`{4?c9d9s`FiEmjBn#bZDlxnGNadrh38Qmy`Z0Qui zN#0{8`4Xzdd{HfdtT<21TAbvRihD3O=kHs!P4vy>xAJbrl_wc|3MsVT<2>vmb-41^ zk?PUIxuf9_q640HGle1a4tQ&dJE3v^R(Jo_YKKAjhEtigiJyE+HcbW4Tc%Qr7<<*TNbDxw{+;moZZ^!3)u_BkG zGrEa#w_Vlu4qO*KYO&}lQL2yDP3cAQ$}C)cUt)OSbR$3LKs*ty?V^z|wbZ$f{785Z zba2Y^#2n@<4R#tzk#FPORPb!VkOhXl%0Egay0gCQ*H5@>3gYhS)3l@Ykx5o~3#~<$ zY1fC5iDmRv^F1DXgiTkhWIh!fRUGQc0Ovwls?Dv5b>&I(e_v^m+CTk2$_CDsMJCro zDhO)=skjk|mhgscQt~z5ipnq=f)=uE7ypBxXM!=fatRz^w3{1#ri&3?RzZ0+hse1w zIJj|XRltw!?Z3@M2?oFXt`rRA*&UUCuegJmwFV_?bO9(R6Vot^z+~AR3ZYEgId^}8 zF|;yKr+6;NIu4hl+;f}lw7|xhZ-rxHgHIG^ETPT$2#*~>&*m%g{GrnZC(2(ocnF&& zQm`n{Ps>z3Q=DGYTD~sn7w7@6bA64-Dp||(iK_7(Wg}hTjYU#H`9Dx=?n!NZx7p57 zU1vp1NIqa=xdz}v%C71R(lhMUwmRz{|?Ud&ank1xiJZsO^#s1B_@NF zNf>l`7*}c%b1?bdZ@3iqW+m}S&2nwi>5ZAc1peT}J@TO~CLZmK?ps>$T%pQwsPzgSN=)TO#>d56t9pc8Mwe-e&UUZQT7|%wgdl3J9y|n3U`9;|}3M zDb?MGhiEdn^Y&>4eud@ccEnkUSAtP9Jk*@LG+r|ye~+%m<8;y7uJzF?RxU_p1v6d< z5$vYvA6^OMzo&vBJ*rU;>6O2?QVjjNhxF<6I z75zV(m9xy;JICBkKV?bj)Uo2*-HzfghbBL>{Wxz^`qI>8a*s>^bHxiEs#9Y z_EMu2zvk+6DES`Sj39Pxlo>wtvdVT9LyJyu2FFK*AHw%?412McRNq#j3(2e9JVfq6 zY~LM>0xx$W63Q6)UXrXra$)Hgtm$JTX^c)DWkpo17(Pju%pa^+Ia28Ta2|3IWy99P zq}x21tp>6sFt01k=H)9#-aOk$rN3;baoD!!A1sX-hQ3W09+(tevT88BqV$+|eeEh< z_gZ7uZqZmBxM~xB4NT7$U}{$E+3sKe_Eg3h1`8tN{ZR4rB<61T;kR&fAyf387mADV zL>H;DF9Ru|557bqZ4c>YU;-thkWFi9oZbv8ex8@)%~-+Qz6U{x1~I)bY!SF3a*Z8q z(J1ENHt!&b^p@e$i4;`Qhq2TQX<@#JSR1>IGZpGF0$dMsKX@pm1s-f}yj(9B{*%Xk z5&}O!9-b&woTwsGV6WMw6Y?*e)x$hb&PgmeY|+Nc!L{EMuHOD|ioJ%Jo~s&MOh%}@ zd(B8cnc&gPG{&803-3et1M``qJpNiCk>Hj?I|sU4vUvrvBeFR>N_}(aQ9--Xn_<4C ziI5uU8si{YRyZcx$?+ntE;)bacK(*#3)pmTBFOd9{j7QxY|GSrL?MHaqR4@e`xfW0 zKfrz*Dcm(e^&dicGvF#=g!xW^%LKz>yMY<` zKf=_Bl*j?Zhn+4BnXyK~xjNX7XsfCt52GgYxyG>U=j)h_c#rKJ81H`)NnHAlJ{d_J zi8$H?A-V!XlC^kPha>w24^^i4t;*Sm{P(O*uX2upry7LHb{u|Er^9VME|P4A7Gm3H zo~ZUIaOY>Gb|WO;cXxMZv(*I5y0sv%;Zk$NaoE%=9BR{N?IL@Yu0qKk zJi?4YcTA+jQrtSaZGlySyWrIF8`n5~4IjRm`ms1^ZpLzYQ##7tqz0?(?gC3iBTU-o z0{vn7+h;qpU7V(~Z(ZqVV*+~tMyc3%uGe(T%lpz=5|KbnXLN_!ZiDx>vixZ$7I7Ja ziw~+lZqSnqhC}Y}Jr^~X8^cUum&RMLvgl8)<@4z6w<}*L>I}bL!Ogq%hJB%bg)z$8 zv@^PJOV?W6wR~%zBgq57=Nd}7?qOezPQuqCrQwP(wom^P6Q>}u%ieq&eK2nwFLWDu zef_<~v=^~zDrrDA0bUM{7W<&DC{-98>-$wWUc^Lg7@KV}lg9gAVc=!`fADtd`oQA+-@H_E=j|**-ir+U zphV7S|2*H)@?*zx41!XK5RP>qa!^j>KR!d49NjMs9I_l(E##TimnIpc$DCt#FMi+9 z=~*2&FTCa3f#|87tvW*DUGr`FKxtD1imN>aVyYDhLy)%E3$5I-*w`CsjW)$ekO*by zKc*~kJQNPoF2Od}wkc}EtW(unX-1?Xf%$PksLO$5n@7-wi%RjGa8eHzZ z9;{>)cBvVAt|nZPDHsPJq2a{Gv6eXBdGDzBAdB*Gpn4^1SEG9~E(I$Pt~MU6_MPwj`_4c7bb zL0WV7ROr(4LsFVPfO|J#_^NKANfT;|g|gO&i?s=xQTa6f%JF>?SQWBEgOCq~@-Nf4 z4|i3c;=t$#o!&bxs}17GcOJ_c$!6@74HlFJ}bax7J^jWcDps zMM~3a<%XX;FL%I2(eLRRD>o&8fJJY~^Tr_!MYYqfd&2^vzz|G~E))tHM!dkT8Vkwz z_F1*B18I9QUs78>+$!edrZ!LTk$9H&;>86QI^~O~R+=vwCud={agG6IWkw&DIrRiZ&&D2M+JfsPZv?$e&OXeDCUseY1tLSuk*pf5qDh$7&86P(jlSjDeeSFJJY8;>yYzjSK!U!+$BMtZx`tiWa8r00V0(UybJSyBs;fL8IYr7Dbq0Qh zr1m|T=!NW%3?t=Ks9?tco7d>}&;QR>!&jj!S=UCM2(5sY>KeKWeJkgKR@%?Q%WuI` zzD&M|yo5ue=LApnuQ%F2Ssvy%?+o_LTUB;-D|~NPty7ti$AOEYz;CtJM+H{szM7m8 zqy?9rd*{kLM)17r0k8LS97!sv9j8U6v={~6n}B2Fi^HTkGw3_hUpwBFsyd6@XaQi& zkxoZ`G=vb9g;pk_w$AhK5V5iIa{?ZV!isF&p_}2jKwjorcMQZ_f0@43F}eEw)Xd=1 zFZ|yKLYRtk`jJ3<#q`P0Yfw292OKW1FWwvbNaeC<2XF zSIJdyw@6bJn}?qEiwMCwF}-WKi_fq9bHPs~R6RP1y!>7%caOt# z{$!r5(Cp~&wgb*%J^Kh;!I%?%hjt+)e!4)};@@xu9Qm>6owTsR1<-uai~5EMACx?0 z2n6WDbHSs*Iu~@dU<7Xxx-hjh4UH*QoVn#*S!STrXw5__;R_$DQEu<>yE8z{k39x1 z2H0kjEjUmJE8^cc-C6HbZVO6IS9ddW&^Vt04Ca1uZ3z`%O3c-?dseJ9L5m z&c;Jfrc6!zRX1W)I4KiuR6R2z8ge)m?Ky)%(%O6t(ewA6++WVIG=DQd9kt8vyz zTo}zoDQ44(`9j9yr`&EM=i$8k)oV6f&RhD{O0NlWK+aNEXR+(^bO8RUeB%8~=myc0 zD;#Uy$NNPZmU-O|QJRT0X4)!6>@kqZy5G6HBe>?q{7|&?b8BR~kA8xhEE5FpYo}%O zZE{x=NTWXkm8B!+_x^Jv5#m^zSfVJlJe%r3HvnHA;I3cDR?7xsNC*yv&P|+?h8YaD|k2$A2qn0Pv zziBArv17S2+9m1VsQH9x#5PWuyi6a*W=k^v@2B>@EkEZvHFAZcUgA=ujtcY%1)=n}ug`O|&e|@2fYK?$EGKt+@c} z-@48%a2fzM%hpAp>EIgpeO|V9{(c$IC~S1$8-cESWt)yUnHggyQ{`JQm@- zg-~fLc`MlG`PUFb#zX0ZP<(Zr?#6Ker{hBk{S&svg)v{<S7dwsl9tR$Ur%v&(?&<4Tx%TR9K~!10_k3lo`&(0SCeqdN2ar?vo~KmgVQC}+RT{*heT15oY<&> ztr>mHB%@X<@bI@CDjP?cRmI>aEUU~&fXg|nk=Soy2rgfv;twx#0!Q*19Pq+an}6Nq zfFcTmmwV3$jy`8lP*2#T#3KyuTgsRm!pt6p9yM#s0+ltupdg_$xVLd@K0@}R;N8X% z`J#j?AUhn!v%o3USlyIXjy<@ShXSJ^%J_&fKD9H72-8 z`e1j=F8Vx)wMc2FI)l5DI=^D39-0cr#ux;yF01zgnAhQ@!r*bp-LnZ?VKgjj_(NET zFr9pC32uHWJsHU#)a$3o9QZ3bzkF3o+^(5HiD%cNx{}Ov6CQDjE4QTYZaI0oi{57_ zqOPFNM%%k935mDUF1(oDes-=K@A-AtHskCQ$Zg6o#1cSuqQhj+0!j{Y(HmGU2)rS=r+=aG7!ybHY5S?79V{uX>X2t< zvwJzY8TRzj{%+Dp++4qj9?x7#3CF+gC^G^N&(Eo#vSW*axDN%ddTrXMH=eEB2Oi3L z6c4E7thvt5eSQpdZC!#La5$W75xp;?cgE#(zc+(OKj#cw%16OGm+&wwS=-_ z%S(ujxwGrQGiZ`nsY$kj$Z$!zhhNoQ)h)`~LvR_>XHNZO|ra3BB~1eF65wQo&Pyrz#kZEdGf6usjgP#%;Y;a|JnBC<#S z);~I;&({Q-six%RN(V`M_<$SSE^uu`@C&rnXn#}Y4UN#2EUe44`?_f&GQS)d+EDEr zoIqGZjP+gJqP)t%x~u1uuDft%K7g%3V}1vIM{n${vPfGH)@s^ZFtm7|NjzkEFnTR0 zeet>MflFg~Wv;$2FsIQaf~LS^nA#3qBlga}0@DX&ER2v5M5%kR zMufJXGZ~A}0e}yLf6qeGU=P9bHbTw#j1r8Dt z*n|I%vF{3NDr(vV!~#K4N)Qngq)4x!7sW;gDWO-95(q5<2^|#_K{`k;0s^78(2F1- z(v%i@Cy^Q;(%ad7zkKIEcgG7JFZRw_Yu2opSu^jv+tcr#&v6O*qTNzq1a=YpvDv|A z*DShlFZ$Ea{Hw)UHf&x~{nKvM7^2%+fry{zfyZ{@qLQhXg=-kd!zp#rU3OY*tm5#% zqE<5hP>Rr)IHPgi6H+{&3qnG>UvEe;PR9prP+R+${4Lv?hdQrX&$vQm?&0UW8I8kl zM!;8#fbJ}N6agb3EurZYH(7J|IyD{+Lmfi54_B&x)Rq2QyaAUgFwOCrNW8isxxaqL z5m$5iq;GyYHWvPA(mn+jy~rTNHPesO{Rr}kzQd(}ExP9}&ex=GvDQj>Q@iW5(mC%Y82XW&h3)_ho0ViefNj3%H5DUldHs6&v<9ko+o z#Lu~Z#;WB~a;=7h;gwUb;Ab{BeD_wWN4x;i7`|@P)y=X_NorGI0G!Fm{e@ougUy{V z=k#a<%7e6-gOCW2^V}N~t_5mj(nnm?%EkKK1)$MGY59YaMf$q+f3l%^VZ)GLAv6gN zF;5EG^)K`@F0utKKb@_I&M@PnNyn6TADc%wa+fAkp(o-doq97xx%7KJ{P^9<*Du)! zZ!qn86T7e(>wZ_Gcd5{uqnJ`AdWVX-iN1;GxWq?&=X-idl-Mq0cwb(yjg{Z<{fx}Q zo0w-D)hgoL#Y((NH6xM|4aepqDmLT8*W ztDcB=0}6WC74E`schk-sw`aN-9Ap0NiVzA>%RF4e+uv!_0Xn8u_WMgg5_;m8P}DId zReKQUqbajj5b6`ol1qPd%qI0Rg_d|L)wmQ~8(wU7vNM9IFq)FfrC*$stbKk`Cu!R~ z@WeKH9BlZG(^*4aJnbAqn-E>gH)}YE%siL^n$+PszWQlg9G+_8g29*_$$IwcnsVnK z4!`O=j%B5)4mIQziv8+~J&qU_O46fDB2!|pTc53pmmtm;#fyG^p$`P=$xyZG7XYdp z?l@soG(C-W4*=kI#&oJnYm4s}8@ndx&b5LswN`M}PzRjR-?cdsU%YChAK}drp~MpF zXrwlXSy*$YpBb$4tNa`Y+V-l#Zd5LQ8g?FZKiu!Pg_{2!{16EB+&`$jrZ6Zh@WJ7t zWYOpsdbnx9;dDh@1uzaEPh z3!hr`>j=*(0Q^UJ^_tqor%9l0;$`5qerRm^dyukt*93c~$6=iEhLNi#@3H-qADtb% z0Si=(KcjcOD&Yl2Tj6Xe2Uuw{=4hYd!}T)1^XRN6_BlU5K2+tz2KO$4en()f(~V{o zImJiOi}SAIyJifWpTeEZMfzSYD9m6Ei!y_MQbu1Z@;jmTbV{V?ILbqlBv<>~m z=H=tX-;1GLoiWY;9*g#0loOCxwFdC93;_gI<8FxI*R;iA-s5LjtPU1D{h$IzX+=GquPA~=p^(HZZA&U2(ba2sR zX}rQ4eTb<=jV{yZ%Ut!~mH|nD1MBUB#qRZf;Fkx^e|dv@*63@4g2lK2gx{w9)!4xrmhK$yO8J{d#p z7SV^mWT3v!HCOu(0H|fEPNV!KY4?-WVuYfb^^UQnFPqee$9cnK;g9GU zFm!*qJ+(N|MIA%ndIrqi{Je#t@ZC%Ezg&ALCEe$WvB66l-mOw0f!*p%DJ zx8qWTx}0vIG?Jm_4TEW#yleK%-cDjoQ)x30%7kF?%PBD_y1r3;&lk45yEF?3g$UQH z?1U3$5tEX`J)a3DXY9%hA(`tFC%(E~jk7$(I1L60@mq zrUvim(ZlW3#avXnIg~bX&z<+Kk4w4#4)NEaV?MTyggMG5^YGxeOZz`C5(&|EjLye8 zs)2cRJ;s&`z{`f8!~%!kq1>ej9j_Gbyt-2Vr?QW^y2RXb-JV$vqbkmyK|fdd`BS>S zc?NM|v3r4cpyM}$#s`@xx;c2&(HCmVy4BaHMj{8gsoUL2tQZHN#<{1ae(-4luj zyl8WwnR3pB&x`P`&5oyms7J~_B|@hWFBJzv^L&= z16@TW?lWu-FH&QUUu=)_rKCR>b!_0kZY-=NnKU0Nrb9<7jLTKs){~}d-?$HdaDnOp zMqklQdk07p7ijPfNWC1vME^KiA7M0$yR9`i*w;0~aaKonQT5+Yg~>sD0A{)t`FMML z1*8+-YT1P-xAS}4o9XJ>4=I>=T|mFTCf?_c7F-!~KgRFM8An`TT0LF_hyb(Q%V9xM zT;ZLx9n}+~9~SzO-ff7W1mSuoBfkClO-v)&b`!@Z?b=Snf5C4{oN*0+M2&ZjnhWYm z=P(``fK80b%7o(1^g#FVb?!L(ixfpIwz;lG*fi75F~8#~hmU6sdSxl8`an%mr^EiD zbaUaU@4#t8ofbd@n2(wP*blZ@YQ2K}HCc>R2}fOnZf0lI|5ld34cOh7_HDRm!#$Kz zZ}C4xYi1PEH0Dx%3uQY-yhV?u{g(maLS3l1zU9 z8n!2^Y_K_9q2+d`6792YS8qpJzPyUB8ut8TKT%q>r#x}$P~j?m$G^z^(zsYHV&}=@ zM|MG?MVkwsv*|l3S8>shQ=hs0U5*9(A1+AB1%xjP)G^j1v?y1w9{gsMi!&M8X8( zw7`f8-krn+2C@Nn;KrdumT7*}t8zcoG571)&vN{~1!;mqRa z^p`tuanp4(Dt}r2%)v-r*?kB(*_{7NZ;8C;GdV@cpmq&0dt19w0wsGW)&AaPm5l3Bt`LZ_4IceBW2 zjjIK{Wu83esbUfxh_kU>(M?+=c-e89;eG$9I6A_y%IU@;Rlky-pj3UZd%CMDjgW$q zAplTeWlmcAbb#|O&PL+(w>@Y2H}_XUk-=#Z8|Rr{wc!RJpSo`P6q2$K{p_XiG1uyL z??ICQ%GpU?K&m+yF=dSIo`|L>sA zK-L}W(xk^kcz>%e{9;dNQ3qpdSC^;5f^S|hqW3%&`8x!D1(K3J(jn6nEUGI^B81Xs zvb|E2j2)}m3cgQf1YiB%&)Vv?)#iy$U*9VmkLg z37=8Cv$Yw)qTk~6WUwy5e3!^L3+Sh)^n@x@uMTe6l-%k&_^-D27?buhLQ-UgI_lw9 z@jYa?C%l{urNOR1C^C-pES^g_2S=*)0vmeV5R6DKUKK|sCmgR0i%ymVBeY40^OK8f zx1J`yBbYL=5`VdiOqK-`L;v^0@in*lVq$z@ZF0h6)xj0$fLb9Slq|5sXW4p~dVU;t z@lSDtw%JV_q@EXC{xjNby|ytPlqtBkI&UX7eT=`2=wP65-y+SYHW+cTNMA)Na%W1S zZ4f4z8+&lx<$(Sx(^W`eJr}_&{myr*gFZ(2WRvP(gwb{dpe=KdLWREL?dY9@K%cX9 z(FXpp;$ULxFFUcJU5kGTSNH}H-+|?J_pOnKhU8~fZZQRiUye`WyDlJzh`*`xcQ#*- zCxPFxg&_rh$P$AWrS*5z4~~jrau;#$VoYHMk37KVt7mqEB7okd)Wj#NakU5UZ;hOG zeL~C-dXO&Ljf>gVgNt5WQ$T%++DS7jcrTL-r-I8$x9zig67-1SkDMsVW#dS0nBjM2 z(FNnV`FH>WO*-tH2=obs^`FO&IuIb!{eqA;2SO$}u=n4zP3jW_;e<*~IZ*JcCG;z@ zo+7Vk4YXY~07*N8qJF0#8?OR`Zp5f1XQ*|JoKqJ4&hRCrm ze{grSKHXmv$Q(0Athy1IfZ;3dpK-+H?AR%75Js^>vGhj0lqGKqnmYv}lpz;}EH+QPQq zy@-c2pGp&dgl4Rbg3d?1mYru%o7S|*eKItKCT@EiVVCI-Y@_v>C}q#!`~o&#O4 z#O2LJ_j3i0PQ(M)=3mFAjMFAWyyo_#K7Fausj#6TaVc!EHZelroVz5x$An=stdU*n zGp=)n9q2{R1j6(RQQ2agEpHLDk~kns5IlF`s;~_p&fA{^cT=lqzx0WjnjirI%PL zbWv6voE_0q>c5?n#0;45X_OPOH0PR7WCLCyVUDy*(?Ps4{DEK>(aTGudn)jsuE(ba z@yyx-3`aZwWvT>rpzi*`$s#p8`C_-u^pSagsrh!kkx@bPGj>7#e{b0Iwf@ZviYaiQ zRQ~ehxvJ0Lqh*$)8aQez177kXT0$6EqJeb$OZAzfn0g$_=R3ym->Vh&tbem=Ry$|b zqY@}}piVSRjV9C}T55=w9wdhXELGeR&S}TCJIr;Q`KnFPvUekn@)m8+ce2L_D0Xpz zund1Is1xiZDjEfIC+w)F-eIyM&2%mFc2me`E*y?I+LP0Ec(cjmMEvz-T$w!d-{?IJ zK|nr%A2g<*o|c^K%}$NBJQk|e+wklMy3!9WmVy&`o8n|yC7dH=1r9vm4b2)(2}e^3 zQZ?=;=d8#8(-&}+pQVL2Ux0z(TfS^+ql73PsZ|Z zY?1^H%JXt2i3J7sd6k$XfFnELUyw~g0#E|}_XPvR|IZh2W`A87@*HkX(v#Usi5sm! z;)}Y@c{xZdt}VB;O|H~!z!*=9=m_VNLa32aBl1`4m_-_d4;uf?nOq z?63S^Vn7mv#$^_q3NV%}QlEP|k(~H15F+6t1?~2HblvLnkDpIfMw#|){g-P?4TwT; zt-xIPyRtqgk4YR@^z8se$p87L_7NcCp03GQjO!xM#dti}o=zc7{RJdvIGzSD?K2>!pkm+=6p zWQFOD@wKmPM#9(r4J-5z^YeVE|F86ax(Uom6`TvlB7`4LmX^-YVx<-N&$kG5{>7(w zf-Hnn&fQc`(UM6E;xQ>-aMpQbTU(U^LdwUO=#mf#o9D{l1c!DH0sVDWSofJ9y%P*A z$93!n|A{4OWBi{@3bZBJLkrs?(uDh91>@;N=NQ|+rl!zx3}Ci7@doq-XS~`(+#$PE z)uGT=l4pLFb)0mj<=+c&Dp{@p{+zx$)LT#}`JpgS!ejBdc=n|Jupi6h-~FNc+}tq6v7 zg$<|Y&8O6j^i{iOkrO{V9ox`{JN}Ezh9`h{w(oeCItlDe!>h4AXT{wL-yGlXG|g-s z`R>dcGes~(oR-lh@H)^zOn#-*f98Dg2sbr+RysQG$yYpdt6BB7)(J%J*V!e5PzZ>v zIC6$NA)ezYo|hC;w}3gNpaPwk_mgu*B}5-3+Qb0{iM%b1YA*$s^u^vmDDS z@0MJtO+Go_)*Mpcj<4uv-|K}Slt~?`I{X)>tYoLlZTd^VNzwg!XCQ(l(Ekul{k^mt zr`AU-KTAc9m^f`^e2h7MmzX1jCG0$blpqX_&5ARt=^fwl{+2Drr89iB9PV#y=2?3_ zRM8OTUt)(PPOV_im`krTYl;<|{c6ZLG0U|3SWrpj*Kei=fWr3Wl7lcE_=%)+*NRPf zGa_PHXzJGJ^@Y`=fR&Qdj$DR1SmX%e%oii69K|)}+Ibmj7s`Qi(I#e=E zPWZn0_O-cAOIx9gV6A@fCqa6bpppG|VeiVp-dORA)DU2&eDZ`ax-_JLY*CFA1e=ua5FGMU++xbr+#nt%$A@r z%a{M-=*-_ZgzbK^ik2{)%H(IVU^|oAn+`J0quA?jf*)BmQuC%JPyKUKo4L+o}5{KSVQPE{H{eVXpoIY>#n?B$(bF&;<0{j(O-K3p#or6-=k}?o3t@%zR^8HVD_RWlsPFj$tW48&-V%mT?@*AF`P#efx$TJ#b zoxPd)wj%rLkp1fC^7ZnH6%rbx^hfeEjO0!)v z4Nu5_5H&UOYo9D>C$jxVTogDC<$+5MZinc;+KSe1Q8k0_wI`-`)D<6HP=r*a-L%!z z&WFu#MOnlFqLsnbVuX3an;o^_x#BrWID5$MNtwHRSxozfC!=3?Y%!?%cHbZYw!q8q zxi0Cm?3Fhw1!U3!YFFTNw6}O61(z<@v2QNE3tAZAjdNwArjSh?86#%_I~$kiLNH16 zx1P=SJ>Jo)+Q{iuW)G`~ad~ZrFSTOdEMy6h3FXma_U5_*EZ<2t|Jvki+=o)9)uYqO z(Y+UmdY5TY289N}%#NCvUW8uNa9z$%diG6=f#T|Y+feMd{1!baGXv+UoU5&ZCBMyZ zizy@fX0~9M;I$i|&V25;xz{3prxHS*7KOHH!`$ba{*vYFDi*WYd!_S(IYmC5Nt$H`cCTD*)-YpS5g6aR z9-h&t<-1n1^(2E)_^Ew?wjSzePzg6S((nQ1C)X{Xf*F|C+9kF}wN%K`c#b%BOy^!z zbO3f+I>+wv*cBR2PAe$$Xtna}LpqP>@m}#eItZ?O!_b{Jscd&;xKS6e_DenZy z_ulHpuDFO$his*~zFwbM4NATnXzOaJ_8Zi&`nGDjKkkw8Q@cAjXXE}(8!opZ8io*= zBB87>f3|RV2{XtTjC11!bmcjf`xx%jq79vx9$`hhL*|Gj zFctilJQW&KZXV03r~9}6ylA?vt;N$evZ|g{<-8jE<5hE0Vu0{y*Gf3%ATmjHT58bB z>%)km`+h^xuL{Y|-Bh`YB*eEO3k)9?Q@^Mgr#P3$cm}@gp!MY!(2qNwWr&v(wj6~7 zp%;>g+&=?K?UwMSn$ny7!-~I?7$>L&s3ayVKCbN$Wek0fTWdJrL1^LM9DWPQ>Gu%Q z;x}zQ%`9D6vA+ydl$Z`rpexpC z$ZM_q2@XP^cpw(BoucXQRzJfclhe>Le*`IF zR;Ab(J}F}1jTh2g#c?2sL8R4%uB$t9qsft*j2dK*#wnw|SMa1oE=$1PzwHrEhPpG$ z7pVcJ8$toEkbkk|0%@DDVOCs9H9B}pw1f$SbYAvOr{utsyfUfTlz*6ztvH;0__VKg zETd2?*d}3?9EN4k;?|vFZb~m@vs_ySr4A}?e9_}zFpu6(EoT7b?Mr%R{Y0_e7%r*x ziK^xr`sgruDd=Q^_v664*qtDyMMLdT!inf~iB1j1p;>WQKDB-P5{0Zml@>( z&9!}oL+`CYn!buZGf2s_xozPp0BV0w?V1Z;MRL!B9@W}rual7?{!WFCr#+sG$Cy@I zY2MIGX?C++!>quGTbG0AsGW33hARXSZ~eYM{!*O^TXXg1ShIb9YOW&t_T=N5aNFY{u4t#IQBWd89Bok3R=G&kg5iLsB%DxW~ z0IfkNh?m!9rnKw?qH=SuRp9*#(Tk~yN_v?*AzWkM9sz#e3X?U{C4Q$I`98_@OJ0NM z4OYvQn-KkwTwB-h^%vfh54gf&yKEn3P1&>t8M9`;54ythnSasZh@_T@F^1^|rY76Y1i}6dVyFs)(gS7n^H4xz};t zJ366IyoNDz{vv%@g^U`?u2z`x(zP^cPS5X4euJpgy*Q+Nu?>)tpd-Jh(jE`r!C^Ty~te=*Wi` z*^Ty^zsv1IRqI4N#RfzQxE5_V+sPe(g%<)F4+2wbi#EVVSaqip8%j4l6OvTtx7=*f zDMOD)w%e_Jy^b3iqUtGP9?LNB+1!Jh2K+YYX}6-(8@9<{VvvvFw+*+$+=nxO3`VJj zA8ap%T-D{UFS2YETcvz)W!=V(`R(&D^M!Fg|5&9TJ*iv<&Kk?2ugO{XxYv5juHwyL z9q*n@6hh1P<}Xd$&cuz|GXpC327XtQmGo`b;j06SJ;e=}3T0@Qfr>Um$%Ba?rn`~^ zE8(Lks>U6!S%b1oie*X}+ddw63ZaY+9cXRCUY5yKsb~4{Vj+a`g_x$KZ8*szhB0JO zNmvjQ$fn(I=HjVTn%ZYBK=ESNzj=@22EqQ>Hpr#aEc@hP`Frb?(Z0Gbdj(Nn8@~DslCr9V6B~fvPPUBP;pA#QkBZ)mFo=*)`}wS9vhllu{BFd zYuBt9jFn`v{bZH$F=ywdZ7zRh&o)}7A;Nxn+rVL1al0=p03OGvt7;OvzL#d*UE7!( ztu)UXcv<3xhmrG3cLhkB@hf#5RPM=Bo-H4f-c1!*E}f9eO2$f*>pt}XR0l{)M9t4< z^<@cROSk*Uxvr}NO-PjPrHzknih{||7c-l-e=?L-F65gff6)@|r`6n})n342di07O zC|M=kaM59kWlcY#3`rbR1im;D@{XLvvCU&dW()@?oR+A(wd<8Q&w(2>Mb~r?%Ccrt zb2@xHq{>8!2*vNiRLZhNo@D_!z!86}_~cTdR<4o#FKH0*PaO3)rc$Uyw%)oIl6Z6bB%?|qHKyea(^%K42j+kw)H|Q?PAL-jgvfH) z-rE0CG-cTbUci@wL~RsjEGlW~k)cMd}8UDM>makz?e^U~edgj$+b}klD(WX4Ott;QAvj2LcQiLIGft8F$s;b`&a9BAt zP$wz#I}~ue5ek6M*NJq_Ms*j#$JxCi!-l#XYK-mJAY*eCxD6m1=%WF>8 zYA6}m<+_I@6?_}~>y^jkE@liXLSh_g|?)}B`p z7bPSJr8JoKGgTT_)2pdXY@d=9zQ%Y1oNr6cC(yYf)AaP~0ki7X23b+vG7#*AgWwen zxB41~sWj=loUX=sj(*~@&Zg<_9HuJyh7gHE28=7LBnpP0A&5c*0H7V&|~AYYMj zhLjmx03t=WIjSN81L7=GrWEHcT`FnNxgs^s85gj~T=>8P*g!u8ehXBxqM|cz1UWV&6B@}$k3vE3RmSBfl_7%F#`a z25v#SI?3?WFQ*cL6;j4|_En5N>)j7P|B!L7?DhKC-u5=6d~f&v)f`?pH~_N@GLQnB z1a6gOgvO0?bY7e))zZC^fcU&U#8B$?i~`=;;3o0vkTcFDYl)LowHtk?A&IjkFVx74 z?+J-+8GJZ*;YbuFfWkL|`_Y;35f{bZ9E!YQm4jY@^INYJAJhQZMU?J8&@{~OJtTvM z^T@XB+vUF={_grv0{=tNAh~HJP~7(~hu4%HZVuK(dJ8=V zLejAHS80`q;&xxX=D_v|J~ORnOR1YC;znu|MK=J0n}y@q`oq^(c4DbXYIgxGPQp(o zpRP*EE3p--ch^;S_AAV~Duao$*P9IYM--k8xowN+>x2n8lZlmJf2o|Nebc&PU<4iZ z)a59mCmV4Z%vKP^&`RH{?3EszXMuGn7&P=~95?G&@0vJep?|2d0-G>jw)dTPYx2i@ z2s&MVUTVw_FS_n&&PhUh15KbK`w2C>`uTdP$g?q&FDIW0sev3AQD&4TIi}Atl5bpm zMfhyhYVnM21v3~camQ9C1k76ni3)HP|9Rj1eJV!sA+sf(Q4_pIVPK{)?CH}iNG{PJ zPA%o)Gyo3}x2G&)* z^lD>ST|55fD^({OLPy*8V4NYHTrzu=GY3}$0s=$k1Vl2Xj$iY4f|>K4;W;G(6Iyq) zxH+lI+@v@(kceqp^?gW<@D z`C0{buOjVL*88X9_9q?ljOg_0LFs-!e3o7AMX?VnG7pY`tI+W01_hzN9=OU)DJ2DZ zcnD@%BbJl|_a@(N{-tE4tGUdv)5C*ky6H%WYWA#!YAO00p>hJ0Q)~mmlcA?wh|23m z2Klv6#ZNGS%sP{=dmH5s!Z0^)IqB%|q`Mk1?0V05YF7TPwmiNb&1(CIiubNMZ;4c- zA}u;eiRN*~n#ERjs;0r@qa7l~aC&4V4#G*8oEEn=T)RIsCk4hE`DjN4ZEtmserm3g ze7Zwak;NlHfa$b7q0RaJtE#_qeMsMfDbqWf1izTgSL(W( zT&?~DD=r}(kHYe0)>>0Hh*?)Ad?8puZ9(UJWnSxrLOt_krZmm&>-yoxsMF?|eK}Q* z(;%jglgGs3&flo&P(UoQTEGo2+-c!;ogC+#Hk2ddsj1S+)^B@({9Jf(g6`M>#pYga zZe^U2Pm0_jp#Z?%SXr-rm8>5(KP3B^9oxy>O^K)+eC@Asu>WH8@Xu$?4y>i4_^~6e zm_+Bqh(q$ATb>dmS~9wziSrfWE9`A2b`SFt-62`auE*@$Z;x4i@lxfxwq5cL_g~w6 zr!t|K7u7k2*e>^99SUpI_YxXkkT%~E_$i0j&WJni6k0}w%x`~yTpoS#{sd7?$*@7F zKz>fzvJbtN_wB+^cQ{nJ(nP37HlO_1zHNTX&dBkjcLtJm;wJ@2aw zR6ehlRC@VudYcG$g#<;(%uqk~X6RZeo!_!|w4}lLWQOjh{m8CtT<`o;Fa?TPQZhj& zr+IQkD~XhRjEwO2TInMz;fn0xc?jv%5o;&dq$*3Hcp6UI-lomDw`Ct#@BLaK=@@g6 zC~4I--ksvyPx(6i;Etj^4H0ut0r#PBsXr%$ zY;Cc6k5S4^nu8d+j!RPP+hXz(DrB0$YXLQ(@V@7wah?rR1At*>soxp6@2%lqgqG9S zsY_~EXtLV6>3zFd_v)JKOpo}TDoNem-$#TWu3FbBA9gb6zl(Ek&|7kh!6!!5!y9`Q zHFcL6RXb^rUmyp{!@t_!s6J~F&^c^iS>9O#L23m>)U02}0BM14?m#Zw&b(3F_-;!5 zPJe!5$30Kz;k;9(k2;^Lo5?N$M#JlPV|SG(%V)0a^)MBt4^He42;Up@Zx>) zD$Dv1BMprgY4*U06k|{3YowF8bh4iet)?=jgewboS(-uGzm&L^E0trgKVu%*#C~dO zKa8dId>Z5s?T)5FX^;GNze*vSSa!jZdg3@aN#>XLMB%3~4ev&nRsZr=%t1~222A4< zEpjq>-L=64Qr5Y#eq_TRt}EJPy@hArBH42PGhbRl!M@JNp$7I|9D0EfW>%fu3JC-a zhyA+vHZ<<{>n)YH*kQq^2)RpKB3~Ih>ebC=8B`Eac_qmh8?~uJla7t6`quX$)pjzD z)iFb#*HvD=;+j!BJ{gy3-{TLYWCwMLpln(1Dc@jG=c9S4XKF2F={oNQ$x>ZdQygwJ zDPC~ALrlq_0&eqft@W9U-*lSK%!}!T$c&k+ipfG%)Ny1XH2k zLcFqoRWp{Q&Io=`uy+-Nw22yDPasZrGK5W z&3#ZXoPL-Tn#4JX7o2obA6cHi3S#8iz8yRN4X(0}NIbyL9-7eJ#ud00 z#;fk6ra19wG^G+$#*W0ZUKMPKd8BHPX>vNg+w(A-7GD)Wr*o|}jLi>2^ryF=sss!& zJPEr)&a&qada|~4908-@*=lH;zX@rJ`3l_4|2!hSY5b1U_7H}e?^Ap_uBH`d%gC$- zfHBv!(b59ajdl&OR1C2d$+IR`C}i^8i_Tapl-w#&*n~t9aWby_GE+aK!6D+mVjLRR>D5_K)*x z5#L6Q1~@CyTq$wYoE1a~)PQ z)mTrs2G`t{$%_yy`=<5X%HBhU(4#y?z=~<4#(Ad5mEh4Tvx($1NFK8)T-0s?jFe)C1=l;qntl)Juw46*nM6(@TlKp@`q@4PgLs^fzDGQ*OtLQCqg>nV6&z%V$m0rDRRC0SalhX7S z=|Wd)Hgm>`oPRKE{(_))Gj)Za0?ajU#j~`%bIp_GM+UV)ed%|@`{weA{;#g#LtJhM zF>k2t-Ho~&Iz=I8w3Jx_+luV}0oi`hA1-6=vlII3b~N%@+3&R}rIMkl-#^Ua2MxT?yen zrw271a^H7*4VPSfCv>XJN!k$Y_F&^AY0bAYgVe%m9Uq=AW%cgrvACfhNSWuuoG^lp z_k6DPdA)T_;<|n$S!D3F+F5J96_ExVKQ{5#`qcS`h*JmUv^jrRFR)?XWarbJmeTB9 zACi4u(R|(aECV)w6nhfhrgv33T=&Eaj2|Z)BRJIpAl*_F z?4k88I40%AW!{nzd4op3(fC`2l4&ajp>H_fK3+13M!F@=l5>9TukgEOv4ycYH3aw7 zbL+h}3?qp8=G@EauN{0#&t%HJtuP^sQ*P|88ef6E9&(X2{ov}czUIEOI?)*G7yUI* z5xc|R2i0SIF~88JHH8pw8~K^#rDDRVOclCZfR6vZGa%9`*-MKY31V`}t=exmapW8} z)7CUu_1W&z`m8MbPRzC9Dt{%-OPP0{GEcJG8;7Wx5x8~$3qLs^o@;!&xNAHaY&5Y+ z`|HJeneTH5<&w0f9)i$ZeZ{*}u4I+mLQe#qzJ#xPQzue;i)VY$C%5l|dr?rl>Spn2 zHirq=LwC1G$SyOe?(OPr*J*ek&%|h@p0@JRZj$%J_eZh8rcx{mHx2LKQpYJ5Uo=sZ z-{`h><)fGr9f=VK<*ZUp*m~&A+htb4PNl>OD+l#MU&{K&{z2Z20V{&WEC}6Ur8cU% zOJg!S!YY^G3rf?54_*_$RHf%Sak6)MEFR^r_>Mo`4hIa?uXzr4E&{pW@FLK_tm7wq zEI+a5RB|hbn!lt4fliv^ZxtxTSLKov8hlx=PzgP$e`RZZ)B4cL$Ncwg0lH**P9<%E zuo+d%b&|sHbc7T^oR_^Rd%6{fwz9VwAMO;q_xUweknxs%=0uO#(-fXwMc*aUOW9e$ z6_(>;LZAT`|Ge5%;ss(dS2D-$E;2LVBD59yz|q<}EpTfi-_E^~Eahp&^oS>|2ko7< z@(g-FSPXx#-NzQZ{yeS^-&2NWq>v3MqsG;b;?zQA3K-Mck32m#O-ho+5Jb{JS4HEg zwt4npzBLEI>iwFetz2-jmg}#JRDN#^Wh$lsPxTZskWthALA0C_U8p zd&EWcesQtJe2YpO5L46Q4dMu5BGp#@Q4EQSCQp0(_J>S*c}-T*9D`hm<9$@;UK=&K z79YIT&^KLiRA6H{L-c^z<}u2JB9!MzRWME?JE6uEg)5AVu-o!HiR`PDCCp(SB!qL9Vh!*x5OENZW2vN z=0IKMjaq4H4%~UCm-ze^cC%5sG^PRsxGSK zg2g;diASQ*#A80EQ2~e0?fABj=G-iva!U(#JOm5+aBVLY*O;}W(b~)sv5r?&MR8Fr zgH}NPBoS7;-Ny~~$LcOId;57$*klbP{r;Nri2u~+>XoBxeb`}5(p(%;d`!MBnWP7+ zbEqO{&d0}16$|X+O4ORQQ_TW3Npuu)o}C^^V&QHRSFETsR=T1gzFrI@e;K5hrhLVGv(h`krjxBL9W&vwfwltIh@W$QiB z@XRD3djsh$NDaNv8q{wIP9CQ6H@ma2!C;|rUoWvu*fp}0ZI0~?JImd2p)o@q^?W|g z3oUuN3|DGcE(Yjb!It{wgt&Ut9fFTMg;-fbd1O@{xAMQm$q4J7UV^S%&*?O_?WJ^x z*LvA*KO8`w1}>+b_a4QWK=e^~ez2&A5Y3HeR0 zkGE(v#-ACbp#K)V0@s_pDSu;zcsGA~dQkaoR3(6cR54#Zw2FtE#9n2mK~*)b1}PWV z!(rn7k*Fi>qvonLimh{k+B;-dJRs-BTu+KX85Ta#T+TeyFoA2vPH|L9hJ7GUi!YVH zUjBVY8xiNJQHFff7Uzkn?(KqYNPRXGtlq0B!`Nlg^mp_BE&IHl;`9!$r}&+*DHXRp z)y&~*yKpz;^80)2?0a!68&sDf(Yn0p&jY!NeJ^H!4ppe}M`HUvN?gV^{Ooh9TNrqtlB!@+OmcwlE97|_Y-_fmlyfGR;dh^e??;b?r7kA-9L z$IJrtsCQ#EAdSg)hK^8C*@w$7GOam&LV^aK;=CWThU5y8EYuk+TizzWt8B>zY5zbK zbX_OH!7GDSK+B6VbG_m9_g4uq9VxLBcJ#2?$3W2RSs75Z%*|i;a42gXUio>3U6HK+ z?bthloGu4JOfL?%11_-_L2)6`?b58CO?T2+(EJcK-6-kFc`8Vjt*Zd7-|vjHfhRku zUboS&jGvRhqvnMH%^ZlEM@a&T_hw7kgdo#vm%BeQ`+_j?Cnknh`# zhco`SVop>$vu4O>3qUk+-d9_hZ7*~G3VEKv5uNhe+LH7^t9GFerr`QSUFlttyXN_v zbS`ZcGR*4Ree*O12Bs>RyQ;OmQ2U3#T=f269zz_w;}V9dPIjg=Z$!0-vWh>Sr62*+ z^5KCyxO4o$iaIPou73i}lWBk_`n+jZxB}ny@g}5yz7!O+c#mI0PxM;pev(|j+{IUq zhDep#4i)*8=1DuCJnDRWBuaYue=3{EG(USLIbGvlC$)Z$33>l*FY{6UN&{OLbj}`; zbFw+=rGmX=)MrU`nTMHStVsh>?zJ=Q1VBLq)UNv|{SD|VQYAG8tdVZLa(e0h)ySfs zPnqE6&B?dufScOn`~_G?Bft0$3M=KtR4y}qUE;K~?%7wfGxmm=uK8EK1p(6_r zi&N3$S=iLJ-@@+r)Q>2y_nDFK>hs94|ETU9VTxZ%f`^vUa6_eT!-%d}ojR51nNn!x zHbSLqS9d1gkP===cY{LqDkwAqk4{u}E@>cYPvn~yQIz5jKVeYeE5r+-FV+rBc`Kv1 z@={+OJxnbcbYkOst8NTv>^02(%{XLat>Ut@dY-A$yp%2pV47rJ85od6qUri;g9ak4 zM5_JMP#kFs7wizJX?jPMbeoFdX9UT&sz!&W~!nuSE zrIg)z?t6J*g`3&8Sd?iH*Pmpn$f88YzA5%?y3%{JBSt+*Wf~QfDrA-g$ioZpE&W!{ zhC97&)3~!O8r!2_20#%gq1_M`45Zfkch8KkeD7~k(J{9(GADr+=z9H?L%DWHh|~>( zENy#Z+Y%y2NW%yT^oy<+fOKN%l5x=CF)fnaXido0N~-xvy`W+*_xc)1uRQ?Hw3BF! zX&DUoDZc6hk+?27aw*YyV6mZno@5x00CQ2~ZxVZ$9_f8~8pO_`$s+xzck|@bL3jRP zu=Z3gqwEExhxvbmMo1&e>3Bu5@4jpAYn}J0|1$HKjXDzep1__ADCU(IF#L;>ZO-yG@@*x#$}wSgF;Y^}QZcYV_BlXDB?n@c4{ZfCz= z1)=+y`8BFfUPwUr*tZ&5{zqHoMMChDL-)JDMwR_!0pq2mBzIrt4Cv&YxEXHp@qOVJ zV2!%0WX5f=G%~nt>zFezG{U5NO*hHLp6jja=ze|fE0b@h(>0(WvtK;VqFQwB$#fwh z;r>ujT7E40mbFIVwnkp*wnr%Ua9jGq;JVc5gS<8-zNXB>{gBlnO!`ojKOYafk9vX1 z7l+r?gNF%nShaSJixKr>Fe5#-2>qo*aKKQkiYBXC z>!qXHG7oQJb5wMU@p3T@ncBLKJNLE6_a;)*q6@@lBo#qLmIOb?c^Q@rVB;A8kUsfnU={$kBL%lkIYYsItAvkQkD? zSGff|Hh4%L#Aw$R_qbC{>$v+W6#j@=fzXi5e(^DV`Sg7z-RCO~l-%JGDmy|&X+ zyY+L(>mIIBDlqpyThk(MLU@@B8U_q&HZNh{@6R6CJ6}G%Y+oi5in(+0c$nD+TOeP7 z>6d*#dmX4d*|^64jm7#Z@ZKQOWfcg;$FwC9?I_S~HZN?b9{3Su%-b9m| z(WsGMRv^17y3Vo5E2D*>O4A`|IxA&}VU3`LPtd^ETaSt3$4La5)x${gwC{=&g+zX* zA{*I~i%ZPr8R&9l(4BekumOZZ=B{S;AT~wO=>gMKf^4{mCJjirJ=hk6JI3yZuM$}%{ zyH7@gWTWhoNgg&?O4T0?_xiy3J&hQML1nEhz$0Xpxra~l^Sv6;U>El-FoFqwHl{&) zJsK&ywe}x-DsR>ADM7l-9m^szL(1OP!SR21`VxOAzxVwiEhvhNN{H-h8;P+b31y$L z?<(sg3B%Yb-e`m@k!55HW8b&2BtwW1#xi5cOibCvkg<&A_w@O`UO#_;Ip;j*+~+>m zb=}up2m%?pB-Kke->9!#`%~gs?ca=hYP^^`2nKz6V<7V3SgH`w&DlHlU9KWnLY%2= zBet%?lN1PUhpb-6;LWe7Oo}D3)Ugr6e+c$Eehx z<^MLM;BCXKs}bo--U(LxC-A_$txmH;wp49r7E*6=RZkW)E8C(c{Z7Gx0M09m`&Q9; z7wHsqdj!4k*3&i4WHTyptBK>j7OOE^z_~So4&;A9Qov?dc_4^04~fypsYATGcCI1e zU_{xtrb%~eeG@ORx)YQr(T&cxL~Jm8Y{%lznAVN-rh5iv(~eA5&{%BsX^_+P+Afpa zW`Sr0?(&9lYk(F!&w~IJNZ|~^?2X8}5b0HB;Wg<(qHO;ey4ZSLpF#`GE%V64uTPD) z5=&VL>UadZ|Got=P*EsL4oCROMHnU_=Z(f==BVH;k=*QY=YOeZ*mRZ~eizI- zVj`suEW1A-+yqs9;%fY16N|>_q8{pEHvh7Lw1o81QCH@bv*6D>-n=|-5NW?%g$Gom z3?l3tkW!prUI|Ty57joMX3(+9(AjG0feGn*v4*8JgoIv(b#+fM*OdXlY-{%zYI`zF zsgRvrA2K_#4D34Fwa|A45IvpT?rR9Z^G@rjS!=-b6}ci4Saxse2Erdb2p)w}SwICc zVssZ^tNXogJ1UHzua@4bI=p86Z~hwC>?#Q$r^yGmmRzi?;_fuR<;=it*9~e~c~=IX zhSr}_Gj>m=TJ0y}giC}HY7zCTj+NEhVV~I7#e|p#idBkjOQWOE4y0{JcNp~?qg9c2 zSUXnY<8{Od9zJl{KKACcfgi7B{=x%J7EljQPf$K}`p2ZTA9db7#gS01{YQUEy$Z0h zUv&+I@wrt&!o#`QbJvMM0&g{LOJ4c!y)R=OtLX2RWe?Xqx5A` z@9-eTuZYnQM@te(ffcY+?C5{}Y8tWB!mw>Q2^#BAU8XjH^k7ng30`hs(6 zcPtHK=EQ#nVyDs?8&rS>MFBR#wR5|-{_$+X8qx~m&l|ai&79{uCG$dBEho9&U|xdG zn(7Tp*R2QL?k%`nmtZ;nhu!N3=X~#r5{&qi2l|4z6U)Q6+6TM=pik_DDzvy#lVF9j zXCKJ0dn1F??3~SrkQ~#0huor%OHVO$47w3d8vgHB_D?I6WT}Q`H6m7hZthgMD{Y_% zeiU9Ey30kNY|9zd%+Y`AOVm!%+P?^Woo6gOIKLKFYK`w=&I;>(G_5nq{c9%&;#I1N z_*q@K2<8QWl&Ut@_WdeOva6;`Vb*obi#_X=)RVsZHMF(cMh>y}eN=}raqU+fkAXI- z(?;$c7mAawwy62K{OqSh$ajskU_}5lJ}W~*contCBz|vfm+wB#G8;1nM#6(8}NU zvnAYLeuV*_v$}O6A|p<2cJEHwW5K$aU=(MR7000X=1ydlBt7waa&_XTDc(L+(6D$E z&%FU-9kWy4-r#=#P(kGT25Uoc8ib_r_s~J!2_MQ$!cLH%V(_TlL?2CLf_LDB9k%H= z@@r+mkZ)udxN@8=N(_B<^`Wtts@axWC)takCTt)sRHv8wH-*)t^!bB0%M#>kE0q%w zHc^p+niG3>8YR~@?rDdhdl~b*FxX37yRc{J;68};#fxsq7q~$)Fe&-6Wf3rd1mh-| zfYw>oiQkyJaWI--M=GP%O978`STe|8+^dP3v>BR^$cC&8^JGRDOCTIaZA*p1T{|cb z8Lfx9@Lz0_ z`t|p*b%VvkG|pUw{60t_M%lI~NZ@AfR+kEiH{dhQmlc%#!HP3C_u=vGFaC-z?y?%s zXyQ*eXFh5378b#gtF^7ts9Ou7pb9hg}SJTT$? zMR>mA`>52wLiPWjhdO=DKrQG`7FGD;>(1FtF()F3QJWQw6`xx!)|{&-Ik3sFuo;x9 zgWtfHVIHH++}~AcAyf2-EFf=S_ZN4*vEpC}lDhR-)mBs-ukd-Taxp1zx^(6Bo}ec? z@-QrVjE+gL)L%Eas>zq+N+YSk{r+2`=tG3-4xYOirmI^5h-nkX6KeR|+M6SAmeuOG z#OGJ^9k&FWDr$2zLFlH-xr-oA3aSa*Yin1rgeCD(?H^0jJ)$m_FY;k}UZm|zDokfZ zva?fG?scg!d0;d{5fErZmzCRPUiHE$K#3n||0swrPO-R|x928Yo3i?ESb?>M+3@lc zV8t5hevWp32O(8fN5I%qg|TEY&TpXMi1*#u&h>(yZmwhyNiURPQ(#V6Xgxen z#&~d1eC>OTuQJFfC~Cx`EOJXPIML}$}Bi@ zb(baq8kmpgc8cnH{o0a9KOW^#{RsrB7xg{a^y5b!LEHB4Ez4A@6=tLRE}0AT>7jR9 z!FiC=*d*oXv&?rLXMWAbn!!*xp~rMBn7%}~)AjnD#?xWmB)nBfA9+q*frE3M^MHEK zn-X~Cwy(2)Do%E#Ix7!cJ@L~6lXQJ)!yF|!wb^d*txwYm(oJs0L`znN3^VZ2Q|&kD z$AiO9Ukxl#H{4pb4*8y7{J*%Lm7NOaK}0->#60V@*%4fqlK^QAcD-)G-~7wwgisGn z#5`^|h*Xx6!{Vmc8MEJs0mo3jUX)l9Q4iq44~QD+vXgUh*=J+ZhyJWa<+NI13GMrz zacT1V&*s0vQb#jv$hHS_YmezKQGq1}KX)q*$|kH(e~go5$P%;ImgFLL`ca%k%3-u~MF>RoPnLY`dC`5?($Q5D53YE>V&n3Crn#OF?6zCgS!b2WbomgLGJ|Ksp7_1UsaX?~X zz1*(2KLLievmXm2M>~0#0Biqs>Y*M$lOMKbSe@Nwi|(jnf4f~8>fqrUv9#%dy3Ju- z8_Fa#+%Y1wJEXk}h@Z5SKL?zaDizq^I^}QIFzfNo1_k~Ic$}PQB`@exfY>9}QrC&G zn+#U6O7)GOHT1;jb=Jmp<1OcaFac_iISz`c zP-2G!%-1Hs5A_M6JLM^9rE=q>$nNN|8;lmDXlE%bXU-ZjfM#w-8lCEs>$MHJzeR5d zlnfflvFSoLrlI~a9R9~P++05nyO>n`k{Iv z^dt#!|C2g2=iR)K%*z-_`sCr(Ef}G0iP&*CLf!<^%pOKk)!~k7?!GYqpBpuI5YX+y zSD~GhZ2USn>6f6~GoSh1c1xAk9oXuLd zX3YlTORY_33RbbiNfCwvylUIqLh!83M`l=`iU260Ka~}vbDIu)tR4FOwVU$Ka`zEi zAE}d3D@?)-XVW>-!L<3-ZW3-F(x~R(P)#J33L#L>Fx1-JJC;T3b%2-LBSO$BpemH4 zhxCV0kA0;vHur?BAk*X$@b*N1X~vAx+>tyf>@G~UPH_s4wE;zlMg9^5w}L*21k7&r z=ig*Kn`%j^9-Iw`8!X1GqXJ~0GtghF1zcxnwjVCI9Rr>QvTQn9D2vBWSNteCB>W^x zP!k-B4Ug|ro7Mf@2Y)onj`jd(Zwdjz)kqD0Gi=Q`3@0l4z(NBWRC1p) zy_A4?TT{diU*z*pV5j0%t_}V3$*$t~Be5PSL~rlRa{c(H9JLLH3qGlAv;3uUAI6!j zYUf2ijXcymd!>z-H{?1W57fpv&e_QG0P(&8GXmp<^eu{^H0zrR$xYc&mZp1w$WVMe zq6q{l|C+}Nx`p~B`00)V0p~(&hY<756Tg#kvU5fS$Kq=L)v4ctivqiwPT^b=uAbE2 zrI%s&iNCsf3EB+eoHfiVOLdMpLE1b@0l~AqTYHoh8+Oo3n~zb{(kCm;%-x?C!ERD; zk}ZTt<_+KqO27%Rg6ddN9H8N{VVS48pi56CCThVzIg<`LVA&eMgBLN#Qa{=8Ck2Rr zAW#HBuYncc2WCoXI`~qoGEG$OuWkjv7NVD5#4o`=MzT#^_lc2<0 z0pRO(OXb>QDT2`YiIz!+<&Lu;r#vetDB@|9L6_vI&h9v|4eztD5ID@rd+1Z)zsnx@ zD@}C(;uzMDv>4l;pg1B7Pd-&tTDVfbZJ}#y5!&uUzlA(g!FMfTl|QF?uo{!lIJ}p* zN^LYBh!jJAm9w$_=yfKbQDwkkxzXBN5!6|*lcxv7(N%3+?I7zgM?ki^YvvmrQRB>@ zhvn}KOc2vd_J6;6Y1|$7)&1%F1nqmz8We^|zrLI#m@$aL-kBY+(0wJ9X@@rh$K}?b z1l!m}Bd~D&!2#IwV`8^oBxd5u$wnyQ5**bwd#B-^P6h{y;JGz-2T72Yd2u(WF3#R9 z4gKw&SGk3)8)e+kK+iq(+rI<2uqq1b3@PjxdwCqa)$h~gwVa1F1lKjF$J-+g+u_(7 z!|@pWz>3mNO@#QQ#)cXR@|E0*!GD!=C-LG9rGz75F_<^ zrU2^!BG5oH?(GP{MNR1n^wsXe1;8~qz9BY(8-rW%-yT=4G!Lz)M>Mo?X^#DxvC$js z18-L&T9&G#am*DJgpL63cSvln5XqSV;Dp9dA@mcvyy<(+1 zhYCugti!r;i$l_119CTgJUL*uuY5YDedq9Ef{Ez>MatPsnaKRv2jefff5FY?YNKz1 z@aA_uke0eTVCqGZ;k$d49kTce(-@U(S-TU6qFGN*lhGKSV@nvedClzyp4G!OD^S9+ z&&q2iXT~*TMPt>VS5(1d`=$VrhIVsYbMtj1Q06f*2Uw^)@M?;$Qk--4jT@m-=Nc#d z_TH*DDstSBN(DgkpiIR>GtU_ zWDkR!@CqyeJ$iMu`M^NyYe=HHmXaUCOkox$qXavFSe8fg6TwyALDex9n@y7v$*|x7XhF z1r*h){t4TnnqT9yb#qz|+AB%4&{WK0tSSPQeuNL}jbgO6mxDLh{g5Ge6WGkMULhW@ zISXESDdJx^@-^z}i_}r=7jtCRIij1BBWU=>NBPA))@O5MZy0sP4D{@LJiD=kHNTAi zBiqYTNkK~i*tXeP`8$$usK%ZPkcUajrhc$r*$m--c1lZZ<-xbRC8siqJN+zCYSI;F z7_Y9?CLOsS(PT*bsi86Zb})}=tF>pEe!|S%qkM36?_VmW@%uIbYzzQve)V5n&v)z% zJpp%^Y$F6p-^d^8pV{;@YM=#=^qRvG)NDgK!+P(v`KQ@P0VlOVF%U|~QS+ajm@Un> zzxv5K3e$S}m3JgQTH9ljGQyu=?BsG%i}i(G#!6|+R1}9=Cr4D|$pmMTV25(i4dYO( z`pVsmPwN`nDax9?%y$)V{TNnInf+TzK*z_VmZpdmZ#blm?!5~Y|+iOe+xmS^<>iZ?Q)P{mz=?U&?Jp5W0v zOcIUB8o?I1yaeT4ibgewJ!Eygq`zo=+bk9J7~K?%*19?G>(bAj8G3!_M8tG~%75Fw zX3|a}X)=PyWR-WSgw)^HmxSI@)4<{7N~d5~9G+e`fdraAoIGABc^+;7Ys*)deY+Cs z$?fyQuZpbpUXzbXHAOf&hZ0YFO(5ky4{0iS}hPQM2G^nE?A$8$`3QivJ7``H=g_=(b4-X2SN z2an46GoG(ZLVIbt32ofrj<7s485fCyGlFU*1)QXgcGpZdo3ZAcHXM5H(6iEG;j3-h z7O;?rA5FCp*vo}~v)pt3Fl#@7t|&QQ547=+hROe`xaxbdIA_koYaUjC-Ab0+yeyv- z)boRreK|SNrR%e#*9~AnLjayrFMLed$2@fZ%~o5$bltP} zb3&sU4b2HlzU7#Mg)?ij6<%Aj`K{QIr!jGG=b` zA7Kbk@HZuXzbTLu6ac8j2}%LdWjzH%FeBwdzWz8{#0pS3YyV;75Pylyvp#z%&=$8T z_)f70e<1_G8X>d(y~pP`zg! ztMT{lq=8%Q1AKUz$Lp0h)BMnbAvCE(gI0a_tF`C*YwTvdzoOH$4x@N@c)VvzcZ6K% z=M7`jE4{ootx&4T8i)Pl63;YA+4kEu5Te5Lnjq zQc7@Hf0iY}NILa{Xc>%^B9j`Aj<}@szH`$SSDW9%PjNeaV3fRNKv4U#6NFN3(3&jX z2_bJ@H5g@ooAYv>&>a7RZR%HKqyI+a2QL`6=26?+iL^i%=OiWFZ2#@O%DM@9Dhfb} z+>U6y7>Pjx9ECZ;^6yYatJ%HBRwYiGUoxu0C-MSHmP{yTT0Kw@R|pbwE+Bl6oZYQI zsv>~(5q=p)cE$@?ngc*is49ue%nxSmv6K-ME6=s~cNVc1+A@0r6>*#48E0+B=xTuu zn7#dPaXGbT3=ISIAbm~Y20w9`|R_910SnfB<(rfgQw+WiW!;9%B~3G+(^sEaIGduAm)Rj+;t zUV#Uk_Nh*9n1uNOXle_*dFdxCu|L$UIs4_6=W&Uv0g&NiB;^H*rr?G%qJCLA%}(h$g*#?i-Z z1hOM6N3#y`MxxRLf*#viOtqN(h;OI)y|sPsDJ=4jLO!MEXu#PwtG3N9SNkBdPX|cw-80Bg|Ad_AOq>0OPqIQq*)u`I`qCCZ@0e&^E*$y6Ymy9H747+m z!)b}}0K%mx8G-Oz#HC6DC%iL2>f3I8pawVEUkTG&-F!~)yB=XIdiC@ze^pIJHT3=fy`(ng`s*hrU9IpRTN|nxt_t6$-r}k>vzy%Ia zu)#5^{imxCYafRj#{5KYLfBQ^CZk8r)rE>6Ez3fySG`mhBx_G#^+Tjmn0d{ zgQ%4^KRE+fkRL3l&0u3oNXL&$ya?@wq8(Nt>9_+ZY<6(X5OTS?tz zZDV3nzl+;DAK-&XJKR$3Kqjk!-(#R_KPN>&-|lhn`h;R=pqcaW2OdYnMY#|pcEei$ zo6~r!tXbVlhT_em%<>7~U*SJ@2`i?BvG2RiuhUtaLJHgz;0vVX}G)KBd73vZq!8S z-dS6ZjiC^K`PWFEv1JK+=O^sOb;bGhKU!auwBLM;r@kQEtR|VO^Cen{i>(AHmD5Vp zu?F~DaHd@Q(_SV?ZmpcaEGJJHy4FyC^1XUis8Vsx4A3n_pVG6;WwdI65?>8BTstne z$l7G;Ub%4FCn%MiwYFEz%*yH_yEp;?=wZpbVH3qV3|r3+OPgR;PZK1o@j45Rns7h| zQ>{Y2Xk5U`;FqToW$raO)bRfggqdh4oD`G5jf;LQw4=O%gIu;Q%+5Clcf>wFUr^QNdCKYN9)PB?V z1VCpkF|J1*EUtQ0#M`MwCaBL~3KQ&K|8xUveX@AZNkyUiI(XYOG%Q!<&w_+^^?Cq! zwrEmz4FSAf8{>CNa5q;95al*fa_xsDWMr~B)luqRE(c!vEnapVVhzxKbZ?vwihs0R z9^e_oNzn=R^V|D&^nL5%PdB+L9e9>+l6$q6%-Y;n*!3Q1r(Q8&(GoIKp(SCDIhnQ( zpTp3zivJPn0*o>|W$@0Yi znb*%L05kv;<+(SuDfKsOCqM%= z^pB3cJ|;vCLiC5&f0*K(wDY!)8O1U2r_5Rp)pfKU8#a6mdPAJrcv@dE%1SU?x%a0T z5TUM>yo5}gV0E;7IOVm+kD-$H_?j)|E^@Fx1(J^kMCQix`d&`?_7Vm%0%H+=Qjs3s z4)=XS-W6bmZVwZ&7BC(Yxw*4uX-jM_U+!P!N$Kj+mIi%$z!94)Z8Uo<9hAwPVM+v) z1{}>M>Paed(E`paAU%JL506j8$<~MF^qa?2RR058*Y7iKrnYaB{C4NpxdTj_vvH+R z*xMZi6W}rlF9!ZwR z;$rkN%a)}}-29#$K;v+zS$S8`dHJYopT~F*T+TTUybUdW`p%A1sRk3N;9l;dvq=}Q zHN#$V4VJ0~DC*?#gL+TJ$_=w#ohAKdOJMQ(})l3 z%eM}IHIr`dNGH6ZsP8inwix#1S?dToq7Kes4!(j`yr-{yzxxHyr9v^s>B`dMzX3 z?+sL%jC`2Lju=u%)BIu7lA8at^e;l7SvJ;6HoU#V!VW!6SFRsWlhY`;wG+Ktwn|N~ z|2el*%;g`5YR7m&5*nJyaf9l)l47gVGvxc2Bw5G2opw)Z<`MWs;*!0v!|QAr$Y9Xx zYZYx{VTGVNc6Nvt)HM?fa({EN@Z;H$1rET_^K@bG%|bPc&P!1Nc_phyE1NNxKO7K1 zrmVn<_VV3Z=T`o)ed`^RqW|rL+HR=*DnkYJhHuV;FgZ)IYpPbNbQ$mJRVT1MBX~L+PbO!L=E4_r9y{+ys zue9{J777!7y9#53)&IG$9=ZrN=v@N~*GxR8&O1hKQl>ByT;M=6C6UF1+@Xo@qzr;7 z>{Rj(%a&lfTjK)`j>btD=Uk-NoXpJNw$-&&7LTe}zRi@4FheNQr$Jic^NLkO8v*QdZsp=l*ndZg=;|CrAhav8J=vWiJfWtGE!bVv*n{0JSrc z=E-Ud5Z>TKch1)>Jm&hRSwRJ#D_^d<`TaM_I{vxx@8ySlLftpsvkAHJCx()+LwSSj z;)j#tQ?3US?>mq!xHl;hnnBaB)y2T|3DZz&=u$(Y?Y_3Jp*41xQ6dd6^#Apisw$hm zj8i|1=00+w3glRowsIJo&r1K2SZLKK?lM1yG~BKolo0uRUg2*5Uxc!BWWB+Y7w`17 zK$LG!;+^fX91chv#(5gxuNgxjWq6DHWE!u-5o>;@$* zshEJr`LQNpS%)?rOi4hJBKGTZWu0l1q^Oz?U&9^8N0GfBx|a1@g+AGHNZg-@V-o_| zn{bp!v4J`pjLcg&epsCHN+S<;_j1HI<*`GCzzE}-K|lEl7}CzwH%7f-mvA+{wyA!E zk@CDTM1b&vceM7Frl^YMco?P$TR44F$=V^vO}KDX3-#a(utexe(&9aX2_Jd1;xBj9 zh%O&mPjB`QR$J>o@6#4C_ECv9HGEj&uGY7var*O9kpPljg6|a)SUmTNVBkBqEl{Rs z^L0`J-AVDz8?#mXD|h%XnaW?!UElk1?YAS5rLh%`F8mvmnqUc#BU=ZYq_Ou_f8SOB zF|B4|-mT#djIKUA+i}v9b!B_DOS#f)Z@($zE4G8=MCUF1Lx@$3a6Xs&@<~Y@JkQ_@ zLN_UpBezuLKT&d4q#iLi`2<-iGF^q1XWpb?+^-OKhQeMcUMU$-@MKtb0RJ_Ut<0>8 zsZmb3)?gvFuA+9f!#neV*NcUpSk_@_a6)76M*Z=_gXb`U?u+MD*^sre52y4m2%Mke zme-Jp%Yf~3LyR?o4zOSo!=M73Q2*CM#-&-Wos(+ZyN67>!e0I@pWh8{AC@Q_(P1^7t5;}+cHyBH4ZlW-r9v>c+hbWrb%>0EHEPuTP59)=fq;gf zw;R3!sQfV@ZcBCEAxXf0!FIl)v;%muyrQyr&fZK(OG`NXGFus5H<+2qr5WDdDHND# zBP!ZHHqg-GUpHc-o)mb^Sfu-B@A+8%n0a>XAqHO$I4RJbg$OZDCwf;NN$^BS0#zL^ z|3+5t-sx2q<7WMKpKG(aH=3?uBlc?hv4uyTzuoH<_08?oBxP)1xxvqiHMqH(P;oZM z92tq}?IdS{AK0#Vb@-JS$TOpQ%}<7hRaQ5(;^M)#8`lHu)lu8l`!-vM44W&^IqS+D z$oro<&LWkKO%A?6{+Pz%yA8CJl0C4D0V){)7$<)WaXZ+%-$q4SV@JtpnBJ=^K{NlN z%wsnW>z)a#%TE+x0yZLfx))R6f_bUqGKtvHVlxk?ktdIwOdksU5i>uo>#QLbEr&yK?O zlN$o|ie?#J=j!4g#t0t+^JA72%!-f0khUK?DJ#eRSb}LainJ2X_lJHMqTRazUchB% z=O&6dMN6;0Ah)T02xzP~cNNogBE(Y}=92dJ;YE~#zqcEC9n`ii0?o;M=3Qx!^#s+7fOpl{Rc{a;1C_ZsP@Q@6bG zFT&N7SL(4G__7gyNI8Y*CiZ@nM_wZ!>vs@liye~h{c0x~>}Gx0H5?lq)i_KSJTe6v zn{J63M^_%uut_)#3}*T=1zsa}Xk2=hIMrPyL*}F_*7VXpriQ(dykw0fw(ox;@0lBZ zu;dGhAtO%`0zW*h#2W)DG&1t7;7x9`!IeO7w@ju?1<=oKcha-{%VCG*e60Q8@4Kk| ziUDuG6b#q_ZfXO$UZ<|pSYXrgLgc31Erst6{F+om9!qlXpuxfhA ztA}ek7VoWk`ugA~@_R-jMC=gR1-B`QI=H7t4tkFpP}*e~;Fl9}P56@&HKdPyxuD$y z^c%$r)pm&$yu53m6vKDPW3J2P5wj5esh>KvRPZ;9U(CJya_qO{`bS&YQRhY97b#C~ zA@fss-o*1+JQmXrvjHV`oasNgS*^5r{ihz;$miqHEJNV65wwK^HQ1%|PON4ZXjEFpo_+5SjFt(_~yS6}_sL1r(xpGg(0bbpcw z#OZ|E?QIZYAbBYO2B~C+V=UzB$jE5&lq~enW@UTEiT;$i@#Sr%N}ZXd4N$s$j-k>n z{c@^oqw9WtL$jZ+ZhA@z7#vULN?Lf2P0m84C}Y;kj6B(G#f&N<1dp|^tIGoY3_Qvy zOMo%um`MF~J?Xy}+!Ph#Y7e+P0isq_m4hbaPnhZ+qe zsaww+j$_akMYl_q&3F(W_-pruEU(HTkX^V8o-^R8d>s7NMgOeg_9wnARhQ5v40D{n z7a_c8m?kS^{CKadXHx_vER9x^+ZJB2+i+}X&H?bXu!_Ai&@)Lwk2{#D;E7Y&9}s`~ zaWD7se8u{lY&!dQ^1AA(ir*iSqY~d<)*vZY|8BgIi*Yj0%d*qGFpz!a(W49Ij9X}6 zKHV=rjhJDC3P*&Mew%>xL_}-cxeO7dCicIt*$mI`J0U3_+j9sWKj6#_{{xC znb!^+NZs^XK8_Yr@&6{6XtPyewgsT02UbbS{K_K|)n`F3_SVhJ0UBJ851cr zN{Xh=HWZIdJ8drcUwT%h*4^FNx!Szx(IT(hf*Q>rN98ImFw%}XYIW?2nmbl-3IGQz zP47Ik;`A8+BYD1Vm#PkY!FeBmWkuG)`S2KY&KY9(lX*CH?HQdPGi#2o5pstECbxt8 zjo@vLST%l*rV=~aGsdgGyY|iQr}@u33Tt>!Qirg104Gz~pZJ!5-dC9Yp$t`|y57C* zdsQCleqGslzAfD%Bx;c-NV&SH_Js&ty2MXc?{oP*Pbw0a+1Z}kwW9h$T8#^d->&5( zEU4WSR;ze^?CZ;4I>#r7K>#rF3A(38F1dRqRxSTh4luKmUiLp7OQTECtxV&*y&>Y{ zGDDq|mAAvyz)Nf+gx$8hY@TtgQtUCE9py$8KB(9HM#h2NtU?@MW_TF5gL7`fmQ(W? z7Bh4QlT-ny3qZ_^C#|tKQ46xjjq^mKzo|uN464Ulb|f(>Oz~2mRVXdmAwuwh85`HiRB<6o7l7;Z zcGWK31Tf1sp~P+h3S62E&d(B89ZgzQM|0d~7HE@5^*-YSGj3q_+ovh&GKD)OhfkbkvQ zNGe3es&=qATR@%NlRcE&Y+zjn;`3`1?MdCHcj;wz- zAEK4aEIz7G9sj|v!;0SsD?_Y-o#}X5dcszF(8xgLSOiecyyz;tv7|;j=dzBQJ~9tc zG!MC+Fra1y(V^U#CI`IzN+KTUY1zDxwr@_+_Cw`F@!YJ$dK$ZzKNqo)F%)S1aQQ4+ z5%q1iuY?s}>;WUlC=}S>lnn~|Bol^cBaa#15dVF!ULE_7?TrVl51#h&j>q+^x!baa z{^2Lm3`QThU!1%MBz{i!<1G%Kj^(mNJCDRi&2_KEau`ZVpEivux??M=@VRBpq%kPg zJM7))=&wh&{gZFALk5_i$r8=j+1cs2(MyxtL7WvGP{>@v{k+dM?&_u#NqxCrf{e=* zygg4V^CjyR7|j+kw6`%~aa^S^y9*L0xj+7`7Ql4#%~$UzbwAp{mNT(Q z8+RH_9wZ@j!7tn*$3Hr4W#i5h8*mnGNpW9yZxHBxe7Rj-*$NgdPg@hazXD{SMa9+B zANIL2U*?mhpXsvaAV=qkfg}2Ao4}l{M=?nRRqG&MXu5#vY(h}|a{BXk(D^ANt9VJJ z{cbWhUvEC_39bU;`KZ`wa~s@IiO?ur90RZkCYZ+SqB=xAg|d|v(!@g?eQUo|*6nbk z-kk4k$E<<()yil4z=7tF9R5TJS}Rt6=6bozUElGBBBg6TurkiCx-^jdZ=il|7vF-o9@2x>@9^ z!{%XI`Zf)9$5u(4i0HCF%$5j^+LH9A{8XgGa-N7k8e-NH>xQ4g(T^3N*_83ALnubI zqw(3k(7h9`DH1#~2Z04yY(VitEAbHd`o{SrmQd43K(|vi9SnFZ|SPqd;vd{5r+O zW;M*QP1K}vZ5ePs_~7i*>9g`~UFVe*I|SXmVZr=pNn)I4?!H-Q7s(o)E7+0T2)8`e z6}xE6mlLjXq#e`afEOk){aZqV;>f{S2h%gF)FZodhy^KTQ2SAj!B5}bDg0ls%h4Q1 z!b9U1!TC6IzKOKsV&6_Ci>P5u8iA6MU()bp{`exprLOCzU*wz>;^jqqJZ!!cxp{!c zvquSX3#7z8kK5HT6?ysP_|j9J0^ttzdgI*S-Jr&zmwcEcNp3?pEAqOtP#jI z@Nn0X+C%AEx5KtIw_)O^80H!QT^DebxL^a)6vmN@s#hsh@An^NDB8Q%(GH;BRNwJMn%e550 zne#Rg=P`GsDqC_a@35EOCtA4hQGmSvX0Ez%Ze*0hKv;-rPls)d-s^AQ959ys^05Cn zo|rsCzGCFWc@Y&CLMw_e#NOwpJMP3)CcB?h^@$rX-)kriYYu70M}{_-blsSaW^pom z3WXW1=4lf`e(xq<#=on3=$yCd zxDC;Omf!QS$XLF32=Q$D<6~g;p^bgpLMhksL07URdA9%uP^I>;*bOx+ASa}JZHV9g zBOCAn8FA_CTF=`Vi-ldr&Rik*lw<~)ye`+D4tp}*jUH`o?A+c`K3un@h`!xo7jLw?Fy2lApiN8O>XW!*IX~dCnax&K(o`!KuIV;*Luqik4)^=QY-vp@ym*8coR3}l43seF z-LlEG!Efe=_!=yZI&N3`KJII; zPa#HW*32)~sNMd#!+6wk^1OeaJLm8D31rl2Sc?bepUd~{=TPF`a~<=ZNvCSr{tO}% zg=CJ_qe}h1>$2iGCXE)$d-fF)du4>fz0}5S$09DBplQ}kcF3>R-Z1>xT!i5;RFgvg z7G7tl%(-Q{NeTPZPW%>U<>|qRnvIRH2|4OjC?$up8o)SDmmB_aW(mTzBz4|1^F;1+ zFI8alRT!?8BJelu7{9eL8<{vkzzmJ#=HLxC{Mjde&P5z-!zQzQffVUC8YU7#CM6`> z^-3M};BenBD#!)E{SN3`@g8ubu>KgL`a`rEH)orolHkVX26xE0F7@AEu>w zz`UPfGlR3d*Qnmr#&uC?HVR7_F&nK4t5jyB<+H%ZEof>0qwkSVDz@+pXRC-uFLSy! zCbO!_#I_juAG;DMZggd9eUOhM(9dgaZ4IzkwQcUi3(Qux)i$)Xwwg4?C&+sab<0W< zKAHF%*-vxg&iTNs}F`e3RQ-+TQl~`fU#@{jo+) z7<$BPlXcUkZf~O1o!)OA)v}5ZMk-qLd0hrNvrK;k)1cFD#gboG2&$RC(GVT$XK<@g zPiy2dB-i&dF^}_+GNC#369?gJzrOG;E1c)N(Ww%0&NY8SY1NtX&Ww;PikAA};~A$~ zgP7(;v0F`-ZD??rQ+Ra>m;7FBJp6f42D&;Ra4)Z3b0W+<%0bl!~G=_%iw=y%w4ST2F&AbyNVz+c&KtQ(?rqh3J)<7RT5DeL$vmB_J zo9kZRBgrHD+?#eml+6j^#1FUgfODAaW620F?`X!jGR=%wQ9F6XDd=|b!b%f%Jbqwe zGELZQ&q4eOuf}!v-p}FVRlnKGOjY6y7CHb^Ke-z_!rI5<%n0NfpSDP#5I>0v)f2U7 zV|<#HA^GL(07tS`X!Q=Dms(ojY_XTRJ;&)Al3ur5+M-4qsS+&Z8)jXoMT$C0stH!K zzX{Izbi)7lX4`NBWyOpTbm%fz|5|n;Lkkb&A4F;BgY6*er1EpNUZv}i2eYMsb3?&#Wu7`XnAz_mVGOoAd#3yl1}ev3l+q2JBr|WKNE2OTg@Jk68_&q1Hm+oVm+A z4jT}Dd5lv#rZ8(*)P!Gi4s~{u)bUSR`F+x@v{6CWLhyu(=Mz35H)dNSkKn8h>n&Vw zcbHw7r4F!DUJLH0k-mgyVIp6h2c#);$SVT5GZUPv19+)HaA25SyS5hEz3_Nkku2eg z#p@5})6Z9ObZYyn-SXvH@9xWIvpi)5A_ShDD!@eI-{QAL0FWZF$oXNewid)8ih9;I zjg%MQqRyK9v(Hts$J-it(;2pc(;QHyN*VSNDMzn>L53ZOld>vq!RvaD&ahnMI0hyv zvwEFh(~Y+YgIzH*(B{zNA*05%Ij72=w3m$dTh8%@O01Z}av* zh__B3@UN*=4twBGQkUfdv>MwDF2sB%ri2j5tE@K`%j>$krLJ*dBw3SteJ8nEPoH>W zL(9AB%VU)x_(t8A|2FyK-$5b%Q=o{rsjb2LZ>PtPUyHKmF9WF3<=|&Bx}(AK!FM=- z;_yzcLr3D`AMk|K8OKIMl=_+g+v9%Q>8V9&aGLZP%|;cX(DoMV2GyEY2r9#|vtIKE zeLwaC*k}*Bz*Q<3+LaH71sGb~y03B$4HQupl_{(LRLi?}BJ|CmigyQ4tl`0$F>2YZ zbPf2eZ(N7?sl^g-hk0u#o=ngEtCpxl!gsi4N?O|$1#F7tpCnQaawE7-<=joFU>lEM zsCWK~q9hi?2TU4o{hOOsQ)ZRqmH2!m=lRV8Zx&GEourE<$BbwHl+0iahVQd31?FYD zadXH|=K;-sPBU~vrj>iG>*{L^JpiBIEKTt6xm*a^lI*eU`-fL2nnc-0M{wmn_Huh} z3guo)VUa5=jYfIIwlCfqL)XG~C-v-GzM z)73ip|H``Zc&NMYKdH!G$z+Qbk%!4rma-&IWXV>Bv1H#hBw-j!*3#IQ2-%_->sSUc zqc9Lo_M zp0K7d0?_k?y1AUS{hR0We3)s20t7qPj)WI8!68Ngt{z{&c1uE<`XNYYtG@{ZespsC88cEJ|`n4AZ4(9?j@w5nTG;;@<=g0U`b=!OY5{{=li{xCWmldz65@}(pnnCAvk zrqr%Pm2OCDeo=!)l{KwiIdsOZ=|kd!RYi>dXKTVZ*@A-FONZ!`O5WfedVCsLgt*fY zsqNA0o%wVlx4wsgWG*(K+%99(92RBprolB_@@J<=diE)HScwPH@s<09kAs6k@Q5R35sYwOL9y`;PCnEMR&?S? zp_0V#B)p<`t2+5x;k;bt;>$ay4olx``69=oxuW&DN>+x|SXeQ-Hcq5YRTN+-^gekQ z9$S(?EQINC6gRT{VYD$N4VT1malaWFb^O5AlT@iT4uvNi0<8lD7U+LikJ&X=h%^Sz zD#Zlq(i{qC*nvwzUKlNvi7p{spOf6NiIsHTMWlv>b-()%=kq*?c7uuQx)mFS>#kle zN!}QM4IqCT;vC3GnnL>SUs4+@c<3pHX>rilio7_ov8inHqGd?C{pAV9cS6E&O{q=> z-4I8)9?G{pOB$Zmxk~x4$n18JjjT_Z2cOV3D$};xG*AyqRm7!)u%9M7T%nTm1-)Wn zNEK#4&n7@o+3O;EQNHmRgDu`V_RjZY8t{D7-@0x_5A#NN57L60oSK>7M;l-a41J7U zeH+LLP)|y@^}a7n$)#9SEF8;KP6<&Bfo^hcjg7`#_Bbw5{5{8|W?Qoa7?-1;s^ z-FBCyOSe8FMi>q^LlVTy8Y>*UcgnW9@Pc876uCFowCrQlPYSCfV5dvI2>oeMx6aQ? zL5q-@k|Oj+IhAR&+vhcRLqkNrk88lW(^+%Xxi$**XC7fh5w&VyGenesvFkD;A}88> z{W=Ccz{gsSswDY?gS~vW1X2jprLwASw{{x=s^@qJ0a_*Y%KWMk1KS77N3mPj$P{8U zTYB>!A!-8}%%xWSY&VkzG+Mo}VplPEBgCydN2d7CxMmqySc7a<A@vjFi}9q-LBU|>B77wpjAr$#lb|o_ip?PIRLs|Hqb++Kr2hDs!1*)d!6LB z(DAa3Qc~r-orwTMchGgsa2N${zl_2YI#;b$JD@d&BP!s&qnc-0$*Kmt>06@6UMq3m z|ERf$LZ(wwy7q=ksmv|=d^R`2>Ul}O6Ue4;Gjm?i@-t1EZ|dz5MOR*lUM&PDOn+X1 zYU>2``IiXfkh=NrXsM|FOvAfPhGVU!FJ-o>UrgFq@&tr+^RRAd24oYM^v|z^IBqlj z$~IOwT$86qSDaJtw?zMeco~Q3a?de(!~+0W4xM{BV~170?)DVYbu#l?-&-Y!y-t}VINU&U22pUs%I(8N@+Cru8S%pmjBzok_dl?~62*jRQ-2e{|M^|1=z4ExOSN_xCg4wObTh$hN zY^h|oe21EWDWlBLkdW_xhTxZ5B#mqJ9C@i?jJ8N~qwiLV% z@!V1p4#6;_>j{NOaf~syoqyC6+*#NYETEYc@uJ?2+zp=c!!^re>_;pqdu_4JJ)C~) zl$+PWgE;IeJH!mH41UsrM8`(AeN7J zK#ZC+42Ep|#Sv-o%qERF=W1_@T)vZ*UPfV=x%@bqu--$~DimN(KCZ2DoNX}fqmpx= z>Qu|vR>{{G=2(=`YtdNAL+0n}+yC%^PB%13`N3*#tQue#`*(=rZm;#zwy-BXjeI8o zbO!{Ikx(BPF1Rd)a0af0$X?(N;!g_$?1)$NMh_v+rc@LQT=LPn8)hf5WqD58VfCcf zmeLP(n~_JJ)~TAZh0`$w^bpu_XqB3+>Ue?CfIx1c5UWOl&u|zq(yLm}?b&s;DZlVxn>qJ6oE1T*GOWCdi+%CaYa??v^>$5s zg3^l8`6y9Z+}Ze|Lijy5KE??CWgUm&YkNjZnxz7e@&;9jhD`F7prmg_m8Q-xxO`>7 zlT<`JsXoGafII{#A8S5uX!fj~?RBkp^HoptY#4v-rZoe*;*UOq3PeSu6)ht@M$`0u z)~O$Nu}9|#l;=!(wz>WGFV~6DXZ+0?0;AKVCpvVER2M|koj+}-X1 z+*m>>YGo)sx#p)8j#nd#*&60^u5-y-_7cA^UWp@p1KrN=;Zv5?hPGo`n&)*WCfOln z+p!G^y7e+C{G%J{nAe8ZN1j{__u+j+7*_C&sk(=WQP*p$#`piE%^=*nL92Se*saDX zbiYNJJd}_uoc<{g5n6xrx#*>PWOtv2nznV@mBabspJ`(yCMRd}9X0TtRTt`tp_aPR zSmLGCF^5dTizutmu;_3D!D7)OK0E_PT95CURr#l(0tlofDX~qFyf(F_OxC)fbhLXy zlP;%=*0;T#yM0P5>VGxvXjaZ*eNnAya&1WGakFZkKQzAI_E%Aa)|gGCjLN6*ZEGc= zg2ta4+**oh(e;7L%~_Y1)`otOvahJ1NHqYW-T=-v<(uh{lN(-|5!2XCEHQdL`2br0 zz#)|+f&}l!wRP26Bn(aEM`T|bc`SBkY8KEj7k*A{tL;_?V7CxRtmJ2WAg1vfv*`Dv zvkOTvM{OeG5`;*BG>*qle%M*OHD0G~LF{fxyx*|gZxE<5=7c?3bjOT;(VWvFa3o4t zpe02Yt3EQA^63&LC98eaF{bJ;k)^iuBjsVF0S^7T+5q>DvmMwUcm}TUW4Y(+(<5uYoBVZbqu&e z9_`(!`38t!&hi)oG#dr4;nSA0`PVP2jTj#NIN16l-x~>@^(sy)DW^@yM9gKNN{ggo zgDlo`+D9MiFyMZ{@2@WmCG4gj46x`3FHiIXUC&L3hkoCY+3u0B0Nr@h=*J!U=*#KS zT^TV)zfaid8wg14Ce1l5I_DKEB|QQoIjM0NzoqnLN&d&_$YQo>`1Eq;Bj^?Vr@`-3 zt9VC4mkjo}nAYxbe!m8)77!0qrCglpiJdT}N8VoWzp%W23%JqK@=05}5Xm zx7Dz$h`%&j_pnLxfT_dNU%w*yb&ww3`EC}~cDQ6;^nr{^*ZTJ@;*Ed6F0j^uU#VX+54m|gzh*ur`V?F3@Z zVKH^65AdnnA0b}q-BeqC6QbPe@a^T*aRYSIVB)31e%V1+kF50K!X!+mT3}PEtoL(# zOvHu3EtQ;Uz`0$%;C5<_V{m^RetlIQ$6TyAuns8Xk7kvzb*2wYYeHEKcKwR5rS*9p z563g;n}q_J(pr~>r(c0L(z`QH%@DQYWJyY@KMbr4Xw?{e+nJrW!2pADdM9h}sv<4C zs!(lb-Z$4biyP)9Pc7fj{!t|YKVy~{>7!ZNktC7Sc$qYsrK+gC|h`GqB!fCfNiPhZ<6~u*A&gWjz+*8S2liPlI5AUC+ z?Aid<6#IF8H?Z0?PIJPQCHGaL-kkY4ey`z?+E?6+IC!gQJfhpa<$|dzo!NyS0^H^% z{N7BbZw*`jA{U7+z90n$PX$=e+%%3#AR@Aro`#DkZR3v(6Rt{6RAZ*0M==-udfCsZ z)Ln)Z@oaj}&76o6Y3J~AK?8c@kRi`8n55^J4GoK0N@DLl`<1ZRd{UrJy~@WyUZhDC z=c1W$=lXdyHZTl+RwL|(H{a@gw01@@%k!ilcaw3P`hSd!T;btf%qfoyxa%hE!|XzN zr;1=di8>zg>dvA=N*Q=T(Nb*!r|FhWDfk%YO%o-*Cp$1rfJXIAZEUYy$3)zLK$6Op z1(q25(CbYPagWQB1L#hB+E>J=B}^R6@t2ni{ULGvgoK;rP35lV^)KC8Q-fct3u>R#&v^yyq^|Vh(wtk086@IyT>i zm}DYdyg4IVLetX?epZKF54JL|>O74t(oiXeC*O5k-mSAvJIitsB?gtX*iiVzf$=ol z2@qKF#@rJzwG|A@?|Tx@hMLFS=#qMCxRW_F@ffp4;R35;`%Im}CM!gD2FE7gZrj8k zQ0+8${8CzCpv5=qB7SnoYfZbb@A+naifEX$-D^B{IuHWxSZNK~#Bdnd*Gd$WPko9h zq?=*WJ@>~bLS45XT zbRXgla=K97$FX|IdCyfRbm2QfH=I4-)&Tv47u0}tXofB5$DcJ}{a<%(%FX1Tqtx)) zF1Oy?-r3IB$~eI5_$y_wISZIa&<1^QL$0!5jPrbX?Ur@X;q#M>CH>#DAFOg>Mtc?L z5Ibe^9|5`VKS_};dgO^DCll?{q3H$3b%kGc00OPaTVp~c2&+vNgyHX@M@Pw4wVwav zfIPW;Hh?Z)ii2s450n*7~Gmt_TXo6x-7znLHfU_TO( z@WK3R7~fmN`RvEFjlAm@dR-}84_s3E0Rh*n%x5wORehqx0kx))Xo-xX!yt*=`@y^f z^KRi1#!grs>`|msDQ-Rq6yreXZ^C<3e=e^i?Z1sIU0?LTztl~3c5%&;e=0<+_8d^l z%LxWnH^%8jxfscHl8I2ySIGcx4DU%PhVk0ql;MG@573Am+`9?; zzDWs8UB$pS*%>=lR!`P~vR0s?et0c``+X;<>IV7#960uAkaul|z_nCtVgY zns6SM?!I?6ZIwN2x8N1bPyU%p-2OcK&YmxfsPJsb?8v`HDXIYExo`8uRYesWb9s4r zb!CXs(b(N>X6Vd7qJI%q`QDv%gS|y7ToC#C2XZxqXi`1mU%u~#LwZBa^iBM0V~?Ew zR~zImpvZl(sz`EQ>Fw>UF<51$>=XLFm>HSmpcb!jFnQb^quevGGpwy2iyANZ#XY~j zg$6hG_x0s!4CgOW>5(|l(t|bF@fqzpoVA?_Sf*qr7DfAy{>!Hs@oYtV2Irb(PY%!~LRBhR(ZLDU=aRHAo z$wmPXk$+M&J?MP#XGA>oc*Zy+JvjqZ0n@1c_rO8d!opoK>m6(}ulPcW=yDM^1dKCW-zYj-o*&ED#B- z_*Qw&vMQf+nQJ`#QW^()z|g!S$qhV*6eY!NqrunC-|74DgPJ;>64fQ+q1#SOK_A|) z_aA2O6iui!yOj3S$wz#=W}p3UY4H0J#1xI{PhP&0+!^LUAwEdyz|Xm ztSaG4GjZJ%e+{v`bBik5Z`U|FI{xs)Z@wUV)q@e6`{g}xX&UeKlDtg0o3lc>@w_R2 zM$XX5d}%Zu`NeR)2zB`cm4<_YTQ>vAAjtgc(|<(YBI{Cy$|f%#iC+4{Wj_-oM?V9j znDS)wp)*Nk?42&KJ!+@?E`LV&d49>p7O-+sea|g-Y{eF1#opf!ZtT#08YV&eK?_uF zWD^Aa%Rjr6>~CKkuGMn&TIuVg9`^zVV8pe6F6{XnFLWRDR z_PV8_3;^j<%hi2{Wev<35egoaLEV#4Mjw)fJY%Wgw8V z(jc<_rry1)z>e~>U+(+?b;*>}*#clX|Cs>*yfGrL-)QI7EV>W$`idVfL=irQv)gF& zlHcWj^+6>51gzZFptn34PAw?+lFchS)dGewpex&cr)AEQFUGRU zy}o7lGf-vEXa&=&7SxODow||0+)F&b6;&@i&C(_J^g5XW3mG}&Y3;a6QtVrjH)n5sTc>7 zsibOa9q6*+1MB0T$Y!)~rFQmET z0&ukB7(S+<2||!Kc9{vg?%Z&exgT7rqRvy52PW4PQXT71yYc{! zjI09_W!L|PeI@ux5~a=~;w;8-3Tk$yJWlY5oG!Q@dP8m}Rcfo0v{0@>A=Dsze7dy8 z$a5F}1KlJXWP@pBl=EPbB7!V=&sAAlCzxu$@K{wP8b`f zirGJPL5vuKqQ*PPD>u1pVa{)WTlnl;7tB}Wyk;O&-5z3&1Vx>LCNc?3dO}@rRSBT5 zx~Iz5R9o}uCIy$}9_v(mOOA&@(Z{GOH3^nMp5-#_>!pK$coP~aHFS37zOBuM`cyydBgdM9vJAPXlbL%FiR-|&^6YB?p84aM_f5WUy6uu|gE+55c z)Ta|P`w1evnOJwknKb)lHL5HS2=bsT$=oJE*rJ1YMf1{VHvkq)WF^-OS^lSSehYT+ zG_HFFDWCL&ZtQxNZw#F!-lh%@5c@K)SVBYVcp6t_F$Rta^JtICD*NO80227$q*nFv z$>LC}r8MaP9n&!ZEIs_3Q%)O=WS|zQV^uWZ7wobLA$v~(4=6gBkFQ@FPR&Fuf_1ku zwOp4s|Idup#cb5&(hYD09biS=#=N3he?g3*j_^JnTww34yQ8TYF-$YJZ)lPyQ!6>Z zLTy&zZ5q~h^ZL(cYPiO2paw!L+GB%S|5^>nSX2FaGjY^p*`!!pQ&V%dL+UU|oSj-j zIS;+u_tLpjoz7f6AgJmtV`=VNEz455`^lFJ0Idd^e?LK1ak8e2gk*nuqtc107yo6e z_Nh)b(2iAb6mLGNX-XUBcah4H|5bSJ_VNQ4oT<}Qu;vEL)TGr(Fo`++|9W3Mn0`-# z5VGxnGZ(#A_`!#T*N24fH%&mNYm^pO9kq%r*i?c ziTjLDk*txA4VdgcS+-2J?)lPTt}L|n3lSNqs{$z>1&fiN8N796GUK3A)fkV+?I>su zRlg*#`+HZ_Y&|qB0TKVV=3A<GMiaM@0S*2DvAAeXt3E+-tDBoile2q$qF*@=sD_0K8hr!unPD;aZK^ zt!fhHuO`^pUl@fsy|CbDnwU$zc{9lJ)QQH+QiX@(lpjEQ0?po=OFD_$<2WhI<)5k>Srn}w)=yChMtb6};17w*c_;;YX!AUF(G4_|opG=g#KTJnZ zUmE^3tj_Aa)Cy2#|Ceml;O#luk_3TSSFnrwJ3TRk!xMWfHPhRF<^J7b?+fy=jI%aF zMYBI;+ok^!gmA=Ry_5Cl9{6hXbN~HcxGsG34&U6b!kn3Z3i()so&Fs6t5R!haj=N= zxaM!I5H$A3T_e@;xea8F=d9M>20&O0;On1<%Top1uL?T|$!i#J{iR)ui*TqZ3)^8c zqQ2fU`uM_q4TBz1`L=@E+^qjroL{!+tkcpifR_JXQn91M24AeWeueyd;ijgnb*o6p HJn;Vjmn+6m literal 31664 zcmeEu_ghoR8}CWz9YKl|!3IiK=_Ry9MWssb!Xmv$M+k`^u!@L^6agtB5PI(|h=2=1 zsM1N0UW2p%fpE`m*n9tl`@@&#@eya{E%SNHymMy8m-@PQndo`w0RUjqzW0YA0MH-- zfKr~88f;k}YSRS&qVv9I?h616?En0M04ZtQU?arW@U8|>(#N*~{)5sPA73_30CTUad(Q+$1LWw95#c3w=+oFCu8fng@MIW$^DW;mP!uMgGbc zd_a{r4NuM`odRG znSrC7%wS6pihF*4)~n>`Q)iGhOQdAlZANlWAUnXKPmk~&!E1X@Yh9?6CK+8j>#_yA zUUy?-cgtyCV1^DfBc;eB4#L32x93TuGzqVW=v4;;{^O9AT(yI<$=m%wiKck>6)Ry4 z%X!M@-Xj)Usn1X5h`tBvd6^3Bw6c9`EMZDS(UdwvN$H;g8vu|dbVwS($kuqjL+&&FJPP=pRsQ2O#c$8ZBU|VO!`PCe2nTP)M31RjQ>>f z0FY^T%E0Ww#@I1rW<-I|Z98t1HgY6mrO&~Erb*Q34Bf|H9b!xl zvh~=Sx_DKC^$fIhIwVUWi^XW9;2BaX3iQlERN-AK+ksL-aGs&;?Ck%%$x;Y_m7Rwo z?kDB7jqSQL-B;fdBP(F{pb80VQVqYkI(Q(Tfx+esfP0sJe%zk}2U~p+HKe5KHq0JfN&=eB2%7O7KhA-`ne#jLAH3*anNK^fL(JD({H zKw0nx0Mkv<%i@r(RbueSBD1QCw|0ta^LkTs>6-N6JH_ctg_6qx^| zm12Y9qQ0mdxQO-9ZF(No?v9c|`A$_#>nsmPTk7|hB+@jkvTJWplCF_OIi~~3u?e!n z!ShlFjne5K)>g4jW=H*OJpXoQ21D&?Jg*7%73XJsSgTO{*uFA!a4izOM21r>o)W#T zLl>2i_*;`UlEpDa11ERZ<4cL=Gg7Fnd*HxknkChkREV_A5&SR2ouhzcb?xWgCA8@; z)Pe+#yd}t)LG2MGn$g0AS4DfS%V*@)vqm4PEzu7wLSAUV^-j{VnMjvdknPC3Ho2qM+gH?s!aOm!!ArMU5!NJ$&wkbD+u^2kXFyQj0T|sx)VHKLIoibjLx=hgfRUGt z@-+HCQb9`emf8*4uy+!zQ9I9XUm}|X4bUQI-x;!o@_@0|$X#n|NP8?x#zUSPBIW+P zrvFq?`_dMX+=c_Wlxf|dP5;u<$Q>xNrFVl8#zOAe-$X#%b?9MEF3Q>ng~c6jY>wcu z3%Rc>Pz3q-?tRPUxSM^hxE|^B9I2-N$nH={t>0r-y=%o3n%3FH7EXq-Oc)bj2!uBj9D&;}B_wBxopby1xEMzx8+t4B(#~IQp>m)6??B2W>55}3>nOI+_-540< z82fY3jIN-xT-F0=a?jWeC!igYqwfbsuY+=W62SLwJCdIjXn&r=8WgPS$+gk=aLydY zu5d=7D4scsHspSGE+(%@zSG3X4YWvba$v|*?jOMp z&^dTc>Kxg{P0=46#lJSccw` zN5};-Z{=6Fky)2-TvgFYvdz}{Z&c7#@l3Fl51uMfYJV=VX0az2eTHrX9Wv_{Xype< zO9M}6kNsd7wHCAFz%28%P}9sY)IXB8hIM}Ssgc1v>Q^~Sr?QuUs8>0xbun7BQ(Bfs zW@$82_6fKD)dAh-3}NDU0C5qB3FwDcGpCuxSTH1>4_z`_Q<}945X^~my zu2GWCdwilxvs6h#k6#%A>(le1tpc+xVOFJ%A9BDAU+5NK> zvhE$g&6A{o19Q4>RhHh|$N%`q4MBN$lD-ZO`2`DjEDy?)YY)Kl3zYkg9V}z%wx4S5 zZ|T*fLWD2Je@Q4*i%ROXn#;%IM`9M&M1$6!gG*A6|{~L2JFkHva^Tch*q~ zy7?c5w4q@9{=qww@bf2m66c|I+#kfn^{bCTS0g*H(s^ zOjwd<_d1>4j=MDUqPKv5k9g*PtF0{xh&q>wS<)L?cr=VZ92giloAe!BP){>@9k6sv zLS=~9{VNm+0{1QH{=XI1YA!w5p}AEcQg116p^2WJRMT3`Pi_EV7s)DK0X_GvrMhiy zPa$gZD%H3oSrfZ&MgYa>eaPyh-=V_lNS+i?n>_yY2YNf4?G0tnM`KW?dH?ah&4EUn z8X_k;ektSTQ1NHF*j0gCY_(@yG9DKF8(^G5RfUtpS7pd%L%th;^3)B5!cIR(=w<5)-}oMOwr*U>f^yek zBn?XA$!c<+gGhPj{j=r|PtrfTm4Oi^hl~`Pg&GCn{-xEY4WYVo@~gKWT-ra2Y;FiR zhh{_MvyY&%y8l;MR)E3{%(0VxAGJQ6)qZGNFi47ujRwPBAI;M*3g^5h2XLmj2=aM# z4&a|Cv1E`D8u0tf;L@O-%HAD@&gAsunY}2GsecIBuO;i#F9iy{WBAuZUXPbS#@uGtfzIWnk@FHf(vk`tMl z10_1)0mLdvB3^oXuhGZ)P4ud1r>%?Ce5>yBaV@mW%Eh$Yo;6gD*fi!W31r@c;$9WK zXx1A#xWsu04-=L2_4j6ee)`ZM@l-L=87}3@VG2PM{^I{v0q0mC2z|dSv3-Wi<(NCJ zaCJH%=GIJ}ln3W)!yIF@*Px2hnW>||?MCj47KJVNg_y0{+=6Z^9fb#T%2aOnhyhd; zy}W6eDmk4Y{~39i${E~zC~%6WySe3r#Pd;SM0ex<8Fx@mWG73032p=KkNn9D*UOIW zC&+@ew=~K7iFcz&F_a`e9iMk*5L(C<s!Fd#a5bC zb#ag+(!TswII)^ZuuG%vHFlE%`1v?gz_WlKEt2`A(Tx6UU+5u z=4uubd1>rtglxU}!YXFUK}xy9RaB_wkn**TpguBqavC^Xy`s)b&efT87HVGRE`+o~ z0o4~@7ugrZV_gLn6xKeS`D%NT@RLeE1@S9FFQ z*~s%rUd>z5sSN6GFM~L3g+_8LWLiLRObI66G6sXr@qKkU;tw5UYv5Tj;L0GE5}B@G|Cj#X zF3yL_l(u0k8n{^{Ma71DN#?_v{~-bnk)cD-y-FrN{<`;afYF_%pMla&hp~|ZFx)?cYW!{0}4%kS#gN{5^%l=0viWq{Fl{!&ynKHE?YKdFLvyPPO9bAp-XlXzJn=Cu=XflE2@H46{ZS;{1 zCD8;_>8zYH${hb^{L*bDTk0arNd*Evtj=(jfat|dfx^WGSsM27?BT%PU;s~vY2*BCl@&GVG_=aO$`U`HCmNYIgRMl3bvlDvQpl?ROp4YJ_+2c&;p;! zes-Lq-+$x9O#oGmE4D`|Ab6ck&h3ow?! zFdxsEo2PC3TI(1;CbZlbojZ8e7T~W=kUe2Sz|FzR;n=$55Ywz>Z71d#w7KZCQR@XcRvf?nvqv@6sU10e)3&FjaaOe=&C3yyq)J%8z@i!N*S9v- z9qD$DPR?l6{BEu~Cc>@Ya=~1)xDu5$uZbp}r!roRy*ilFo`l&jY(ydmfZ1gCx3GFC z;#E#|qC|<1d}IIg_NbglOauG^BKLQ_Rpfa!<8J%Y)jHCT=?>q(xzm~5Q(qbB9){bM z(h@_r13A5Q8f>?f?G?iQn(n)_>GQ~LKjBth-CrHyF$z>lz8(-2)wSNrtXm7d$}c;d z0uNP2J3M7??#=pszgX=4b8_W`pEpd>QLZWG;9;5n=+8fP{Qc8^cBB_g;YYE0+eCua zmh;_#zx*m64lX#L160a+pAtllj$yS2mKnFoGrk$`^_B?jN52)m7p$>+R}4xoNlBr< zS&uQukXs>rq*ne~&Gq+)R)RHE6EVP`Q!G}s`NJE%kF{YLoiTL{wU%XRkLIb8^jwY| zXL{hC=4!3JS2VPKR9;A^$hzV6XUew`rJbz3r!x4X_NJKV>v-WFqLQt!0seU7D72SI zORzBKvhEw-wjJHNVAhOvDo1e#w0hkG7z5c4Hl72?9(9j3ZhuJn2~X{?_wm~dv%W4F zDrt|{KAkBw$k>q%i>pbqESio@i2T6!LgmJ2;@2|&1)>{g3 zJtwPDrikeq#hZ|xxhFm^3zi)b#d;k!iX*y4woiU`{UTm(t^Dz0r(Vb0$;#6?`48fg zryTFCgM=^CM#&XDfr~9V%(RYP1)>^ND!-S9K<#9oiu*Yie-517X84_?FFD<~bkmT- zbbdQ1ebUk{qW8{`nb`gGkD5P=f9Q4b9L+2g7Tm*()g(K4{pnB9j}J#}`=Tqoe1M(h{yK|ujw!HtL8oB*(B=x z&>*~9onqbB{i;m7*{8u;%>l)2xJvCdYYW8SKg%sz&6RJf>?<}^PC0SP;$<9jx=*hD zz$PAy!RnH{){@C^Ccwy-dl{80BD`F?dQ0md2gI@meBQFv7LKx}Dp9cxbe zSyl)Lt9xfeELjr^C8gNU)Uao7oHvb0==)1GI^;B~&%XRZ$Oqm>RA}$$tPPxd0#FAR zZPN@pXY45Z&}m?qp+ey+DpnS#IZzFP(}uI;hQekdwLWMjN3PY1)na_58{_qJG zqk%wQcH=;IXZOPGR_GuVz^%YaLN=Cpx=KL<$ z3*7n%#WmGUQn`1DsQ~FTN=dNBV0(fam!B1t&Vp}QfjA3x$QF~w zuCRK{5i7mB_2KdS&M(~vi`|>Qqz)!JyN{>jFrGu^V+X!hAX^(R94rUAe(`6qP+yzI z9x6$eG6l4;_72MLlvG%UW7XwjqL%&y*F^#Q-{F*#TOmid#*BSIctBpcSu$_cO&T;5 zYXBb2;*?zBVj_A^+FB{ma-yGx zeB>7|l=BCd?8(a4-LmZ=>|aHx3ruLLrZA~Q#ABPWRR_&mtfT`BXCm}3ojy3WO`oS12ept9Yao{WrRh1KvB|EGH& z57H2&;&9nP)d%SgOZ5TiP8lzP_s76}hBRhTLV;E93L;~{fl>KN&5~(Gb9*<$?2vyR z|5aN*MuL;qq%{-~>@;pQ-XFh&7}~NDcy%0dP~GI^H}Li+)b2U|o*o~KYH)cBPjG%rSeY+633Fwz@d#{fI-p88+Q zE6v=Wq);~EDgy;`232WVhcZp9#ljGWpB6p|9)uk_{i%t;`IiTcIzNffcY}BffPPjc ziKWzh^7vKGQ0SBfMNF}jSx#)?&(=Q=%~Lb#`%0$OY>@OZFCC;_YVG~KRIx1oQgM8@ z-7wt=aSJ0PYAxpDpM3jLAinAc|5!vt`K9R1hN`M72(M2sUg4AymKt0M&mQ(f4M~Xn zQ%fy{O=R%c_z<~E&Cv-~vHJtR&aV%P;a+h@x`{B<3AZJSaq+uZHxc^&E(m4L4c`B& z*eH6%zT8$=12-+IexDib?&Gy6^m@r5> zfb!LtqesPb+dNOsZB^$-erTja-1Xx0X9Ijc1@GU>XI83X=iLl&S|DwP|MY+ApSX%@ zhkKM$Qy;oo zJO2qU2%}jUotT6(Ytfx-FH&b6)%m;3vj*{8(U;wG_MgcOeR7;P0RqnrV4xQ1+Avt8Y?hIPus-R5x+`{rC0Xf=co&o4O|%v;x}5e z=y6*8Z9zpkGSQGS8@bzVu2YZCYvcAeP^X=81wt=wc~{zHG@vvEjxTuEK9c-iCId&& z&Ut3L>m|21=?->`?}$}bWICt!!gU{58jC#QjH(VTNz&vgu(<*=G#OY9@9oruA+FrEhT({(E zAEo)&d#}_V*FOHdAi?}}WyFs*!8Js;o6!P<3Ms2U8 z+J{wJ2Js@-Cqseed>i0Cv@&?VtT>IJ#AI>vRsGN07p+CJVmyyFLogJc+f|{bEcbgL zWtrhR3;UQ#J1-GM(cKI?ZSFS3Cc*ZAAJCt-qtxtpycYQC~(lwO=;$v;h^-kt~X!F6v^qrED1d zxF+kJzcfGX2P*$AhO&Z=O8x2+C+o#=iYhkJ&x(Ohy$A{(1uMtvc|1hj55 z)nTQlCF8mON(86AgWPLo+AmJz%7&S-MO8}tGx7AsqQZrLl?3mZpgMXR(+NdA$|1?H zNZ(aUxuae#QC@zWgpToPqLiK|S_t-GX`xMqA4m#l0qxjpq5Po*ioMH!Waq+J){;RH zB=(8R%ryQva@E$efAx+RL@HIEN?AEfV56sXE}lC-VQaLx51x`w5+}f8J~@pQAE)ts zgAYBU^3E-mT$5*D&WcgoZR47FSCKX6Bg+bUDRQrxoAx0^%g=cOy#?+uwMb!4QaTU^ppCkaX z`b4?K{SQa8kK3B)gciRe*92eW__ySU>+&D|e%lu?m9&dFR!sBieP*FZl*1CN(d{P| zeLAYir!k!i)>SLf$ChHSGVgd7Z`$gIeAV{E(k7|B%XTWZHg9=tiy}YW@EwOW1y!{0 z(MmtPW86T{v$rCU97CIf>m^6$>RfBbI_i2qdmK({63+kJ8&>9JzFZpp!~SY_s5_5$ zYhnRn=iL)U4>2*U0eBPVWno|%)jD~q8ib`OA#qsE3y61MYb>S`SfsCDsj?rl%F^p$!xXa$=H$J3W zR`Vp`P3B?qf_Z(-j5W^XurIk2^7=AhLiK}x#tk1LC4yXAaQd3N{q@7A_$_aduVcek zMOY}if2oP`-`$4(4(4giyE)kz{xmpxrANSN^mNZHMpW;Y>(iV?JNa6K=d+6`r-y@h z39Nu@X=Mr5O8TKAqxyNq@7qcNoEtq$8ArPI{Jln}opqZ;WyJTp4vPx=hb2qw3#|xF zQ4D5#=GM!OMq3yuFJ}KZjikV`ec{3bD(`(+BgjrQjMM24UvAJ#VN|vQZ$8k-|4e7T z*wM)=n}7|;HK^tMiiL6Fv+xA|zNxCZ_X)RA4Q66ir>y>wUyDsoB^I1WSM5}KdT%*F z)*tPR5EiDe5_KhUTFx~^Z`VypBzR)iv-z4j>>W#SAIp3ae>=RD5sry2(>0y3?Cbf< zr|(F+ii3IyCP}c-9vD> zjsZPnA-n^HO9`#sF33s_6K$eqBwx07X`y5x^9?9rg%Q>qx7 z=1w?%F^Auw=2mLn z^7*LtcuFtZ8Z6OJY5YuezW0KodmVzQgGIBB)!(=(zB+d!=8p_b4yl;^$9mxr*Oh`{ zcc=#8w+fc#8wT-GdVfWQGXHS>{+1%@cpbx_7yK(M`1?zjkNS(+#H%GDUY&xcQ?0QS z*Hw2gZQLqeIorz9UG-Nw-ez#Yj{}8|w=qf4p>1NbKUaNgW1b#}pG*~6qwlqXDs6s- zRZ828G||>nnEPI!)%&%ztuZna_(MR$eEAtyd-W8mGIWN;C0*rPNT9$reokA|Bh$@7 z(rz~;c(ktMSMZqZZn=Do1MA4UQKqWYo_O#ZbEWgna*nx}Y+m1ILnf-W5X_f5T<-G} zN#Nwp39q#8!{q;Z1&a=L!dBu`yI<_|Z|g|M ze^X9eX~rH6OOTvQMeu&iZsVZ}k06kHxi}2JwAbMBx+l}(m**;a+RA6oYj0$W!yO&+ zm$}hJ@L=d3Yttwp_lmQt`nUV zIUPA#TxIV1wCi!eTdsMZ*3C+Ll~er4!Ma&kr^U9VOQ1!wN}!FINx;d41kVz4)1&%D zj4MnskjmkLkBE_F?h;T~0P9MNUf5kosc z?L-Ex2GF!}dP{`VDK>(~1H9tsqH7~*#?5}n-@zCkq4MSlFOQkh#!ygAsZ-x|%hZ&I zZ)Q-OEK$xF2A;Uz4+?D)C(E(}zQ9ARU8H#Dma1n3gU%c8akNUu2{oYxm_;v_N*=Qu zDQ8;Wz|$yruYVRd?sF7zZRxi%jgRrpLGdmuP~J$0H29Wu~$#j+_0)9*9ybW(BU+t}AxzN$1W z3LcN=A=dF6t*O^X+Je*f9h70b`C-#l<%j5H`i~-{lMRo#nbVG-g`e{AWo{l1kGQcH zI5mxW>}>+hO*zJAU@CqIvOLD8Y%>I<{Fr|=uKe6Bhey8EE{$r7^{`%P9EWY>LsSjY zhm39u{bdNB=)R0*G000Ez5fw{Uyd_LL}^iu9=))*`y5R8Hkp_tB2_+Fwn07kDG%v{KpR zD=zxS(39Bnz4M5DiPc0zo@#9QU-?C;iz2&L>*hl{2l6MUVfAr3CD}~KopyKBmL$?%<(0eRHlCK<@SyiCl}FBVkwrONe~#52TYZ|^BACjJ zhX(H-F^AM8Bz@=9z#ZEkR^>7QIn%-7N9D%3o&`T3m|w2%p0cHWx*I4vxHP{02H|mG z9{l2_zR8-n*&7;HErlV$aNT0DJJK`w9fgJpy5*`DZNdXH19u8tr`-t&h9{F+sdq*; zgV{&F;v_hCs*d4f#lHm*>{nGO!FJHQ?4KVMPf(8YB|Fy-CXP2TDMxwNW4e%7i&t5a{LWWdwkg?zk3UEiJHcoDh->_ zD!*)4l(8Om;4CWs!Gh`eE5Qy|B6XmA2jy;tcNi#l=afBIHv&H?W%zHnX$Jdt6x#jR zCcrmSr2g8k>5;1AD>tz8|JjhfxOBG{vslsB@4DwjdU!k!UkMwP-O%~9*~{C!idA23 zH;}e1I**xG{aN9u_;*INH6rm&2=$iX$N8n(xeb}dhYwb?y}c7YE!=LX?7Von^?I`N zx~b#R<(b?SU*spq4~dZ$v{9;I?9q+YMA7Sobd(}W(T5-RS0@c%Zof5rz;&z&_ zt-H4|_=0%UWc&mclLk2!tVCsQT{`j9bNJ1V;Pc3T274POc^G&rc7OhJX+C~1x-na% z?xoDoE+%QzqXG3u;4Aj@y18w-=5U2)irlVh9RHE+YpX-HgB#Aqq?65E&2M*fKVL*p z6K)O2|8@Myn8@%jMyd6&q?p~hsre7$wN=@d4Z{`Jrx*~m!lz=sqBG!qG}Xm^xoFDl znb#}92-e{A>ATZHZD#XMe=yhiET1+-xi$@k%c(9AoqMi|jND_GN^QEaLyyggdpmkO zC@;#py&W}ZF6~2kf58JoWF^fwUt3$tW{zjG!2ejLz!klVyx+<)>Dzi&J z!O3F7shAe|-1S38xA}14!ue!d_b39ebmC~ytRN|=}##@#ijt&u* zynFGr!UKtXq;x8!Aq``Hi|nv-dttUMY^0ge^8q8<%&kMWW2n%g+ms?r-)nzOd6u>X zpW8c7u{&^Oz9IzCe@6{{o&v>5tY+p2RuwJ=*Tg1zbh{;B9uzLYc=SmMuBCOh1wPr< z3*z2hmyaE-m6)aiu5&ehqH)Vd1qlVNr+j-ui##o?mc8mQd{-&{d*U(oUfH=9ZH3CO zm!X+3=<}21&&*IeXQPds_3jChZ|$-5&I6c0bJXoHIb+gCi{;KBtCgjapPY4a=SUTa zgIN{1mveG#$|ob{U!$T3HJ_&A!K3c`ycCzbn~%)aUsVa-7F_7@XY;Rf|K0KGiLqs| zO*#WGf>LG$?>G~W01Fe}>mWeMIlqgHq^jL{JlqRbKVQz7D2kD70tGzhX~(Vymz58C ze2$8pQYyU91z_zK#ON>CTOWDT9_j0RzF2_B|J!_+Xq}_Nub*upH{;h<17}z3d18Q9 zp3Kc?5HAe7Ti#+!FK>Z@mTdSEe5+>VjNiGVIzvulo91S_?-anIHiAq&GO5tDtWeWD zmRbDU5x<)79Yp?}VDl3Hp|9}(3S&N;|LW(91pnv*S>%(1;C&)09;mZ{zs_DIG#q0r ziAQc+38*@%O@FSHN*|uG-20-~>adwNJZ~7L|MoQpLZf$QyJJ?tYYl6f2TEoM)rdYL z;8CiDoH%$&Snvq?9OTbX^Y?|+{+1ooBd+1=rfo3Zxe1d6UWvq(m}gb2q-yCwY*B`n6-4%bENTR>&M}*%h@nXd!6a74#eQW#~gn#&dR; zGhgD8Y3r=hc?!j^nh*LBjEq$=7R`6KnF*g);#Qxz;g2Mq2m&O^OWxpak(B7kzE^fC zDWe#tn4bo9-Lo9l)*7p704z+`e&JHWuS;0KRD0ByEk+t}zcO;r6NDv19wHy1^q9<1_f_z2f6&gGFz#ZX-(5 zL)=?(vZTpakzhJm-+I)?di%x+LGdtH1Zc^Ymgjvl%zUKfO)nXRJ^dIBmvNmioi9$3 z6fs%*dX@c=TCuB@^b@`BD=I9R{?%_P8#9d-t4mD%+jLeE2uxK7*yzzm;`a_38GrnW zuVtu^N!$KKmv_IvEENC;=~3~Hyhmk{H>}g*cJQC*jpWOWP9F3gq2i^WC}V-We8&MD zfxR(ChZ!e`w5TLo$xYN+I9sz+seiNbO!vIa>WQh9@1@7?Xe z>nB$jDdLT8kp$Nnlxw9Ah(cb&Ix2miC6*uwgKy5;J(bbb4QS&F1kd#F=|9b zuVNjK*%nrFt?I;q^!_a=MFH5wD26?={FEc!)K8|xHT1NjV&co$Fri#z3LSFEVCNgY za@O&LVC6_rmCaI@A+T+Asdkjc7nM)7=~#eJxT7=D+N}KN&Bp7Ke~J^S(CiOH-$%`f z?R#VqaS{RV3d4MFz&Ln>nq&<|yG2+`EoNKj%8FpCk2C=*;*OZktrHQ-sN7wH3<>#a zE)fJ?0zR^vTF>2U#j1?9$1xfUk1P8wzpd}*KCGK6Q*{R>Fm-q-ZjyZP0;_qeFK#l78{ zg_p;=%3EGNlgB1i$N1<3%+Mp9WL+7GtvgzCj5${b?N$T=qQN$jt?E(s$TWhy837|EU&= zqnfYjpBzi_%qw%*h}Vk75!8>Goe5JPJcc{$*mMgSkk2l(_vJ0Zk)=MI#G3vaj3plB zSBuj3v!~ibXYp5$?C!^JT&pkhKtFYzIIW$RsxZFR>KkzL9Aqn8VuR&av&c*B%7KSj z3F$-vbPVSgFK-|_KtGdM?O&z5C&#y>Kx@Lm=%4RF(xBSfo?*oQi3z`vESYAab7?GD z?X|;*-zGjhCxH(@z(!2KAYuQmzST2uv8~a0(o=qr)M85;mRj@j$mUixf*QDvk(l_| z(Pi9LxN9W*nhl*Z@=oH*n)|#28{kF zZ~t;+CsHjTrNkm{!{vXEcv@3Kr7M1))U5g!9W9dKsWZ!`!th6eRu0@#EM0{MbrZEL zDRK`DKWV{5=@E3eVK8@^#p?+7A?sX;h6bFm|wRw)t3j4UPZt zsS5FgzWQ}`WNY4z>4(A?x?{QPx;DSl-+Y%m&bMyMzK+lOME&Oq_1+Wtuu4P65!XVJ z4tV<(-4M#TcMs34=g=&Bcn|*qzK&%X`kks($+nW-AgcY;#&^r;gp97<^rrfACawrE}LLhF7GRB$G@D zTsN~guk`x%P-9fUcP@|5L+?7Vjb*f42QP+oXVREBZc``U;o3VFbu%($Q=pYPZ}4ut z(BCKE#n}tSGy>3BzuOOlHIw4bGb7RwB<0P3%8;Zum;hn{Bc0zL@)XA-V{)2KQ}s8T z2buUKFrB9>#dq>sYhlFDzK{~$9epo_#YZpG1d4MRu1olqikt(TC21jdV13Co*sCG-z0eYu~0cf%eE#c_O}Ezw6R44b|C-5DNT!z8I-ZRMx7ye%LA zYvnu1wyw(S=2FhI$&QSgW0rO)O_98#D&RN3nKl1o`y$e1c81XA;qmLUqP&jK2`BM4 zUIKS7IPH_)(;azY$@F(uyELYr)$HED{cHXP8P;g&me-232)*m#$>PD7L+O23fI%t1 zU6%x^A8)EYvi|Fdk;m+K8JA6i-H`B&?xQo>KFegUQul-=n-}}Cfmx3Tby(y+gJ!*DBG_j0* zHoxP}PRt}oJs*!OgV=Ef|3a{H#keyQtmQv8i4e8M7!J&==S>EJ6Nssy$Dft@j^>{R zG;|?2I>&+H)z7e2>WA4eieJh{&Cw$b@;({%;Qev|7s(ol)ty_{O=dC{C&%>EJT#U8 zsnmh_)9gB0;NkHjkr0R;-T*duqQ*T{*MweblIkK6E}gfBs4|OMcGWC8U%*Me=|*cKTabRY@Thf^Nc?EKA7GHU*~$%V)*eD;z!NzO_xKu@t*;N_2ZKE2M_DdO^{o85 z%%}_5>X|+0Jvj1vT?whv&Jp((zvUn@6Mc!;3e-hD-U{L*%D$JWAmB9&ft!5)w^bYahP2&he*Ja@{PcK?}xyucgqJ_u%w?~e+ka$lGt-%6NQ8WUQl z0flKqy7)mn4sN{xUxFNbu`=FOUahM18b3BlhloAc<8n(RP?Q9RPQ0qDb3WJ1|Hd{7 z-#NeW4OGjFjsp#_vxD%w6XI(?4FyZ_vKsTG}4uq#VK|-$@L!(*i{%~sl?Z$JPxr@+N{H3EdIPJt2Wdp&H3Q`NpV=38h znbLtzpz2K0y*I%J4+tlzH1_-r=Yl(9AfP-{5Y8zylMn5&rvB$%5L-fpDpi|Y58eh0 zh@y8}Tz1r;tKCni4b!b@`_qT^sk0^x`UfS%TTYWUjq|=T?FPkzkx0RV`P{o$^9jKpVI@{h*ct?>%k3qqa~jBz;1opdP%y56`-#TnUC7 zwEZ3sp|_SAh}(RPnSVN!vxH}Kz2bJFkgCK$kt3kBlSZbF6vnCVYR`J1)F{jzdO}h* z8?Ax(zemvd*LLH}x0m2Ag#Ud0F?OFiOp4Dd;=M}G2-;fOUb?U5I~zdSKtRxrck$pIY3fdPHkn5!A&cYXbWL0Hf=P%_4#4@g za3YM^BV+bYL(Apadn4#@T*Zl5$b;pk-o9)ADA~~hyg!1kb>!P$d>fk0-cQ&oK*YTj z&aucZ0j{S65cN6Ly*UgYEMs?0Dn)|RnwbEcPzDu{M2CD%bo&#Fo!9o33_kta11S5D zbm=(q7j1Y{8T zQ2kmb0dn5$Jf$k%8*Badp7LQOS#0ugl?W#ADLU~`=?!?nZ_hOcx}xQ6JEo3QJefn0VPSHyOs%ztGZ$dpza}qGj4O+#z@>qu$fzE@d(!! z<%<(D%7Tck_zz?KDNKZ8WuoWY4}PciUu-y^`dG};or@PF2JE14zLi!;(S6O3mi_jp z7pKfiG(s+3#s9LGF-CM`j0jm{p+eUmGE>N^Z*LC1+cn6O2rVsq$HkwX=TMg`*S<9F z9my+9syt3zVMWtMlYXEM z=5$C1>}MAx__~zsFmi9y*+GAVt6`!w=up|Y{Mz&-yMrr;O)*x0{@rH1b=6WCT8JNy zZ!Xr^Z_k_eB`Jeh%zC{&E3X`zmw1>%NU5sZdwf3gck@i(<1{Ay_|?vZ6@}HquYWWp z4Ti&n1VPgsC`^1rO4z^8Gn{n3tIF5P*pwUAIu_JLWjzg8t=R1Z z>x^eIZzhN2S3H0&MfaDc5wPyS0_>9HO$hj~Q39{ICpOW~($#}&sWB*>_D*vhm_n+K|Pc%Q~Pod5~rOv(I7o5DKR8xS!=lv>p5hmXkg+IyK;zIopT21>l#?%!t zn@;@WfMMwV+}P~BY4^bZp?v#2?e$WHH?^_s7dppRY)(Cfg(I6)8JFfFLT%^~kO_l1 zm1c(IJ333Pkt{#%1B|geLYEC4)gO#h6sX2kzC8M3g25ilJio6J*YG82UO2c-M*v;q z!yTI5j+3+(pw0_e)2JhA8>9198{W<|HlQ9Tjv8(iHnOQji11?qAwwt^Fi1GMEiU>>WZRAN zx(v7@oP=)mM(+@+CnmJyf)hnmaSid<6f(4&ebE~IniAcgJhe&~buNs2@e^|wCH2?6 z;^i8Meku4qNtLf4EK4x|zX& z>lqWsn~}RJVxe{>;FrsL*|T_1cJ?PN6&q(Q8fl!7$347=F%>N$%dUOzFrdoIyMQ^2 zkGN_#l4=@qzDLn`&lRS^f?q=y#g#c2dBokg8$P*9!n)F zph>~Qgox)7%8h$uPIP*#+8>@%h}m4Tie^Gh=9mmbOC5L=StfP0Ru&eW?6d=R9!IFS zfVzh{xgt0n^g~LtetlFs*0&fbT>erqje+?5&affV{$=Eo*I*uW@}_?=^tC~*T=zj_ zMJg)dsVrI%+{RjP4jHzjaB3BVI>|!qP-gA3UIIe7d6)kJ%)W0~=}LN9f6(Iwm>!H0 zyuYj|Z*ZkqXyr)-ajlgP!`7?U37%<8Wx6r}REJhdRzll>!93EyweDTYb zzuiBFhSO$pR2NN+9Q~hmzVolC?fE+NCZHmqvVX5=8+4feX?M9WK&KkPbD0$;MO zrT8Xi51!PFnB<|~7=L(R=r9Wn9lm7DoO@Z(n1!6Fd;KWIS4;|zlR9@Byru#&D+llo zooLRk5lvO2raOXkGDctiP^!Ui-DTngOy1=be6*%d=aj4Pm|!Xm0!oPAd6G5l?Fr9u z5%qa(o^;KhkI(HsEr?}tFDzoJ>+*jFaNJ&>VMr(2gHNiI&juw<3^6^)w>>2YP_yZ3 z^f);@eJnw+pT;eY{Z_8awfysd(VjpxZ`LSDrQ?!9Dj7!EU#5ZXZ~*JDW5uNXXo@l| zB$Bxy5)jk2+Du70C$-H!g9w2_Q0S+ek-j#~0#*-)_dlno^8%0+AP3F!?LVf{b*yEH zNQQoj0$r4pc`OMB!>lyw2dw^CLjG%F;IrAzKi{3&~={7~t# z#w2Ps_Qlx%K_I=7(}{Jm{FRH{s$F9EYBBSyXhgnG&dpV0+~qD+feuKGA7mJYDhN5_ z36A~pw3D8!*CyF*{+@R1PU`#%w7Vb=(dx*PXNoQ&x&F5zUL#JZbf8@iw!Xs4_{lzX6OI44UZ{7Cp=xq&j08LTSJeIUEcHpu`MNAf7PVhMRP< zh6~{$YJClwVCnaHt1Z^U?VTFAE7sMAG#xoWV?fvI<4oCwcV00Q6ZbHw^%1RC0VxT) ztYdVqov_FR&gC4WA+-M6x5L!0+AIi#7=ph6VXhIn*v|wSa^T+$T18>6G`u=g;ZA%B zx~S)Lu{pbn%XN%Qon;}C?OZMj`O|&O=GZKZXJg|LZ@%SHBtjorIjP<_9co1P+%r(5 zuIf1^mgC2)6TOXM*wofR2eG3fZ3F?ax1K+414#@nnV2Z_QaOa|`F&UHMC5!Xka(8a z2wNDG$)>WhRXAAkEQwVPYNx`H2uR}a$)7Q6dW#w+e>N#;6ktx848?s)%yd8jEecQ# z;x|vnlLFf_u0RduAm_jJsJC*Ij#`dAbVBt2CYPr3R)y%za1l#Pq%7L+F?VhIdVwv6 zh~1!?TtJ_qC|>(I2&#mu%c-hK3au|hf^CX=KScun`Oc~-nlw6A9by%WRuo~eX!|}i zAGx}a=NoPTnyQkfpH-xv4Z6rrPr2{G(1@*TG~w;EG!EH>D|mL50dfxI2E$~?NDlaI zbgdzf-WtoiYAC6p6bn`Ay{m_ib8*W1Xz>r$-zziB$0)(4FvUt(UKEn}@I`R%wi$t@ z()Z=_16GGu&nKW6D4pMG`<@}Pg` z`W1zr^Na`v;y zp7;ZKV;iGJVakZbZc@X=R>F2V$srv&LQtP(g(;G75{gO``R<9>kdOYYujpX z_|)7=4m8m*Jm*1e@3(#{FyUPZm^)GU$*xs6I+bUeM&=J`WMF|NDU8By7YWWCMRy|h?V1FWwma{;%CfyU_LpC zv*I46Xxl)^!;BUAw9canDMoKoliRPJ8dT?B=Fv*n8j`)0Bd`(gT^%M{s>q=|syUs? zT%;`xG2tQ@PRv}1#OL}Y_&Hj#hA)k%s~#q5>XO{t)5*R4RT~kCw5&2_Q)$$peV%bZ&;D&YDwV7`jRn_@@n@BlTF_xcsNIozRWiUGUG4Mz zL5V{v!F$($e{_h`8=ElXa{6HX2H69u|b=u&^Y5!+EYeFVw!GXvqrG~w0jBKn@^a&Yx&c|Mh! zju(!;tPvBDyIOo2z)TenBw)D`7{&gmZ6zFFsFV%V>ik1rfPmpTpwqqqtS78l&O0|D zp+!sB;5axA3Jtfxns1g=(SA%OYJz>0p7&V04=oY^XZyZTYP1|`1g{#4aCVSWgQ>CR zlc@l{B>gsxLAsH>#?Mi0Ht{eBx`@%dY@t(zOCAHaW z-KkOu09$(oY=GD0YTK{CXF(kcLgDeIdtZW!i!V4N+FSIsqb<_HXGb9{p3($qBM^Dl z0NlH!17Mp_(8!v4MK1OjmX8ZJudT>kG2%FRow6jjSTUHq0$t5rMKRy8AalT;0dt@#-t7a>RZw`E6ZTse1&$m2x%!VxE4uK~`E-rB4y zriwldzqSd_8(CCu1c+qBwR1aXw3RHnzD?kJ6BAC*{pHx-Q*6CVQM4Rx2L<#*I zm4|+EKW8#?w-|SL(UDw2mhBl?p_^618aJ~{ssKTg>g{VUsi^4YJJ#NyT|_^leisX# z@pR6}Tin#(5H+0K_OW!cLnmG1f5smAv{5Jc=!aTZG#U#a!VH}>VVgS1~HO9A~QEW!F=<2NGAi%y)VY%l{Ja+Pi}T8Rk9{ryJT%(W>DJ#wh=~M&-=*j+p}heZnolY6N>;U6C#8UAUGy_i zj_(=1$u-bo)Cdo-OYX^=N_p%7N(D0|$e-bWbL5fASYtYl(5ET=?A$Hn4V7~zCTk^m zqkf#RPqMfe)n58lnlPyVP|@w(UW2tE&D>(h?@{A~G^(RgHu|6!4JMK8fc)^p^6TG( z%lGe%Z|P7VUGIC|mycP4F~vYXP31^;k;};y-Be(I-`Pk8B6m9~@FbgHJ8o4xZZaRs6JSKIJqEYZx_fA^Gvq zx~{>bbnW0hg&BEIHd>y1PS%zd)7{jJWx?+WdRl)Doq0&B8-v>qzV9LLyx+VJz|vVl zdpaTf{v29x9FApadbt-acznD$K)~xA!qBe{vQHOvhw`z<4}Z43roP9Uh;V%A8gT#X z+lL4F&@GgQV%p)DDMvP~6G~>Aj8W0h3bq-pdz1-oimmNvK@I&@6b$XIDoeX-*(TNr z-J`YSa``N^E$PekU>29AP0Ku2k{9cBPBsS=G5k?l1R5oHN?enki)tK2~|3lj>; z4IYPdomdUd?Krkkw{Ab%Neg|kz+xN3TI}!-2Czr;?2dE&-EACz*E}AGps3%7Ej(!Y z$lR24nX@WM1Uuh&6T_vAge7~IS1RZf7G=fkRdzh0PVAiDdLk=k8k&<}ZQt^#B+Pz( ziBw{cJMGnQ=`GyFO68Nd&VWc6F4LntZ7I;8^E4B^(r}y+$9A8zjtTsWqSKp0>k6sp|Z@t^EETG2fmOCv}l zIKsDUR8Y|?!Vq87TBeBe$wEu=^BHDwSw|xxlF#I5MiWe9@dg`7lU@5-BmKc~X$g?* z;;L{^O&r^tNp?Xg%dOZUZ)H9gQhDfh-qC^#2E5WV$;5Jvr8##d+F5dCK~*aAE99() zSO0nzkqUFHj;4ACw?kJ)JJ7`5b$og4MMrBLP{U<9N(Ezc?qFZy`bB4z>Tb_9^T}_EjrblVzN;G-fM_?|<6oHe>O!5n( zR6(%j%~4&{nVUJS?j~&5!2=T|IZh-+FZAHIE7Y1Qsku+d+xE_$2YGlz(7H-Yx%m~4 z)jLoCFk~>;X&)*3>{k5ASO7K)P9hb(ovWj{qv1+N(2|MPr89fQaLQ=r!<>^w) zMGxrG{aBNs*7;Jn4tqGp+$EDVka;14toqd>d*kmgNj4MAibD?{O+yiPRj`JXW9Z*OR;{Khi zr{*&vZGpXPzrSf#@%3F0=iW0P|6cz$YMp9nHqVqg_*3fffPcfQD&Yc8LN!tFB#Aaw zVo19JMcmw@3R}G0a~uDze)ofJ4ICMKU4qB!Be5{i^z&uw2cW5Tbjh^OL-dHy+br|( zw}=rD1e`5IP_|(1#dSCPK-YjKj7#!ylk$9`)|8IasXPGedU@CK?o1%&zQydsVEC9k z7)T9Ek@DC1lj@S*gA!u}jJ;Vy65_0ez@s$+iNRVtPm;_MpkUk&Od@shsITB^u}6mD ziN8=d0XnO=BswqA{#De@Dxe&@JMGVXe}g3u{1tg)^5q)2oWX$yQm!`G7TP6UqbT-E}#og-!s3=MN~KwM+S*gK~L>?OSe;bw1er$08Pn; z?@qzIqLG(dYxm6cY!oe($<-Ss1ZRHr3Zf@gG~3N_HWHCL+J0onTE_OF%?`f*a@88L zH~5OLT13)Dl|Zcn`npcP<$XxDLG31Vj+3Rr*SeD$*!NHAA@Sie721%EFa@DWVt}fU zGxtCR+;BDH)LXHqmD9&L`WPLBzY%LXxIwR2nHGLNB$Yqs_lg53?c4tu#Dv3klh&>2 zK>~4UzBtk%mx~uzpFcnWpAa&Wdu)a+{Oe0#Y!#Rv^xRQtc4NRLQb&~Bn-D(Z^X<#G z-SV@0sR+0bcXV_D+sbYbZ*zVloA#|>!R1m4b8*gL!mE^mL+Y#wDBboziKb|Sh?blc zTi8B{4t2W0NTZ~^Bd+b-vZZ?ks<8{avsJ;;1_4_sUebv@D{XZAA)5)*rg|mn9P>>tgtVH3 zS@^ZRl8LA&1&VY5=F^yb7eFw$w;gHw>vE%XZlfP|!y=JSaIv*Mmu_3zyhAnV+dF-Z z<*xa??%wDtm1eN@T$;pV=vEo5B4m+}%3(a2KOSe4sQeoR9O@@+o4f?i+ zGSe1wp1bpd8WJAZZ0iVJd6OcN8gv79SDTDkocx3U-{IQ=q^M;W@%gRPvquFx3(6}k z2Z}|Hz7eDq#+Zwg&U`iwFcqu(%?@DjBMW?b<>y&tZ#3?}&y4;-QNeQyc^}D?UW29swLKbnQ5F zPl2OIqQ)Rqf=8nw3&+m#yCK(`vQzhu8B!%Lf;SbInDvJr;pupYv&8}H@?roxQy}jW}%>(drC*ga`AfU|C1 zj&5H3RMV3gHhO*_(Nj?*dQ*DJ3d~`A{1&j}%FzO!(XqFz?ZZm0Q9OGE^L%hk!u;UD z?f7eF^PUu(47gyP)k^t%zSqz9d2Po)OCq6qp)5T^&p8=YHJ>eX@5WXpj9eX)v$R6W zVJNw_aG(SThIOQ5aAU@~>ehF?7IP?!hAKc9vqUzN28?Jc+-LesD5S$&t7a+4~5#t zUbpNw9P$qG1z$#xZkFA;t1r;8+aj=Amez)D_~M@r#GvBtP5l z8;C6w3J1G?PqZkgU@Owr-pg1hKbvV8Xh=hrR`hO<28o5^h$)k&Z$3LuchOFvZzN)mY@=SNBQR&E6XS5~4P`R5m zwEK_ptbM&A5(^p;H62ehlj?<5WSYNG(fTTe3AAo+-MXXNcp<1NVJXVv#zO4{Msj%N za#k4MIzWezl=y9n@dsKjpXMC{3K;i<+z7O0g3w;He?rCbq*(Lrcsn}e>5%Vb5VRS7 zdi0zR0e>z!eYr>5>0EO`HW%YWYMkv9B%9mhioRNqmf1*zVpxBdji}e9!!dm`w+Oq1 z&W}FR+4lSuZv33?sP~YtR=e&G+3m0@6FRed?Dw~x%Sid{Z4Rck9Stiimcru+Qk9Wb z(U$8=JR}kAf?cds zzjMwT5iRdfpU%Egf1Xic!#GvNd37eSaIBG(GLo_CF9^EX)zqvjS@7Ha)fWB81^OhC z^Aj-dg+FYe`s@FkjG+B}WwUzA`Go!v$lbgS3C1eZ_AR61t^28oLtH_Z#Dycq1=q6u z3~YiS9-bE%b2}flAdUxo_ph3=$!W2M+$QrQmR7G~E$Q?gUL1+B48Ya#3^)H?u?HWS z7yq4g#zyTC z`1*}OTg36M=F)I<)Cj0uAj&p1dSNn3X}xnEY4dsM&!#ob(!zpa80871=97%B-ih-8 zvl&_|>;1Qr+EC4@u^|JPiq6m7&^?BI&&;#63~f)%Lhb-ti1&2wGPz7p=+%sUU7!B2 z-VDj|(PG05ytX1dp&CqJ&TC!{lsI#v7s`k)uc`1FuC*>6Dl0p51piNVECrB|d-9;X7cyTJ>nU87FZ*jf4Q!OS?7O7BJAPOi>48EJX)HywWp$%rwn~90 zeP)vX60G@ZMQ2@tPh(CMp8L7nU%aC>C&h#4^`>S=jn&HN`S4pgLG-DobPDZ1!;SJwwVGpaVOhRaFP&}zZ}m7= zS`slpS;)FWIU4{G&UEPT7$i>+5s%^Aqoge26=8zLU30zcwT!(RH?N3zt?!OM`89Ma@bCw{{Ye01`+ifoaJl5f=j(hp2~r3bXo zW&|5qeA|}%%eZChXCsDrJnGnHA~JxMv&r(Pm$s4q2RZkgEIji86KYAa(J~iOh?mF-&-@ z0CeC~U6`jVF(fj$Gvbf#I?KGX&49Y)4~AFPBSVl#`33$+=-#LUyNuo?b}AD2CWlmF z7U)a9AdqKPVVB@CzqWCf*}wmp?;;U)+{6)~73UoTEGW;Ht`C}Q4tjhU&fkIEMF=Ha zb9Ni)I5{{#6Dw*ZHL%7CNP~BScAG;T=%f9U{`)RNF==SOE{>z#`?*mHGI={-!kGK9;K(I1k9CkZhw*IdT4s0jGhX)j&#GAq_hR;_>nX7&G z1kB#_+aB`qh8GJO_y7Z$HAgv0u13zR*HnS=KQ(yEjJ`5$ zkH2_qZ*8>=$A=I$NOMhVOk5sbD-+n7$wYCb7~cBr430HoMleUWhMiEHT zA4^T2eA~u#cyzG2MVx+VIPDFa{o+b2>F=G<(t8ZD0J*2@OHTV#1pF&(n$AW)OFxeq zM{~xD?fk27nXUz7MtSt9DSiKncZMzk8RUEF^nogLFL*AXp13cCVn_We&1l9z=XL+Z z+5K_KAA2wB{4VN0Xq(Xr?SF!pHtLMcQJ2(aw}~X$th`|}O@1$f3@!-y-@|w5yuu=z zN6+v7s{`813H(|>Z8o8;W6-R+`ap4=H2JR-C&&ws5^dQ^Z3c+6+fL>M>l-97%JCJ{ zMBD%LMK?7-7B!-bn=f$g75(RfgmzBiFec;wQ;`R@z|`&nBZl9>l#z-oGbIxawvVkj zg8p5FjTQYYJEtw>*?xemkaaukjGiX{_VV^pMvwyP1hrB^z_17W`^#AXsN?J!ZndB0 zJl(Gk3Az09Ux)plwB>&v|9Rj)5B%qW|2*)Y2mbTGe;)YH1OLByAk^;&ewDQ { + logger.apiReq(req) + + const successCode = constants.HTTP_CODE_SUCCESS + const errorCodes = [ + { + code: constants.HTTP_CODE_UNAUTHORIZED, + errors: [Errors.AuthenticationError] + }, + { + code: constants.HTTP_CODE_NOT_FOUND, + errors: [Errors.NotFoundError] + } + ] + + await keycloak.protect(['SRE', 'Developer', 'Viewer'])(req, res, async () => { + const listMicroserviceByPubTagEndPoint = ResponseDecorator.handleErrors(MicroservicesController.listMicroserviceByPubTagEndPoint, + successCode, errorCodes) + const responseObject = await listMicroserviceByPubTagEndPoint(req) + const user = req.kauth.grant.access_token.content.preferred_username + res + .status(responseObject.code) + .send(responseObject.body) + + logger.apiRes({ req: req, user: user, res: responseObject }) + }) + } + }, + { + method: 'get', + path: '/api/v3/microservices/sub/:tag', + middleware: async (req, res) => { + logger.apiReq(req) + + const successCode = constants.HTTP_CODE_SUCCESS + const errorCodes = [ + { + code: constants.HTTP_CODE_UNAUTHORIZED, + errors: [Errors.AuthenticationError] + }, + { + code: constants.HTTP_CODE_NOT_FOUND, + errors: [Errors.NotFoundError] + } + ] + + await keycloak.protect(['SRE', 'Developer', 'Viewer'])(req, res, async () => { + const listMicroserviceBySubTagEndPoint = ResponseDecorator.handleErrors(MicroservicesController.listMicroserviceBySubTagEndPoint, + successCode, errorCodes) + const responseObject = await listMicroserviceBySubTagEndPoint(req) + const user = req.kauth.grant.access_token.content.preferred_username + res + .status(responseObject.code) + .send(responseObject.body) + + logger.apiRes({ req: req, user: user, res: responseObject }) + }) + } + }, { method: 'patch', path: '/api/v3/microservices/:uuid', diff --git a/src/schemas/iofog.js b/src/schemas/iofog.js index 5cda9e7fb..80ad9004f 100644 --- a/src/schemas/iofog.js +++ b/src/schemas/iofog.js @@ -20,6 +20,7 @@ const iofogCreate = { 'latitude': { 'type': 'number', 'minimum': -90, 'maximum': 90 }, 'longitude': { 'type': 'number', 'minimum': -180, 'maximum': 180 }, 'description': { 'type': 'string' }, + 'networkInterface': { 'type': 'string' }, 'dockerUrl': { 'type': 'string' }, 'diskLimit': { 'type': 'integer', 'minimum': 0 }, 'diskDirectory': { 'type': 'string' }, @@ -43,6 +44,13 @@ const iofogCreate = { 'messagingPort': { 'type': 'integer', 'minimum': 1, 'maximum': 65535 }, 'interRouterPort': { 'type': 'integer', 'minimum': 1, 'maximum': 65535 }, 'edgeRouterPort': { 'type': 'integer', 'minimum': 1, 'maximum': 65535 }, + 'requireSsl': { 'type': 'string' }, + 'sslProfile': { 'type': 'string' }, + 'saslMechanisms': { 'type': 'string' }, + 'authenticatePeer': { 'type': 'string' }, + 'caCert': { 'type': 'string' }, + 'tlsCert': { 'type': 'string' }, + 'tlsKey': { 'type': 'string' }, 'host': { 'type': 'string' }, 'tags': { 'type': 'array', @@ -82,6 +90,7 @@ const iofogUpdate = { 'latitude': { 'type': 'number', 'minimum': -90, 'maximum': 90 }, 'longitude': { 'type': 'number', 'minimum': -180, 'maximum': 180 }, 'description': { 'type': 'string' }, + 'networkInterface': { 'type': 'string' }, 'dockerUrl': { 'type': 'string' }, 'diskLimit': { 'type': 'integer', 'minimum': 0 }, 'diskDirectory': { 'type': 'string' }, @@ -105,6 +114,13 @@ const iofogUpdate = { 'messagingPort': { 'type': 'integer', 'minimum': 1, 'maximum': 65535 }, 'interRouterPort': { 'type': 'integer', 'minimum': 1, 'maximum': 65535 }, 'edgeRouterPort': { 'type': 'integer', 'minimum': 1, 'maximum': 65535 }, + 'requireSsl': { 'type': 'string' }, + 'sslProfile': { 'type': 'string' }, + 'saslMechanisms': { 'type': 'string' }, + 'authenticatePeer': { 'type': 'string' }, + 'caCert': { 'type': 'string' }, + 'tlsCert': { 'type': 'string' }, + 'tlsKey': { 'type': 'string' }, 'host': { 'type': 'string' }, 'upstreamRouters': { 'type': 'array', @@ -239,6 +255,13 @@ const defaultRouterCreate = { 'messagingPort': { 'type': 'integer', 'minimum': 1, 'maximum': 65535 }, 'interRouterPort': { 'type': 'integer', 'minimum': 1, 'maximum': 65535 }, 'edgeRouterPort': { 'type': 'integer', 'minimum': 1, 'maximum': 65535 }, + 'requireSsl': { 'type': 'string' }, + 'sslProfile': { 'type': 'string' }, + 'saslMechanisms': { 'type': 'string' }, + 'authenticatePeer': { 'type': 'string' }, + 'caCert': { 'type': 'string' }, + 'tlsCert': { 'type': 'string' }, + 'tlsKey': { 'type': 'string' }, 'host': { 'type': 'string' } }, 'required': ['host'], diff --git a/src/schemas/microservice.js b/src/schemas/microservice.js index 23b07f2f5..92fde6ea1 100644 --- a/src/schemas/microservice.js +++ b/src/schemas/microservice.js @@ -55,7 +55,15 @@ const microserviceCreate = { 'items': { 'type': 'string' } }, 'runAsUser': { 'type': 'string' }, 'platform': { 'type': 'string' }, - 'runtime': { 'type': 'string' } + 'runtime': { 'type': 'string' }, + 'pubTags': { + 'type': 'array', + 'items': { 'type': 'string' } + }, + 'subTags': { + 'type': 'array', + 'items': { 'type': 'string' } + } }, 'required': ['name'], 'additionalProperties': true @@ -102,7 +110,15 @@ const microserviceUpdate = { 'items': { 'type': 'string' } }, 'runAsUser': { 'type': 'string' }, 'platform': { 'type': 'string' }, - 'runtime': { 'type': 'string' } + 'runtime': { 'type': 'string' }, + 'pubTags': { + 'type': 'array', + 'items': { 'type': 'string' } + }, + 'subTags': { + 'type': 'array', + 'items': { 'type': 'string' } + } }, 'additionalProperties': true } @@ -146,9 +162,8 @@ const ports = { 'properties': { 'internal': { 'type': 'integer' }, 'external': { 'type': 'integer' }, - 'public': { '$ref': '/publicPort' }, - 'proxy': { type: 'boolean' }, - 'protocol': { 'enum': ['tcp', 'udp'] } + 'protocol': { 'enum': ['tcp', 'udp'] }, + 'public': { '$ref': '/publicPort' } }, 'required': ['internal', 'external'], 'additionalProperties': true diff --git a/src/services/iofog-service.js b/src/services/iofog-service.js index c2505bf0f..1255c82d0 100644 --- a/src/services/iofog-service.js +++ b/src/services/iofog-service.js @@ -48,6 +48,7 @@ async function createFogEndPoint (fogData, isCLI, transaction) { longitude: fogData.longitude, gpsMode: fogData.latitude || fogData.longitude ? 'manual' : undefined, description: fogData.description, + networkInterface: fogData.networkInterface, dockerUrl: fogData.dockerUrl, diskLimit: fogData.diskLimit, diskDirectory: fogData.diskDirectory, @@ -159,6 +160,7 @@ async function updateFogEndPoint (fogData, isCLI, transaction) { longitude: fogData.longitude, gpsMode: fogData.latitude || fogData.longitude ? 'manual' : undefined, description: fogData.description, + networkInterface: fogData.networkInterface, dockerUrl: fogData.dockerUrl, diskLimit: fogData.diskLimit, diskDirectory: fogData.diskDirectory, @@ -211,6 +213,13 @@ async function updateFogEndPoint (fogData, isCLI, transaction) { const messagingPort = fogData.messagingPort || (router ? router.messagingPort : null) const interRouterPort = fogData.interRouterPort || (router ? router.interRouterPort : null) const edgeRouterPort = fogData.edgeRouterPort || (router ? router.edgeRouterPort : null) + const requireSsl = fogData.requireSsl || (router ? router.requireSsl : null) + const sslProfile = fogData.sslProfile || (router ? router.sslProfile : null) + const saslMechanisms = fogData.saslMechanisms || (router ? router.saslMechanisms : null) + const authenticatePeer = fogData.authenticatePeer || (router ? router.authenticatePeer : null) + const caCert = fogData.caCert || (router ? router.caCert : null) + const tlsCert = fogData.tlsCert || (router ? router.tlsCert : null) + const tlsKey = fogData.tlsKey || (router ? router.tlsKey : null) let networkRouter // const isSystem = updateFogData.isSystem === undefined ? oldFog.isSystem : updateFogData.isSystem @@ -237,7 +246,7 @@ async function updateFogEndPoint (fogData, isCLI, transaction) { } else { // Update existing router networkRouter = await RouterService.updateRouter(router, { - messagingPort, interRouterPort, edgeRouterPort, isEdge: routerMode === 'edge', host + messagingPort, interRouterPort, edgeRouterPort, isEdge: routerMode === 'edge', host, requireSsl, sslProfile, saslMechanisms, authenticatePeer, caCert, tlsCert, tlsKey }, upstreamRouters) await ChangeTrackingService.update(fogData.uuid, ChangeTrackingService.events.routerChanged, transaction) } diff --git a/src/services/microservice-ports/default.js b/src/services/microservice-ports/default.js index a80eca2d0..d5c233782 100644 --- a/src/services/microservice-ports/default.js +++ b/src/services/microservice-ports/default.js @@ -84,7 +84,7 @@ async function validatePortMapping (agent, mapping, availablePublicPortsByHost, } let host if (mapping.public.router && mapping.public.router.host && mapping.public.router.host !== DEFAULT_ROUTER_NAME) { - host = await FogManager.findOne({ uuid: mapping.public.host }, transaction) + host = await FogManager.findOne({ uuid: mapping.public.router.host }, transaction) if (!host) { throw new Errors.ValidationError(AppHelper.formatMessage(ErrorMessages.INVALID_ROUTER_HOST, mapping.public.host)) } @@ -168,12 +168,23 @@ async function validatePublicPortAppHostTemplate (extraHost, templateArgs, msvc, } const ports = await MicroservicePortManager.findAllPublicPorts({ microserviceUuid: msvc.uuid }, transaction) + for (const port of ports) { if (port.publicPort.publicPort === +(templateArgs[4])) { - const fog = await FogManager.findOne({ uuid: port.publicPort.hostId }, transaction) - extraHost.publicPort = port.publicPort.publicPort - extraHost.targetFogUuid = fog.uuid - extraHost.value = fog.host || fog.ipAddress + if (port.publicPort.hostId) { + const fog = await FogManager.findOne({ uuid: port.publicPort.hostId }, transaction) + extraHost.publicPort = port.publicPort.publicPort + extraHost.targetFogUuid = fog.uuid + extraHost.value = fog.host || fog.ipAddress + } else { + extraHost.publicPort = port.publicPort.publicPort + extraHost.targetFogUuid = null + extraHost.value = lget( + await ConfigManager.findOne({ key: DEFAULT_PROXY_HOST }, transaction), + 'value', + 'undefined-proxy-host' + ) + } return extraHost } } diff --git a/src/services/microservices-service.js b/src/services/microservices-service.js index c919d2770..a0bc47fad 100644 --- a/src/services/microservices-service.js +++ b/src/services/microservices-service.js @@ -37,6 +37,35 @@ const MicroserviceExtraHostManager = require('../data/managers/microservice-extr const { VOLUME_MAPPING_DEFAULT } = require('../helpers/constants') const constants = require('../helpers/constants') const isEqual = require('lodash/isEqual') +const TagsManager = require('../data/managers/tags-manager') + +async function _setPubTags (microserviceModel, tagsArray, transaction) { + if (tagsArray) { + let tags = [] + for (const tag of tagsArray) { + let tagModel = await TagsManager.findOne({ value: tag }, transaction) + if (!tagModel) { + tagModel = await TagsManager.create({ value: tag }, transaction) + } + tags.push(tagModel) + } + await microserviceModel.setPubTags(tags) + } +} + +async function _setSubTags (microserviceModel, tagsArray, transaction) { + if (tagsArray) { + let tags = [] + for (const tag of tagsArray) { + let tagModel = await TagsManager.findOne({ value: tag }, transaction) + if (!tagModel) { + tagModel = await TagsManager.create({ value: tag }, transaction) + } + tags.push(tagModel) + } + await microserviceModel.setSubTags(tags) + } +} async function listMicroservicesEndPoint (opt, isCLI, transaction) { // API retro compatibility @@ -296,6 +325,37 @@ async function createMicroserviceEndPoint (microserviceData, isCLI, transaction) await _createVolumeMappings(microservice, microserviceData.volumeMappings, transaction) } + if (microserviceData.pubTags) { + await _setPubTags(microservice, microserviceData.pubTags, transaction) + } + + if (microserviceData.subTags) { + await _setSubTags(microservice, microserviceData.subTags, transaction) + const fogsNeedUpdate = new Set() + for (const tag of microserviceData.subTags) { + try { + const where = { + delete: false, + '$pubTags.value$': tag + } + // Get fog nodes with microservices for the given pubTag + const response = await MicroserviceManager.findAllExcludeFields(where, transaction, { attributes: ['iofogUuid'] }) + if (response.length > 0) { + response.forEach(ms => ms.iofogUuid && fogsNeedUpdate.add(ms.iofogUuid)) + } + } catch (error) { + console.error(`[ERROR] Checking fog nodes list for pubTag "${tag.value}":`, error.message) + } + } + for (const fog of fogsNeedUpdate) { + try { + await ChangeTrackingService.update(fog, ChangeTrackingService.events.microserviceFull, transaction) + } catch (error) { + console.error(`[ERROR] Updating change tracking for fog "${fog.value}":`, error.message) + } + } + } + if (microserviceData.iofogUuid) { await _updateChangeTracking(false, microserviceData.iofogUuid, transaction) } @@ -739,6 +799,38 @@ async function updateMicroserviceEndPoint (microserviceUuid, microserviceData, i await MicroservicePortService.movePublicPortsToNewFog(updatedMicroservice, transaction) } + // Update tags + if (microserviceData.pubTags) { + await _setPubTags(microservice, microserviceData.pubTags, transaction) + } + + if (microserviceData.subTags) { + await _setSubTags(microservice, microserviceData.subTags, transaction) + const fogsNeedUpdate = new Set() + for (const tag of microserviceData.subTags) { + try { + const where = { + delete: false, + '$pubTags.value$': tag + } + // Get fog nodes with microservices for the given pubTag + const response = await MicroserviceManager.findAllExcludeFields(where, transaction, { attributes: ['iofogUuid'] }) + if (response.length > 0) { + response.forEach(ms => ms.iofogUuid && fogsNeedUpdate.add(ms.iofogUuid)) + } + } catch (error) { + console.error(`[ERROR] Checking fog nodes list for pubTag "${tag.value}":`, error.message) + } + } + for (const fog of fogsNeedUpdate) { + try { + await ChangeTrackingService.update(fog, ChangeTrackingService.events.microserviceFull, transaction) + } catch (error) { + console.error(`[ERROR] Updating change tracking for fog "${fog.value}":`, error.message) + } + } + } + if (needStatusReset) { const microserviceStatus = { status: MicroserviceStates.QUEUED, @@ -958,15 +1050,66 @@ async function listPortMappingsEndPoint (microserviceUuid, isCLI, transaction) { } async function getReceiverMicroservices (microservice, transaction) { + // 1. Get existing routes (app-level routing) const routes = await RoutingManager.findAll({ sourceMicroserviceUuid: microservice.uuid }, transaction) - return routes.map(route => route.destMicroserviceUuid) + let receiverMicroservices = routes.map(route => route.destMicroserviceUuid) + + // 2. Check if the microservice has pubTags and fetch microservices associated with those tags + if (microservice.pubTags) { + for (const tag of microservice.pubTags) { + try { + const where = { + delete: false, + '$subTags.value$': tag.value + } + // Get microservices for the given pubTag + const response = await MicroserviceManager.findAllExcludeFields(where, transaction, { attributes: ['uuid'] }) + if (response.length > 0) { + const tagMicroservices = response.map(ms => ms.uuid) + // Add the microservices' UUIDs to the receiver list (filtering duplicates and removing the current microservice's UUID) + receiverMicroservices = [ + ...new Set([ + ...receiverMicroservices, + ...tagMicroservices.filter(uuid => uuid !== microservice.uuid) // Remove the current microservice's UUID + ]) + ] + } + } catch (error) { + console.error(`[ERROR] Checking microservices for pubTag "${tag.value}":`, error.message) + } + } + } + return receiverMicroservices } async function isMicroserviceConsumer (microservice, transaction) { + // Step 1: App-level routing check const routes = await RoutingManager.findAll({ destMicroserviceUuid: microservice.uuid }, transaction) - return Boolean(routes.length) + if (routes.length > 0) { + return true + } + + // Step 2: Subtag-based routing check + if (microservice.subTags) { + for (const tag of microservice.subTags) { + try { + const where = { + delete: false, + '$pubTags.value$': tag.value + } + const result = await MicroserviceManager.findAllExcludeFields(where, transaction, { attributes: ['uuid'] }) + + if (result.length > 0) { + return true + } + } catch (error) { + console.error(`[ERROR] Checking microservices for subTag "${tag.value}":`, error.message) + } + } + } + return false } async function createVolumeMappingEndPoint (microserviceUuid, volumeMappingData, isCLI, transaction) { @@ -1391,14 +1534,15 @@ async function _buildGetMicroserviceResponse (microservice, transaction) { const extraHosts = await MicroserviceExtraHostManager.findAll({ microserviceUuid: microserviceUuid }, transaction) const images = await CatalogItemImageManager.findAll({ microserviceUuid: microserviceUuid }, transaction) const volumeMappings = await VolumeMappingManager.findAll({ microserviceUuid: microserviceUuid }, transaction) - const routes = await RoutingManager.findAll({ sourceMicroserviceUuid: microserviceUuid }, transaction) + const routes = await getReceiverMicroservices(microservice, transaction) const env = await MicroserviceEnvManager.findAllExcludeFields({ microserviceUuid: microserviceUuid }, transaction) const cmd = await MicroserviceArgManager.findAllExcludeFields({ microserviceUuid: microserviceUuid }, transaction) const arg = cmd.map((it) => it.cmd) const cdiDevices = await MicroserviceCdiDevManager.findAllExcludeFields({ microserviceUuid: microserviceUuid }, transaction) const cdiDevs = cdiDevices.map((it) => it.cdiDevices) + const pubTags = microservice.pubTags ? microservice.pubTags.map(t => t.value) : [] + const subTags = microservice.subTags ? microservice.subTags.map(t => t.value) : [] const status = await MicroserviceStatusManager.findAllExcludeFields({ microserviceUuid: microserviceUuid }, transaction) - // build microservice response const res = Object.assign({}, microservice) res.ports = [] @@ -1408,7 +1552,7 @@ async function _buildGetMicroserviceResponse (microservice, transaction) { res.ports.push(mapping) } res.volumeMappings = volumeMappings.map((vm) => vm.dataValues) - res.routes = routes.map((r) => r.destMicroserviceUuid) + res.routes = routes res.env = env res.cmd = arg res.cdiDevices = cdiDevs @@ -1417,6 +1561,8 @@ async function _buildGetMicroserviceResponse (microservice, transaction) { if (status && status.length) { res.status = status[0] } + res.pubTags = pubTags + res.subTags = subTags res.logSize *= 1 @@ -1432,6 +1578,40 @@ function listAllPublicPortsEndPoint (transaction) { return MicroservicePortService.listAllPublicPorts(transaction) } +async function listMicroserviceByPubTagEndPoint (pubTag, transaction) { + const where = { + delete: false, + '$pubTags.value$': pubTag + } + + const microservices = await MicroserviceManager.findAllExcludeFields(where, transaction) + + const res = await Promise.all(microservices.map(async (microservice) => { + return _buildGetMicroserviceResponse(microservice.dataValues, transaction) + })) + + return { + microservices: res + } +} + +async function listMicroserviceBySubTagEndPoint (subTag, transaction) { + const where = { + delete: false, + '$subTags.value$': subTag + } + + const microservices = await MicroserviceManager.findAllExcludeFields(where, transaction) + + const res = await Promise.all(microservices.map(async (microservice) => { + return _buildGetMicroserviceResponse(microservice.dataValues, transaction) + })) + + return { + microservices: res + } +} + module.exports = { createMicroserviceEndPoint: TransactionDecorator.generateTransaction(createMicroserviceEndPoint), createPortMappingEndPoint: TransactionDecorator.generateTransaction(createPortMappingEndPoint), @@ -1457,5 +1637,7 @@ module.exports = { updateMicroserviceEndPoint: TransactionDecorator.generateTransaction(updateMicroserviceEndPoint), updateSystemMicroserviceEndPoint: TransactionDecorator.generateTransaction(updateSystemMicroserviceEndPoint), buildGetMicroserviceResponse: _buildGetMicroserviceResponse, - updateChangeTracking: _updateChangeTracking + updateChangeTracking: _updateChangeTracking, + listMicroserviceByPubTagEndPoint: TransactionDecorator.generateTransaction(listMicroserviceByPubTagEndPoint), + listMicroserviceBySubTagEndPoint: TransactionDecorator.generateTransaction(listMicroserviceBySubTagEndPoint) } diff --git a/src/services/router-service.js b/src/services/router-service.js index 162fb71d5..fb5626787 100644 --- a/src/services/router-service.js +++ b/src/services/router-service.js @@ -65,16 +65,23 @@ async function createRouterForFog (fogData, uuid, upstreamRouters, transaction) edgeRouterPort: !isEdge ? fogData.edgeRouterPort : null, interRouterPort: !isEdge ? fogData.interRouterPort : null, isDefault: isDefault, + requireSsl: fogData.requireSsl, + sslProfile: fogData.sslProfile, + saslMechanisms: fogData.saslMechanisms, + authenticatePeer: fogData.authenticatePeer, + caCert: fogData.caCert, + tlsCert: fogData.tlsCert, + tlsKey: fogData.tlsKey, iofogUuid: uuid } const router = await RouterManager.create(routerData, transaction) - const microserviceConfig = _getRouterMicroserviceConfig(isEdge, uuid, messagingPort, router.interRouterPort, router.edgeRouterPort) + const microserviceConfig = _getRouterMicroserviceConfig(isEdge, uuid, messagingPort, router.interRouterPort, router.edgeRouterPort, router.saslMechanisms, router.authenticatePeer, router.sslProfile, router.requireSsl, router.caCert, router.tlsCert, router.tlsKey) for (const upstreamRouter of upstreamRouters) { await RouterConnectionManager.create({ sourceRouter: router.id, destRouter: upstreamRouter.id }, transaction) - microserviceConfig.connectors = (microserviceConfig.connectors || []).concat(_getRouterConnectorConfig(isEdge, upstreamRouter)) + microserviceConfig.connectors = (microserviceConfig.connectors || []).concat(_getRouterConnectorConfig(isEdge, upstreamRouter, router.sslProfile, router.saslMechanisms)) } const routerMicroservice = await _createRouterMicroservice(isEdge, uuid, microserviceConfig, transaction) @@ -160,12 +167,12 @@ async function updateConfig (routerID, transaction) { if (!router) { throw new Errors.NotFoundError(AppHelper.formatMessage(ErrorMessages.INVALID_ROUTER, routerID)) } - const microserviceConfig = _getRouterMicroserviceConfig(router.isEdge, router.iofogUuid, router.messagingPort, router.interRouterPort, router.edgeRouterPort) + const microserviceConfig = _getRouterMicroserviceConfig(router.isEdge, router.iofogUuid, router.messagingPort, router.interRouterPort, router.edgeRouterPort, router.saslMechanisms, router.authenticatePeer, router.sslProfile, router.requireSsl, router.caCert, router.tlsCert, router.tlsKey) const upstreamRoutersConnections = await RouterConnectionManager.findAllWithRouters({ sourceRouter: router.id }, transaction) for (const upstreamRouterConnection of upstreamRoutersConnections) { - microserviceConfig.connectors = (microserviceConfig.connectors || []).concat(_getRouterConnectorConfig(router.isEdge, upstreamRouterConnection.dest)) + microserviceConfig.connectors = (microserviceConfig.connectors || []).concat(_getRouterConnectorConfig(router.isEdge, upstreamRouterConnection.dest, router.sslProfile, router.saslMechanisms)) } const routerCatalog = await CatalogService.getRouterCatalogItem(transaction) const routerMicroservice = await MicroserviceManager.findOne({ @@ -245,16 +252,26 @@ async function _createRouterMicroservice (isEdge, uuid, microserviceConfig, tran return routerMicroservice } -function _getRouterConnectorConfig (isEdge, dest) { - return { +function _getRouterConnectorConfig (isEdge, dest, sslProfile, saslMechanisms) { + const config = { name: dest.iofogUuid || Constants.DEFAULT_ROUTER_NAME, - role: (isEdge ? 'edge' : 'inter-router'), + role: isEdge ? 'edge' : 'inter-router', host: dest.host, - port: (isEdge ? dest.edgeRouterPort : dest.interRouterPort) + port: isEdge ? dest.edgeRouterPort : dest.interRouterPort + } + + if (sslProfile) { + config.sslProfile = sslProfile } + + if (saslMechanisms) { + config.saslMechanisms = saslMechanisms + } + + return config } -function _getRouterMicroserviceConfig (isEdge, uuid, messagingPort, interRouterPort, edgeRouterPort) { +function _getRouterMicroserviceConfig (isEdge, uuid, messagingPort, interRouterPort, edgeRouterPort, saslMechanisms, authenticatePeer, sslProfile, requireSsl, caCert, tlsCert, tlsKey) { const microserviceConfig = { mode: isEdge ? 'edge' : 'interior', id: uuid, @@ -267,17 +284,37 @@ function _getRouterMicroserviceConfig (isEdge, uuid, messagingPort, interRouterP ] } + // Conditionally add sslProfiles + if (sslProfile && tlsCert && tlsKey) { + microserviceConfig.sslProfiles = [ + { + name: sslProfile, + tlsCert: tlsCert, + tlsKey: tlsKey, + ...(caCert && { caCert }) // Add caCert if provided + } + ] + } + if (!isEdge) { microserviceConfig.listeners.push( { role: 'inter-router', host: '0.0.0.0', - port: interRouterPort + port: interRouterPort, + ...(saslMechanisms && { saslMechanisms }), // Add saslMechanisms if provided + ...(authenticatePeer && { authenticatePeer }), // Add authenticatePeer if provided + ...(sslProfile && { sslProfile }), // Add sslProfile if provided + ...(requireSsl && { requireSsl }) // Add requireSsl if provided }, { role: 'edge', host: '0.0.0.0', - port: edgeRouterPort + port: edgeRouterPort, + ...(saslMechanisms && { saslMechanisms }), // Add saslMechanisms if provided + ...(authenticatePeer && { authenticatePeer }), // Add authenticatePeer if provided + ...(sslProfile && { sslProfile }), // Add sslProfile if provided + ...(requireSsl && { requireSsl }) // Add requireSsl if provided } ) } diff --git a/src/services/yaml-parser-service.js b/src/services/yaml-parser-service.js index 5e1dfbf48..d8fb7ca22 100644 --- a/src/services/yaml-parser-service.js +++ b/src/services/yaml-parser-service.js @@ -93,6 +93,9 @@ const parseMicroserviceYAML = async (microservice) => { env: (lget(microservice, 'container.env', [])).map(e => ({ key: e.key.toString(), value: e.value.toString() })), images, extraHosts: lget(microservice, 'container.extraHosts', []), + ...microservice.msRoutes, + pubTags: lget(microservice, 'msRoutes.pubTags', []), + subTags: lget(microservice, 'msRoutes.subTags', []), application: microservice.application } _deleteUndefinedFields(microserviceData) From 1ae53c74c2990b1af4ffe1c2e4a7c752db692bc8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emirhan=20Durmu=C5=9F?= Date: Thu, 6 Mar 2025 18:23:43 +0300 Subject: [PATCH 146/146] added rebild option for router updateconfig --- docs/swagger.yaml | 2 +- package-lock.json | 26 +++++++++++++------------- package.json | 6 +++--- src/services/router-service.js | 1 + 4 files changed, 18 insertions(+), 17 deletions(-) diff --git a/docs/swagger.yaml b/docs/swagger.yaml index a39a8195e..5c8e9b11f 100755 --- a/docs/swagger.yaml +++ b/docs/swagger.yaml @@ -1,6 +1,6 @@ openapi : "3.0.0" info: - version: 3.4.9 + version: 3.4.10 title: Datasance PoT Controller paths: /status: diff --git a/package-lock.json b/package-lock.json index 0c5f9d408..ed86c5e11 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,16 +1,16 @@ { "name": "@datasance/iofogcontroller", - "version": "3.4.9", + "version": "3.4.10", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@datasance/iofogcontroller", - "version": "3.4.9", + "version": "3.4.10", "hasInstallScript": true, "license": "EPL-2.0", "dependencies": { - "@datasance/ecn-viewer": "0.4.1", + "@datasance/ecn-viewer": "0.4.2", "axios": "1.7.4", "body-parser": "^1.20.3", "child_process": "1.0.2", @@ -31,7 +31,7 @@ "is-elevated": "3.0.0", "js-yaml": "4.1.0", "jsonschema": "1.4.1", - "keycloak-connect": "^26.0.5", + "keycloak-connect": "^26.1.1", "minimatch": "10.0.1", "moment": "2.30.1", "moment-timezone": "0.5.45", @@ -556,9 +556,9 @@ } }, "node_modules/@datasance/ecn-viewer": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@datasance/ecn-viewer/-/ecn-viewer-0.4.1.tgz", - "integrity": "sha512-RTcAH8/5dJNdOriw1D8WragMscqus2kpHgiPb9Bh/QgmBwdkv6/ZElyFIIKAYctcKmWLggrKpuX4sik+iZLo2g==" + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@datasance/ecn-viewer/-/ecn-viewer-0.4.2.tgz", + "integrity": "sha512-+xyDmmw4q/pfzzCdz+u0c2sGaGGPj62M8u8JKE0luRNiILqmADRtVSsMCzal4sLmILgD3nkeaUeVTw+EzQcwyw==" }, "node_modules/@eslint-community/eslint-utils": { "version": "4.4.0", @@ -3517,9 +3517,9 @@ "dev": true }, "node_modules/elliptic": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.6.0.tgz", - "integrity": "sha512-dpwoQcLc/2WLQvJvLRHKZ+f9FgOdjnq11rurqwekGQygGPsYSK29OMMD2WalatiqQ+XGFDglTNixpPfI+lpaAA==", + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.6.1.tgz", + "integrity": "sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g==", "dependencies": { "bn.js": "^4.11.9", "brorand": "^1.1.0", @@ -6991,9 +6991,9 @@ } }, "node_modules/keycloak-connect": { - "version": "26.0.5", - "resolved": "https://registry.npmjs.org/keycloak-connect/-/keycloak-connect-26.0.5.tgz", - "integrity": "sha512-CvPjSL+dqQg6jFgXuYO3v13SjxxNGwo1+s5I2gFfxf7Vh6krz3nHtihH+str2kfP7TqeZgXtqWq2AbWw6HWkLg==", + "version": "26.1.1", + "resolved": "https://registry.npmjs.org/keycloak-connect/-/keycloak-connect-26.1.1.tgz", + "integrity": "sha512-2wvNJXldB9Em+mp6liJ+AnftcJovFEvNhUgv3hblNDmVihBoBqn4zFlwLIN41lo0H8CicB2T86xZ5U2MiQ9FFA==", "dependencies": { "jwk-to-pem": "^2.0.0" }, diff --git a/package.json b/package.json index 3f3804162..b8e80899e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@datasance/iofogcontroller", - "version": "3.4.9", + "version": "3.4.10", "description": "ioFog Controller project for Eclipse IoFog @ iofog.org \\nCopyright (c) 2023 Datasance Teknoloji A.S.", "main": "./src/main.js", "author": "Emirhan Durmus", @@ -55,7 +55,7 @@ "iofog-controller": "src/main.js" }, "dependencies": { - "@datasance/ecn-viewer": "0.4.1", + "@datasance/ecn-viewer": "0.4.2", "axios": "1.7.4", "body-parser": "^1.20.3", "child_process": "1.0.2", @@ -76,7 +76,7 @@ "is-elevated": "3.0.0", "js-yaml": "4.1.0", "jsonschema": "1.4.1", - "keycloak-connect": "^26.0.5", + "keycloak-connect": "^26.1.1", "minimatch": "10.0.1", "moment": "2.30.1", "moment-timezone": "0.5.45", diff --git a/src/services/router-service.js b/src/services/router-service.js index fb5626787..3ccf0bcbd 100644 --- a/src/services/router-service.js +++ b/src/services/router-service.js @@ -196,6 +196,7 @@ async function updateConfig (routerID, transaction) { await MicroserviceManager.update({ uuid: routerMicroservice.uuid }, { rebuild: true }, transaction) await ChangeTrackingService.update(router.iofogUuid, ChangeTrackingService.events.microserviceList, transaction) } else { + await MicroserviceManager.update({ uuid: routerMicroservice.uuid }, { rebuild: true }, transaction) await ChangeTrackingService.update(router.iofogUuid, ChangeTrackingService.events.microserviceConfig, transaction) } }