diff --git a/.env.shared b/.env.shared index d51a05d10..c86641402 100644 --- a/.env.shared +++ b/.env.shared @@ -5,7 +5,6 @@ COMPOSE_PATH_SEPARATOR=: COMPOSE_FILE=docker-compose.yml:docker-compose.local.yml # Local machine configuration -ENV_STAGE=local AWS_VAULT_PROFILE=saas NX_BRANCH=local diff --git a/.github/workflows/backend.yml b/.github/workflows/backend.yml index 46db8eb94..cf3e4f435 100644 --- a/.github/workflows/backend.yml +++ b/.github/workflows/backend.yml @@ -5,7 +5,7 @@ on: branches: [ '**' ] env: - BACKEND_BASE_IMAGE: python:3.11-slim-bullseye + SB_BACKEND_BASE_IMAGE: python:3.11-slim-bullseye jobs: test: diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index a54bd13fd..51e4f80ac 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -5,7 +5,7 @@ on: branches: [ '**' ] env: - BACKEND_BASE_IMAGE: python:3.11-slim-bullseye + SB_BACKEND_BASE_IMAGE: python:3.11-slim-bullseye jobs: build: diff --git a/.github/workflows/workers.yml b/.github/workflows/workers.yml index 9fd92e093..a88823e5f 100644 --- a/.github/workflows/workers.yml +++ b/.github/workflows/workers.yml @@ -6,7 +6,7 @@ on: branches: [ '**' ] env: - WORKERS_BASE_IMAGE: python:3.9-slim-bullseye + SB_WORKERS_BASE_IMAGE: python:3.9-slim-bullseye jobs: build: @@ -32,7 +32,7 @@ jobs: - name: Build emails renderer shell: bash - run: pnpm nx run webapp-emails:build-vite + run: pnpm nx run webapp-emails:build - name: Build shell: bash diff --git a/.gitignore b/.gitignore index c0d1b38d7..b1c2b3dbc 100644 --- a/.gitignore +++ b/.gitignore @@ -41,3 +41,6 @@ __pypackages__/ # System Files .DS_Store Thumbs.db + +# SaaS Boilerplate +.saas-boilerplate \ No newline at end of file diff --git a/.versionrc.js b/.versionrc.js index b06ebbfd7..b993050b3 100644 --- a/.versionrc.js +++ b/.versionrc.js @@ -62,6 +62,10 @@ module.exports = { filename: './packages/internal/core/package.json', type: 'json', }, + { + filename: './packages/internal/cli/package.json', + type: 'json', + }, { filename: './packages/internal/docs/core.json', type: 'json', diff --git a/Makefile b/Makefile deleted file mode 100644 index 8b9a740c9..000000000 --- a/Makefile +++ /dev/null @@ -1,56 +0,0 @@ -SELF_DIR := $(dir $(lastword $(MAKEFILE_LIST))) -include $(SELF_DIR)/Makefile.base.mk - -bootstrap-infra: - pnpm nx run tools:bootstrap-infra - pnpm nx run --output-style=stream infra-shared:bootstrap - -setup: - pnpm nx run-many --skip-nx-cache --target=setup --projects=core,backend,workers,webapp,e2e-tests - -# -# Infrastructure deployment -# - -deploy-env-infra: - pnpm nx run --output-style=stream infra-shared:deploy:global - pnpm nx run --output-style=stream infra-shared:deploy:main - pnpm nx run --output-style=stream infra-shared:deploy:db - pnpm nx run --output-style=stream infra-functions:deploy - pnpm nx run --output-style=stream infra-shared:deploy:ci - pnpm nx run --output-style=stream infra-shared:deploy:components - -upload-version: - pnpm nx run --output-style=stream tools:upload-version migrations,api,workers,webapp - -# -# Packages deployment -# - -build: - pnpm nx run-many --output-style=stream --target=build --projects=backend,workers,webapp - -lint: - pnpm nx run-many --output-style=stream --target=lint - -deploy-components: - pnpm nx run --output-style=stream infra-shared:deploy:components - -deploy-env-app: deploy-components - pnpm nx run-many --output-style=stream --target=deploy --projects=backend,workers,webapp - -stop-task-scheduling-executions: - pnpm nx run --output-style=stream workers:stop-task-scheduling-executions - -# -# Helper rules -# - -psql: - docker compose exec db psql -d'backend' -U'backend' - -create-repo-auth-url: - pnpm nx run --output-style=stream tools:create-cicd-creds - -create-docker-volume: - pnpm nx run --output-style=stream core:docker-create-volumes diff --git a/Makefile.base.mk b/Makefile.base.mk deleted file mode 100644 index e6fb7b50c..000000000 --- a/Makefile.base.mk +++ /dev/null @@ -1,73 +0,0 @@ -PWD ?= pwd_unknown -BASE_DIR := $(dir $(lastword $(MAKEFILE_LIST))) - -export PROJECT_ROOT_DIR := $(dir $(abspath $(lastword $(MAKEFILE_LIST)))) -export PACKAGES_DIR := $(BASE_DIR)packages - -ifndef ENV_STAGE: - -include $(BASE_DIR).env -else - -include $(BASE_DIR).env.$(ENV_STAGE) - export ENV_STAGE -endif - -ifeq ($(user),) -# USER retrieved from env, UID from shell. -HOST_USER ?= $(strip $(if $(USER),$(USER),nodummy)) -HOST_UID ?= $(strip $(if $(shell id -u),$(shell id -u),4000)) -else -# allow override by adding user= and/ or uid= (lowercase!). -# uid= defaults to 0 if user= set (i.e. root). -HOST_USER = $(user) -HOST_UID = $(strip $(if $(uid),$(uid),0)) -endif - -CMD_ARGUMENTS ?= $(cmd) - -export HOST_USER -export HOST_UID - -# As specified in -# https://www.gnu.org/software/make/manual/html_node/Choosing-the-Shell.html, -# the variable SHELL is never set from the environment. -# As such, default shell of the user has to be get the other way. -USER_SHELL=$(shell env | grep '^SHELL=' | cut -d '=' -f 2) - -up: - pnpm nx run --output-style=stream core:docker-compose:up - -down: - pnpm nx run --output-style=stream core:docker-compose:down - -serve: - pnpm nx run --output-style=stream core:serve - -clean: - # remove created images - @docker-compose -p down --remove-orphans --rmi all 2>/dev/null \ - && echo 'Image(s) removed.' \ - || echo 'Image(s) already removed.' - -prune: - # clean all that is not actively used - docker system prune -af - - -set-env: -ifeq ($(ENV_STAGE), local) - $(error Please set ENV_STAGE to other value than "local") -endif -ifeq (, $(shell which aws-vault)) - $(USER_SHELL) -else - aws-vault exec $(AWS_VAULT_PROFILE) -- $(USER_SHELL) -endif - -aws-login: - aws-vault login $(AWS_VAULT_PROFILE) - - -secrets-editor: SERVICE_NAME?= -secrets-editor: - pnpm nx run ssm-editor:compose-build-image - docker-compose run --rm --entrypoint /bin/bash ssm-editor /scripts/run.sh $(SERVICE_NAME) diff --git a/README.md b/README.md index 74d0e20d1..42ea1c524 100644 --- a/README.md +++ b/README.md @@ -127,22 +127,22 @@ pnpm install ### Start the app -#### Start backend +Start both: backend and webapp ```sh -pnpm nx run core:docker-compose:up +pnpm saas up ``` -or a shorter version: +#### Start backend ```sh -make up +pnpm saas backend up ``` #### Start webapp ```sh -pnpm nx start webapp +pnpm saas webapp up ``` #### Local documentation @@ -150,7 +150,7 @@ pnpm nx start webapp In order to run your local documentation server execute following command: ```sh -pnpm nx start docs +pnpm saas docs up ``` ## Tech stack diff --git a/docker-compose.ci.yml b/docker-compose.ci.yml index 6b98cfe14..3d462829a 100644 --- a/docker-compose.ci.yml +++ b/docker-compose.ci.yml @@ -9,7 +9,7 @@ services: - CI=true build: args: - - BACKEND_BASE_IMAGE=${BACKEND_BASE_IMAGE} + - BACKEND_BASE_IMAGE=${SB_BACKEND_BASE_IMAGE} workers: volumes: @@ -27,4 +27,4 @@ services: - AWS_SESSION_EXPIRATION=${AWS_SESSION_EXPIRATION} build: args: - - WORKERS_BASE_IMAGE=${WORKERS_BASE_IMAGE} + - WORKERS_BASE_IMAGE=${SB_WORKERS_BASE_IMAGE} diff --git a/docker-compose.yml b/docker-compose.yml index 89c6325d3..3c32de0e7 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -7,6 +7,7 @@ services: - "5432:5432" restart: unless-stopped environment: + - PGUSER=backend - POSTGRES_USER=backend - POSTGRES_PASSWORD=backend - POSTGRES_DB=backend @@ -20,7 +21,7 @@ services: build: context: ./packages/backend target: backend - command: ["./scripts/run_local.sh"] + command: ["./scripts/runtime/run_local.sh"] ports: - "5001:5001" depends_on: diff --git a/nx.json b/nx.json index bbec0b155..f2a682ddc 100644 --- a/nx.json +++ b/nx.json @@ -3,7 +3,6 @@ "npmScope": "sb", "tasksRunnerOptions": { "default": { - "runner": "@sb/core/custom-task-runner", "options": { "cacheableOperations": [ "setup", diff --git a/package.json b/package.json index bc796ae94..f2cf514a3 100644 --- a/package.json +++ b/package.json @@ -6,24 +6,26 @@ "scripts": { "aws-vault:shell": "aws-vault exec $AWS_VAULT_PROFILE -- $SHELL", "login:qa": "env-cmd -f .env.qa npm run aws-vault:shell", - "prepare": "husky install" + "prepare": "husky install", + "postinstall": "pnpm nx run cli:build" }, "devDependencies": { "@apollo/client": "^3.7.9", "@apollo/rover": "^0.12.2", "@babel/preset-react": "^7.14.5", - "@nx/js": "16.3.2", + "@graphql-typed-document-node/core": "^3.2.0", "@nx/devkit": "16.3.2", + "@nx/eslint-plugin": "16.3.2", + "@nx/jest": "16.3.2", + "@nx/js": "16.3.2", "@nx/linter": "16.3.2", + "@nx/node": "16.3.2", + "@nx/plugin": "16.3.2", "@nx/react": "16.3.2", "@nx/web": "16.3.2", "@pmmmwh/react-refresh-webpack-plugin": "^0.5.7", "@sb/core": "*", "@svgr/webpack": "^6.1.2", - "@swc-node/register": "^1.4.2", - "@swc/cli": "0.1.62", - "@swc/core": "^1.2.173", - "@swc/helpers": "0.5.1", "@tailwindcss/typography": "^0.5.9", "@testing-library/react": "14.0.0", "@types/gtag.js": "^0.0.12", @@ -36,7 +38,6 @@ "@types/styled-components": "5.1.26", "@typescript-eslint/eslint-plugin": "5.59.9", "@typescript-eslint/parser": "5.59.9", - "@graphql-typed-document-node/core": "^3.2.0", "babel-jest": "29.4.3", "babel-plugin-relay": "^14.1.0", "babel-plugin-styled-components": "1.10.7", @@ -59,6 +60,7 @@ "nx-cloud": "16.0.5", "prettier": "^2.6.2", "react-refresh": "^0.10.0", + "string-argv": "^0.3.2", "tailwindcss": "^3.3.2", "tailwindcss-animate": "^1.0.5", "ts-jest": "29.1.0", @@ -67,10 +69,7 @@ "tslib": "^2.3.0", "typescript": "5.0.4", "url-loader": "^4.1.1", - "@nx/eslint-plugin": "16.3.2", - "@nx/jest": "16.3.2", - "@nx/plugin": "16.3.2", - "@nx/node": "16.3.2" + "@sb/cli": "*" }, "dependencies": { "react": "18.2.0", diff --git a/packages/backend/Dockerfile b/packages/backend/Dockerfile index 3d0288dd6..1f0d11509 100644 --- a/packages/backend/Dockerfile +++ b/packages/backend/Dockerfile @@ -42,7 +42,7 @@ ENV HASHID_FIELD_SALT='' \ WORKERS_EVENT_BUS_NAME='' \ PYTHONPATH=/pkgs/__pypackages__/3.11/lib -RUN ./scripts/build_static.sh +RUN ./scripts/runtime/build_static.sh FROM backend_build AS backend @@ -50,4 +50,4 @@ COPY --from=static_files /app/static /app/static ENV PYTHONPATH=/pkgs/__pypackages__/3.11/lib \ PATH=$PATH:/pkgs/__pypackages__/3.11/bin -CMD ["./scripts/run.sh"] +CMD ["./scripts/runtime/run.sh"] diff --git a/packages/backend/Makefile b/packages/backend/Makefile deleted file mode 100644 index 3eedaea0c..000000000 --- a/packages/backend/Makefile +++ /dev/null @@ -1,61 +0,0 @@ -SELF_DIR := $(dir $(lastword $(MAKEFILE_LIST))) -include $(SELF_DIR)/../../Makefile.base.mk - -IS_BACKEND_CURRENT_DIR := $(shell pwd | grep 'packages/backend') -ifneq ($(IS_BACKEND_CURRENT_DIR),) - export COMPOSE_FILE=$(SELF_DIR)/../../docker-compose.yml:$(SELF_DIR)/../../docker-compose.local.yml -endif - -setup: - chmod +x ./scripts/*.sh - -test: - pnpm nx test - -build: - pnpm nx build - -build-docs: - pnpm nx build-docs - -deploy-api: - pnpm nx deploy:api - -deploy-migrations: - pnpm nx deploy:migrations - -deploy: - pnpm nx deploy - -# Local CLI rules - -shell: - docker-compose run --rm backend bash - -create-app: - docker-compose run --rm -T backend sh -c "cd apps && django-admin startapp $(app_name)" - -makemigrations: - docker-compose run --rm -T backend sh -c "python ./manage.py makemigrations" - -migrate: - docker-compose run --rm -T backend sh -c "python ./manage.py migrate" - -ruff: - docker-compose run --rm -T --no-deps backend ruff check . - -black: - docker-compose run --rm -T --no-deps backend black --config=pyproject.toml . - -check-migrations: - docker-compose run --rm -T backend sh -c "python ./manage.py makemigrations --check --dry-run" - -sync-stripe: - docker-compose run --rm -T backend sh -c "python ./manage.py djstripe_sync_models" - -secrets: - $(MAKE) -C $(PROJECT_ROOT_DIR) secrets-editor SERVICE_NAME=backend - -remote-shell: - chamber exec $(ENV_STAGE) -- ./scripts/execute_remote.sh - diff --git a/packages/backend/README.md b/packages/backend/README.md index 8ec7dcc6f..df5245660 100644 --- a/packages/backend/README.md +++ b/packages/backend/README.md @@ -1,43 +1,19 @@ # 🍔 Saas backend application -## Make rules - -### `make install` - -Runs installation of all required project dependencies. - -### `make install-deploy` - -This rule will be used by CodeBuild to install dependencies required to deploy previously built artifact. This rule -should most likely stay unchanged unless you know what you're doing! - -### `make test` +### `saas backend test` Runs tests and linters inside docker container. -### `make build` +### `saas backend build` Builds docker images used by the backend and pushes them to AWS ECR repository. Make sure you're logged into the AWS -using `make aws-vault` command. +using `saas aws set-env [ENV_NAME]` command. -### `make deploy` +### `saas backend deploy` This rule deploys admin-panel, api, and migrations stacks. -## Features - -- [x] Register user with profile in single API call -- [x] Login endpoint to return JWT token in HTTP only cookie -- [x] User account activation endpoint -- [x] User profile endpoint -- [x] HashID for User primary key -- [x] Password reset & change endpoints -- [x] Add Swagger for API documentation -- [x] Ability to set user notification implementation -- [x] Health check endpoint with DB migrations validation -- [x] Two separate hosts, api & admin using django-hosts - - ## Pycharm integration + One option to configure the python interpreter in pycharm is to add interpreter with docker/docker-compose option. The advantage of this solution is independence from using python package manager. diff --git a/packages/backend/infra/stacks/api/stack.ts b/packages/backend/infra/stacks/api/stack.ts index b10d2a85a..a9cf50d3b 100644 --- a/packages/backend/infra/stacks/api/stack.ts +++ b/packages/backend/infra/stacks/api/stack.ts @@ -106,7 +106,7 @@ export class ApiStack extends Stack { command: [ "sh", "-c", - "/bin/chamber exec $CHAMBER_SERVICE_NAME -- ./scripts/run.sh", + "/bin/chamber exec $CHAMBER_SERVICE_NAME -- ./scripts/runtime/run.sh", ], image: ecs.ContainerImage.fromEcrRepository( resources.backendRepository, diff --git a/packages/backend/infra/stacks/migrations/stack.ts b/packages/backend/infra/stacks/migrations/stack.ts index f88a119ce..7cf8be7b0 100644 --- a/packages/backend/infra/stacks/migrations/stack.ts +++ b/packages/backend/infra/stacks/migrations/stack.ts @@ -78,7 +78,7 @@ export class MigrationsStack extends Stack { containerOverrides: [ { containerDefinition: containerDef, - command: ['./scripts/run_migrations.sh'], + command: ['./scripts/runtime/run_migrations.sh'], }, ], integrationPattern: sf.IntegrationPattern.RUN_JOB, diff --git a/packages/backend/package.json b/packages/backend/package.json index 1c3904899..bf313f9f7 100644 --- a/packages/backend/package.json +++ b/packages/backend/package.json @@ -7,7 +7,7 @@ "cdk:deploy:migrations": "cdk deploy *MigrationsStack", "diff:migrations": "cdk diff *MigrationsStack", "lint:js": "eslint .", - "trigger-migrations-job": "/bin/bash ./scripts/trigger_migrations_job.sh" + "trigger-migrations-job": "node ./scripts/triggerMigrationsJob.js" }, "devDependencies": { "@sb/core": "*", @@ -15,7 +15,12 @@ "@sb/infra-shared": "*", "@sb/tools": "*", "aws-cdk": "^2.84.0", + "@aws-sdk/client-ecr": "^3.398.0", + "@aws-sdk/client-sts": "^3.398.0", + "@aws-sdk/client-sfn": "^3.398.0", + "@aws-sdk/client-ecs": "^3.398.0", "aws-cdk-lib": "^2.84.0", - "constructs": "^10.1.225" + "constructs": "^10.1.225", + "fs-extra": "^11.1.1" } } diff --git a/packages/backend/project.json b/packages/backend/project.json index 4233f4d01..8c95f5e45 100644 --- a/packages/backend/project.json +++ b/packages/backend/project.json @@ -14,10 +14,7 @@ "executor": "nx:run-commands", "options": { "color": true, - "commands": [ - "pnpm nx run core:docker-login", - "docker-compose build backend" - ], + "commands": ["docker-compose build backend"], "parallel": false }, "dependsOn": ["setup"] @@ -26,16 +23,25 @@ "executor": "nx:run-commands", "options": { "color": true, - "command": "docker-compose run --rm -T backend ./scripts/run_tests.sh" + "command": "docker-compose run --rm -T backend ./scripts/runtime/run_tests.sh" }, "dependsOn": ["compose-build-image"] }, + "remote-shell": { + "executor": "nx:run-commands", + "options": { + "cwd": "packages/backend", + "color": true, + "commands": ["node scripts/executeRemote.js"], + "parallel": false + } + }, "build": { "executor": "nx:run-commands", "options": { "cwd": "packages/backend", "color": true, - "commands": ["/bin/bash scripts/build.sh"], + "commands": ["node scripts/build.js"], "parallel": false }, "dependsOn": ["test"] @@ -45,7 +51,7 @@ "options": { "cwd": "packages/backend", "color": true, - "commands": ["/bin/bash scripts/build_docs.sh"], + "commands": ["node scripts/buildDocs.js"], "parallel": false }, "dependsOn": ["compose-build-image"] @@ -83,6 +89,15 @@ "commands": ["nx cdk:deploy:api", "nx cdk:deploy:migrations"], "parallel": false } + }, + "diff": { + "executor": "nx:run-commands", + "options": { + "cwd": "packages/backend", + "color": true, + "commands": ["nx diff:api", "nx diff:migrations"], + "parallel": false + } } }, "tags": ["service"] diff --git a/packages/backend/scripts/build.js b/packages/backend/scripts/build.js new file mode 100644 index 000000000..7f8db3a79 --- /dev/null +++ b/packages/backend/scripts/build.js @@ -0,0 +1,90 @@ +const { + ECRClient, + GetAuthorizationTokenCommand, +} = require('@aws-sdk/client-ecr'); +const { STSClient, GetCallerIdentityCommand } = require('@aws-sdk/client-sts'); + +const { runCommand } = require('./lib/runCommand'); + +const AWS_REGION = process.env.AWS_REGION; +const AWS_DEFAULT_REGION = process.env.AWS_DEFAULT_REGION; +const PROJECT_NAME = process.env.PROJECT_NAME; +const VERSION = process.env.VERSION; +const BACKEND_BASE_IMAGE = process.env.SB_BACKEND_BASE_IMAGE; + +const stsClient = new STSClient(); +const ecrClient = new ECRClient(); + +(async () => { + try { + const getCallerIdentityCommand = new GetCallerIdentityCommand(); + const { Account: AWS_ACCOUNT_ID } = await stsClient.send( + getCallerIdentityCommand + ); + const region = AWS_REGION || AWS_DEFAULT_REGION; + const BACKEND_REPO_URI = `${AWS_ACCOUNT_ID}.dkr.ecr.${region}.amazonaws.com/${PROJECT_NAME}-backend`; + + try { + const getAuthorizationTokenCommand = new GetAuthorizationTokenCommand(); + const { authorizationData } = await ecrClient.send( + getAuthorizationTokenCommand + ); + const decodedAuthToken = Buffer.from( + authorizationData[0].authorizationToken, + 'base64' + ).toString('utf8'); + const password = decodedAuthToken.split(':')[1]; + + await runCommand('docker', [ + 'login', + '--username', + 'AWS', + '-p', + password, + BACKEND_REPO_URI, + ]); + } catch (error) { + console.error(error); + console.warn( + 'get-login-password not supported by the AWS CLI, trying get-login instead...' + ); + await runCommand('aws', [ + 'ecr', + 'get-login', + '--no-include-email', + '--region', + region, + ]); + } + + try { + await runCommand('docker', ['pull', `${BACKEND_REPO_URI}:latest`]); + } catch (error) { + console.warn(`Warning: ${error.message}`); + } + + await runCommand('docker', [ + 'build', + '--platform', + 'linux/amd64', + '--target', + 'backend', + '-t', + `${BACKEND_REPO_URI}:${VERSION}`, + '--build-arg', + `BACKEND_BASE_IMAGE=${BACKEND_BASE_IMAGE}`, + '.', + ]); + + await runCommand('docker', ['push', `${BACKEND_REPO_URI}:${VERSION}`]); + await runCommand('docker', [ + 'tag', + `${BACKEND_REPO_URI}:${VERSION}`, + `${BACKEND_REPO_URI}:latest`, + ]); + await runCommand('docker', ['push', `${BACKEND_REPO_URI}:latest`]); + } catch (error) { + console.error(`Error: ${error.message}`); + process.exit(1); + } +})(); diff --git a/packages/backend/scripts/build.sh b/packages/backend/scripts/build.sh deleted file mode 100755 index 099d6f5ca..000000000 --- a/packages/backend/scripts/build.sh +++ /dev/null @@ -1,27 +0,0 @@ -#!/bin/bash - -set -eu - -AWS_ACCOUNT_ID=$(aws sts get-caller-identity --output text --query 'Account') -BACKEND_REPO_URI=$AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$PROJECT_NAME-backend - -if DOCKER_LOGIN=$(aws ecr get-login-password --region "$AWS_DEFAULT_REGION" 2> /dev/null); then - echo "$DOCKER_LOGIN" | docker login --username AWS --password-stdin "$AWS_ACCOUNT_ID".dkr.ecr."$AWS_DEFAULT_REGION".amazonaws.com -else - echo "get-login-password not supported by the AWS CLI, trying get-login instead..." - # shellcheck disable=SC2091 - $(aws ecr get-login --no-include-email --region "$AWS_DEFAULT_REGION") -fi - -docker pull "$BACKEND_REPO_URI:latest" || true - -if [[ -z "${BACKEND_BASE_IMAGE}" ]]; then - docker build --target backend -t "$BACKEND_REPO_URI:$VERSION" . -else - docker build --target backend -t "$BACKEND_REPO_URI:$VERSION" --build-arg BACKEND_BASE_IMAGE="$BACKEND_BASE_IMAGE" . -fi - -docker push "$BACKEND_REPO_URI:$VERSION" - -docker tag "$BACKEND_REPO_URI:$VERSION" "$BACKEND_REPO_URI:latest" -docker push "$BACKEND_REPO_URI:latest" diff --git a/packages/backend/scripts/buildDocs.js b/packages/backend/scripts/buildDocs.js new file mode 100644 index 000000000..dae86daf1 --- /dev/null +++ b/packages/backend/scripts/buildDocs.js @@ -0,0 +1,49 @@ +const fs = require('fs-extra'); +const path = require('path'); + +const { runCommand } = require('./lib/runCommand'); + +const GENERATED_BACKEND_DOCS_PATH = path.resolve( + __dirname, + '../docs/generated' +); +const GENERATED_BACKEND_DOCS_INTERNAL_PATH = path.resolve( + __dirname, + '../../internal/docs/docs/api-reference/backend/generated' +); + +(async () => { + try { + // Removing docs directory + await fs.remove(GENERATED_BACKEND_DOCS_PATH); + + await runCommand( + 'docker-compose', + [ + 'run', + '--rm', + '-T', + '--no-deps', + 'backend', + 'sh', + '-c', + 'pydoc-markdown', + ], + { + cwd: path.resolve(__dirname, '../../../'), + } + ); + + // Removing internal docs directory + await fs.remove(`${GENERATED_BACKEND_DOCS_INTERNAL_PATH}`); + + // Copying docs + await fs.copy( + GENERATED_BACKEND_DOCS_PATH, + GENERATED_BACKEND_DOCS_INTERNAL_PATH + ); + } catch (error) { + console.error(`Error: ${error.message}`); + process.exit(1); + } +})(); diff --git a/packages/backend/scripts/build_docs.sh b/packages/backend/scripts/build_docs.sh deleted file mode 100755 index 6a63aa537..000000000 --- a/packages/backend/scripts/build_docs.sh +++ /dev/null @@ -1,15 +0,0 @@ -GENERATED_BACKEND_DOCS_PATH=docs/generated -GENERATED_BACKEND_DOCS_INTERNAL_PATH=../internal/docs/docs/api-reference/backend - -rm -rf "$GENERATED_BACKEND_DOCS_PATH" - -if [ "${CI:-}" = "true" ] -then - export COMPOSE_FILE=../../docker-compose.yml:../../docker-compose.ci.yml -else - export COMPOSE_FILE=../../docker-compose.yml:../../docker-compose.local.yml -fi - -docker-compose run --rm -T --no-deps backend sh -c "pydoc-markdown" -rm -rf "${GENERATED_BACKEND_DOCS_INTERNAL_PATH}/generated" -cp -R "$GENERATED_BACKEND_DOCS_PATH" "$GENERATED_BACKEND_DOCS_INTERNAL_PATH" diff --git a/packages/backend/scripts/deploy.sh b/packages/backend/scripts/deploy.sh deleted file mode 100755 index 94ef7de06..000000000 --- a/packages/backend/scripts/deploy.sh +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/bash - -set -e - diff --git a/packages/backend/scripts/executeRemote.js b/packages/backend/scripts/executeRemote.js new file mode 100644 index 000000000..07e601d36 --- /dev/null +++ b/packages/backend/scripts/executeRemote.js @@ -0,0 +1,51 @@ +#!/usr/bin/env bash + +const { ECSClient, ListTasksCommand } = require('@aws-sdk/client-ecs'); + +const { runCommand } = require('./lib/runCommand'); + +const AWS_DEFAULT_REGION = process.env.AWS_DEFAULT_REGION; +const ENV_STAGE = process.env.ENV_STAGE; +const PROJECT_NAME = process.env.PROJECT_NAME; + +const projectEnvName = `${PROJECT_NAME}-${ENV_STAGE}`; +const clusterName = `${projectEnvName}-main`; +const serviceName = `${projectEnvName}-api`; + +const ecsClient = new ECSClient(); + +(async () => { + try { + if (!ENV_STAGE) { + console.error('ENV_STAGE environment variable is not set'); + process.exit(1); + } + + const taskList = await ecsClient.send( + new ListTasksCommand({ + cluster: clusterName, + serviceName: serviceName, + }) + ); + + const taskArn = taskList.taskArns[0]; + + await runCommand('aws', [ + 'ecs', + 'execute-command', + '--cluster', + clusterName, + '--region', + AWS_DEFAULT_REGION, + '--task', + taskArn, + '--container', + 'backend', + '--command', + '/bin/bash', + '--interactive', + ]); + } catch (error) { + console.error(`Error: ${error.message}`); + } +})(); diff --git a/packages/backend/scripts/execute_remote.sh b/packages/backend/scripts/execute_remote.sh deleted file mode 100755 index 369763a8e..000000000 --- a/packages/backend/scripts/execute_remote.sh +++ /dev/null @@ -1,30 +0,0 @@ -#!/usr/bin/env bash -# This script allows you to connect the ECS backend task and starts an interactive shell session inside it. - -if ! [ -x "$(command -v jq)" ]; then - echo 'Error: jq library is required to run this script' >&2 - echo 'Check the jq home page at: https://stedolan.github.io/jq/' - exit 1 -fi - -if [ -z "$ENV_STAGE" ] -then - echo "ENV_STAGE environment variable is not set" - exit 1 -fi - -PROJECT_ENV_NAME=${PROJECT_NAME}-${ENV_STAGE} - -CLUSTER_NAME="${PROJECT_ENV_NAME}-main" -SERVICE_NAME="${PROJECT_ENV_NAME}-api" -CHAMBER_SERVICE_NAME="env-${PROJECT_ENV_NAME}-backend" - -TASK_LIST=$(aws ecs list-tasks --cluster saas-qa-main --service-name "$SERVICE_NAME") -TASK_ARN=$(echo "${TASK_LIST}" | jq -r ".taskArns[0]") - -aws ecs execute-command \ - --cluster "$CLUSTER_NAME" \ - --region "${AWS_DEFAULT_REGION//\"/}" \ - --task "$TASK_ARN" \ - --container backend \ - --command "/bin/bash" --interactive \ No newline at end of file diff --git a/packages/backend/scripts/lib/runCommand.js b/packages/backend/scripts/lib/runCommand.js new file mode 100644 index 000000000..9948829d2 --- /dev/null +++ b/packages/backend/scripts/lib/runCommand.js @@ -0,0 +1,29 @@ +const { spawn } = require('node:child_process'); + +function runCommand(command, args, options) { + return new Promise((resolve, reject) => { + const cmd = spawn(command, args, options); + + process.stdin.pipe(cmd.stdin); + + cmd.stdout.on('data', (data) => { + process.stdout.write(data); + }); + + cmd.stderr.on('data', (data) => { + process.stdout.write(data); + }); + + cmd.on('close', (code) => { + if (code !== 0) { + reject( + new Error(`"${command} ${args.join(' ')}" failed with code ${code}`) + ); + } else { + resolve(); + } + }); + }); +} + +module.exports = { runCommand }; diff --git a/packages/backend/scripts/build_static.sh b/packages/backend/scripts/runtime/build_static.sh similarity index 100% rename from packages/backend/scripts/build_static.sh rename to packages/backend/scripts/runtime/build_static.sh diff --git a/packages/backend/scripts/install_localstack_fixtures.sh b/packages/backend/scripts/runtime/install_localstack_fixtures.sh similarity index 100% rename from packages/backend/scripts/install_localstack_fixtures.sh rename to packages/backend/scripts/runtime/install_localstack_fixtures.sh diff --git a/packages/backend/scripts/run.sh b/packages/backend/scripts/runtime/run.sh similarity index 100% rename from packages/backend/scripts/run.sh rename to packages/backend/scripts/runtime/run.sh diff --git a/packages/backend/scripts/run_local.sh b/packages/backend/scripts/runtime/run_local.sh similarity index 100% rename from packages/backend/scripts/run_local.sh rename to packages/backend/scripts/runtime/run_local.sh diff --git a/packages/backend/scripts/run_migrations.sh b/packages/backend/scripts/runtime/run_migrations.sh similarity index 100% rename from packages/backend/scripts/run_migrations.sh rename to packages/backend/scripts/runtime/run_migrations.sh diff --git a/packages/backend/scripts/run_tests.sh b/packages/backend/scripts/runtime/run_tests.sh similarity index 100% rename from packages/backend/scripts/run_tests.sh rename to packages/backend/scripts/runtime/run_tests.sh diff --git a/packages/backend/scripts/triggerMigrationsJob.js b/packages/backend/scripts/triggerMigrationsJob.js new file mode 100644 index 000000000..f068a24b9 --- /dev/null +++ b/packages/backend/scripts/triggerMigrationsJob.js @@ -0,0 +1,76 @@ +const { STSClient, GetCallerIdentityCommand } = require('@aws-sdk/client-sts'); +const { + SFNClient, + StartExecutionCommand, + DescribeExecutionCommand, + GetExecutionHistoryCommand, +} = require('@aws-sdk/client-sfn'); + +const { runCommand } = require('./lib/runCommand'); + +const AWS_DEFAULT_REGION = process.env.AWS_DEFAULT_REGION; +const PROJECT_NAME = process.env.PROJECT_NAME; +const ENV_STAGE = process.env.ENV_STAGE; + +const stsClient = new STSClient(); +const sfnClient = new SFNClient(); + +async function poll(executionArn) { + const timeout = 5 * 60; + const sleepStep = 10; + for (let i = timeout; i > 0; i -= sleepStep) { + const executionData = await sfnClient.send( + new DescribeExecutionCommand({ + executionArn, + }) + ); + console.log(`Migrations job status: ${executionData.status}`); + if (executionData.status !== 'RUNNING') { + return executionData; + } + + await new Promise((resolve) => setTimeout(resolve, sleepStep * 1000)); + } +} + +(async () => { + try { + const { Account: awsAccountId } = await stsClient.send( + new GetCallerIdentityCommand({}) + ); + + console.log('Starting migrations job...'); + const { executionArn } = await sfnClient.send( + new StartExecutionCommand({ + stateMachineArn: `arn:aws:states:${AWS_DEFAULT_REGION}:${awsAccountId}:stateMachine:${PROJECT_NAME}-${ENV_STAGE}-migrations`, + }) + ); + + const finalResult = await poll(executionArn); + const executionHistory = await sfnClient.send( + new GetExecutionHistoryCommand({ + executionArn, + }) + ); + const taskSubmittedStep = executionHistory.events.find( + ({ type }) => type === 'TaskSubmitted' + ); + + console.log('Migrations job log pulled from CloudWatch:'); + await runCommand('aws', [ + 'logs', + 'tail', + `${PROJECT_NAME}-${ENV_STAGE}-migrations-log-group`, + '--since', + taskSubmittedStep.timestamp.toISOString(), + ]); + + console.log(`Migrations job result:\n ${JSON.stringify(finalResult)}`); + if (finalResult.status !== 'SUCCEEDED') { + process.exit(1); + } + } catch (error) { + console.error(`Error: ${error.message}`); + process.exit(1); + } +})(); diff --git a/packages/backend/scripts/trigger_migrations_job.sh b/packages/backend/scripts/trigger_migrations_job.sh deleted file mode 100644 index 260ff2d84..000000000 --- a/packages/backend/scripts/trigger_migrations_job.sh +++ /dev/null @@ -1,57 +0,0 @@ -#!/bin/bash - -set -eu - -aws_account_id=$(aws sts get-caller-identity --output text --query 'Account') -step_function_arn="arn:aws:states:${AWS_DEFAULT_REGION}:${aws_account_id}:stateMachine:${PROJECT_NAME}-${ENV_STAGE}-migrations" - -execution_arn=$(aws stepfunctions start-execution \ - --output "text" \ - --query "executionArn" \ - --state-machine-arn "${step_function_arn}") - -function get_execution_status { - echo "$1" | jq -r '.status' -} - -function poll { - local status - local execution_data - local timeout - local sleep_step - - status="RUNNING" - timeout=$((5*60)) - sleep_step=10 - - until [[ "${status}" != "RUNNING" ]]; do - if [[ "${timeout}" -le 0 ]]; then - break - fi - - execution_data=$(aws stepfunctions describe-execution --execution-arn "${execution_arn}") - status=$(get_execution_status "${execution_data}") - - if [[ "${status}" == "RUNNING" ]]; then - sleep "${sleep_step}" - timeout=$((timeout-sleep_step)) - fi - done - - echo "${execution_data}" -} - -final_result=$(poll) -final_status=$(get_execution_status "${final_result}") - -execution_history=$(aws stepfunctions get-execution-history --execution-arn "${execution_arn}" --query "events") -task_submitted_step=$(echo "${execution_history}" | jq -r '.[] | select(.type=="TaskSubmitted")') -task_submitted_timestamp=$(echo "${task_submitted_step}" | jq -r '.timestamp') - -echo "Migrations job log pulled from CloudWatch:" -aws logs tail "${PROJECT_NAME}-${ENV_STAGE}-migrations-log-group" --since "${task_submitted_timestamp}" - -echo -e "Migrations job result:\n${final_result}" -if [[ "${final_status}" != "SUCCEEDED" ]]; then - exit 1; -fi diff --git a/packages/contentful/Makefile b/packages/contentful/Makefile deleted file mode 100644 index 9c53b8fa0..000000000 --- a/packages/contentful/Makefile +++ /dev/null @@ -1,11 +0,0 @@ -SELF_DIR := $(dir $(lastword $(MAKEFILE_LIST))) -include $(SELF_DIR)/../../Makefile.base.mk - -.PHONY: deploy secrets - -deploy: - node ${SELF_DIR}scripts/run_migrations.js - -secrets: - docker-compose build ssmeditor - docker-compose run --rm ssmeditor diff --git a/packages/infra/infra-core/README.md b/packages/infra/infra-core/README.md deleted file mode 100644 index f920f84ca..000000000 --- a/packages/infra/infra-core/README.md +++ /dev/null @@ -1,11 +0,0 @@ -# internal-infra-core - -This library was generated with [Nx](https://nx.dev). - -## Building - -Run `nx build internal-infra-core` to build the library. - -## Running unit tests - -Run `nx test internal-infra-core` to execute the unit tests via [Jest](https://jestjs.io). diff --git a/packages/infra/infra-core/package.json b/packages/infra/infra-core/package.json index 6b34b8544..1c4ae295d 100644 --- a/packages/infra/infra-core/package.json +++ b/packages/infra/infra-core/package.json @@ -3,7 +3,8 @@ "version": "2.0.3", "type": "commonjs", "scripts": { - "build": "tsc --project tsconfig.lib.json" + "build": "tsc --project tsconfig.lib.json", + "cdk": "cdk" }, "devDependencies": { "aws-cdk": "^2.84.0", diff --git a/packages/infra/infra-functions/Makefile b/packages/infra/infra-functions/Makefile deleted file mode 100644 index 3a91cd0f8..000000000 --- a/packages/infra/infra-functions/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -SELF_DIR := $(dir $(lastword $(MAKEFILE_LIST))) -include $(SELF_DIR)/../../Makefile.base.mk - -deploy: - pnpm nx deploy diff --git a/packages/infra/infra-functions/package.json b/packages/infra/infra-functions/package.json index 84e1e613b..763595ef4 100644 --- a/packages/infra/infra-functions/package.json +++ b/packages/infra/infra-functions/package.json @@ -8,6 +8,7 @@ "scripts": { "build": "sls package", "deploy": "sls deploy", + "diff": "echo 'no-diff-available'", "remove": "sls remove" }, "dependencies": { diff --git a/packages/infra/infra-functions/serverless.yml b/packages/infra/infra-functions/serverless.yml index a0d556dbf..a99eda1ee 100644 --- a/packages/infra/infra-functions/serverless.yml +++ b/packages/infra/infra-functions/serverless.yml @@ -7,7 +7,7 @@ provider: runtime: nodejs16.x versionFunctions: false stage: "${env:ENV_STAGE}" - region: "${env:AWS_DEFAULT_REGION}" + region: "${env:AWS_REGION, env:AWS_DEFAULT_REGION}" stackName: ${self:custom.conf.stackName} iamRoleStatements: ${self:custom.conf.iam} environment: ${self:custom.conf.environment} diff --git a/packages/infra/infra-shared/README.md b/packages/infra/infra-shared/README.md deleted file mode 100644 index 11f007253..000000000 --- a/packages/infra/infra-shared/README.md +++ /dev/null @@ -1,11 +0,0 @@ -# internal-infra-shared - -This library was generated with [Nx](https://nx.dev). - -## Building - -Run `nx build internal-infra-shared` to build the library. - -## Running unit tests - -Run `nx test internal-infra-shared` to execute the unit tests via [Jest](https://jestjs.io). diff --git a/packages/infra/infra-shared/src/stacks/ci/ciBackend.ts b/packages/infra/infra-shared/src/stacks/ci/ciBackend.ts index 08ec0af5d..f8d38d2c7 100644 --- a/packages/infra/infra-shared/src/stacks/ci/ciBackend.ts +++ b/packages/infra/infra-shared/src/stacks/ci/ciBackend.ts @@ -93,7 +93,7 @@ export class BackendCiConfig extends ServiceCiConfig { commands: preBuildCommands, }, build: { - commands: ['pnpm nx run backend:build'], + commands: ['pnpm saas backend build'], }, }, }), @@ -112,7 +112,7 @@ export class BackendCiConfig extends ServiceCiConfig { type: codebuild.BuildEnvironmentVariableType.SECRETS_MANAGER, value: 'GlobalBuildSecrets:DOCKER_PASSWORD', }, - BACKEND_BASE_IMAGE: { + SB_BACKEND_BASE_IMAGE: { type: codebuild.BuildEnvironmentVariableType.PLAINTEXT, value: baseImage, }, @@ -172,7 +172,7 @@ export class BackendCiConfig extends ServiceCiConfig { PnpmWorkspaceFilters.BACKEND ), }, - build: { commands: ['pnpm nx run backend:deploy:api'] }, + build: { commands: ['pnpm saas backend deploy api'] }, }, cache: { paths: [...this.defaultCachePaths], @@ -235,7 +235,7 @@ export class BackendCiConfig extends ServiceCiConfig { PnpmWorkspaceFilters.BACKEND ), }, - build: { commands: ['pnpm nx run backend:deploy:migrations'] }, + build: { commands: ['pnpm saas backend deploy migrations'] }, }, cache: { paths: [...this.defaultCachePaths], diff --git a/packages/infra/infra-shared/src/stacks/ci/ciComponents.ts b/packages/infra/infra-shared/src/stacks/ci/ciComponents.ts index d39134764..82302aea8 100644 --- a/packages/infra/infra-shared/src/stacks/ci/ciComponents.ts +++ b/packages/infra/infra-shared/src/stacks/ci/ciComponents.ts @@ -66,7 +66,7 @@ export class ComponentsCiConfig extends ServiceCiConfig { PnpmWorkspaceFilters.INFRA_SHARED ), }, - build: { commands: ['pnpm nx run infra-shared:deploy:components'] }, + build: { commands: ['pnpm saas infra deploy components'] }, }, cache: { paths: [...this.defaultCachePaths], diff --git a/packages/infra/infra-shared/src/stacks/ci/ciDocs.ts b/packages/infra/infra-shared/src/stacks/ci/ciDocs.ts index e66083787..d80594533 100644 --- a/packages/infra/infra-shared/src/stacks/ci/ciDocs.ts +++ b/packages/infra/infra-shared/src/stacks/ci/ciDocs.ts @@ -81,7 +81,7 @@ export class DocsCiConfig extends ServiceCiConfig { pre_build: { commands: preBuildCommands, }, - build: { commands: ['pnpm nx run docs:build-with-env'] }, + build: { commands: ['pnpm saas docs build'] }, }, cache: { paths: this.defaultCachePaths, @@ -109,7 +109,7 @@ export class DocsCiConfig extends ServiceCiConfig { type: codebuild.BuildEnvironmentVariableType.SECRETS_MANAGER, value: 'GlobalBuildSecrets:DOCKER_PASSWORD', }, - BACKEND_BASE_IMAGE: { + SB_BACKEND_BASE_IMAGE: { type: codebuild.BuildEnvironmentVariableType.PLAINTEXT, value: baseImage, }, @@ -154,7 +154,7 @@ export class DocsCiConfig extends ServiceCiConfig { pre_build: { commands: this.getWorkspaceSetupCommands(PnpmWorkspaceFilters.DOCS), }, - build: { commands: ['pnpm nx run docs:deploy'] }, + build: { commands: ['pnpm saas docs deploy'] }, }, cache: { paths: [...this.defaultCachePaths], diff --git a/packages/infra/infra-shared/src/stacks/ci/ciEntrypoint.ts b/packages/infra/infra-shared/src/stacks/ci/ciEntrypoint.ts index aa4b38ed3..36477f2f7 100644 --- a/packages/infra/infra-shared/src/stacks/ci/ciEntrypoint.ts +++ b/packages/infra/infra-shared/src/stacks/ci/ciEntrypoint.ts @@ -99,7 +99,7 @@ export class CiEntrypoint extends Construct { phases: { build: { commands: [ - 'app_version=$(bash packages/internal/core/scripts/get-version.sh)', + 'app_version=$(git describe --tags --first-parent --abbrev=11 --long --dirty --always)', 'echo "VERSION=${app_version}" >> .env', ], }, diff --git a/packages/infra/infra-shared/src/stacks/ci/ciPipeline.ts b/packages/infra/infra-shared/src/stacks/ci/ciPipeline.ts index c4ad30e64..cc2f48589 100644 --- a/packages/infra/infra-shared/src/stacks/ci/ciPipeline.ts +++ b/packages/infra/infra-shared/src/stacks/ci/ciPipeline.ts @@ -74,7 +74,6 @@ export class CiPipeline extends Construct { }); new ServerlessCiConfig(this, 'WorkersConfig', { - name: 'workers', envSettings: props.envSettings, buildStage, deployStage, diff --git a/packages/infra/infra-shared/src/stacks/ci/ciServerless.ts b/packages/infra/infra-shared/src/stacks/ci/ciServerless.ts index 5f4ae412c..b222eb59c 100644 --- a/packages/infra/infra-shared/src/stacks/ci/ciServerless.ts +++ b/packages/infra/infra-shared/src/stacks/ci/ciServerless.ts @@ -14,7 +14,6 @@ import { BootstrapStack } from '../bootstrap'; import { EnvMainStack } from '../main'; interface ServerlessCiConfigProps extends EnvConstructProps { - name: string; inputArtifact: codepipeline.Artifact; buildStage: codepipeline.IStage; deployStage: codepipeline.IStage; @@ -25,7 +24,7 @@ export class ServerlessCiConfig extends ServiceCiConfig { super(scope, id, { envSettings: props.envSettings }); const buildArtifact = codepipeline.Artifact.artifact( - `${props.envSettings.projectEnvName}-${props.name}` + `${props.envSettings.projectEnvName}-workers` ); const buildProject = this.createBuildProject(props); @@ -61,7 +60,7 @@ export class ServerlessCiConfig extends ServiceCiConfig { codepipelineActions.CodeBuildActionProps >{ ...actionProps, - actionName: `${props.envSettings.projectEnvName}-build-${props.name}`, + actionName: `${props.envSettings.projectEnvName}-build-workers`, }); } @@ -83,7 +82,7 @@ export class ServerlessCiConfig extends ServiceCiConfig { }`; const project = new codebuild.Project(this, 'BuildProject', { - projectName: `${props.envSettings.projectEnvName}-build-${props.name}`, + projectName: `${props.envSettings.projectEnvName}-build-workers`, buildSpec: codebuild.BuildSpec.fromObject({ version: '0.2', phases: { @@ -95,9 +94,9 @@ export class ServerlessCiConfig extends ServiceCiConfig { }, build: { commands: [ - `pnpm nx run ${props.name}:lint`, - 'pnpm nx run webapp-emails:build', - `pnpm nx run ${props.name}:test`, + `pnpm saas workers lint`, + 'pnpm saas emails build', + `pnpm saas workers test`, ], }, }, @@ -127,7 +126,7 @@ export class ServerlessCiConfig extends ServiceCiConfig { type: codebuild.BuildEnvironmentVariableType.PLAINTEXT, value: dockerAssumeRole.roleArn, }, - WORKERS_BASE_IMAGE: { + SB_WORKERS_BASE_IMAGE: { type: codebuild.BuildEnvironmentVariableType.PLAINTEXT, value: baseImage, }, @@ -184,7 +183,7 @@ export class ServerlessCiConfig extends ServiceCiConfig { codepipelineActions.CodeBuildActionProps >{ ...actionProps, - actionName: `${props.envSettings.projectEnvName}-deploy-${props.name}`, + actionName: `${props.envSettings.projectEnvName}-deploy-workers`, }); } @@ -204,7 +203,7 @@ export class ServerlessCiConfig extends ServiceCiConfig { }`; const project = new codebuild.Project(this, 'DeployProject', { - projectName: `${props.envSettings.projectEnvName}-deploy-${props.name}`, + projectName: `${props.envSettings.projectEnvName}-deploy-workers`, buildSpec: codebuild.BuildSpec.fromObject({ version: '0.2', phases: { @@ -214,7 +213,7 @@ export class ServerlessCiConfig extends ServiceCiConfig { pre_build: { commands: preBuildCommands, }, - build: { commands: [`pnpm nx run ${props.name}:deploy`] }, + build: { commands: [`pnpm saas workers deploy`] }, }, cache: { paths: this.defaultCachePaths, @@ -238,7 +237,7 @@ export class ServerlessCiConfig extends ServiceCiConfig { type: codebuild.BuildEnvironmentVariableType.PLAINTEXT, value: dockerAssumeRole.roleArn, }, - WORKERS_BASE_IMAGE: { + SB_WORKERS_BASE_IMAGE: { type: codebuild.BuildEnvironmentVariableType.PLAINTEXT, value: baseImage, }, @@ -287,7 +286,7 @@ export class ServerlessCiConfig extends ServiceCiConfig { actions: ['cloudformation:*'], resources: [ `arn:aws:cloudformation:${stack.region}:${stack.account}:stack/CDKToolkit/*`, - `arn:aws:cloudformation:${stack.region}:${stack.account}:stack/${props.envSettings.projectEnvName}-${props.name}/*`, + `arn:aws:cloudformation:${stack.region}:${stack.account}:stack/${props.envSettings.projectEnvName}-workers/*`, ], }) ); diff --git a/packages/infra/infra-shared/src/stacks/ci/ciWebApp.ts b/packages/infra/infra-shared/src/stacks/ci/ciWebApp.ts index 77a4514e6..b02e10c19 100644 --- a/packages/infra/infra-shared/src/stacks/ci/ciWebApp.ts +++ b/packages/infra/infra-shared/src/stacks/ci/ciWebApp.ts @@ -86,9 +86,9 @@ export class WebappCiConfig extends ServiceCiConfig { }, build: { commands: [ - 'pnpm nx run webapp:lint', - 'pnpm nx run webapp:test --watchAll=false', - 'pnpm nx run webapp:build', + 'pnpm saas webapp lint', + 'pnpm saas webapp test --watchAll=false', + 'pnpm saas webapp build', ], }, }, @@ -149,7 +149,7 @@ export class WebappCiConfig extends ServiceCiConfig { PnpmWorkspaceFilters.WEBAPP ), }, - build: { commands: ['pnpm nx run webapp:deploy'] }, + build: { commands: ['pnpm saas webapp deploy'] }, }, cache: { paths: [...this.defaultCachePaths], diff --git a/packages/infra/infra-shared/src/stacks/global/resources/globalECR.ts b/packages/infra/infra-shared/src/stacks/global/resources/globalECR.ts index 8a8b5e86d..235b553d1 100644 --- a/packages/infra/infra-shared/src/stacks/global/resources/globalECR.ts +++ b/packages/infra/infra-shared/src/stacks/global/resources/globalECR.ts @@ -19,7 +19,7 @@ export class GlobalECR extends Construct { const registryId = Fn.ref('AWS::AccountId'); const region = Fn.ref('AWS::Region'); - return `${registryId}.dkr.ecr.${region}.amazonaws.com/${GlobalECR.ECRPublicRepositoryPrefix}`; + return `${registryId}.dkr.ecr.${region}.amazonaws.com/${GlobalECR.ECRPublicRepositoryPrefix}/docker/library`; } static getPublicECRIamPolicyStatements() { diff --git a/packages/internal/cli/.editorconfig b/packages/internal/cli/.editorconfig new file mode 100644 index 000000000..beffa3084 --- /dev/null +++ b/packages/internal/cli/.editorconfig @@ -0,0 +1,11 @@ +root = true + +[*] +indent_style = space +indent_size = 2 +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true + +[*.md] +trim_trailing_whitespace = false diff --git a/packages/internal/cli/.eslintignore b/packages/internal/cli/.eslintignore new file mode 100644 index 000000000..9b1c8b133 --- /dev/null +++ b/packages/internal/cli/.eslintignore @@ -0,0 +1 @@ +/dist diff --git a/packages/internal/cli/.eslintrc b/packages/internal/cli/.eslintrc new file mode 100644 index 000000000..856ec188a --- /dev/null +++ b/packages/internal/cli/.eslintrc @@ -0,0 +1,3 @@ +{ + "extends": ["../../../.eslintrc.json"] +} diff --git a/packages/internal/cli/.gitignore b/packages/internal/cli/.gitignore new file mode 100644 index 000000000..5d10025e1 --- /dev/null +++ b/packages/internal/cli/.gitignore @@ -0,0 +1,12 @@ +**/.DS_Store +*-debug.log +*-error.log +/.idea +/.nyc_output +/dist +/lib +/package-lock.json +/tmp +/yarn.lock +node_modules +oclif.manifest.json diff --git a/packages/internal/cli/.mocharc.json b/packages/internal/cli/.mocharc.json new file mode 100644 index 000000000..42ff67efc --- /dev/null +++ b/packages/internal/cli/.mocharc.json @@ -0,0 +1,7 @@ +{ + "require": ["test/helpers/init.js", "ts-node/register"], + "watch-extensions": ["ts"], + "recursive": true, + "reporter": "spec", + "timeout": 60000 +} diff --git a/packages/internal/cli/README.md b/packages/internal/cli/README.md new file mode 100644 index 000000000..07acea7e1 --- /dev/null +++ b/packages/internal/cli/README.md @@ -0,0 +1,1253 @@ +# SaaS Boilerplate CLI + + + +- [SaaS Boilerplate CLI](#saas-boilerplate-cli) +- [Usage](#usage) +- [Commands](#commands) + + +# Usage + + + +```sh-session +$ pnpm i -w +$ saas COMMAND +running command... +$ saas (--version) +@sb/cli/2.0.3 darwin-arm64 node-v18.15.0 +$ saas --help [COMMAND] +USAGE + $ saas COMMAND +... +``` + + + +# Commands + + + +- [`saas autocomplete [SHELL]`](#saas-autocomplete-shell) +- [`saas aws get-env`](#saas-aws-get-env) +- [`saas aws login`](#saas-aws-login) +- [`saas aws set-env ENVSTAGE`](#saas-aws-set-env-envstage) +- [`saas backend black`](#saas-backend-black) +- [`saas backend build`](#saas-backend-build) +- [`saas backend build-docs`](#saas-backend-build-docs) +- [`saas backend deploy api`](#saas-backend-deploy-api) +- [`saas backend deploy migrations`](#saas-backend-deploy-migrations) +- [`saas backend down`](#saas-backend-down) +- [`saas backend makemigrations`](#saas-backend-makemigrations) +- [`saas backend migrate`](#saas-backend-migrate) +- [`saas backend remote-shell`](#saas-backend-remote-shell) +- [`saas backend ruff`](#saas-backend-ruff) +- [`saas backend secrets`](#saas-backend-secrets) +- [`saas backend shell`](#saas-backend-shell) +- [`saas backend stripe sync`](#saas-backend-stripe-sync) +- [`saas backend test`](#saas-backend-test) +- [`saas backend up`](#saas-backend-up) +- [`saas build`](#saas-build) +- [`saas ci create-credentials`](#saas-ci-create-credentials) +- [`saas db shell`](#saas-db-shell) +- [`saas deploy`](#saas-deploy) +- [`saas docs build`](#saas-docs-build) +- [`saas docs deploy`](#saas-docs-deploy) +- [`saas docs up`](#saas-docs-up) +- [`saas down`](#saas-down) +- [`saas emails build`](#saas-emails-build) +- [`saas emails secrets`](#saas-emails-secrets) +- [`saas emails test`](#saas-emails-test) +- [`saas help [COMMANDS]`](#saas-help-commands) +- [`saas infra bootstrap`](#saas-infra-bootstrap) +- [`saas infra deploy [STACKNAME]`](#saas-infra-deploy-stackname) +- [`saas lint`](#saas-lint) +- [`saas plugins`](#saas-plugins) +- [`saas plugins:install PLUGIN...`](#saas-pluginsinstall-plugin) +- [`saas plugins:inspect PLUGIN...`](#saas-pluginsinspect-plugin) +- [`saas plugins:install PLUGIN...`](#saas-pluginsinstall-plugin-1) +- [`saas plugins:link PLUGIN`](#saas-pluginslink-plugin) +- [`saas plugins:uninstall PLUGIN...`](#saas-pluginsuninstall-plugin) +- [`saas plugins:uninstall PLUGIN...`](#saas-pluginsuninstall-plugin-1) +- [`saas plugins:uninstall PLUGIN...`](#saas-pluginsuninstall-plugin-2) +- [`saas plugins update`](#saas-plugins-update) +- [`saas up`](#saas-up) +- [`saas webapp build`](#saas-webapp-build) +- [`saas webapp deploy`](#saas-webapp-deploy) +- [`saas webapp graphql download-schema`](#saas-webapp-graphql-download-schema) +- [`saas webapp lint`](#saas-webapp-lint) +- [`saas webapp secrets`](#saas-webapp-secrets) +- [`saas webapp test`](#saas-webapp-test) +- [`saas webapp up`](#saas-webapp-up) +- [`saas workers black`](#saas-workers-black) +- [`saas workers build`](#saas-workers-build) +- [`saas workers deploy`](#saas-workers-deploy) +- [`saas workers invoke local`](#saas-workers-invoke-local) +- [`saas workers lint`](#saas-workers-lint) +- [`saas workers secrets`](#saas-workers-secrets) +- [`saas workers shell`](#saas-workers-shell) +- [`saas workers test`](#saas-workers-test) + +## `saas autocomplete [SHELL]` + +display autocomplete installation instructions + +``` +USAGE + $ saas autocomplete [SHELL] [-r] + +ARGUMENTS + SHELL (zsh|bash|powershell) Shell type + +FLAGS + -r, --refresh-cache Refresh cache (ignores displaying instructions) + +DESCRIPTION + display autocomplete installation instructions + +EXAMPLES + $ saas autocomplete + + $ saas autocomplete bash + + $ saas autocomplete zsh + + $ saas autocomplete powershell + + $ saas autocomplete --refresh-cache +``` + +_See code: [@oclif/plugin-autocomplete](https://github.com/oclif/plugin-autocomplete/blob/v2.3.8/src/commands/autocomplete/index.ts)_ + +## `saas aws get-env` + +Get currently selected ENV stage + +``` +USAGE + $ saas aws get-env + +DESCRIPTION + Get currently selected ENV stage + +EXAMPLES + $ saas aws get-env +``` + +_See code: [dist/commands/aws/get-env.js](https://github.com/apptension/saas-boilerplate/blob/v2.0.3/dist/commands/aws/get-env.js)_ + +## `saas aws login` + +Get currently selected ENV stage + +``` +USAGE + $ saas aws login + +DESCRIPTION + Get currently selected ENV stage + +EXAMPLES + $ saas aws login +``` + +_See code: [dist/commands/aws/login.js](https://github.com/apptension/saas-boilerplate/blob/v2.0.3/dist/commands/aws/login.js)_ + +## `saas aws set-env ENVSTAGE` + +Select ENV stage + +``` +USAGE + $ saas aws set-env ENVSTAGE + +ARGUMENTS + ENVSTAGE Env stage to select + +DESCRIPTION + Select ENV stage + +EXAMPLES + $ saas aws set-env local + + $ saas aws set-env qa + + $ saas aws set-env staging + + $ saas aws set-env production +``` + +_See code: [dist/commands/aws/set-env.js](https://github.com/apptension/saas-boilerplate/blob/v2.0.3/dist/commands/aws/set-env.js)_ + +## `saas backend black` + +Run black inside backend docker container + +``` +USAGE + $ saas backend black + +DESCRIPTION + Run black inside backend docker container + +EXAMPLES + $ saas backend black +``` + +_See code: [dist/commands/backend/black.js](https://github.com/apptension/saas-boilerplate/blob/v2.0.3/dist/commands/backend/black.js)_ + +## `saas backend build` + +Build backend docker image and upload it to AWS ECR + +``` +USAGE + $ saas backend build + +DESCRIPTION + Build backend docker image and upload it to AWS ECR + +EXAMPLES + $ saas backend build +``` + +_See code: [dist/commands/backend/build.js](https://github.com/apptension/saas-boilerplate/blob/v2.0.3/dist/commands/backend/build.js)_ + +## `saas backend build-docs` + +Build backend docs and put results into docs package + +``` +USAGE + $ saas backend build-docs + +DESCRIPTION + Build backend docs and put results into docs package + +EXAMPLES + $ saas backend build-docs +``` + +_See code: [dist/commands/backend/build-docs.js](https://github.com/apptension/saas-boilerplate/blob/v2.0.3/dist/commands/backend/build-docs.js)_ + +## `saas backend deploy api` + +Deploys backend API to AWS using previously built artifact + +``` +USAGE + $ saas backend deploy api [--diff] + +FLAGS + --diff Perform a dry run and list all changes that would be applied in AWS account + +DESCRIPTION + Deploys backend API to AWS using previously built artifact + +EXAMPLES + $ saas backend deploy api +``` + +_See code: [dist/commands/backend/deploy/api.js](https://github.com/apptension/saas-boilerplate/blob/v2.0.3/dist/commands/backend/deploy/api.js)_ + +## `saas backend deploy migrations` + +Deploys database migrations to AWS using previously built artifact and immediately performs them + +``` +USAGE + $ saas backend deploy migrations [--diff] + +FLAGS + --diff Perform a dry run and list all changes that would be applied in AWS account + +DESCRIPTION + Deploys database migrations to AWS using previously built artifact and immediately performs them + +EXAMPLES + $ saas backend deploy migrations +``` + +_See code: [dist/commands/backend/deploy/migrations.js](https://github.com/apptension/saas-boilerplate/blob/v2.0.3/dist/commands/backend/deploy/migrations.js)_ + +## `saas backend down` + +Stops all backend services + +``` +USAGE + $ saas backend down + +DESCRIPTION + Stops all backend services + +EXAMPLES + $ saas backend down +``` + +_See code: [dist/commands/backend/down.js](https://github.com/apptension/saas-boilerplate/blob/v2.0.3/dist/commands/backend/down.js)_ + +## `saas backend makemigrations` + +Shorthand to generate django backend migrations. If you need more control use `saas backend shell` and run `./manage.py makemigrations` manually + +``` +USAGE + $ saas backend makemigrations + +DESCRIPTION + Shorthand to generate django backend migrations. If you need more control use `saas backend shell` and run + `./manage.py makemigrations` manually + +EXAMPLES + $ saas backend makemigrations +``` + +_See code: [dist/commands/backend/makemigrations.js](https://github.com/apptension/saas-boilerplate/blob/v2.0.3/dist/commands/backend/makemigrations.js)_ + +## `saas backend migrate` + +Shorthand to run backend migrations using local database. If you need more control use`saas backend shell` and run `./manage.py migrate` manually + +``` +USAGE + $ saas backend migrate + +DESCRIPTION + Shorthand to run backend migrations using local database. If you need more control use`saas backend shell` and run + `./manage.py migrate` manually + +EXAMPLES + $ saas backend migrate +``` + +_See code: [dist/commands/backend/migrate.js](https://github.com/apptension/saas-boilerplate/blob/v2.0.3/dist/commands/backend/migrate.js)_ + +## `saas backend remote-shell` + +Use aws execute-command to start a /bin/bash session inside a running backend task in ECS cluster + +``` +USAGE + $ saas backend remote-shell + +DESCRIPTION + Use aws execute-command to start a /bin/bash session inside a running backend task in ECS cluster + +EXAMPLES + $ saas backend remote-shell +``` + +_See code: [dist/commands/backend/remote-shell.js](https://github.com/apptension/saas-boilerplate/blob/v2.0.3/dist/commands/backend/remote-shell.js)_ + +## `saas backend ruff` + +Run ruff inside backend docker container + +``` +USAGE + $ saas backend ruff + +DESCRIPTION + Run ruff inside backend docker container + +EXAMPLES + $ saas backend ruff +``` + +_See code: [dist/commands/backend/ruff.js](https://github.com/apptension/saas-boilerplate/blob/v2.0.3/dist/commands/backend/ruff.js)_ + +## `saas backend secrets` + +Runs an ssm-editor helper tool in docker container to set runtime environmental variables of backend service. Underneath it uses chamber to both fetch and set those variables in AWS SSM Parameter Store + +``` +USAGE + $ saas backend secrets + +DESCRIPTION + Runs an ssm-editor helper tool in docker container to set runtime environmental variables of backend service. + Underneath it uses chamber to both fetch and set those variables in AWS SSM Parameter Store + +EXAMPLES + $ saas backend secrets +``` + +_See code: [dist/commands/backend/secrets.js](https://github.com/apptension/saas-boilerplate/blob/v2.0.3/dist/commands/backend/secrets.js)_ + +## `saas backend shell` + +Runs interactive bash shell inside backend docker container + +``` +USAGE + $ saas backend shell + +DESCRIPTION + Runs interactive bash shell inside backend docker container + +EXAMPLES + $ saas backend shell +``` + +_See code: [dist/commands/backend/shell.js](https://github.com/apptension/saas-boilerplate/blob/v2.0.3/dist/commands/backend/shell.js)_ + +## `saas backend stripe sync` + +Run stripe synchronisation command inside backend docker container. Requires environmental variables with stripe credentials to be set. + +``` +USAGE + $ saas backend stripe sync + +DESCRIPTION + Run stripe synchronisation command inside backend docker container. Requires environmental variables with stripe + credentials to be set. + +EXAMPLES + $ saas backend stripe sync +``` + +_See code: [dist/commands/backend/stripe/sync.js](https://github.com/apptension/saas-boilerplate/blob/v2.0.3/dist/commands/backend/stripe/sync.js)_ + +## `saas backend test` + +Runs all backend tests in docker container + +``` +USAGE + $ saas backend test + +DESCRIPTION + Runs all backend tests in docker container + +EXAMPLES + $ saas backend test +``` + +_See code: [dist/commands/backend/test.js](https://github.com/apptension/saas-boilerplate/blob/v2.0.3/dist/commands/backend/test.js)_ + +## `saas backend up` + +Starts all backend services + +``` +USAGE + $ saas backend up + +DESCRIPTION + Starts all backend services + +EXAMPLES + $ saas backend up +``` + +_See code: [dist/commands/backend/up.js](https://github.com/apptension/saas-boilerplate/blob/v2.0.3/dist/commands/backend/up.js)_ + +## `saas build` + +Build all deployable artifacts + +``` +USAGE + $ saas build + +DESCRIPTION + Build all deployable artifacts + +EXAMPLES + $ saas build +``` + +_See code: [dist/commands/build.js](https://github.com/apptension/saas-boilerplate/blob/v2.0.3/dist/commands/build.js)_ + +## `saas ci create-credentials` + +Create CI/CD repository credentials. They can be used in Bitbucket, Github, Gitlab, etc to push code changes to CodeCommit + +``` +USAGE + $ saas ci create-credentials + +DESCRIPTION + Create CI/CD repository credentials. They can be used in Bitbucket, Github, Gitlab, etc to push code changes to + CodeCommit + +EXAMPLES + $ saas ci create-credentials +``` + +_See code: [dist/commands/ci/create-credentials.js](https://github.com/apptension/saas-boilerplate/blob/v2.0.3/dist/commands/ci/create-credentials.js)_ + +## `saas db shell` + +Start a psql client shell in local `db` container. It allows you to run some raw queries when needed. + +``` +USAGE + $ saas db shell + +DESCRIPTION + Start a psql client shell in local `db` container. It allows you to run some raw queries when needed. + +EXAMPLES + $ saas db shell +``` + +_See code: [dist/commands/db/shell.js](https://github.com/apptension/saas-boilerplate/blob/v2.0.3/dist/commands/db/shell.js)_ + +## `saas deploy` + +Deploy all previously built artifacts to AWS + +``` +USAGE + $ saas deploy [--diff] + +FLAGS + --diff Perform a dry run and list all changes that would be applied in AWS account + +DESCRIPTION + Deploy all previously built artifacts to AWS + +EXAMPLES + $ saas deploy +``` + +_See code: [dist/commands/deploy.js](https://github.com/apptension/saas-boilerplate/blob/v2.0.3/dist/commands/deploy.js)_ + +## `saas docs build` + +Build docs artifact + +``` +USAGE + $ saas docs build + +DESCRIPTION + Build docs artifact + +EXAMPLES + $ saas docs build +``` + +_See code: [dist/commands/docs/build.js](https://github.com/apptension/saas-boilerplate/blob/v2.0.3/dist/commands/docs/build.js)_ + +## `saas docs deploy` + +Deploys docs to AWS using previously built artifact + +``` +USAGE + $ saas docs deploy [--diff] + +FLAGS + --diff Perform a dry run and list all changes that would be applied in AWS account + +DESCRIPTION + Deploys docs to AWS using previously built artifact + +EXAMPLES + $ saas docs deploy +``` + +_See code: [dist/commands/docs/deploy.js](https://github.com/apptension/saas-boilerplate/blob/v2.0.3/dist/commands/docs/deploy.js)_ + +## `saas docs up` + +Starts local docusaurus server + +``` +USAGE + $ saas docs up + +DESCRIPTION + Starts local docusaurus server + +EXAMPLES + $ saas docs up +``` + +_See code: [dist/commands/docs/up.js](https://github.com/apptension/saas-boilerplate/blob/v2.0.3/dist/commands/docs/up.js)_ + +## `saas down` + +Starts both backend and frontend + +``` +USAGE + $ saas down + +DESCRIPTION + Starts both backend and frontend + +EXAMPLES + $ saas down +``` + +_See code: [dist/commands/down.js](https://github.com/apptension/saas-boilerplate/blob/v2.0.3/dist/commands/down.js)_ + +## `saas emails build` + +Build emails artifact and place it in workers package + +``` +USAGE + $ saas emails build + +DESCRIPTION + Build emails artifact and place it in workers package + +EXAMPLES + $ saas emails build +``` + +_See code: [dist/commands/emails/build.js](https://github.com/apptension/saas-boilerplate/blob/v2.0.3/dist/commands/emails/build.js)_ + +## `saas emails secrets` + +Runs an ssm-editor helper tool in docker container to set runtime environmental variables of webapp service. Underneath it uses chamber to both fetch and set those variables in AWS SSM Parameter Store + +``` +USAGE + $ saas emails secrets + +DESCRIPTION + Runs an ssm-editor helper tool in docker container to set runtime environmental variables of webapp service. + Underneath it uses chamber to both fetch and set those variables in AWS SSM Parameter Store + +EXAMPLES + $ saas emails secrets +``` + +_See code: [dist/commands/emails/secrets.js](https://github.com/apptension/saas-boilerplate/blob/v2.0.3/dist/commands/emails/secrets.js)_ + +## `saas emails test` + +Runs all emails tests + +``` +USAGE + $ saas emails test + +DESCRIPTION + Runs all emails tests + +EXAMPLES + $ saas emails test +``` + +_See code: [dist/commands/emails/test.js](https://github.com/apptension/saas-boilerplate/blob/v2.0.3/dist/commands/emails/test.js)_ + +## `saas help [COMMANDS]` + +Display help for saas. + +``` +USAGE + $ saas help [COMMANDS] [-n] + +ARGUMENTS + COMMANDS Command to show help for. + +FLAGS + -n, --nested-commands Include all nested commands in the output. + +DESCRIPTION + Display help for saas. +``` + +_See code: [@oclif/plugin-help](https://github.com/oclif/plugin-help/blob/v5.2.19/src/commands/help.ts)_ + +## `saas infra bootstrap` + +Bootstrap infrastructure in AWS account by creating resources necessary to start working with SaaS Boilerplate + +``` +USAGE + $ saas infra bootstrap + +DESCRIPTION + Bootstrap infrastructure in AWS account by creating resources necessary to start working with SaaS Boilerplate + +EXAMPLES + $ saas infra bootstrap +``` + +_See code: [dist/commands/infra/bootstrap.js](https://github.com/apptension/saas-boilerplate/blob/v2.0.3/dist/commands/infra/bootstrap.js)_ + +## `saas infra deploy [STACKNAME]` + +Deploy infrastructure of a currently selected environment stage to AWS account + +``` +USAGE + $ saas infra deploy [STACKNAME] [--diff] + +ARGUMENTS + STACKNAME (global|main|db|functions|ci|components) Name of the stack to deploy. If not specified all will be deployed + +FLAGS + --diff Perform a dry run and list all changes that would be applied + +DESCRIPTION + Deploy infrastructure of a currently selected environment stage to AWS account + +EXAMPLES + $ saas infra deploy +``` + +_See code: [dist/commands/infra/deploy.js](https://github.com/apptension/saas-boilerplate/blob/v2.0.3/dist/commands/infra/deploy.js)_ + +## `saas lint` + +Lint all projects + +``` +USAGE + $ saas lint + +DESCRIPTION + Lint all projects + +EXAMPLES + $ saas lint +``` + +_See code: [dist/commands/lint.js](https://github.com/apptension/saas-boilerplate/blob/v2.0.3/dist/commands/lint.js)_ + +## `saas plugins` + +List installed plugins. + +``` +USAGE + $ saas plugins [--json] [--core] + +FLAGS + --core Show core plugins. + +GLOBAL FLAGS + --json Format output as json. + +DESCRIPTION + List installed plugins. + +EXAMPLES + $ saas plugins +``` + +_See code: [@oclif/plugin-plugins](https://github.com/oclif/plugin-plugins/blob/v3.4.0/src/commands/plugins/index.ts)_ + +## `saas plugins:install PLUGIN...` + +Installs a plugin into the CLI. + +``` +USAGE + $ saas plugins:install PLUGIN... + +ARGUMENTS + PLUGIN Plugin to install. + +FLAGS + -f, --force Run yarn install with force flag. + -h, --help Show CLI help. + -v, --verbose + +DESCRIPTION + Installs a plugin into the CLI. + Can be installed from npm or a git url. + + Installation of a user-installed plugin will override a core plugin. + + e.g. If you have a core plugin that has a 'hello' command, installing a user-installed plugin with a 'hello' command + will override the core plugin implementation. This is useful if a user needs to update core plugin functionality in + the CLI without the need to patch and update the whole CLI. + + +ALIASES + $ saas plugins add + +EXAMPLES + $ saas plugins:install myplugin + + $ saas plugins:install https://github.com/someuser/someplugin + + $ saas plugins:install someuser/someplugin +``` + +## `saas plugins:inspect PLUGIN...` + +Displays installation properties of a plugin. + +``` +USAGE + $ saas plugins:inspect PLUGIN... + +ARGUMENTS + PLUGIN [default: .] Plugin to inspect. + +FLAGS + -h, --help Show CLI help. + -v, --verbose + +GLOBAL FLAGS + --json Format output as json. + +DESCRIPTION + Displays installation properties of a plugin. + +EXAMPLES + $ saas plugins:inspect myplugin +``` + +_See code: [@oclif/plugin-plugins](https://github.com/oclif/plugin-plugins/blob/v3.4.0/src/commands/plugins/inspect.ts)_ + +## `saas plugins:install PLUGIN...` + +Installs a plugin into the CLI. + +``` +USAGE + $ saas plugins:install PLUGIN... + +ARGUMENTS + PLUGIN Plugin to install. + +FLAGS + -f, --force Run yarn install with force flag. + -h, --help Show CLI help. + -v, --verbose + +DESCRIPTION + Installs a plugin into the CLI. + Can be installed from npm or a git url. + + Installation of a user-installed plugin will override a core plugin. + + e.g. If you have a core plugin that has a 'hello' command, installing a user-installed plugin with a 'hello' command + will override the core plugin implementation. This is useful if a user needs to update core plugin functionality in + the CLI without the need to patch and update the whole CLI. + + +ALIASES + $ saas plugins add + +EXAMPLES + $ saas plugins:install myplugin + + $ saas plugins:install https://github.com/someuser/someplugin + + $ saas plugins:install someuser/someplugin +``` + +_See code: [@oclif/plugin-plugins](https://github.com/oclif/plugin-plugins/blob/v3.4.0/src/commands/plugins/install.ts)_ + +## `saas plugins:link PLUGIN` + +Links a plugin into the CLI for development. + +``` +USAGE + $ saas plugins:link PLUGIN + +ARGUMENTS + PATH [default: .] path to plugin + +FLAGS + -h, --help Show CLI help. + -v, --verbose + +DESCRIPTION + Links a plugin into the CLI for development. + Installation of a linked plugin will override a user-installed or core plugin. + + e.g. If you have a user-installed or core plugin that has a 'hello' command, installing a linked plugin with a 'hello' + command will override the user-installed or core plugin implementation. This is useful for development work. + + +EXAMPLES + $ saas plugins:link myplugin +``` + +_See code: [@oclif/plugin-plugins](https://github.com/oclif/plugin-plugins/blob/v3.4.0/src/commands/plugins/link.ts)_ + +## `saas plugins:uninstall PLUGIN...` + +Removes a plugin from the CLI. + +``` +USAGE + $ saas plugins:uninstall PLUGIN... + +ARGUMENTS + PLUGIN plugin to uninstall + +FLAGS + -h, --help Show CLI help. + -v, --verbose + +DESCRIPTION + Removes a plugin from the CLI. + +ALIASES + $ saas plugins unlink + $ saas plugins remove +``` + +## `saas plugins:uninstall PLUGIN...` + +Removes a plugin from the CLI. + +``` +USAGE + $ saas plugins:uninstall PLUGIN... + +ARGUMENTS + PLUGIN plugin to uninstall + +FLAGS + -h, --help Show CLI help. + -v, --verbose + +DESCRIPTION + Removes a plugin from the CLI. + +ALIASES + $ saas plugins unlink + $ saas plugins remove +``` + +_See code: [@oclif/plugin-plugins](https://github.com/oclif/plugin-plugins/blob/v3.4.0/src/commands/plugins/uninstall.ts)_ + +## `saas plugins:uninstall PLUGIN...` + +Removes a plugin from the CLI. + +``` +USAGE + $ saas plugins:uninstall PLUGIN... + +ARGUMENTS + PLUGIN plugin to uninstall + +FLAGS + -h, --help Show CLI help. + -v, --verbose + +DESCRIPTION + Removes a plugin from the CLI. + +ALIASES + $ saas plugins unlink + $ saas plugins remove +``` + +## `saas plugins update` + +Update installed plugins. + +``` +USAGE + $ saas plugins update [-h] [-v] + +FLAGS + -h, --help Show CLI help. + -v, --verbose + +DESCRIPTION + Update installed plugins. +``` + +_See code: [@oclif/plugin-plugins](https://github.com/oclif/plugin-plugins/blob/v3.4.0/src/commands/plugins/update.ts)_ + +## `saas up` + +Starts both backend and frontend + +``` +USAGE + $ saas up + +DESCRIPTION + Starts both backend and frontend + +EXAMPLES + $ saas up +``` + +_See code: [dist/commands/up.js](https://github.com/apptension/saas-boilerplate/blob/v2.0.3/dist/commands/up.js)_ + +## `saas webapp build` + +Build webapp artifact ready to be deployed to AWS + +``` +USAGE + $ saas webapp build + +DESCRIPTION + Build webapp artifact ready to be deployed to AWS + +EXAMPLES + $ saas webapp build +``` + +_See code: [dist/commands/webapp/build.js](https://github.com/apptension/saas-boilerplate/blob/v2.0.3/dist/commands/webapp/build.js)_ + +## `saas webapp deploy` + +Deploys webapp to AWS using previously built artifact + +``` +USAGE + $ saas webapp deploy [--diff] + +FLAGS + --diff Perform a dry run and list all changes that would be applied in AWS account + +DESCRIPTION + Deploys webapp to AWS using previously built artifact + +EXAMPLES + $ saas webapp deploy +``` + +_See code: [dist/commands/webapp/deploy.js](https://github.com/apptension/saas-boilerplate/blob/v2.0.3/dist/commands/webapp/deploy.js)_ + +## `saas webapp graphql download-schema` + +Download graphql schemas and merge them + +``` +USAGE + $ saas webapp graphql download-schema + +DESCRIPTION + Download graphql schemas and merge them + +EXAMPLES + $ saas webapp graphql download-schema +``` + +_See code: [dist/commands/webapp/graphql/download-schema.js](https://github.com/apptension/saas-boilerplate/blob/v2.0.3/dist/commands/webapp/graphql/download-schema.js)_ + +## `saas webapp lint` + +Runs all webapp linters + +``` +USAGE + $ saas webapp lint + +DESCRIPTION + Runs all webapp linters + +EXAMPLES + $ saas webapp lint +``` + +_See code: [dist/commands/webapp/lint.js](https://github.com/apptension/saas-boilerplate/blob/v2.0.3/dist/commands/webapp/lint.js)_ + +## `saas webapp secrets` + +Runs an ssm-editor helper tool in docker container to set runtime environmental variables of webapp service. Underneath it uses chamber to both fetch and set those variables in AWS SSM Parameter Store + +``` +USAGE + $ saas webapp secrets + +DESCRIPTION + Runs an ssm-editor helper tool in docker container to set runtime environmental variables of webapp service. + Underneath it uses chamber to both fetch and set those variables in AWS SSM Parameter Store + +EXAMPLES + $ saas webapp secrets +``` + +_See code: [dist/commands/webapp/secrets.js](https://github.com/apptension/saas-boilerplate/blob/v2.0.3/dist/commands/webapp/secrets.js)_ + +## `saas webapp test` + +Runs all webapp tests + +``` +USAGE + $ saas webapp test [--watchAll ] + +FLAGS + --watchAll= [default: true] + +DESCRIPTION + Runs all webapp tests + +EXAMPLES + $ saas webapp test +``` + +_See code: [dist/commands/webapp/test.js](https://github.com/apptension/saas-boilerplate/blob/v2.0.3/dist/commands/webapp/test.js)_ + +## `saas webapp up` + +Starts frontend service + +``` +USAGE + $ saas webapp up + +DESCRIPTION + Starts frontend service + +EXAMPLES + $ saas webapp up +``` + +_See code: [dist/commands/webapp/up.js](https://github.com/apptension/saas-boilerplate/blob/v2.0.3/dist/commands/webapp/up.js)_ + +## `saas workers black` + +Runs black inside workers docker container + +``` +USAGE + $ saas workers black + +DESCRIPTION + Runs black inside workers docker container + +EXAMPLES + $ saas workers black +``` + +_See code: [dist/commands/workers/black.js](https://github.com/apptension/saas-boilerplate/blob/v2.0.3/dist/commands/workers/black.js)_ + +## `saas workers build` + +Build workers artifact ready to be deployed to AWS + +``` +USAGE + $ saas workers build + +DESCRIPTION + Build workers artifact ready to be deployed to AWS + +EXAMPLES + $ saas workers build +``` + +_See code: [dist/commands/workers/build.js](https://github.com/apptension/saas-boilerplate/blob/v2.0.3/dist/commands/workers/build.js)_ + +## `saas workers deploy` + +Deploys workers to AWS using previously built artifact + +``` +USAGE + $ saas workers deploy [--diff] + +FLAGS + --diff Perform a dry run and list all changes that would be applied in AWS account + +DESCRIPTION + Deploys workers to AWS using previously built artifact + +EXAMPLES + $ saas workers deploy +``` + +_See code: [dist/commands/workers/deploy.js](https://github.com/apptension/saas-boilerplate/blob/v2.0.3/dist/commands/workers/deploy.js)_ + +## `saas workers invoke local` + +Invoke an async worker task + +``` +USAGE + $ saas workers invoke local -f [-d] + +FLAGS + -d, --data String containing data to be passed as an event to your function. + -f, --function (required) The name of the function in your service that you want to invoke locally + +DESCRIPTION + Invoke an async worker task + +EXAMPLES + $ saas workers invoke local +``` + +_See code: [dist/commands/workers/invoke/local.js](https://github.com/apptension/saas-boilerplate/blob/v2.0.3/dist/commands/workers/invoke/local.js)_ + +## `saas workers lint` + +Run all linters inside workers docker container + +``` +USAGE + $ saas workers lint + +DESCRIPTION + Run all linters inside workers docker container + +EXAMPLES + $ saas workers lint +``` + +_See code: [dist/commands/workers/lint.js](https://github.com/apptension/saas-boilerplate/blob/v2.0.3/dist/commands/workers/lint.js)_ + +## `saas workers secrets` + +Runs an ssm-editor helper tool in docker container to set runtime environmental variables of workers service. Underneath it uses chamber to both fetch and set those variables in AWS SSM Parameter Store + +``` +USAGE + $ saas workers secrets + +DESCRIPTION + Runs an ssm-editor helper tool in docker container to set runtime environmental variables of workers service. + Underneath it uses chamber to both fetch and set those variables in AWS SSM Parameter Store + +EXAMPLES + $ saas workers secrets +``` + +_See code: [dist/commands/workers/secrets.js](https://github.com/apptension/saas-boilerplate/blob/v2.0.3/dist/commands/workers/secrets.js)_ + +## `saas workers shell` + +Runs shell inside workers docker container + +``` +USAGE + $ saas workers shell + +DESCRIPTION + Runs shell inside workers docker container + +EXAMPLES + $ saas workers shell +``` + +_See code: [dist/commands/workers/shell.js](https://github.com/apptension/saas-boilerplate/blob/v2.0.3/dist/commands/workers/shell.js)_ + +## `saas workers test` + +Run all tests inside workers docker container + +``` +USAGE + $ saas workers test + +DESCRIPTION + Run all tests inside workers docker container + +EXAMPLES + $ saas workers test +``` + +_See code: [dist/commands/workers/test.js](https://github.com/apptension/saas-boilerplate/blob/v2.0.3/dist/commands/workers/test.js)_ + + diff --git a/packages/internal/cli/bin/dev b/packages/internal/cli/bin/dev new file mode 100755 index 000000000..bbc3f51d5 --- /dev/null +++ b/packages/internal/cli/bin/dev @@ -0,0 +1,17 @@ +#!/usr/bin/env node + +const oclif = require('@oclif/core') + +const path = require('path') +const project = path.join(__dirname, '..', 'tsconfig.json') + +// In dev mode -> use ts-node and dev plugins +process.env.NODE_ENV = 'development' + +require('ts-node').register({project}) + +// In dev mode, always show stack traces +oclif.settings.debug = true; + +// Start the CLI +oclif.run().then(oclif.flush).catch(oclif.Errors.handle) diff --git a/packages/internal/cli/bin/dev.cmd b/packages/internal/cli/bin/dev.cmd new file mode 100644 index 000000000..077b57ae7 --- /dev/null +++ b/packages/internal/cli/bin/dev.cmd @@ -0,0 +1,3 @@ +@echo off + +node "%~dp0\dev" %* \ No newline at end of file diff --git a/packages/internal/cli/bin/run b/packages/internal/cli/bin/run new file mode 100755 index 000000000..a7635de86 --- /dev/null +++ b/packages/internal/cli/bin/run @@ -0,0 +1,5 @@ +#!/usr/bin/env node + +const oclif = require('@oclif/core') + +oclif.run().then(require('@oclif/core/flush')).catch(require('@oclif/core/handle')) diff --git a/packages/internal/cli/bin/run.cmd b/packages/internal/cli/bin/run.cmd new file mode 100644 index 000000000..968fc3075 --- /dev/null +++ b/packages/internal/cli/bin/run.cmd @@ -0,0 +1,3 @@ +@echo off + +node "%~dp0\run" %* diff --git a/packages/internal/cli/package.json b/packages/internal/cli/package.json new file mode 100644 index 000000000..4f6d2b10e --- /dev/null +++ b/packages/internal/cli/package.json @@ -0,0 +1,120 @@ +{ + "name": "@sb/cli", + "version": "2.0.3", + "description": "SaaS Boilerplate CLI", + "author": "Patryk Ziemkowski pziemkowski@apptension.com", + "bin": { + "saas": "./bin/run" + }, + "homepage": "https://github.com/apptension/saas-boilerplate", + "license": "MIT", + "main": "dist/index.js", + "repository": "apptension/saas-boilerplate", + "files": [ + "/bin", + "/dist", + "/npm-shrinkwrap.json", + "/oclif.manifest.json" + ], + "dependencies": { + "@apptension/saas-boilerplate-telemetry": "^1.0.3", + "@aws-sdk/client-cloudformation": "^3.398.0", + "@aws-sdk/client-ecr": "^3.398.0", + "@aws-sdk/client-ecs": "^3.398.0", + "@aws-sdk/client-iam": "^3.398.0", + "@aws-sdk/client-sfn": "^3.398.0", + "@aws-sdk/client-sts": "^3.398.0", + "@oclif/color": "^1.0.11", + "@oclif/core": "^2.15.0", + "@oclif/errors": "^1.3.6", + "@oclif/plugin-autocomplete": "^2.3.8", + "@oclif/plugin-help": "^5.2.19", + "@oclif/plugin-plugins": "^3.4.0", + "@opentelemetry/api": "^1.5.0", + "@opentelemetry/exporter-trace-otlp-proto": "^0.42.0", + "@opentelemetry/resources": "^1.16.0", + "@opentelemetry/sdk-metrics": "^1.16.0", + "@opentelemetry/sdk-node": "^0.42.0", + "@opentelemetry/sdk-trace-base": "^1.16.0", + "@opentelemetry/sdk-trace-node": "^1.16.0", + "@opentelemetry/semantic-conventions": "^1.16.0", + "dotenv": "^16.3.1", + "envalid": "^7.3.1", + "lookpath": "^1.2.2", + "node-persist": "^3.1.3", + "ramda": "^0.29.0" + }, + "devDependencies": { + "@oclif/test": "^2.4.7", + "@types/chai": "^4", + "@types/mocha": "^9.0.0", + "@types/node": "^16.18.47", + "@types/node-persist": "^3.1.4", + "@types/ramda": "^0.29.3", + "chai": "^4", + "eslint": "^7.32.0", + "eslint-config-oclif": "^4", + "eslint-config-oclif-typescript": "^1.0.3", + "mocha": "^9", + "oclif": "^3.14.0", + "shx": "^0.3.3", + "ts-node": "^10.9.1", + "tslib": "^2.6.2" + }, + "oclif": { + "bin": "saas", + "dirname": "saas", + "commands": "./dist/commands", + "hooks": { + "init": [ + "dist/hooks/init/instrumentation.js" + ] + }, + "plugins": [ + "@oclif/plugin-help", + "@oclif/plugin-plugins", + "@oclif/plugin-autocomplete" + ], + "topicSeparator": " ", + "topics": { + "aws": { + "description": "Groups various AWS-related commands that for example allow you to switch between environment stages" + }, + "db": { + "description": "Manage local database instance" + }, + "webapp": { + "description": "Manage webapp package and service in AWS" + }, + "emails": { + "description": "Manage emails package" + }, + "backend": { + "description": "Manage backend package and service in AWS" + }, + "workers": { + "description": "Manage workers package and service in AWS" + }, + "infra": { + "description": "Configure and deploy infrastructure to AWS" + } + } + }, + "scripts": { + "build": "shx rm -rf dist && tsc -b", + "lint": "eslint . --ext .ts --config .eslintrc", + "postpack": "shx rm -f oclif.manifest.json", + "posttest": "npm run lint", + "prepack": "npm run build && oclif manifest && oclif readme", + "test": "mocha --forbid-only \"test/**/*.test.ts\"", + "version": "oclif readme && git add README.md" + }, + "engines": { + "node": ">=12.0.0" + }, + "bugs": "https://github.com/apptension/saas-boilerplate/issues", + "keywords": [ + "oclif" + ], + "types": "dist/index.d.ts" +} diff --git a/packages/internal/cli/project.json b/packages/internal/cli/project.json new file mode 100644 index 000000000..3993f4c4f --- /dev/null +++ b/packages/internal/cli/project.json @@ -0,0 +1,8 @@ +{ + "name": "cli", + "$schema": "../../../node_modules/nx/schemas/project-schema.json", + "sourceRoot": "packages/internal/cli/src", + "projectType": "library", + "targets": {}, + "tags": [] +} diff --git a/packages/internal/cli/src/baseCommand.ts b/packages/internal/cli/src/baseCommand.ts new file mode 100644 index 000000000..5ec32ca65 --- /dev/null +++ b/packages/internal/cli/src/baseCommand.ts @@ -0,0 +1,116 @@ +import { Command, Flags, Interfaces } from '@oclif/core'; +import { ExitError } from '@oclif/core/lib/errors'; +import { Span, SpanStatusCode, trace, Tracer } from '@opentelemetry/api'; + +import * as telemetry from './config/telemetry'; + +const formatAttrs = (obj: { [k: string]: string } = {}, prefix = '') => { + return Object.fromEntries( + Object.keys(obj).map((key: string) => { + return [[prefix, key].join('.'), obj[key]]; + }) + ); +}; + +export type Flags = Interfaces.InferredFlags< + (typeof BaseCommand)['baseFlags'] & T['flags'] +>; +export type Args = Interfaces.InferredArgs; + +export abstract class BaseCommand extends Command { + protected tracer: Tracer | null = null; + protected span: Span | null = null; + + static baseFlags = {}; + + protected flags!: Flags; + protected args!: Args; + + public async init(): Promise { + await super.init(); + const { args, flags } = await this.parse({ + flags: this.ctor.flags, + baseFlags: (super.ctor as typeof BaseCommand).baseFlags, + args: this.ctor.args, + strict: this.ctor.strict, + }); + this.flags = flags as Flags; + this.args = args as Args; + + if (telemetry.isEnabled) { + this.printTelemetryInfo(); + this.tracer = trace.getTracer('command', this.config.version); + } + } + + async _run() { + let err; + let result; + try { + // remove redirected env var to allow subsessions to run autoupdated client + // @ts-ignore + this.removeEnvVar('REDIRECTED'); + await this.init(); + + if (telemetry.isEnabled && this.tracer) { + result = await this.tracer.startActiveSpan( + `command.${this.ctor.id}`, + { + attributes: { + ...formatAttrs(this.flags, 'flags'), + ...formatAttrs(this.args, 'args'), + }, + }, + async (span) => { + this.span = span; + return await this.run(); + } + ); + } else { + result = await this.run(); + } + } catch (error: any) { + err = error; + await this.catch(error); + } finally { + await this.finally(err); + } + if (result && this.jsonEnabled()) this.logJson(this.toSuccessJson(result)); + return result; + } + + protected async catch(err: Error & { exitCode?: number }): Promise { + if (telemetry.isEnabled) { + if (!(err instanceof ExitError) || err.oclif.exit !== 0) { + this.span?.addEvent('Command error'); + this.span?.recordException(err); + this.span?.setStatus({ code: SpanStatusCode.ERROR }); + } + } + return super.catch(err); + } + + protected async finally(_: Error | undefined): Promise { + if (telemetry.isEnabled) { + this.span?.addEvent('Command finished'); + this.span?.end(); + + // Need to wait en event loop for the internal promise in exporter to be visible + await new Promise((resolve) => setTimeout(() => resolve(true))); + // wait for the exporter to send data + await telemetry.traceExporter.forceFlush(); + } + return super.finally(_); + } + + protected printTelemetryInfo(): void { + this.log(`\x1b[2m +------ Notice ------ +This CLI collects various anonymous events, warnings, and errors to improve the CLI tool and enhance your user experience. +Read more: https://docs.demo.saas.apptoku.com/working-with-sb/dev-tools/telemetry +If you want to opt out of telemetry, you can set the environment variable SB_TELEMETRY_DISABLED to 1 in your shell. +For example: + export SB_TELEMETRY_DISABLED=1 + \x1b[0m`); + } +} diff --git a/packages/internal/cli/src/commands/aws/get-env.ts b/packages/internal/cli/src/commands/aws/get-env.ts new file mode 100644 index 000000000..20e90c63c --- /dev/null +++ b/packages/internal/cli/src/commands/aws/get-env.ts @@ -0,0 +1,13 @@ +import { initConfig } from '../../config/init'; +import { BaseCommand } from '../../baseCommand'; + +export default class GetEnv extends BaseCommand { + static description = 'Get currently selected ENV stage'; + + static examples = [`$ <%= config.bin %> <%= command.id %>`]; + + async run(): Promise { + const { envStage } = await initConfig(this, {}); + this.log(envStage); + } +} diff --git a/packages/internal/cli/src/commands/aws/login.ts b/packages/internal/cli/src/commands/aws/login.ts new file mode 100644 index 000000000..b9a343b02 --- /dev/null +++ b/packages/internal/cli/src/commands/aws/login.ts @@ -0,0 +1,17 @@ +import { initConfig } from '../../config/init'; +import { runCommand } from '../../lib/runCommand'; +import { assertAwsVaultInstalled } from '../../lib/awsVault'; +import { BaseCommand } from '../../baseCommand'; + +export default class AwsLogin extends BaseCommand { + static description = 'Use aws-vault to log into AWS Web Console'; + + static examples = [`$ <%= config.bin %> <%= command.id %>`]; + + async run(): Promise { + await initConfig(this, { requireAws: true }); + await assertAwsVaultInstalled(); + + await runCommand('aws-vault', ['login']); + } +} diff --git a/packages/internal/cli/src/commands/aws/set-env.ts b/packages/internal/cli/src/commands/aws/set-env.ts new file mode 100644 index 000000000..d00878ce4 --- /dev/null +++ b/packages/internal/cli/src/commands/aws/set-env.ts @@ -0,0 +1,36 @@ +import { Args } from '@oclif/core'; + +import { setEnvStage } from '../../config/storage'; +import { initConfig } from '../../config/init'; +import { BaseCommand } from '../../baseCommand'; + +export default class SetEnv extends BaseCommand { + static description = 'Select ENV stage'; + + static examples = [ + `$ <%= config.bin %> <%= command.id %> local`, + `$ <%= config.bin %> <%= command.id %> qa`, + `$ <%= config.bin %> <%= command.id %> staging`, + `$ <%= config.bin %> <%= command.id %> production`, + ]; + + static args = { + envStage: Args.string({ + description: 'Env stage to select', + required: true, + }), + }; + + async run(): Promise { + const { args, flags } = await this.parse(SetEnv); + const { envStage: currentEnvStage } = await initConfig(this, {}); + + if (currentEnvStage === args.envStage) { + this.log(`Your environment stage is already set to ${args.envStage}.`); + return; + } + + await setEnvStage(args.envStage); + this.log(`Switched environment stage to ${args.envStage}.`); + } +} diff --git a/packages/internal/cli/src/commands/aws/set-var.ts b/packages/internal/cli/src/commands/aws/set-var.ts new file mode 100644 index 000000000..7d0366fcc --- /dev/null +++ b/packages/internal/cli/src/commands/aws/set-var.ts @@ -0,0 +1,45 @@ +import { Args } from '@oclif/core'; + +import { initConfig } from '../../config/init'; +import { BaseCommand } from '../../baseCommand'; +import { assertChamberInstalled } from '../../lib/chamber'; +import { runCommand } from '../../lib/runCommand'; + +export default class SetVar extends BaseCommand { + static description = + 'Set a variable inside an env stage. It will be set as environmental variable for every ' + + 'command you run when a non-local env stage is selected. \n' + + 'Requires `chamber` executable installed on your machine'; + + static examples = [ + `$ <%= config.bin %> <%= command.id %> SB_HOSTED_ZONE_ID XYZ`, + `$ <%= config.bin %> <%= command.id %> SB_HOSTED_ZONE_NAME example.com`, + `$ <%= config.bin %> <%= command.id %> SB_DOMAIN_ADMIN_PANEL admin.qa.example.com`, + `$ <%= config.bin %> <%= command.id %> SB_DOMAIN_API api.qa.example.com`, + `$ <%= config.bin %> <%= command.id %> SB_DOMAIN_CDN cdn.qa.example.com`, + `$ <%= config.bin %> <%= command.id %> SB_DOMAIN_DOCS docs.qa.example.com`, + `$ <%= config.bin %> <%= command.id %> SB_DOMAIN_WEB_APP app.qa.example.com`, + ]; + + static args = { + name: Args.string({ + description: 'Env variable name', + required: true, + }), + value: Args.string({ + description: 'Env variable value', + required: true, + }), + }; + + async run(): Promise { + const { args, flags } = await this.parse(SetVar); + const { envStage } = await initConfig(this, { + requireAws: true, + }); + + await assertChamberInstalled(); + + await runCommand('chamber', ['write', envStage, args.name, args.value]); + } +} diff --git a/packages/internal/cli/src/commands/backend/black.ts b/packages/internal/cli/src/commands/backend/black.ts new file mode 100644 index 000000000..b4bfdbdfc --- /dev/null +++ b/packages/internal/cli/src/commands/backend/black.ts @@ -0,0 +1,36 @@ +import { initConfig } from '../../config/init'; +import { runCommand } from '../../lib/runCommand'; +import { assertDockerIsRunning, dockerHubLogin } from '../../lib/docker'; +import { BaseCommand } from '../../baseCommand'; + +export default class BackendBlack extends BaseCommand { + static description = 'Run black inside backend docker container'; + + static examples = [`$ <%= config.bin %> <%= command.id %>`]; + + async run(): Promise { + const { rootPath } = await initConfig(this, { + requireLocalEnvStage: true, + }); + await assertDockerIsRunning(); + await dockerHubLogin(); + + await runCommand( + 'docker', + [ + 'compose', + 'run', + '--rm', + '-T', + '--no-deps', + 'backend', + 'black', + '--config=pyproject.toml', + '.', + ], + { + cwd: rootPath, + } + ); + } +} diff --git a/packages/internal/cli/src/commands/backend/build-docs.ts b/packages/internal/cli/src/commands/backend/build-docs.ts new file mode 100644 index 000000000..13802e39b --- /dev/null +++ b/packages/internal/cli/src/commands/backend/build-docs.ts @@ -0,0 +1,19 @@ +import { initConfig } from '../../config/init'; +import { runCommand } from '../../lib/runCommand'; +import { dockerHubLogin } from '../../lib/docker'; +import { BaseCommand } from '../../baseCommand'; + +export default class BackendBuildDocs extends BaseCommand< + typeof BackendBuildDocs +> { + static description = 'Build backend docs and put results into docs package'; + + static examples = [`$ <%= config.bin %> <%= command.id %>`]; + + async run(): Promise { + await initConfig(this, {}); + await dockerHubLogin(); + + await runCommand('pnpm', ['nx', 'run', 'backend:build-docs']); + } +} diff --git a/packages/internal/cli/src/commands/backend/build.ts b/packages/internal/cli/src/commands/backend/build.ts new file mode 100644 index 000000000..a002d361f --- /dev/null +++ b/packages/internal/cli/src/commands/backend/build.ts @@ -0,0 +1,29 @@ +import { color } from '@oclif/color'; + +import { initConfig } from '../../config/init'; +import { runCommand } from '../../lib/runCommand'; +import { dockerHubLogin } from '../../lib/docker'; +import { BaseCommand } from '../../baseCommand'; + +export default class BackendBuild extends BaseCommand { + static description = 'Build backend docker image and upload it to AWS ECR'; + + static examples = [`$ <%= config.bin %> <%= command.id %>`]; + + async run(): Promise { + const { envStage, version, awsRegion, awsAccountId } = await initConfig( + this, + { requireAws: true } + ); + await dockerHubLogin(); + + this.log(`Building backend: + envStage: ${color.green(envStage)} + version: ${color.green(version)} + AWS account: ${color.green(awsAccountId)} + AWS region: ${color.green(awsRegion)} +`); + + await runCommand('pnpm', ['nx', 'run', 'backend:build']); + } +} diff --git a/packages/internal/cli/src/commands/backend/deploy/api.ts b/packages/internal/cli/src/commands/backend/deploy/api.ts new file mode 100644 index 000000000..5c407c78c --- /dev/null +++ b/packages/internal/cli/src/commands/backend/deploy/api.ts @@ -0,0 +1,42 @@ +import { Flags } from '@oclif/core'; +import { color } from '@oclif/color'; + +import { initConfig } from '../../../config/init'; +import { runCommand } from '../../../lib/runCommand'; +import { BaseCommand } from '../../../baseCommand'; + +export default class BackendDeployApi extends BaseCommand< + typeof BackendDeployApi +> { + static description = + 'Deploys backend API to AWS using previously built artifact'; + + static examples = [`$ <%= config.bin %> <%= command.id %>`]; + + static flags = { + diff: Flags.boolean({ + default: false, + description: + 'Perform a dry run and list all changes that would be applied in AWS account', + required: false, + }), + }; + + async run(): Promise { + const { flags } = await this.parse(BackendDeployApi); + const { envStage, version, awsRegion, awsAccountId } = await initConfig( + this, + { requireAws: true } + ); + + this.log(`Deploying backend: + envStage: ${color.green(envStage)} + version: ${color.green(version)} + AWS account: ${color.green(awsAccountId)} + AWS region: ${color.green(awsRegion)} +`); + + const verb = flags.diff ? 'diff' : 'deploy'; + await runCommand('pnpm', ['nx', 'run', `backend:${verb}:api`]); + } +} diff --git a/packages/internal/cli/src/commands/backend/deploy/migrations.ts b/packages/internal/cli/src/commands/backend/deploy/migrations.ts new file mode 100644 index 000000000..c8c10e902 --- /dev/null +++ b/packages/internal/cli/src/commands/backend/deploy/migrations.ts @@ -0,0 +1,42 @@ +import { Flags } from '@oclif/core'; +import { color } from '@oclif/color'; + +import { initConfig } from '../../../config/init'; +import { runCommand } from '../../../lib/runCommand'; +import { BaseCommand } from '../../../baseCommand'; + +export default class BackendDeployMigrations extends BaseCommand< + typeof BackendDeployMigrations +> { + static description = + 'Deploys database migrations to AWS using previously built artifact and immediately performs them'; + + static examples = [`$ <%= config.bin %> <%= command.id %>`]; + + static flags = { + diff: Flags.boolean({ + default: false, + description: + 'Perform a dry run and list all changes that would be applied in AWS account', + required: false, + }), + }; + + async run(): Promise { + const { flags } = await this.parse(BackendDeployMigrations); + const { envStage, version, awsRegion, awsAccountId } = await initConfig( + this, + { requireAws: true } + ); + + this.log(`Deploying migrations: + envStage: ${color.green(envStage)} + version: ${color.green(version)} + AWS account: ${color.green(awsAccountId)} + AWS region: ${color.green(awsRegion)} +`); + + const verb = flags.diff ? 'diff' : 'deploy'; + await runCommand('pnpm', ['nx', 'run', `backend:${verb}:migrations`]); + } +} diff --git a/packages/internal/cli/src/commands/backend/down.ts b/packages/internal/cli/src/commands/backend/down.ts new file mode 100644 index 000000000..faea1ef21 --- /dev/null +++ b/packages/internal/cli/src/commands/backend/down.ts @@ -0,0 +1,17 @@ +import { initConfig } from '../../config/init'; +import { runCommand } from '../../lib/runCommand'; +import { assertDockerIsRunning } from '../../lib/docker'; +import { BaseCommand } from '../../baseCommand'; + +export default class BackendDown extends BaseCommand { + static description = 'Stops all backend services'; + + static examples = [`$ <%= config.bin %> <%= command.id %>`]; + + async run(): Promise { + await initConfig(this, { requireLocalEnvStage: true }); + await assertDockerIsRunning(); + + await runCommand('pnpm', ['nx', 'run', 'core:docker-compose:down']); + } +} diff --git a/packages/internal/cli/src/commands/backend/makemigrations.ts b/packages/internal/cli/src/commands/backend/makemigrations.ts new file mode 100644 index 000000000..7cec76a25 --- /dev/null +++ b/packages/internal/cli/src/commands/backend/makemigrations.ts @@ -0,0 +1,39 @@ +import { initConfig } from '../../config/init'; +import { runCommand } from '../../lib/runCommand'; +import { assertDockerIsRunning, dockerHubLogin } from '../../lib/docker'; +import { BaseCommand } from '../../baseCommand'; + +export default class BackendMakemigrations extends BaseCommand< + typeof BackendMakemigrations +> { + static description = + 'Shorthand to generate django backend migrations. If you need more control use ' + + '`saas backend shell` and run `./manage.py makemigrations` manually'; + + static examples = [`$ <%= config.bin %> <%= command.id %>`]; + + async run(): Promise { + const { rootPath } = await initConfig(this, { + requireLocalEnvStage: true, + }); + await assertDockerIsRunning(); + await dockerHubLogin(); + + await runCommand( + 'docker', + [ + 'compose', + 'run', + '--rm', + '-T', + 'backend', + 'bash', + '-c', + `python ./manage.py makemigrations`, + ], + { + cwd: rootPath, + } + ); + } +} diff --git a/packages/internal/cli/src/commands/backend/migrate.ts b/packages/internal/cli/src/commands/backend/migrate.ts new file mode 100644 index 000000000..b240ea27a --- /dev/null +++ b/packages/internal/cli/src/commands/backend/migrate.ts @@ -0,0 +1,37 @@ +import { initConfig } from '../../config/init'; +import { runCommand } from '../../lib/runCommand'; +import { assertDockerIsRunning, dockerHubLogin } from '../../lib/docker'; +import { BaseCommand } from '../../baseCommand'; + +export default class BackendMigrate extends BaseCommand { + static description = + 'Shorthand to run backend migrations using local database. If you need more control use' + + '`saas backend shell` and run `./manage.py migrate` manually'; + + static examples = [`$ <%= config.bin %> <%= command.id %>`]; + + async run(): Promise { + const { rootPath } = await initConfig(this, { + requireLocalEnvStage: true, + }); + await assertDockerIsRunning(); + await dockerHubLogin(); + + await runCommand( + 'docker', + [ + 'compose', + 'run', + '--rm', + '-T', + 'backend', + 'sh', + '-c', + 'python ./manage.py migrate', + ], + { + cwd: rootPath, + } + ); + } +} diff --git a/packages/internal/cli/src/commands/backend/remote-shell.ts b/packages/internal/cli/src/commands/backend/remote-shell.ts new file mode 100644 index 000000000..f59af3ae2 --- /dev/null +++ b/packages/internal/cli/src/commands/backend/remote-shell.ts @@ -0,0 +1,72 @@ +import { color } from '@oclif/color'; +import { ECSClient, ListTasksCommand } from '@aws-sdk/client-ecs'; + +import { initConfig } from '../../config/init'; +import { runCommand } from '../../lib/runCommand'; +import { BaseCommand } from '../../baseCommand'; + +export default class RemoteShell extends BaseCommand { + static description = + 'Use aws execute-command to start a /bin/bash session inside a running backend task in ' + + 'ECS cluster'; + + static examples = [`<%= config.bin %> <%= command.id %>`]; + + static flags = {}; + + static args = {}; + + async run(): Promise { + const { projectName, envStage, awsRegion } = await initConfig(this, { + requireAws: true, + }); + + if (!awsRegion) { + this.error('AWS Region is missing'); + } + + const projectEnvName = `${projectName}-${envStage}`; + const clusterName = `${projectEnvName}-main`; + const serviceName = `${projectEnvName}-api`; + + const ecsClient = new ECSClient(); + + const taskList = await ecsClient.send( + new ListTasksCommand({ + cluster: clusterName, + serviceName: serviceName, + }) + ); + + const taskArn = taskList.taskArns?.[0]; + if (!taskArn) { + this.error( + `No tasks found in ${clusterName} cluster for ${serviceName} service` + ); + } + + this.log(`Calling ecs execute-command for + cluster: ${color.green(clusterName)} + service: ${color.green(serviceName)} + region: ${color.green(awsRegion)} + taskArn: ${color.green(taskArn)} + container: ${color.green('backend')} + `); + + await runCommand('aws', [ + 'ecs', + 'execute-command', + '--cluster', + clusterName, + '--region', + awsRegion, + '--task', + taskArn, + '--container', + 'backend', + '--command', + '/bin/bash', + '--interactive', + ]); + } +} diff --git a/packages/internal/cli/src/commands/backend/ruff.ts b/packages/internal/cli/src/commands/backend/ruff.ts new file mode 100644 index 000000000..c1bcfdd7b --- /dev/null +++ b/packages/internal/cli/src/commands/backend/ruff.ts @@ -0,0 +1,34 @@ +import { initConfig } from '../../config/init'; +import { runCommand } from '../../lib/runCommand'; +import { assertDockerIsRunning, dockerHubLogin } from '../../lib/docker'; +import { BaseCommand } from '../../baseCommand'; + +export default class BackendRuff extends BaseCommand { + static description = 'Run ruff inside backend docker container'; + + static examples = [`$ <%= config.bin %> <%= command.id %>`]; + + async run(): Promise { + const { rootPath } = await initConfig(this, {}); + await assertDockerIsRunning(); + await dockerHubLogin(); + + await runCommand( + 'docker', + [ + 'compose', + 'run', + '--rm', + '-T', + '--no-deps', + 'backend', + 'ruff', + 'check', + '.', + ], + { + cwd: rootPath, + } + ); + } +} diff --git a/packages/internal/cli/src/commands/backend/secrets.ts b/packages/internal/cli/src/commands/backend/secrets.ts new file mode 100644 index 000000000..bbb31412f --- /dev/null +++ b/packages/internal/cli/src/commands/backend/secrets.ts @@ -0,0 +1,34 @@ +import { color } from '@oclif/color'; + +import { initConfig } from '../../config/init'; +import { assertDockerIsRunning, dockerHubLogin } from '../../lib/docker'; +import { runSecretsEditor } from '../../lib/secretsEditor'; +import { BaseCommand } from '../../baseCommand'; + +export default class BackendSecrets extends BaseCommand { + static description = + 'Runs an ssm-editor helper tool in docker container to set runtime environmental variables of backend service. ' + + 'Underneath it uses chamber to both fetch and set those variables in AWS SSM Parameter Store'; + + static examples = [`$ <%= config.bin %> <%= command.id %>`]; + + async run(): Promise { + const { envStage, awsAccountId, awsRegion, rootPath } = await initConfig( + this, + { + requireAws: true, + } + ); + await assertDockerIsRunning(); + await dockerHubLogin(); + + this.log(`Settings secrets in AWS SSM Parameter store for: + service: ${color.green('backend')} + envStage: ${color.green(envStage)} + AWS account: ${color.green(awsAccountId)} + AWS region: ${color.green(awsRegion)} +`); + + await runSecretsEditor({ serviceName: 'backend', rootPath }); + } +} diff --git a/packages/internal/cli/src/commands/backend/shell.ts b/packages/internal/cli/src/commands/backend/shell.ts new file mode 100644 index 000000000..d42ab9682 --- /dev/null +++ b/packages/internal/cli/src/commands/backend/shell.ts @@ -0,0 +1,27 @@ +import { initConfig } from '../../config/init'; +import { runCommand } from '../../lib/runCommand'; +import { assertDockerIsRunning, dockerHubLogin } from '../../lib/docker'; +import { BaseCommand } from '../../baseCommand'; + +export default class BackendShell extends BaseCommand { + static description = + 'Runs interactive bash shell inside backend docker container'; + + static examples = [`$ <%= config.bin %> <%= command.id %>`]; + + async run(): Promise { + const { rootPath } = await initConfig(this, { + requireLocalEnvStage: true, + }); + await assertDockerIsRunning(); + await dockerHubLogin(); + + await runCommand( + 'docker', + ['compose', 'run', '--rm', 'backend', '/bin/bash'], + { + cwd: rootPath, + } + ); + } +} diff --git a/packages/internal/cli/src/commands/backend/stripe/sync.ts b/packages/internal/cli/src/commands/backend/stripe/sync.ts new file mode 100644 index 000000000..c89986134 --- /dev/null +++ b/packages/internal/cli/src/commands/backend/stripe/sync.ts @@ -0,0 +1,39 @@ +import { initConfig } from '../../../config/init'; +import { runCommand } from '../../../lib/runCommand'; +import { assertDockerIsRunning, dockerHubLogin } from '../../../lib/docker'; +import { BaseCommand } from '../../../baseCommand'; + +export default class BackendStripeSync extends BaseCommand< + typeof BackendStripeSync +> { + static description = + 'Run stripe synchronisation command inside backend docker container. Requires environmental variables with ' + + 'stripe credentials to be set.'; + + static examples = [`$ <%= config.bin %> <%= command.id %>`]; + + async run(): Promise { + const { rootPath } = await initConfig(this, { + requireLocalEnvStage: true, + }); + await assertDockerIsRunning(); + await dockerHubLogin(); + + await runCommand( + 'docker', + [ + 'compose', + 'run', + '--rm', + '-T', + 'backend', + 'sh', + '-c', + 'python ./manage.py djstripe_sync_models', + ], + { + cwd: rootPath, + } + ); + } +} diff --git a/packages/internal/cli/src/commands/backend/test.ts b/packages/internal/cli/src/commands/backend/test.ts new file mode 100644 index 000000000..2c42ae8f6 --- /dev/null +++ b/packages/internal/cli/src/commands/backend/test.ts @@ -0,0 +1,15 @@ +import { initConfig } from '../../config/init'; +import { runCommand } from '../../lib/runCommand'; +import { BaseCommand } from '../../baseCommand'; + +export default class BackendTest extends BaseCommand { + static description = 'Runs all backend tests in docker container'; + + static examples = [`$ <%= config.bin %> <%= command.id %>`]; + + async run(): Promise { + await initConfig(this, {}); + + await runCommand('pnpm', ['nx', 'run', 'backend:test']); + } +} diff --git a/packages/internal/cli/src/commands/backend/up.ts b/packages/internal/cli/src/commands/backend/up.ts new file mode 100644 index 000000000..6bd2de618 --- /dev/null +++ b/packages/internal/cli/src/commands/backend/up.ts @@ -0,0 +1,18 @@ +import { initConfig } from '../../config/init'; +import { runCommand } from '../../lib/runCommand'; +import { assertDockerIsRunning, dockerHubLogin } from '../../lib/docker'; +import { BaseCommand } from '../../baseCommand'; + +export default class BackendUp extends BaseCommand { + static description = 'Starts all backend services'; + + static examples = [`$ <%= config.bin %> <%= command.id %>`]; + + async run(): Promise { + await initConfig(this, { requireLocalEnvStage: true }); + await assertDockerIsRunning(); + await dockerHubLogin(); + + await runCommand('pnpm', ['nx', 'run', 'core:docker-compose:up']); + } +} diff --git a/packages/internal/cli/src/commands/build.ts b/packages/internal/cli/src/commands/build.ts new file mode 100644 index 000000000..2f85e0b74 --- /dev/null +++ b/packages/internal/cli/src/commands/build.ts @@ -0,0 +1,19 @@ +import { initConfig } from '../config/init'; +import { runCommand } from '../lib/runCommand'; +import { dockerHubLogin } from '../lib/docker'; +import { BaseCommand } from '../baseCommand'; + +export default class Build extends BaseCommand { + static description = 'Build all deployable artifacts'; + + static examples = [`$ <%= config.bin %> <%= command.id %>`]; + + async run(): Promise { + await initConfig(this, { requireAws: true }); + await dockerHubLogin(); + + await runCommand('pnpm', ['nx', 'run', 'backend:build']); + await runCommand('pnpm', ['nx', 'run', 'webapp:build']); + await runCommand('pnpm', ['nx', 'run', 'workers:build']); + } +} diff --git a/packages/internal/cli/src/commands/ci/create-credentials.ts b/packages/internal/cli/src/commands/ci/create-credentials.ts new file mode 100644 index 000000000..63a39d861 --- /dev/null +++ b/packages/internal/cli/src/commands/ci/create-credentials.ts @@ -0,0 +1,85 @@ +import { + CloudFormationClient, + DescribeStacksCommand, +} from '@aws-sdk/client-cloudformation'; +import { + CreateServiceSpecificCredentialCommand, + IAMClient, +} from '@aws-sdk/client-iam'; +import { trace } from '@opentelemetry/api'; +import { indexBy, prop } from 'ramda'; +import * as URL from 'url'; + +import { initConfig } from '../../config/init'; +import { BaseCommand } from '../../baseCommand'; + +type GetOutputsFromGlobalStackOptions = { + stackName: string; +}; +async function getOutputsFromGlobalStack({ + stackName, +}: GetOutputsFromGlobalStackOptions) { + const client = new CloudFormationClient(); + const describeStackResult = await client.send( + new DescribeStacksCommand({ StackName: stackName }) + ); + const stack = describeStackResult?.Stacks?.[0]; + return indexBy(prop('ExportName'), stack?.Outputs ?? []); +} + +type CreateCredentialsOptions = { + repoUserName: string; +}; +function createCredentials({ repoUserName }: CreateCredentialsOptions) { + const client = new IAMClient(); + + return client.send( + new CreateServiceSpecificCredentialCommand({ + UserName: repoUserName, + ServiceName: 'codecommit.amazonaws.com', + }) + ); +} + +export default class CiCreateCredentials extends BaseCommand< + typeof CiCreateCredentials +> { + static description = + 'Create CI/CD repository credentials. They can be used in Bitbucket, Github, Gitlab, etc ' + + 'to push code changes to CodeCommit'; + + static examples = [`$ <%= config.bin %> <%= command.id %>`]; + + static flags = {}; + + async run(): Promise { + const { flags } = await this.parse(CiCreateCredentials); + const { projectName } = await initConfig(this, { requireAws: true }); + + const globalStackOutputs = await getOutputsFromGlobalStack({ + stackName: `${projectName}-GlobalStack`, + }); + const { OutputValue: repoUserName } = + globalStackOutputs[`${projectName}-codeRepoUserName`] ?? {}; + const { OutputValue: repoUrl } = + globalStackOutputs[`${projectName}-codeRepoCloneUrlHttp`] ?? {}; + + if (!repoUserName || !repoUrl) { + this.error('Failed to fetch repository username and URL'); + } + + const response = await createCredentials({ repoUserName }); + + if (!response.ServiceSpecificCredential) { + this.error('Failed to create service specific credentials'); + } + + const { ServicePassword: password, ServiceUserName: userName } = + response.ServiceSpecificCredential; + + const urlParts = URL.parse(repoUrl); + urlParts.auth = `${userName}:${password}`; + + this.log(URL.format(urlParts)); + } +} diff --git a/packages/internal/cli/src/commands/db/shell.ts b/packages/internal/cli/src/commands/db/shell.ts new file mode 100644 index 000000000..d89f7add7 --- /dev/null +++ b/packages/internal/cli/src/commands/db/shell.ts @@ -0,0 +1,34 @@ +import { initConfig } from '../../config/init'; +import { runCommand } from '../../lib/runCommand'; +import { assertDockerIsRunning, dockerHubLogin } from '../../lib/docker'; +import { BaseCommand } from '../../baseCommand'; + +export default class DbShell extends BaseCommand { + static description = + 'Start a psql client shell in local `db` container. It allows you to run some raw queries when needed.'; + + static examples = [`<%= config.bin %> <%= command.id %>`]; + + static flags = {}; + + static args = {}; + + async run(): Promise { + const { rootPath } = await initConfig(this, { + requireLocalEnvStage: true, + }); + + await assertDockerIsRunning(); + await dockerHubLogin(); + + await runCommand('docker', ['compose', 'exec', 'db', 'psql'], { + env: { + ...process.env, + PGUSER: 'backend', + PGPASSWORD: 'backend', + PGDATABASE: 'backend', + }, + cwd: rootPath, + }); + } +} diff --git a/packages/internal/cli/src/commands/deploy.ts b/packages/internal/cli/src/commands/deploy.ts new file mode 100644 index 000000000..b21e50cc6 --- /dev/null +++ b/packages/internal/cli/src/commands/deploy.ts @@ -0,0 +1,34 @@ +import { Flags } from '@oclif/core'; + +import { initConfig } from '../config/init'; +import { runCommand } from '../lib/runCommand'; +import { BaseCommand } from '../baseCommand'; + +export default class Deploy extends BaseCommand { + static description = 'Deploy all previously built artifacts to AWS'; + + static examples = [`$ <%= config.bin %> <%= command.id %>`]; + + static flags = { + diff: Flags.boolean({ + default: false, + description: + 'Perform a dry run and list all changes that would be applied in AWS account', + required: false, + }), + }; + + async run(): Promise { + const { flags } = await this.parse(Deploy); + await initConfig(this, { requireAws: true }); + + const verb = flags.diff ? 'diff' : 'deploy'; + await runCommand('pnpm', [ + 'nx', + 'run-many', + '--output-style=stream', + `--target=${verb}`, + '--projects=backend,workers,webapp', + ]); + } +} diff --git a/packages/internal/cli/src/commands/docs/build.ts b/packages/internal/cli/src/commands/docs/build.ts new file mode 100644 index 000000000..3d9274214 --- /dev/null +++ b/packages/internal/cli/src/commands/docs/build.ts @@ -0,0 +1,34 @@ +import { color } from '@oclif/color'; + +import { initConfig } from '../../config/init'; +import { runCommand } from '../../lib/runCommand'; +import { ENV_STAGE_LOCAL } from '../../config/env'; +import { assertChamberInstalled, loadChamberEnv } from '../../lib/chamber'; +import { BaseCommand } from '../../baseCommand'; + +export default class DocsBuild extends BaseCommand { + static description = 'Build docs artifact'; + + static examples = [`$ <%= config.bin %> <%= command.id %>`]; + + async run(): Promise { + const { envStage, version, awsRegion, awsAccountId, projectEnvName } = + await initConfig(this, { requireAws: 'allow-local' }); + + if (envStage !== ENV_STAGE_LOCAL) { + await assertChamberInstalled(); + await loadChamberEnv(this, { + serviceName: `env-${projectEnvName}-webapp`, + }); + } + + this.log(`Building docs: + envStage: ${color.green(envStage)} + version: ${color.green(version)} + AWS account: ${awsAccountId ? color.green(awsAccountId) : 'none'} + AWS region: ${awsRegion ? color.green(awsRegion) : 'none'} +`); + + await runCommand('pnpm', ['nx', 'run', 'docs:build']); + } +} diff --git a/packages/internal/cli/src/commands/docs/deploy.ts b/packages/internal/cli/src/commands/docs/deploy.ts new file mode 100644 index 000000000..9fb7ed071 --- /dev/null +++ b/packages/internal/cli/src/commands/docs/deploy.ts @@ -0,0 +1,28 @@ +import { Flags } from '@oclif/core'; + +import { initConfig } from '../../config/init'; +import { runCommand } from '../../lib/runCommand'; +import { BaseCommand } from '../../baseCommand'; + +export default class DocsDeploy extends BaseCommand { + static description = 'Deploys docs to AWS using previously built artifact'; + + static examples = [`$ <%= config.bin %> <%= command.id %>`]; + + static flags = { + diff: Flags.boolean({ + default: false, + description: + 'Perform a dry run and list all changes that would be applied in AWS account', + required: false, + }), + }; + + async run(): Promise { + const { flags } = await this.parse(DocsDeploy); + await initConfig(this, { requireAws: true }); + + const verb = flags.diff ? 'diff' : 'deploy'; + await runCommand('pnpm', ['nx', 'run', `docs:${verb}`]); + } +} diff --git a/packages/internal/cli/src/commands/docs/up.ts b/packages/internal/cli/src/commands/docs/up.ts new file mode 100644 index 000000000..87922ef6d --- /dev/null +++ b/packages/internal/cli/src/commands/docs/up.ts @@ -0,0 +1,15 @@ +import { initConfig } from '../../config/init'; +import { runCommand } from '../../lib/runCommand'; +import { BaseCommand } from '../../baseCommand'; + +export default class DocsUp extends BaseCommand { + static description = 'Starts local docusaurus server'; + + static examples = [`$ <%= config.bin %> <%= command.id %>`]; + + async run(): Promise { + await initConfig(this, { requireLocalEnvStage: true }); + + await runCommand('pnpm', ['nx', 'run', 'docs:start']); + } +} diff --git a/packages/internal/cli/src/commands/down.ts b/packages/internal/cli/src/commands/down.ts new file mode 100644 index 000000000..db2143ff0 --- /dev/null +++ b/packages/internal/cli/src/commands/down.ts @@ -0,0 +1,17 @@ +import { initConfig } from '../config/init'; +import { runCommand } from '../lib/runCommand'; +import { assertDockerIsRunning } from '../lib/docker'; +import { BaseCommand } from '../baseCommand'; + +export default class Down extends BaseCommand { + static description = 'Starts both backend and frontend'; + + static examples = [`$ <%= config.bin %> <%= command.id %>`]; + + async run(): Promise { + await initConfig(this, { requireLocalEnvStage: true }); + await assertDockerIsRunning(); + + await runCommand('pnpm', ['nx', 'run', 'core:docker-compose:down']); + } +} diff --git a/packages/internal/cli/src/commands/emails/build.ts b/packages/internal/cli/src/commands/emails/build.ts new file mode 100644 index 000000000..0e93a2645 --- /dev/null +++ b/packages/internal/cli/src/commands/emails/build.ts @@ -0,0 +1,34 @@ +import { color } from '@oclif/color'; + +import { initConfig } from '../../config/init'; +import { runCommand } from '../../lib/runCommand'; +import { ENV_STAGE_LOCAL } from '../../config/env'; +import { assertChamberInstalled, loadChamberEnv } from '../../lib/chamber'; +import { BaseCommand } from '../../baseCommand'; + +export default class EmailsBuild extends BaseCommand { + static description = 'Build emails artifact and place it in workers package'; + + static examples = [`$ <%= config.bin %> <%= command.id %>`]; + + async run(): Promise { + const { envStage, version, awsRegion, awsAccountId, projectEnvName } = + await initConfig(this, { requireAws: 'allow-local' }); + + if (envStage !== ENV_STAGE_LOCAL) { + await assertChamberInstalled(); + await loadChamberEnv(this, { + serviceName: `env-${projectEnvName}-webapp`, + }); + } + + this.log(`Building emails: + envStage: ${color.green(envStage)} + version: ${color.green(version)} + AWS account: ${awsAccountId ? color.green(awsAccountId) : 'none'} + AWS region: ${awsRegion ? color.green(awsRegion) : 'none'} +`); + + await runCommand('pnpm', ['nx', 'run', 'webapp-emails:build']); + } +} diff --git a/packages/internal/cli/src/commands/emails/secrets.ts b/packages/internal/cli/src/commands/emails/secrets.ts new file mode 100644 index 000000000..c8625a620 --- /dev/null +++ b/packages/internal/cli/src/commands/emails/secrets.ts @@ -0,0 +1,15 @@ +import { BaseCommand } from '../../baseCommand'; + +export default class EmailsSecrets extends BaseCommand { + static description = + 'Runs an ssm-editor helper tool in docker container to set runtime environmental variables of webapp service. ' + + 'Underneath it uses chamber to both fetch and set those variables in AWS SSM Parameter Store'; + + static examples = [`$ <%= config.bin %> <%= command.id %>`]; + + async run(): Promise { + this.error( + 'Emails package do not have their own separate secrets service. Use `saas webapp secrets` instead.' + ); + } +} diff --git a/packages/internal/cli/src/commands/emails/test.ts b/packages/internal/cli/src/commands/emails/test.ts new file mode 100644 index 000000000..c35419200 --- /dev/null +++ b/packages/internal/cli/src/commands/emails/test.ts @@ -0,0 +1,15 @@ +import { initConfig } from '../../config/init'; +import { runCommand } from '../../lib/runCommand'; +import { BaseCommand } from '../../baseCommand'; + +export default class EmailsTest extends BaseCommand { + static description = 'Runs all emails tests'; + + static examples = [`$ <%= config.bin %> <%= command.id %>`]; + + async run(): Promise { + await initConfig(this, {}); + + await runCommand('pnpm', ['nx', 'run', 'webapp-emails:test']); + } +} diff --git a/packages/internal/cli/src/commands/infra/bootstrap.ts b/packages/internal/cli/src/commands/infra/bootstrap.ts new file mode 100644 index 000000000..9f6e14812 --- /dev/null +++ b/packages/internal/cli/src/commands/infra/bootstrap.ts @@ -0,0 +1,34 @@ +import { initConfig } from '../../config/init'; +import { runCommand } from '../../lib/runCommand'; +import { BaseCommand } from '../../baseCommand'; + +export default class InfraBootstrap extends BaseCommand { + static description = + 'Bootstrap infrastructure in AWS account by creating resources necessary to start working with SaaS ' + + 'Boilerplate'; + + static examples = [`<%= config.bin %> <%= command.id %>`]; + + async run(): Promise { + const { awsAccountId, awsRegion } = await initConfig(this, { + requireAws: true, + validateEnvStageVariables: false, + }); + + await runCommand('pnpm', [ + 'nx', + 'run', + 'infra-core:cdk', + 'bootstrap', + `aws://${awsAccountId}/${awsRegion}`, + ]); + await runCommand('pnpm', [ + 'nx', + 'run', + 'infra-core:cdk', + 'bootstrap', + `aws://${awsAccountId}/us-east-1`, + ]); + await runCommand('pnpm', ['nx', 'run', 'infra-shared:bootstrap']); + } +} diff --git a/packages/internal/cli/src/commands/infra/deploy.ts b/packages/internal/cli/src/commands/infra/deploy.ts new file mode 100644 index 000000000..6768d031f --- /dev/null +++ b/packages/internal/cli/src/commands/infra/deploy.ts @@ -0,0 +1,69 @@ +import { Args, Flags } from '@oclif/core'; + +import { initConfig } from '../../config/init'; +import { runCommand } from '../../lib/runCommand'; +import { BaseCommand } from '../../baseCommand'; + +enum StackName { + Global = 'global', + Main = 'main', + Db = 'db', + Functions = 'functions', + Ci = 'ci', + Components = 'components', +} + +export default class InfraDeploy extends BaseCommand { + static description = + 'Deploy infrastructure of a currently selected environment stage to AWS account'; + + static examples = [`$ <%= config.bin %> <%= command.id %>`]; + + static flags = { + diff: Flags.boolean({ + default: false, + description: + 'Perform a dry run and list all changes that would be applied', + required: false, + }), + }; + + static args = { + stackName: Args.string({ + description: + 'Name of the stack to deploy. If not specified all will be deployed', + required: false, + options: Object.values(StackName), + }), + }; + + async run(): Promise { + const { flags, args } = await this.parse(InfraDeploy); + await initConfig(this, { requireAws: true }); + + const verb = flags.diff ? 'diff' : 'deploy'; + + if (!args.stackName || args.stackName === StackName.Global) { + await runCommand('pnpm', ['nx', 'run', `infra-shared:${verb}:global`]); + } + if (!args.stackName || args.stackName === StackName.Main) { + await runCommand('pnpm', ['nx', 'run', `infra-shared:${verb}:main`]); + } + if (!args.stackName || args.stackName === StackName.Db) { + await runCommand('pnpm', ['nx', 'run', `infra-shared:${verb}:db`]); + } + if (!args.stackName || args.stackName === StackName.Functions) { + await runCommand('pnpm', ['nx', 'run', `infra-functions:${verb}`]); + } + if (!args.stackName || args.stackName === StackName.Ci) { + await runCommand('pnpm', ['nx', 'run', `infra-shared:${verb}:ci`]); + } + if (!args.stackName || args.stackName === StackName.Components) { + await runCommand('pnpm', [ + 'nx', + 'run', + `infra-shared:${verb}:components`, + ]); + } + } +} diff --git a/packages/internal/cli/src/commands/lint.ts b/packages/internal/cli/src/commands/lint.ts new file mode 100644 index 000000000..f0fd0d934 --- /dev/null +++ b/packages/internal/cli/src/commands/lint.ts @@ -0,0 +1,20 @@ +import { initConfig } from '../config/init'; +import { runCommand } from '../lib/runCommand'; +import { BaseCommand } from '../baseCommand'; + +export default class Lint extends BaseCommand { + static description = 'Lint all projects'; + + static examples = [`$ <%= config.bin %> <%= command.id %>`]; + + async run(): Promise { + await initConfig(this, {}); + + await runCommand('pnpm', [ + 'nx', + 'run-many', + '--output-style=stream', + '--target=lint', + ]); + } +} diff --git a/packages/internal/cli/src/commands/up.ts b/packages/internal/cli/src/commands/up.ts new file mode 100644 index 000000000..e407faa4c --- /dev/null +++ b/packages/internal/cli/src/commands/up.ts @@ -0,0 +1,19 @@ +import { initConfig } from '../config/init'; +import { runCommand } from '../lib/runCommand'; +import { assertDockerIsRunning, dockerHubLogin } from '../lib/docker'; +import { BaseCommand } from '../baseCommand'; + +export default class Up extends BaseCommand { + static description = 'Starts both backend and frontend'; + + static examples = [`$ <%= config.bin %> <%= command.id %>`]; + + async run(): Promise { + await initConfig(this, { requireLocalEnvStage: true }); + await assertDockerIsRunning(); + await dockerHubLogin(); + + await runCommand('pnpm', ['nx', 'run', 'core:docker-compose:up']); + await runCommand('pnpm', ['nx', 'run', 'webapp:start']); + } +} diff --git a/packages/internal/cli/src/commands/webapp/build.ts b/packages/internal/cli/src/commands/webapp/build.ts new file mode 100644 index 000000000..6df65c1a7 --- /dev/null +++ b/packages/internal/cli/src/commands/webapp/build.ts @@ -0,0 +1,34 @@ +import { color } from '@oclif/color'; + +import { initConfig } from '../../config/init'; +import { runCommand } from '../../lib/runCommand'; +import { ENV_STAGE_LOCAL } from '../../config/env'; +import { assertChamberInstalled, loadChamberEnv } from '../../lib/chamber'; +import { BaseCommand } from '../../baseCommand'; + +export default class WebappBuild extends BaseCommand { + static description = 'Build webapp artifact ready to be deployed to AWS'; + + static examples = [`$ <%= config.bin %> <%= command.id %>`]; + + async run(): Promise { + const { envStage, version, awsRegion, awsAccountId, projectEnvName } = + await initConfig(this, { requireAws: 'allow-local' }); + + if (envStage !== ENV_STAGE_LOCAL) { + await assertChamberInstalled(); + await loadChamberEnv(this, { + serviceName: `env-${projectEnvName}-webapp`, + }); + } + + this.log(`Building webapp: + envStage: ${color.green(envStage)} + version: ${color.green(version)} + AWS account: ${awsAccountId ? color.green(awsAccountId) : 'none'} + AWS region: ${awsRegion ? color.green(awsRegion) : 'none'} +`); + + await runCommand('pnpm', ['nx', 'run', 'webapp:build']); + } +} diff --git a/packages/internal/cli/src/commands/webapp/deploy.ts b/packages/internal/cli/src/commands/webapp/deploy.ts new file mode 100644 index 000000000..c92c23559 --- /dev/null +++ b/packages/internal/cli/src/commands/webapp/deploy.ts @@ -0,0 +1,28 @@ +import { Flags } from '@oclif/core'; + +import { initConfig } from '../../config/init'; +import { runCommand } from '../../lib/runCommand'; +import { BaseCommand } from '../../baseCommand'; + +export default class WebappDeploy extends BaseCommand { + static description = 'Deploys webapp to AWS using previously built artifact'; + + static examples = [`$ <%= config.bin %> <%= command.id %>`]; + + static flags = { + diff: Flags.boolean({ + default: false, + description: + 'Perform a dry run and list all changes that would be applied in AWS account', + required: false, + }), + }; + + async run(): Promise { + const { flags } = await this.parse(WebappDeploy); + await initConfig(this, { requireAws: true }); + + const verb = flags.diff ? 'diff' : 'deploy'; + await runCommand('pnpm', ['nx', 'run', `webapp:${verb}`]); + } +} diff --git a/packages/internal/cli/src/commands/webapp/graphql/download-schema.ts b/packages/internal/cli/src/commands/webapp/graphql/download-schema.ts new file mode 100644 index 000000000..acb983512 --- /dev/null +++ b/packages/internal/cli/src/commands/webapp/graphql/download-schema.ts @@ -0,0 +1,17 @@ +import { initConfig } from '../../../config/init'; +import { runCommand } from '../../../lib/runCommand'; +import { BaseCommand } from '../../../baseCommand'; + +export default class WebappGraphqlDownloadSchema extends BaseCommand< + typeof WebappGraphqlDownloadSchema +> { + static description = 'Download graphql schemas and merge them'; + + static examples = [`$ <%= config.bin %> <%= command.id %>`]; + + async run(): Promise { + await initConfig(this, {}); + + await runCommand('pnpm', ['nx', 'run', 'webapp:graphql:download-schema']); + } +} diff --git a/packages/internal/cli/src/commands/webapp/lint.ts b/packages/internal/cli/src/commands/webapp/lint.ts new file mode 100644 index 000000000..ff15ae122 --- /dev/null +++ b/packages/internal/cli/src/commands/webapp/lint.ts @@ -0,0 +1,16 @@ +import { initConfig } from '../../config/init'; +import { runCommand } from '../../lib/runCommand'; +import { BaseCommand } from '../../baseCommand'; + +export default class WebappLint extends BaseCommand { + static description = 'Runs all webapp linters'; + + static examples = [`$ <%= config.bin %> <%= command.id %>`]; + + async run(): Promise { + const { flags } = await this.parse(WebappLint); + await initConfig(this, {}); + + await runCommand('pnpm', ['nx', 'run', 'webapp:lint']); + } +} diff --git a/packages/internal/cli/src/commands/webapp/secrets.ts b/packages/internal/cli/src/commands/webapp/secrets.ts new file mode 100644 index 000000000..94a1eddbf --- /dev/null +++ b/packages/internal/cli/src/commands/webapp/secrets.ts @@ -0,0 +1,34 @@ +import { color } from '@oclif/color'; + +import { initConfig } from '../../config/init'; +import { assertDockerIsRunning, dockerHubLogin } from '../../lib/docker'; +import { runSecretsEditor } from '../../lib/secretsEditor'; +import { BaseCommand } from '../../baseCommand'; + +export default class WebappSecrets extends BaseCommand { + static description = + 'Runs an ssm-editor helper tool in docker container to set runtime environmental variables of webapp service. ' + + 'Underneath it uses chamber to both fetch and set those variables in AWS SSM Parameter Store'; + + static examples = [`$ <%= config.bin %> <%= command.id %>`]; + + async run(): Promise { + const { envStage, awsAccountId, awsRegion, rootPath } = await initConfig( + this, + { + requireAws: true, + } + ); + await assertDockerIsRunning(); + await dockerHubLogin(); + + this.log(`Settings secrets in AWS SSM Parameter store for: + service: ${color.green('webapp')} + envStage: ${color.green(envStage)} + AWS account: ${color.green(awsAccountId)} + AWS region: ${color.green(awsRegion)} +`); + + await runSecretsEditor({ serviceName: 'webapp', rootPath }); + } +} diff --git a/packages/internal/cli/src/commands/webapp/test.ts b/packages/internal/cli/src/commands/webapp/test.ts new file mode 100644 index 000000000..4b5f565bb --- /dev/null +++ b/packages/internal/cli/src/commands/webapp/test.ts @@ -0,0 +1,29 @@ +import { Flags } from '@oclif/core'; + +import { initConfig } from '../../config/init'; +import { runCommand } from '../../lib/runCommand'; +import { BaseCommand } from '../../baseCommand'; + +export default class WebappTest extends BaseCommand { + static description = 'Runs all webapp tests'; + + static examples = [`$ <%= config.bin %> <%= command.id %>`]; + + static flags = { + watchAll: Flags.string({ + default: 'true', + }), + }; + + async run(): Promise { + const { flags } = await this.parse(WebappTest); + await initConfig(this, {}); + + await runCommand('pnpm', [ + 'nx', + 'run', + 'webapp:test', + `--watchAll=${flags.watchAll}`, + ]); + } +} diff --git a/packages/internal/cli/src/commands/webapp/up.ts b/packages/internal/cli/src/commands/webapp/up.ts new file mode 100644 index 000000000..a98c4fb82 --- /dev/null +++ b/packages/internal/cli/src/commands/webapp/up.ts @@ -0,0 +1,18 @@ +import { trace } from '@opentelemetry/api'; + +import { initConfig } from '../../config/init'; +import { runCommand } from '../../lib/runCommand'; +import { BaseCommand } from '../../baseCommand'; + +const tracer = trace.getTracer('webapp'); +export default class WebappUp extends BaseCommand { + static description = 'Starts frontend service'; + + static examples = [`$ <%= config.bin %> <%= command.id %>`]; + + async run(): Promise { + await initConfig(this, { requireLocalEnvStage: true }); + + await runCommand('pnpm', ['nx', 'run', 'webapp:start']); + } +} diff --git a/packages/internal/cli/src/commands/workers/black.ts b/packages/internal/cli/src/commands/workers/black.ts new file mode 100644 index 000000000..79a27db02 --- /dev/null +++ b/packages/internal/cli/src/commands/workers/black.ts @@ -0,0 +1,34 @@ +import { initConfig } from '../../config/init'; +import { runCommand } from '../../lib/runCommand'; +import { assertDockerIsRunning, dockerHubLogin } from '../../lib/docker'; +import { BaseCommand } from '../../baseCommand'; + +export default class WorkersBlack extends BaseCommand { + static description = 'Runs black inside workers docker container'; + + static examples = [`$ <%= config.bin %> <%= command.id %>`]; + + async run(): Promise { + const { rootPath } = await initConfig(this, {}); + await assertDockerIsRunning(); + await dockerHubLogin(); + + await runCommand( + 'docker', + [ + 'compose', + 'run', + '--rm', + '-T', + '--no-deps', + 'workers', + 'black', + '--config=pyproject.toml', + '.', + ], + { + cwd: rootPath, + } + ); + } +} diff --git a/packages/internal/cli/src/commands/workers/build.ts b/packages/internal/cli/src/commands/workers/build.ts new file mode 100644 index 000000000..2217ed655 --- /dev/null +++ b/packages/internal/cli/src/commands/workers/build.ts @@ -0,0 +1,29 @@ +import { color } from '@oclif/color'; + +import { initConfig } from '../../config/init'; +import { runCommand } from '../../lib/runCommand'; +import { dockerHubLogin } from '../../lib/docker'; +import { BaseCommand } from '../../baseCommand'; + +export default class WorkersBuild extends BaseCommand { + static description = 'Build workers artifact ready to be deployed to AWS'; + + static examples = [`$ <%= config.bin %> <%= command.id %>`]; + + async run(): Promise { + const { envStage, version, awsAccountId, awsRegion } = await initConfig( + this, + { requireAws: true } + ); + await dockerHubLogin(); + + this.log(`Deploying backend: + envStage: ${color.green(envStage)} + version: ${color.green(version)} + AWS account: ${color.green(awsAccountId)} + AWS region: ${color.green(awsRegion)} +`); + + await runCommand('pnpm', ['nx', 'run', `workers:build`]); + } +} diff --git a/packages/internal/cli/src/commands/workers/deploy.ts b/packages/internal/cli/src/commands/workers/deploy.ts new file mode 100644 index 000000000..37eb29bf4 --- /dev/null +++ b/packages/internal/cli/src/commands/workers/deploy.ts @@ -0,0 +1,41 @@ +import { Flags } from '@oclif/core'; +import { color } from '@oclif/color'; + +import { initConfig } from '../../config/init'; +import { runCommand } from '../../lib/runCommand'; +import { dockerHubLogin } from '../../lib/docker'; +import { BaseCommand } from '../../baseCommand'; + +export default class WorkersDeploy extends BaseCommand { + static description = 'Deploys workers to AWS using previously built artifact'; + + static examples = [`$ <%= config.bin %> <%= command.id %>`]; + + static flags = { + diff: Flags.boolean({ + default: false, + description: + 'Perform a dry run and list all changes that would be applied in AWS account', + required: false, + }), + }; + + async run(): Promise { + const { flags } = await this.parse(WorkersDeploy); + const { envStage, version, awsAccountId, awsRegion } = await initConfig( + this, + { requireAws: true } + ); + await dockerHubLogin(); + + this.log(`Deploying backend: + envStage: ${color.green(envStage)} + version: ${color.green(version)} + AWS account: ${color.green(awsAccountId)} + AWS region: ${color.green(awsRegion)} +`); + + const verb = flags.diff ? 'diff' : 'deploy'; + await runCommand('pnpm', ['nx', 'run', `workers:${verb}`]); + } +} diff --git a/packages/internal/cli/src/commands/workers/invoke/local.ts b/packages/internal/cli/src/commands/workers/invoke/local.ts new file mode 100644 index 000000000..1da7f300b --- /dev/null +++ b/packages/internal/cli/src/commands/workers/invoke/local.ts @@ -0,0 +1,57 @@ +import { Flags } from '@oclif/core'; + +import { initConfig } from '../../../config/init'; +import { runCommand } from '../../../lib/runCommand'; +import { assertDockerIsRunning, dockerHubLogin } from '../../../lib/docker'; +import { BaseCommand } from '../../../baseCommand'; + +export default class WorkersInvokeLocal extends BaseCommand< + typeof WorkersInvokeLocal +> { + static description = 'Invoke an async worker task'; + + static examples = [`$ <%= config.bin %> <%= command.id %>`]; + + static flags = { + function: Flags.boolean({ + char: 'f', + default: false, + description: + 'The name of the function in your service that you want to invoke locally', + required: true, + }), + data: Flags.boolean({ + char: 'd', + default: false, + description: + 'String containing data to be passed as an event to your function.', + required: false, + }), + }; + + async run(): Promise { + const { flags } = await this.parse(WorkersInvokeLocal); + const { rootPath } = await initConfig(this, { + requireLocalEnvStage: true, + }); + await assertDockerIsRunning(); + await dockerHubLogin(); + + await runCommand( + 'docker', + [ + 'compose', + 'run', + '--rm', + '-T', + 'workers', + `pnpm sls invoke local -f=${flags.function} ${ + flags.data ? `d=${flags.data}` : '' + }`, + ], + { + cwd: rootPath, + } + ); + } +} diff --git a/packages/internal/cli/src/commands/workers/lint.ts b/packages/internal/cli/src/commands/workers/lint.ts new file mode 100644 index 000000000..d98f74dd5 --- /dev/null +++ b/packages/internal/cli/src/commands/workers/lint.ts @@ -0,0 +1,18 @@ +import { initConfig } from '../../config/init'; +import { runCommand } from '../../lib/runCommand'; +import { assertDockerIsRunning, dockerHubLogin } from '../../lib/docker'; +import { BaseCommand } from '../../baseCommand'; + +export default class WorkersLint extends BaseCommand { + static description = 'Run all linters inside workers docker container'; + + static examples = [`$ <%= config.bin %> <%= command.id %>`]; + + async run(): Promise { + await initConfig(this, {}); + await assertDockerIsRunning(); + await dockerHubLogin(); + + await runCommand('pnpm', ['nx', 'run', 'workers:lint']); + } +} diff --git a/packages/internal/cli/src/commands/workers/secrets.ts b/packages/internal/cli/src/commands/workers/secrets.ts new file mode 100644 index 000000000..c67662418 --- /dev/null +++ b/packages/internal/cli/src/commands/workers/secrets.ts @@ -0,0 +1,34 @@ +import { color } from '@oclif/color'; + +import { initConfig } from '../../config/init'; +import { assertDockerIsRunning, dockerHubLogin } from '../../lib/docker'; +import { runSecretsEditor } from '../../lib/secretsEditor'; +import { BaseCommand } from '../../baseCommand'; + +export default class WebappSecrets extends BaseCommand { + static description = + 'Runs an ssm-editor helper tool in docker container to set runtime environmental variables of workers service. ' + + 'Underneath it uses chamber to both fetch and set those variables in AWS SSM Parameter Store'; + + static examples = [`$ <%= config.bin %> <%= command.id %>`]; + + async run(): Promise { + const { envStage, awsAccountId, awsRegion, rootPath } = await initConfig( + this, + { + requireAws: true, + } + ); + await assertDockerIsRunning(); + await dockerHubLogin(); + + this.log(`Settings secrets in AWS SSM Parameter store for: + service: ${color.green('workers')} + envStage: ${color.green(envStage)} + AWS account: ${color.green(awsAccountId)} + AWS region: ${color.green(awsRegion)} +`); + + await runSecretsEditor({ serviceName: 'workers', rootPath }); + } +} diff --git a/packages/internal/cli/src/commands/workers/shell.ts b/packages/internal/cli/src/commands/workers/shell.ts new file mode 100644 index 000000000..19a12604c --- /dev/null +++ b/packages/internal/cli/src/commands/workers/shell.ts @@ -0,0 +1,24 @@ +import { initConfig } from '../../config/init'; +import { runCommand } from '../../lib/runCommand'; +import { assertDockerIsRunning, dockerHubLogin } from '../../lib/docker'; +import { BaseCommand } from '../../baseCommand'; + +export default class WorkersShell extends BaseCommand { + static description = 'Runs shell inside workers docker container'; + + static examples = [`$ <%= config.bin %> <%= command.id %>`]; + + async run(): Promise { + const { rootPath } = await initConfig(this, {}); + await assertDockerIsRunning(); + await dockerHubLogin(); + + await runCommand( + 'docker', + ['compose', 'run', '--rm', '-T', 'workers', 'bash'], + { + cwd: rootPath, + } + ); + } +} diff --git a/packages/internal/cli/src/commands/workers/test.ts b/packages/internal/cli/src/commands/workers/test.ts new file mode 100644 index 000000000..9f7f7518c --- /dev/null +++ b/packages/internal/cli/src/commands/workers/test.ts @@ -0,0 +1,18 @@ +import { initConfig } from '../../config/init'; +import { runCommand } from '../../lib/runCommand'; +import { assertDockerIsRunning, dockerHubLogin } from '../../lib/docker'; +import { BaseCommand } from '../../baseCommand'; + +export default class WorkersTest extends BaseCommand { + static description = 'Run all tests inside workers docker container'; + + static examples = [`$ <%= config.bin %> <%= command.id %>`]; + + async run(): Promise { + await initConfig(this, {}); + await assertDockerIsRunning(); + await dockerHubLogin(); + + await runCommand('pnpm', ['nx', 'run', 'workers:test']); + } +} diff --git a/packages/internal/cli/src/config/aws.ts b/packages/internal/cli/src/config/aws.ts new file mode 100644 index 000000000..7e3e2cca0 --- /dev/null +++ b/packages/internal/cli/src/config/aws.ts @@ -0,0 +1,94 @@ +import { GetCallerIdentityCommand, STSClient } from '@aws-sdk/client-sts'; +import { Command } from '@oclif/core'; + +import * as childProcess from 'child_process'; +import { promisify } from 'util'; +import * as dotenv from 'dotenv'; +import { trace } from '@opentelemetry/api'; + +import { validateStageEnv } from './env'; +import { color } from '@oclif/color'; +import { isAwsVaultInstalled } from '../lib/awsVault'; +import { assertChamberInstalled, loadChamberEnv } from '../lib/chamber'; + +const exec = promisify(childProcess.exec); + +const tracer = trace.getTracer('config:aws'); + +type LoadAWSCredentialsOptions = { + envStage: string; + validateEnvStageVariables: boolean; +}; + +async function loadStageEnv( + context: Command, + envStage: string, + shouldValidate = true +) { + await assertChamberInstalled(); + await loadChamberEnv(context, { serviceName: envStage }); + + if (shouldValidate) { + const validationResult = await validateStageEnv(); + Object.assign(process.env, validationResult); + } +} + +const initAWSVault = async () => { + return tracer.startActiveSpan('initAwsVault', async (span) => { + const awsVaultProfile = process.env.AWS_VAULT_PROFILE; + + const { stdout } = await exec(`aws-vault export ${awsVaultProfile}`); + const credentials = dotenv.parse(stdout); + + // @ts-ignore + dotenv.populate(process.env, credentials); + + span.end(); + }); +}; + +export const initAWS = async ( + context: Command, + options: LoadAWSCredentialsOptions +) => { + return tracer.startActiveSpan('initAWS', async (span) => { + if (await isAwsVaultInstalled()) { + await initAWSVault(); + } + + let awsAccountId; + try { + const stsClient = new STSClient(); + const { Account } = await stsClient.send( + new GetCallerIdentityCommand({}) + ); + awsAccountId = Account; + } catch (error) { + context.error( + 'No valid AWS Credentials found in environment variables. We recommend installing aws-vault to securely manage AWS profiles' + ); + } + + context.log( + `---------- +"${color.red( + options.envStage + )}" is set as a current environment stage. Live AWS session credentials are being used. +----------\n` + ); + + await loadStageEnv( + context, + options.envStage, + options.validateEnvStageVariables + ); + + span.end(); + + return { + awsAccountId, + awsRegion: process.env.AWS_REGION || process.env.AWS_DEFAULT_REGION, + }; + }); +}; diff --git a/packages/internal/core/stage-env-validator.js b/packages/internal/cli/src/config/env.ts similarity index 72% rename from packages/internal/core/stage-env-validator.js rename to packages/internal/cli/src/config/env.ts index f6607e9a0..acc1bff5b 100644 --- a/packages/internal/core/stage-env-validator.js +++ b/packages/internal/cli/src/config/env.ts @@ -1,7 +1,51 @@ -const envalid = require('envalid'); +import * as childProcess from 'child_process'; +import { promisify } from 'util'; +import { resolve } from 'path'; +import * as dotenv from 'dotenv'; +import * as envalid from 'envalid'; -async function validateStageEnv() { - envalid.cleanEnv(process.env, { +const sbTelemetry = require('@apptension/saas-boilerplate-telemetry'); + +export const getRootPath = () => { + const stdout = childProcess.execSync('pnpm root -w'); + return resolve(stdout.toString(), '..'); +}; + +dotenv.config({ path: resolve(getRootPath(), '.env') }); + +export const ENV_STAGE_LOCAL = 'local'; +const IS_CI = Boolean(process.env.CI ?? false); + +export const SB_TELEMETRY_DISABLED = + IS_CI || (Boolean(process.env.SB_TELEMETRY_DISABLED) ?? false); +export const SB_TELEMETRY_DEBUG = + IS_CI || (Boolean(process.env.SB_TELEMETRY_DEBUG) ?? false); + +export const SB_TELEMETRY_URL = process.env.SB_TELEMETRY_URL ?? sbTelemetry[0]; + +export const SB_TELEMETRY_KEY = process.env.SB_TELEMETRY_KEY ?? sbTelemetry[1]; + +const exec = promisify(childProcess.exec); + +type LoadDotenvOptions = { + rootPath: string; +}; + +export async function loadVersionEnv() { + if (process.env.VERSION) { + return process.env.VERSION; + } + + const { stdout: versionRaw } = await exec( + 'git describe --tags --first-parent --abbrev=11 --long --dirty --always' + ); + const version = versionRaw.trim(); + process.env.VERSION = version; + return version; +} + +export async function validateStageEnv() { + return envalid.cleanEnv(process.env, { PROJECT_NAME: envalid.str({ desc: 'The name of your project (best if 3-5 characters to avoid AWS names being to long)', example: 'saas', @@ -85,5 +129,3 @@ async function validateStageEnv() { }), }); } - -module.exports = { validateStageEnv }; diff --git a/packages/internal/cli/src/config/init.ts b/packages/internal/cli/src/config/init.ts new file mode 100644 index 000000000..44617e156 --- /dev/null +++ b/packages/internal/cli/src/config/init.ts @@ -0,0 +1,80 @@ +import { Command } from '@oclif/core'; +import { color } from '@oclif/color'; +import { trace } from '@opentelemetry/api'; + +import { ENV_STAGE_LOCAL, getRootPath, loadVersionEnv } from './env'; +import { initAWS } from './aws'; +import { loadEnvStage } from './storage'; + +const tracer = trace.getTracer('command-init'); + +type InitConfigOptions = { + requireAws?: boolean | 'allow-local'; + validateEnvStageVariables?: boolean; + requireLocalEnvStage?: boolean; +}; + +export const initConfig = async ( + context: Command, + { + requireAws = false, + validateEnvStageVariables = true, + requireLocalEnvStage = false, + }: InitConfigOptions +) => { + return tracer.startActiveSpan('initConfig', async (span) => { + const rootPath = await getRootPath(); + const version = await loadVersionEnv(); + const envStage = await loadEnvStage(); + const projectName = process.env.PROJECT_NAME; + + if (!projectName) { + context.error( + 'PROJECT_NAME environmental variable needs to be defined. You can set it in /.env file or in the system' + ); + } + + if (requireLocalEnvStage && envStage !== ENV_STAGE_LOCAL) { + context.error( + `This command should only be run on a local environment stage. +Please call \`saas aws set-env local\` first or open a new terminal.` + ); + } + + let awsAccountId: string | undefined; + let awsRegion: string | undefined; + if (requireAws) { + if (envStage === ENV_STAGE_LOCAL && requireAws !== 'allow-local') { + context.error( + `Remote environment stage required.\nPlease call \`${color.green( + 'saas aws set-env [stage-name]' + )}\` first. Do not use \`local\` value.` + ); + } + + if (envStage !== ENV_STAGE_LOCAL) { + const awsMetadata = await initAWS(context, { + envStage, + validateEnvStageVariables, + }); + + awsAccountId = awsMetadata.awsAccountId; + awsRegion = awsMetadata.awsRegion; + } + } + + const projectEnvName = `${projectName}-${envStage}`; + + span.end(); + + return { + rootPath, + projectName, + projectEnvName, + envStage, + version, + awsRegion, + awsAccountId, + }; + }); +}; diff --git a/packages/internal/cli/src/config/storage.ts b/packages/internal/cli/src/config/storage.ts new file mode 100644 index 000000000..5b8349f19 --- /dev/null +++ b/packages/internal/cli/src/config/storage.ts @@ -0,0 +1,37 @@ +import * as storage from 'node-persist'; +import * as childProcess from 'child_process'; +import { promisify } from 'util'; +import { resolve } from 'path'; + +import { ENV_STAGE_LOCAL } from './env'; + +let isStorageInitialized = false; + +const exec = promisify(childProcess.exec); + +export const getEnvStageKey = () => 'envStage'; + +export const getConfigStorage = async () => { + if (!isStorageInitialized) { + const { stdout } = await exec('pnpm root -w'); + const dir = resolve(stdout, '..', '.saas-boilerplate'); + await storage.init({ encoding: 'utf-8', dir }); + isStorageInitialized = false; + } + return storage; +}; + +export const loadEnvStage = async (): Promise => { + const storage = await getConfigStorage(); + const value = + (await storage.getItem(getEnvStageKey())) ?? + process.env.ENV_STAGE ?? + ENV_STAGE_LOCAL; + process.env.ENV_STAGE = value; + return value; +}; + +export const setEnvStage = async (value: string) => { + const storage = await getConfigStorage(); + await storage.setItem(getEnvStageKey(), value); +}; diff --git a/packages/internal/cli/src/config/telemetry.ts b/packages/internal/cli/src/config/telemetry.ts new file mode 100644 index 000000000..5c3633174 --- /dev/null +++ b/packages/internal/cli/src/config/telemetry.ts @@ -0,0 +1,30 @@ +import { SimpleSpanProcessor } from '@opentelemetry/sdk-trace-base'; +import { Resource } from '@opentelemetry/resources'; +import { NodeTracerProvider } from '@opentelemetry/sdk-trace-node'; +import { SemanticResourceAttributes } from '@opentelemetry/semantic-conventions'; +import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-proto'; + +import { + SB_TELEMETRY_DISABLED, + SB_TELEMETRY_KEY, + SB_TELEMETRY_URL, +} from './env'; + +export const isEnabled = !SB_TELEMETRY_DISABLED; + +export const traceExporter = new OTLPTraceExporter({ + url: SB_TELEMETRY_URL, + headers: { + 'x-honeycomb-team': SB_TELEMETRY_KEY, + }, +}); + +export const provider = new NodeTracerProvider({ + resource: Resource.default().merge( + new Resource({ + [SemanticResourceAttributes.SERVICE_NAME]: 'saas-cli', + }) + ), +}); + +provider.addSpanProcessor(new SimpleSpanProcessor(traceExporter)); diff --git a/packages/internal/cli/src/hooks/init/instrumentation.ts b/packages/internal/cli/src/hooks/init/instrumentation.ts new file mode 100644 index 000000000..27878b0e1 --- /dev/null +++ b/packages/internal/cli/src/hooks/init/instrumentation.ts @@ -0,0 +1,8 @@ +import { Hook } from '@oclif/core'; +import { provider } from '../../config/telemetry'; + +const hook: Hook<'init'> = async function (options) { + provider.register(); +}; + +export default hook; diff --git a/packages/internal/cli/src/index.ts b/packages/internal/cli/src/index.ts new file mode 100644 index 000000000..e32b0b2e5 --- /dev/null +++ b/packages/internal/cli/src/index.ts @@ -0,0 +1 @@ +export {run} from '@oclif/core' diff --git a/packages/internal/cli/src/lib/awsVault.ts b/packages/internal/cli/src/lib/awsVault.ts new file mode 100644 index 000000000..597bfbd38 --- /dev/null +++ b/packages/internal/cli/src/lib/awsVault.ts @@ -0,0 +1,18 @@ +import { CLIError } from '@oclif/errors'; +import * as childProcess from 'child_process'; +import { promisify } from 'util'; +import { lookpath } from 'lookpath'; + +const exec = promisify(childProcess.exec); + +export const isAwsVaultInstalled = async () => { + return await lookpath('aws-vault'); +}; + +export const assertAwsVaultInstalled = async () => { + const isInstalled = await isAwsVaultInstalled(); + if (!isInstalled) { + throw new CLIError(`aws-vault executable not found. Make sure it is installed in the system and re-run the + command. Go to https://github.com/99designs/aws-vault and learn how to install and configure it.`); + } +}; diff --git a/packages/internal/cli/src/lib/chamber.ts b/packages/internal/cli/src/lib/chamber.ts new file mode 100644 index 000000000..19128d447 --- /dev/null +++ b/packages/internal/cli/src/lib/chamber.ts @@ -0,0 +1,52 @@ +import { CLIError } from '@oclif/errors'; +import * as childProcess from 'child_process'; +import { promisify } from 'util'; +import { lookpath } from 'lookpath'; +import { Command } from '@oclif/core'; +import * as dotenv from 'dotenv'; + +const exec = promisify(childProcess.exec); + +export const isChamberInstalled = async () => { + return await lookpath('chamber'); +}; + +export const assertChamberInstalled = async () => { + const isInstalled = await isChamberInstalled(); + if (!isInstalled) { + throw new CLIError(`chamber executable not found. Make sure it is installed in the system and re-run the + command. Go to https://github.com/segmentio/chamber and learn how to install and configure it.`); + } +}; + +type LoadChamberEnvOptions = { + serviceName: string; +}; +export async function loadChamberEnv( + context: Command, + { serviceName }: LoadChamberEnvOptions +) { + await assertChamberInstalled(); + + let chamberOutput; + try { + const { stdout } = await exec( + `chamber export ${serviceName} --format dotenv` + ); + chamberOutput = stdout; + } catch (err) { + context.error( + `Failed to load environmental variables from SSM Parameter Store using chamber: ${err}` + ); + } + + const parsed = dotenv.parse(Buffer.from(chamberOutput)); + context.log( + `Loaded environmental variables from SSM Parameter Store using chamber: + service (prefix): ${serviceName} + count: ${Object.keys(parsed).length}\n` + ); + + // @ts-ignore + dotenv.populate(process.env, parsed, { override: true }); +} diff --git a/packages/internal/cli/src/lib/docker.ts b/packages/internal/cli/src/lib/docker.ts new file mode 100644 index 000000000..170f960ef --- /dev/null +++ b/packages/internal/cli/src/lib/docker.ts @@ -0,0 +1,33 @@ +import { CLIError } from '@oclif/errors'; +import * as childProcess from 'child_process'; +import { promisify } from 'util'; +import { trace } from '@opentelemetry/api'; + +const tracer = trace.getTracer('docker'); +const exec = promisify(childProcess.exec); + +export const assertDockerIsRunning = async () => { + return tracer.startActiveSpan('assertDockerIsRunning', async (span) => { + try { + await exec('docker info'); + span.end(); + return true; + } catch (err) { + throw new CLIError(`It seems that docker daemon is not running. Here's a result from \`docker info\` command: + +${err} + `); + } + }); +}; + +export const dockerHubLogin = async () => { + const username = process.env.DOCKER_USERNAME; + const password = process.env.DOCKER_PASSWORD; + if (username && password) { + return tracer.startActiveSpan('dockerHubLogin', async (span) => { + await exec(`docker login -u "${username}" -p "${password}"`); + span.end(); + }); + } +}; diff --git a/packages/internal/cli/src/lib/runCommand.ts b/packages/internal/cli/src/lib/runCommand.ts new file mode 100644 index 000000000..7691ac41f --- /dev/null +++ b/packages/internal/cli/src/lib/runCommand.ts @@ -0,0 +1,26 @@ +import { SpawnOptionsWithoutStdio, spawn } from 'node:child_process'; + +export function runCommand( + command: string, + args: string[], + options?: SpawnOptionsWithoutStdio +) { + return new Promise((resolve, reject) => { + console.log([command, ...args].join(' ')); + const cmd = spawn(command, args, { + shell: process.platform === 'win32', + stdio: 'inherit', + ...options, + }); + + cmd.on('close', (code) => { + if (code !== 0) { + reject( + new Error(`"${command} ${args.join(' ')}" failed with code ${code}`) + ); + } else { + resolve(); + } + }); + }); +} diff --git a/packages/internal/cli/src/lib/secretsEditor.ts b/packages/internal/cli/src/lib/secretsEditor.ts new file mode 100644 index 000000000..96785ded3 --- /dev/null +++ b/packages/internal/cli/src/lib/secretsEditor.ts @@ -0,0 +1,28 @@ +import { runCommand } from './runCommand'; + +type RunSecretsEditorOptions = { + serviceName: string; + rootPath: string; +}; + +export const runSecretsEditor = async ({ + serviceName, + rootPath, +}: RunSecretsEditorOptions) => { + await runCommand('pnpm', ['nx', 'run', 'ssm-editor:compose-build-image']); + await runCommand( + 'docker', + [ + 'compose', + 'run', + '--rm', + '-entrypoint /bin/bash', + 'ssm-editor', + `/scripts/run.sh`, + serviceName, + ], + { + cwd: rootPath, + } + ); +}; diff --git a/packages/internal/cli/test/helpers/init.js b/packages/internal/cli/test/helpers/init.js new file mode 100644 index 000000000..338e715a2 --- /dev/null +++ b/packages/internal/cli/test/helpers/init.js @@ -0,0 +1,6 @@ +const path = require('path') +process.env.TS_NODE_PROJECT = path.resolve('test/tsconfig.json') +process.env.NODE_ENV = 'development' + +global.oclif = global.oclif || {} +global.oclif.columns = 80 diff --git a/packages/internal/cli/test/tsconfig.json b/packages/internal/cli/test/tsconfig.json new file mode 100644 index 000000000..460cf368f --- /dev/null +++ b/packages/internal/cli/test/tsconfig.json @@ -0,0 +1,7 @@ +{ + "extends": "../tsconfig", + "compilerOptions": { + "noEmit": true + }, + "references": [{ "path": ".." }] +} diff --git a/packages/internal/cli/tsconfig.json b/packages/internal/cli/tsconfig.json new file mode 100644 index 000000000..bfb44b834 --- /dev/null +++ b/packages/internal/cli/tsconfig.json @@ -0,0 +1,14 @@ +{ + "extends": "../../../tsconfig.base.json", + "compilerOptions": { + "declaration": true, + "importHelpers": true, + "module": "commonjs", + "outDir": "dist", + "rootDir": "src", + "strict": true, + "target": "es2019", + "noEmit": false + }, + "include": ["src/**/*"] +} diff --git a/packages/internal/core/custom-task-runner.js b/packages/internal/core/custom-task-runner.js deleted file mode 100644 index 45a875db5..000000000 --- a/packages/internal/core/custom-task-runner.js +++ /dev/null @@ -1,49 +0,0 @@ -const path = require('path'); -const util = require('util'); -const exec = util.promisify(require('child_process').exec); -const { default: defaultTaskRunner } = require('nx/tasks-runners/default'); -const dotenv = require('dotenv'); -const { validateStageEnv } = require('./stage-env-validator'); - -async function loadVersionEnv() { - if (process.env.VERSION) { - return; - } - - const scriptPath = path.join(__dirname, './scripts/get-version.sh'); - try { - const { stdout: version } = await exec(`bash ${scriptPath}`); - process.env.VERSION = version.trim(); - } catch {} -} - -async function loadStageEnv(shouldValidate = true) { - if (!process.env.ENV_STAGE || process.env.ENV_STAGE === 'local') { - return; - } - - const { stdout: chamberOutput } = await exec( - `chamber export ${process.env.ENV_STAGE} --format dotenv` - ); - - const parsed = dotenv.parse(Buffer.from(chamberOutput)); - dotenv.populate(process.env, parsed); - - if (shouldValidate) { - await validateStageEnv(); - } -} - -const noValidateTasks = [ - 'tools:bootstrap-infra', - 'infra-shared:bootstrap' - ] - -module.exports = async (...args) => { - const taskId = args[0]?.[0]?.id; - const shouldValidateEnv = !noValidateTasks.includes(taskId); - await loadStageEnv(shouldValidateEnv); - - await loadVersionEnv(); - return defaultTaskRunner(...args); -}; diff --git a/packages/internal/core/package.json b/packages/internal/core/package.json index cfdd8bb10..569a8d67c 100644 --- a/packages/internal/core/package.json +++ b/packages/internal/core/package.json @@ -4,6 +4,7 @@ "devDependencies": { "env-cmd": "^10.1.0", "envalid": "^7.3.1", - "dotenv": "^16.1.4" + "dotenv": "^16.1.4", + "lookpath": "^1.2.2" } } diff --git a/packages/internal/core/project.json b/packages/internal/core/project.json index 07351c806..9e93d7fe9 100644 --- a/packages/internal/core/project.json +++ b/packages/internal/core/project.json @@ -24,15 +24,7 @@ "options": { "color": true, "cwd": "packages/internal/core", - "command": "/bin/bash ./scripts/docker-create-volumes.sh" - } - }, - "docker-login": { - "executor": "nx:run-commands", - "options": { - "color": true, - "cwd": "packages/internal/core", - "command": "/bin/bash ./scripts/docker-login.sh" + "command": "node ./scripts/docker-create-volumes.js" } }, "docker-compose:up": { @@ -56,14 +48,6 @@ "commands": ["docker-compose down"] } }, - "serve": { - "executor": "nx:run-commands", - "options": { - "color": true, - "commands": ["nx docker-compose:up", "nx run webapp:start"], - "parallel": false - } - }, "lint": { "executor": "@nx/linter:eslint", "outputs": ["{options.outputFile}"], diff --git a/packages/internal/core/scripts/docker-create-volumes.js b/packages/internal/core/scripts/docker-create-volumes.js new file mode 100644 index 000000000..c893033fa --- /dev/null +++ b/packages/internal/core/scripts/docker-create-volumes.js @@ -0,0 +1,13 @@ +#!/usr/bin/env node + +const util = require('node:util'); +const exec = util.promisify(require('node:child_process').exec); + +const projectName = process.env.PROJECT_NAME; +const volumeName = `${projectName}-web-backend-db-data`; + +(async () => { + const { stdout, stderr } = await exec(`docker volume create --name="${volumeName}"`); + console.log(stdout); + console.error(stderr); +})(); diff --git a/packages/internal/core/scripts/docker-create-volumes.sh b/packages/internal/core/scripts/docker-create-volumes.sh deleted file mode 100644 index dee419b1c..000000000 --- a/packages/internal/core/scripts/docker-create-volumes.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/usr/bin/env bash - -docker volume create --name="${PROJECT_NAME}-web-backend-db-data" diff --git a/packages/internal/core/scripts/docker-login.sh b/packages/internal/core/scripts/docker-login.sh deleted file mode 100644 index 8918d8125..000000000 --- a/packages/internal/core/scripts/docker-login.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/usr/bin/env bash - -if [[ -z ${DOCKER_PASSWORD} ]]; then - exit 0 -fi - -echo "${DOCKER_PASSWORD}" | docker login -u "${DOCKER_USERNAME}" --password-stdin diff --git a/packages/internal/core/scripts/get-version.js b/packages/internal/core/scripts/get-version.js new file mode 100644 index 000000000..5d984801a --- /dev/null +++ b/packages/internal/core/scripts/get-version.js @@ -0,0 +1,17 @@ +#!/usr/bin/env node + +const { spawn } = require('node:child_process'); + +spawn( + 'git', + [ + 'describe', + '--tags', + '--first-parent', + '--abbrev=11', + '--long', + '--dirty', + '--always', + ], + { stdio: 'inherit' } +); diff --git a/packages/internal/core/scripts/get-version.sh b/packages/internal/core/scripts/get-version.sh deleted file mode 100644 index 05ec189c9..000000000 --- a/packages/internal/core/scripts/get-version.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/usr/bin/env bash - -git describe --tags --first-parent --abbrev=11 --long --dirty --always diff --git a/packages/internal/core/scripts/lib/runCommand.js b/packages/internal/core/scripts/lib/runCommand.js new file mode 100644 index 000000000..3bff0451b --- /dev/null +++ b/packages/internal/core/scripts/lib/runCommand.js @@ -0,0 +1,19 @@ +const { spawn } = require('node:child_process'); + +function runCommand(command, args) { + return new Promise((resolve, reject) => { + const cmd = spawn(command, args, { stdio: 'inherit' }); + + cmd.on('close', (code) => { + if (code !== 0) { + reject( + new Error(`"${command} ${args.join(' ')}" failed with code ${code}`) + ); + } else { + resolve(); + } + }); + }); +} + +module.exports = { runCommand }; diff --git a/packages/internal/docs/Makefile b/packages/internal/docs/Makefile deleted file mode 100644 index 374fb0a99..000000000 --- a/packages/internal/docs/Makefile +++ /dev/null @@ -1,10 +0,0 @@ -SELF_DIR := $(dir $(lastword $(MAKEFILE_LIST))) -include $(SELF_DIR)/../../Makefile.base.mk - -.PHONY: build test - -build: - nx build - -deploy: - nx deploy diff --git a/packages/internal/docs/README.md b/packages/internal/docs/README.md index 8960fa2af..3921bc735 100644 --- a/packages/internal/docs/README.md +++ b/packages/internal/docs/README.md @@ -5,29 +5,23 @@ This website is built using [Docusaurus 2](https://v2.docusaurus.io/), a modern ## Installation ```console -yarn install +pnpm i -w ``` ## Local Development ```console -yarn start +pnpm nx run docs:start ``` -This command starts a local development server and open up a browser window. Most changes are reflected live without having to restart the server. +This command starts a local development server and open up a browser window. Most changes are reflected live without +having to restart the server. ## Build ```console -yarn build +pnpm nx run docs:build ``` -This command generates static content into the `build` directory and can be served using any static contents hosting service. - -## Deployment - -```console -GIT_USER= USE_SSH=true yarn deploy -``` - -If you are using GitHub pages for hosting, this command is a convenient way to build the website and push to the `gh-pages` branch. +This command generates static content into the `build` directory and can be served using any static contents hosting +service. diff --git a/packages/internal/docs/docs/api-reference/backend/commands.mdx b/packages/internal/docs/docs/api-reference/backend/commands.mdx index cfce6e531..a08f54372 100644 --- a/packages/internal/docs/docs/api-reference/backend/commands.mdx +++ b/packages/internal/docs/docs/api-reference/backend/commands.mdx @@ -10,7 +10,7 @@ This page contains a list of CLI commands that you can use within the `backend` ### `pnpm nx run backend:compose-build-image` -Builds a backend Docker image by running `pnpm nx run core:docker-login` and `docker-compose build backend`. +Builds a backend Docker image by running `docker-compose build backend`. @@ -52,70 +52,56 @@ pnpm nx run tools:upload-service-version migrations --- -### `make test` +### `pnpm saas backend test` Alias command for [`pnpm nx test`](#pnpm-nx-run-backendtest). --- -### `make build` +### `pnpm saas backend build` Alias command for [`pnpm nx build`](#pnpm-nx-run-backendbuild). --- -### `make shell` +### `pnpm saas backend shell` Runs `bash` inside backend container: `docker-compose run --rm backend bash` --- -### `make create-app` - -Runs `django-admin startapp` inside backend container. - -Arguments: -- `app_name`: the name of the app to create - ---- - -### `make makemigrations` +### `pnpm saas backend makemigrations` Runs `python ./manage.py makemigrations` inside backend container. --- -### `make migrate` +### `pnpm saas backend migrate` Runs `python ./manage.py migrate` inside backend container. --- -### `make flake8` +### `pnpm saas backend ruff` -Runs `flake8` inside backend container. +Runs `ruff` inside backend container. --- -### `make black` +### `pnpm saas backend black` Runs `black` inside backend container. ---- - -### `make check-migrations` - -Runs `python ./manage.py makemigrations --check --dry-run` inside backend container. --- -### `make sync-stripe` +### `pnpm saas backend stripe sync` Runs `python ./manage.py djstripe_sync_models` inside backend container. --- -### `make secrets` +### `pnpm saas backend secrets` It starts `secrets-editor` with the `backend` context (`SERVICE_NAME=backend`): tool that helps to set up an environment variables for AWS environment. Find more about setting environment variables for a service @@ -123,18 +109,18 @@ variables for AWS environment. Find more about setting environment variables for :::caution -This command should be called only after `make set-env ENV_STAGE=` command. +This command should be called only after `saas aws set-env [STAGE_NAME]` command. ::: --- -### `make remote-shell` +### `pnpm saas backend remote-shell` Executes shell script which connects to the ECS backend task and starts an interactive shell session inside it. :::caution -This command should be called only after `make set-env ENV_STAGE=` command. +This command should be called only after `saas aws set-env [STAGE_NAME]` command. ::: \ No newline at end of file diff --git a/packages/internal/docs/docs/api-reference/env-files.mdx b/packages/internal/docs/docs/api-reference/env-files.mdx index c6ea83efc..2430cc2aa 100644 --- a/packages/internal/docs/docs/api-reference/env-files.mdx +++ b/packages/internal/docs/docs/api-reference/env-files.mdx @@ -20,7 +20,6 @@ CNAME DNS records pointing to CloudFront distribution and Load Balancer need to | `AWS_DEFAULT_REGION` | Default AWS region for you application | `eu-west-1` | | `COMPOSE_PATH_SEPARATOR` | Check official `docker-compose` [documentation](https://docs.docker.com/compose/environment-variables/envvars/#compose_path_separator) | `:` | | `COMPOSE_FILE` | Check official `docker-compose` [documentation](https://docs.docker.com/compose/environment-variables/envvars/#compose_file) | `docker-compose.yml:docker-compose.local.yml` | -| `ENV_STAGE` | Name of you stage | `local` | | `SB_HOSTED_ZONE_ID` | Id of a AWS Route53 hosted zone of a domain used to host services of this environment | `` | | `SB_HOSTED_ZONE_NAME` | Name of a AWS Route53 hosted zone of a domain used to host services of this environment | `example.com` | | `SB_DOMAIN_ADMIN_PANEL` | A domain used to host an admin panel service | `admin.example.com` | diff --git a/packages/internal/docs/docs/api-reference/webapp/commands.mdx b/packages/internal/docs/docs/api-reference/webapp/commands.mdx index 01568cf4a..fedca5c23 100644 --- a/packages/internal/docs/docs/api-reference/webapp/commands.mdx +++ b/packages/internal/docs/docs/api-reference/webapp/commands.mdx @@ -107,19 +107,19 @@ To find more about using `chamber` in the project check [How to configure enviro --- -### `make test` +### `saas webapp test` Alias command for [`pnpm nx test`](#pnpm-run-test). --- -### `make build` +### `saas webapp build` Alias command for [`pnpm nx build`](#pnpm-nx-run-webappbuild-vite). --- -### `make secrets` +### `pnpm saas webapp secrets` It starts `secrets-editor` with the `webapp` context (`SERVICE_NAME=webapp`): tool that helps to set up an environment variables for AWS environment. Find more about setting environment variables for a service @@ -127,7 +127,7 @@ variables for AWS environment. Find more about setting environment variables for :::caution -This command should be called only after `make set-env ENV_STAGE=` command. +This command should be called only after `saas aws set-env [STAGE_NAME]` command. ::: diff --git a/packages/internal/docs/docs/aws/cicd/auto-deploy.mdx b/packages/internal/docs/docs/aws/cicd/auto-deploy.mdx index df110a3ae..b7971aae4 100644 --- a/packages/internal/docs/docs/aws/cicd/auto-deploy.mdx +++ b/packages/internal/docs/docs/aws/cicd/auto-deploy.mdx @@ -23,16 +23,16 @@ import CodeBlock from '@theme/CodeBlock'; - make set-env ENV_STAGE=qa + saas aws est-env qa
- make create-repo-auth-url | pbcopy + saas ci create-credentials | pbcopy
- make set-env ENV_STAGE=qa + saas aws est-env qa
- make create-repo-auth-url | xclip -sel clip + saas ci create-credentials | xclip -sel clip
diff --git a/packages/internal/docs/docs/aws/deploy-to-aws/configure-aws-credentials.mdx b/packages/internal/docs/docs/aws/deploy-to-aws/configure-aws-credentials.mdx index c60265e25..d4a95f196 100644 --- a/packages/internal/docs/docs/aws/deploy-to-aws/configure-aws-credentials.mdx +++ b/packages/internal/docs/docs/aws/deploy-to-aws/configure-aws-credentials.mdx @@ -131,10 +131,10 @@ AWS_VAULT_PROFILE=saas From now on you can use aws-vault for secure connection with AWS platform. Always make sure you are in a proper aws-vault context when you run commands that use AWS CLI. -We created a `make` rule that will automatically use `aws-vault` if it is detected in your system: +We created a CLI command that will automatically use `aws-vault` if it is detected in your system: ```shell -make set-env ENV_STAGE=qa +pnpm saas aws set-env [STAGE_NAME] ``` After this you'll have proper AWS credentials available in environmental variables and any command will be run against diff --git a/packages/internal/docs/docs/aws/deploy-to-aws/configure-hosted-zone.mdx b/packages/internal/docs/docs/aws/deploy-to-aws/configure-hosted-zone.mdx index 8c3b5cf67..406be54a0 100644 --- a/packages/internal/docs/docs/aws/deploy-to-aws/configure-hosted-zone.mdx +++ b/packages/internal/docs/docs/aws/deploy-to-aws/configure-hosted-zone.mdx @@ -1,6 +1,7 @@ --- description: Steps required to deploy SaaS Boilerplate on AWS --- + import ProjectName from '../../shared/components/ProjectName.component'; # Step 2: Configure hosted zone @@ -8,7 +9,8 @@ import ProjectName from '../../shared/components/ProjectName.component'; ## Configure hosted zone In order to access any environment you need to have a public Hosted Zone in AWS Route53. - will use this hosted zone's domain to route traffic to your app. + + will use this hosted zone's domain to route traffic to your app. :::info @@ -45,7 +47,7 @@ In the end you should be able to go to the AWS web panel and get _Hosted Zone ID :::info -You can open AWS web panel with `make aws-login ENV_STAGE=qa` command if you configured `aws-vault` +You can open AWS web panel with `pnpm saas aws login` command if you configured `aws-vault` ::: diff --git a/packages/internal/docs/docs/aws/deploy-to-aws/create-env-stage-in-repo.mdx b/packages/internal/docs/docs/aws/deploy-to-aws/create-env-stage-in-repo.mdx index ffb6c34f1..fabc84dde 100644 --- a/packages/internal/docs/docs/aws/deploy-to-aws/create-env-stage-in-repo.mdx +++ b/packages/internal/docs/docs/aws/deploy-to-aws/create-env-stage-in-repo.mdx @@ -6,10 +6,12 @@ import ProjectName from '../../shared/components/ProjectName.component'; # Step 3: Initialize an environment stage - provides the ability to deploy various versions of your application, such as QA, staging, or -production. You have the flexibility to determine their naming conventions and the number of environments required. -The only exception is the `local` environment, which is a specialized preconfigured environment utilized for running - on local machine. + provides the ability to deploy various versions of your +application, such as QA, staging, or production. You have the flexibility to +determine their naming conventions and the number of environments required. The +only exception is the `local` environment, which is a specialized preconfigured +environment utilized for running + on local machine. All environments can either be deployed to a single AWS account or to separate ones, depending on your cloud governance policies and preferences. @@ -36,7 +38,7 @@ In , AWS CDK is used to define infrastructure as a code. It also n Before you deploy anything to AWS you need to run following initialization command: ```shell -make bootstrap-infra +pnpm saas infra bootstrap ``` If you're deploying a second environment stage to the @@ -48,7 +50,7 @@ Open a shell terminal with proper AWS credentials available. If you followed a [previous step](./configure-aws-credentials) you can run following command to do it: ```shell -make set-env ENV_STAGE=qa +pnpm saas aws set-env [STAGE_NAME] ``` Let's assume your stage is named `qa` and the project is named `saas`. @@ -59,7 +61,7 @@ Here's a list of all required env variables that you should set and a command th Each stage can have a different project name if you want but recommended approach is to use the same across all stages. ```shell -chamber write qa PROJECT_NAME saas +pnpm saas aws set-var PROJECT_NAME saas ``` ### Configure domains @@ -67,13 +69,13 @@ chamber write qa PROJECT_NAME saas For this step you'll need the hosted zone parameters that you acquired in the previous step of this guide. ```shell -chamber write qa SB_HOSTED_ZONE_ID XYZ -chamber write qa SB_HOSTED_ZONE_NAME example.com -chamber write qa SB_DOMAIN_ADMIN_PANEL admin.qa.example.com -chamber write qa SB_DOMAIN_API api.qa.example.com -chamber write qa SB_DOMAIN_CDN cdn.qa.example.com -chamber write qa SB_DOMAIN_DOCS docs.qa.example.com -chamber write qa SB_DOMAIN_WEB_APP app.qa.example.com +pnpm saas aws set-var SB_HOSTED_ZONE_ID XYZ +pnpm saas aws set-var SB_HOSTED_ZONE_NAME example.com +pnpm saas aws set-var SB_DOMAIN_ADMIN_PANEL admin.qa.example.com +pnpm saas aws set-var SB_DOMAIN_API api.qa.example.com +pnpm saas aws set-var SB_DOMAIN_CDN cdn.qa.example.com +pnpm saas aws set-var SB_DOMAIN_DOCS docs.qa.example.com +pnpm saas aws set-var SB_DOMAIN_WEB_APP app.qa.example.com ``` :::info @@ -89,7 +91,7 @@ It's a good idea to prevent unauthorized access to staging environments so we su if this isn't a production environment. ```shell -chamber write qa SB_BASIC_AUTH username:password +pnpm saas aws set-var SB_BASIC_AUTH username:password ``` ### \[Optional\] Configure automatic deployment for selected branches @@ -98,7 +100,7 @@ If you want a deployment to be stared automatically when a commit is pushed to c `SB_DEPLOY_BRANCHES` variable. ```shell -chamber write qa SB_DEPLOY_BRANCHES master +pnpm saas aws set-var SB_DEPLOY_BRANCHES master ``` ### \[Optional\] Set tools env variables @@ -106,11 +108,11 @@ chamber write qa SB_DEPLOY_BRANCHES master To configure `tools` package env variables follow the example below. ```shell -chamber write qa SB_TOOLS_ENABLED -chamber write qa SB_TOOLS_BASIC_AUTH username:password -chamber write qa SB_TOOLS_HOSTED_ZONE_ID XYZ -chamber write qa SB_TOOLS_HOSTED_ZONE_NAME example.com -chamber write qa SB_TOOLS_DOMAIN_VERSION_MATRIX status.example.com +pnpm saas aws set-var SB_TOOLS_ENABLED +pnpm saas aws set-var SB_TOOLS_BASIC_AUTH username:password +pnpm saas aws set-var SB_TOOLS_HOSTED_ZONE_ID XYZ +pnpm saas aws set-var SB_TOOLS_HOSTED_ZONE_NAME example.com +pnpm saas aws set-var SB_TOOLS_DOMAIN_VERSION_MATRIX status.example.com ``` ## Env variable validation diff --git a/packages/internal/docs/docs/aws/deploy-to-aws/create-runtime-env-vars.mdx b/packages/internal/docs/docs/aws/deploy-to-aws/create-runtime-env-vars.mdx index ec6bcaab1..1131b63d8 100644 --- a/packages/internal/docs/docs/aws/deploy-to-aws/create-runtime-env-vars.mdx +++ b/packages/internal/docs/docs/aws/deploy-to-aws/create-runtime-env-vars.mdx @@ -1,6 +1,7 @@ --- description: Steps required to deploy SaaS Boilerplate on AWS --- + import ProjectName from '../../shared/components/ProjectName.component'; # Step 5: Create runtime environment variables @@ -26,17 +27,31 @@ Follow the [official instructions](https://github.com/segmentio/chamber#installi Run the following command that will switch context to specific environment stage. ```shell -make set-env ENV_STAGE=qa +saas aws set-env [STAGE_NAME] ``` ## How does it work? ### Using the CLI tool -You can then set the environment variables for the service (such as `backend`) in JSON format using the following `make` rule: +You can then set the environment variables for the service (such as `backend`) in JSON format using the CLI command + +Backend: + +```shell +pnpm saas backend secrets +``` + +Webapp: + +```shell +pnpm saas webapp secrets +``` + +Workers: ```shell -make -C packages/ secrets +pnpm saas workers secrets ``` This will download a JSON secrets file, open it in Vim, and re-upload it when you save the file. @@ -60,7 +75,7 @@ in order to be correctly loaded into import BackendEnvVars from '../../shared/partials/env-vars/_backend.mdx'; ```shell -make -C packages/backend secrets +pnpm saas backend secrets ``` @@ -72,7 +87,7 @@ Check the [api reference](../../api-reference/env#backend-service) for full list import WorkersEnvVars from '../../shared/partials/env-vars/_workers.mdx'; ```shell -make -C packages/workers secrets +pnpm saas workers secrets ``` @@ -84,7 +99,7 @@ Check the [api reference](../../api-reference/env#workers-service) for full list import WebappEnvVars from '../../shared/partials/env-vars/_webapp.mdx'; ```shell -make -C packages/webapp secrets +pnpm saas webapp secrets ``` diff --git a/packages/internal/docs/docs/aws/deploy-to-aws/deploy-infrastructure.mdx b/packages/internal/docs/docs/aws/deploy-to-aws/deploy-infrastructure.mdx index bd5b06daa..b9b1e2d02 100644 --- a/packages/internal/docs/docs/aws/deploy-to-aws/deploy-infrastructure.mdx +++ b/packages/internal/docs/docs/aws/deploy-to-aws/deploy-infrastructure.mdx @@ -1,27 +1,25 @@ --- description: Steps required to deploy SaaS Boilerplate infrastructure on AWS --- + import ProjectName from '../../shared/components/ProjectName.component'; # Step 4: Deploy infrastructure - ## Switch context to proper environment stage Run the following command that will switch context to specific environment stage. ```shell -make set-env ENV_STAGE=qa +saas aws set-env [STAGE_NAME] ``` - - ## Deploy the infrastructure Deploy an actual infrastructure of your app by running following command: ```shell -make deploy-env-infra +pnpm saas infra deploy ``` This command will run CDK deployment of all environment specific infrastructure components like: database, CI/CD. diff --git a/packages/internal/docs/docs/aws/deploy-to-aws/run-deployment-commands.mdx b/packages/internal/docs/docs/aws/deploy-to-aws/run-deployment-commands.mdx index d3978d40f..72434158c 100644 --- a/packages/internal/docs/docs/aws/deploy-to-aws/run-deployment-commands.mdx +++ b/packages/internal/docs/docs/aws/deploy-to-aws/run-deployment-commands.mdx @@ -1,6 +1,7 @@ --- description: Steps required to deploy SaaS Boilerplate apps on AWS --- + import ProjectName from '../../shared/components/ProjectName.component'; # Step 6: Deploy the app @@ -10,10 +11,9 @@ import ProjectName from '../../shared/components/ProjectName.component'; Run the following command that will switch context to specific environment stage. ```shell -make set-env ENV_STAGE=qa +saas aws set-env [STAGE_NAME] ``` - ## Deploy application's code This step is optional because it usually should be run through CI/CD pipeline. We didn't want to limit you so we also @@ -29,7 +29,7 @@ while for single service you need to go to that specific service directory. Run following command to build artifacts out of code on your local machine: ```sh -make build +pnpm saas build ``` ### Deploy artifacts to the newly created env @@ -37,7 +37,7 @@ make build Run following command to deploy artifacts, built in previous command, to AWS: ```sh -make deploy-env-app +pnpm saas deploy ``` ## Open the app diff --git a/packages/internal/docs/docs/getting-started/run-project/_start-app.mdx b/packages/internal/docs/docs/getting-started/run-project/_start-app.mdx index e614d0961..88372983f 100644 --- a/packages/internal/docs/docs/getting-started/run-project/_start-app.mdx +++ b/packages/internal/docs/docs/getting-started/run-project/_start-app.mdx @@ -18,7 +18,7 @@ pnpm nx run core:docker-compose:up or a shorter version: ```bash -make up +pnpm saas up ``` This will run docker containers for all the backend services in the detached mode. diff --git a/packages/internal/docs/docs/introduction/architecture.mdx b/packages/internal/docs/docs/introduction/architecture.mdx index 96242be39..7e440acfe 100644 --- a/packages/internal/docs/docs/introduction/architecture.mdx +++ b/packages/internal/docs/docs/introduction/architecture.mdx @@ -12,9 +12,9 @@ import CiCdArchitecture from '../shared/partials/architecture/_cicd_architecture comes with a set of pre-configured services that are ready to be deployed on [AWS](https://aws.amazon.com/) cloud infrastructure. -The project follows a monorepo repository layout and utilizes the [NX](https://nx.dev/) build system. A `Makefile` is -also included with predefined rules, which should not be changed unless you know what you are doing. Most of these rules -are used in CodeBuild jobs in the CI pipeline. +The project follows a monorepo repository layout and utilizes the [NX](https://nx.dev/) build system. A CLI is +also included with predefined commands, which should not be changed unless you know what you are doing. Most of these +commands are used in CodeBuild jobs in the CI pipeline. All services are located in the `packages` directory at the root of the repository. Standard installation of the contains following services: diff --git a/packages/internal/docs/docs/working-with-sb/contentful/sync-data.mdx b/packages/internal/docs/docs/working-with-sb/contentful/sync-data.mdx index 07c47593f..5007ba081 100644 --- a/packages/internal/docs/docs/working-with-sb/contentful/sync-data.mdx +++ b/packages/internal/docs/docs/working-with-sb/contentful/sync-data.mdx @@ -37,5 +37,6 @@ CONTENTFUL_ENVIRONMENT= Run following command from the root of the project: ```shell -make -C packages/contentful deploy +cd packages/contentful +node scripts/run_migrations.js ``` diff --git a/packages/internal/docs/docs/working-with-sb/dev-tools/sentry.mdx b/packages/internal/docs/docs/working-with-sb/dev-tools/sentry.mdx index 404b27838..5fbd7c931 100644 --- a/packages/internal/docs/docs/working-with-sb/dev-tools/sentry.mdx +++ b/packages/internal/docs/docs/working-with-sb/dev-tools/sentry.mdx @@ -24,12 +24,12 @@ Please refer to the [Sentry docs](https://docs.sentry.io/) for information on ho ## Setting up Sentry for AWS environment -##### Start an AWS vault session +##### Select proper env stage -To start an AWS vault session, run the following command in the root directory of your project: +To select proper env stage run: ```shell -make aws-vault ENV_STAGE= +pnpm saas aws set-env qa ``` ##### Set variables in AWS @@ -37,7 +37,7 @@ make aws-vault ENV_STAGE= To set the required variables in AWS, start the SSM editor tool by running the following command in the root directory of your project: ```shell -make -C packages/backend secrets +pnpm saas backend secrets ``` Variables are set in JSON format, so add the following key: diff --git a/packages/internal/docs/docs/working-with-sb/dev-tools/telemetry.mdx b/packages/internal/docs/docs/working-with-sb/dev-tools/telemetry.mdx new file mode 100644 index 000000000..f51a9bbec --- /dev/null +++ b/packages/internal/docs/docs/working-with-sb/dev-tools/telemetry.mdx @@ -0,0 +1,66 @@ +--- +title: Telemetry +--- +import ProjectName from '../../shared/components/ProjectName.component'; + +# SaaS Boilerplate CLI Telemetry +The CLI is designed to offer an efficient and user-friendly experience. To help us improve the service +for everyone, the CLI collects anonymous feature usage information, errors encountered, and other relevant performance +metrics. + +## Why Do We Collect Telemetry Data? +The primary goal of collecting telemetry data is to gain insights into how the CLI is used, understand any issues users +might be facing, and improve the overall experience. This allows us to prioritize new features, identify bugs, and make +the CLI more reliable and efficient for everyone. + +## What Data Is Collected? +The CLI collects the following data: + +- Errors +- Flags and arguments passed to the CLI commands +- Anonymous system information, such as the operating system, version, and type +- Feature usage statistics + +:::caution + +Please note that we do not collect personally identifiable information, sensitive data, or any metadata about your +source code. + +::: + +## How Is the Data Collected and Processed? +Telemetry data is collected automatically when you use the CLI. This data is then processed and aggregated for +analytical purposes. We take care to anonymize all data so that it cannot be traced back to individual users. + +## How Can I Inspect Collected Data? +You can inspect the data being collected by setting the `SB_TELEMETRY_DEBUG` environment variable to `1`. + +Example: + +```shell +SB_TELEMETRY_DEBUG=1 pnpm saas [some-command] +``` + +When this environment variable is set, the CLI will display the telemetry data collected for that session. + +## Can I Opt-Out? +Yes, you can opt-out of telemetry data collection. To do so, set the `SB_TELEMETRY_DISABLED` environment variable to `1`. + +Example: + +```shell +SB_TELEMETRY_DISABLED=1 pnpm saas [some-command] +``` + +By setting this environment variable, the CLI will no longer collect any telemetry data. + +## Data Sharing and Transparency +The telemetry data is anonymous and not traceable back to individuals. It is used solely for the purpose of improving +the CLI experience. We are committed to transparency and may, in the future, share aggregate data insights with the +community through public dashboards or similar means. + +## Questions or Concerns? +We take your privacy seriously. If you have any questions or concerns about telemetry data collection, please feel free +to contact our support team. + +Thank you for helping us make a better tool for everyone! \ No newline at end of file diff --git a/packages/internal/docs/docs/working-with-sb/dev-tools/version-matrix.mdx b/packages/internal/docs/docs/working-with-sb/dev-tools/version-matrix.mdx index d5b29d4dd..ba860f155 100644 --- a/packages/internal/docs/docs/working-with-sb/dev-tools/version-matrix.mdx +++ b/packages/internal/docs/docs/working-with-sb/dev-tools/version-matrix.mdx @@ -39,7 +39,7 @@ pnpm nx run status-dashboard:deploy :::caution -This command should be called only after `make set-env ENV_STAGE=` command. +This command should be called only after `saas aws set-env [STAGE_NAME]` command. ::: diff --git a/packages/internal/docs/docs/working-with-sb/guides/backend/backend-model.mdx b/packages/internal/docs/docs/working-with-sb/guides/backend/backend-model.mdx index b1d3f3c14..b87dbe402 100644 --- a/packages/internal/docs/docs/working-with-sb/guides/backend/backend-model.mdx +++ b/packages/internal/docs/docs/working-with-sb/guides/backend/backend-model.mdx @@ -2,6 +2,7 @@ title: How to create a new Django app and model in back-end? description: Create an example Django app and declare a model inside it --- + import ProjectName from '../../../shared/components/ProjectName.component'; In this guide, we will show you how to create a new Django app in the backend package using . @@ -18,7 +19,8 @@ cd packages/backend Next, create a new Django app using the following command: ```shell title="packages/backend" showLineNumbers -make create-app app_name=store +pnpm saas backend shell +cd apps && django-admin startapp store ``` :::info @@ -44,7 +46,6 @@ LOCAL_APPS = [ Once you have created your app, you can start building out its functionality by adding models, views, URLs, and other components as needed. - ## Create new model Navigate to your new app directory and create a simple Django model inside `models.py` named `Product` with two fields - id and name: @@ -61,9 +62,10 @@ class Product(models.Model): :::info - comes with the ability to use Hashid fields in your Django models. -Hashids are a way of generating short, unique, and non-sequential ids from a given input. -They are typically used to obfuscate database ids and make them harder to guess or predict. + comes with the ability to use Hashid fields in your Django +models. Hashids are a way of generating short, unique, and non-sequential ids +from a given input. They are typically used to obfuscate database ids and make +them harder to guess or predict. ::: @@ -72,13 +74,13 @@ They are typically used to obfuscate database ids and make them harder to guess Next, you need to create a migration for your new model. Run the following command: ```shell title="packages/backend" showLineNumbers -make makemigrations +pnpm saas backend makemigrations ``` This will create a new migration file for your app. Now, migrate your database by running the following command: ```shell title="packages/backend" showLineNumbers -make migrate +pnpm saas backend migrate ``` This will create the necessary database tables for your app. diff --git a/packages/internal/docs/package.json b/packages/internal/docs/package.json index 9ce74c429..94cc25ed9 100644 --- a/packages/internal/docs/package.json +++ b/packages/internal/docs/package.json @@ -9,7 +9,8 @@ "start": "NODE_OPTIONS=\"--max-old-space-size=2048\" TYPEDOC_WATCH=true nx exec -- docusaurus start --port 3006", "serve": "nx exec -- docusaurus serve --port 3006", "clear": "nx exec -- docusaurus clear", - "deploy": "nx exec -- cdk deploy *DocsStack" + "deploy": "nx exec -- cdk deploy *DocsStack", + "diff": "nx exec -- cdk diff *DocsStack" }, "dependencies": { "@docusaurus/core": "^2.4.0", diff --git a/packages/internal/docs/project.json b/packages/internal/docs/project.json index 658b84991..23d1e28fc 100644 --- a/packages/internal/docs/project.json +++ b/packages/internal/docs/project.json @@ -21,16 +21,6 @@ "parallel": false } }, - "build-with-env": { - "executor": "nx:run-commands", - "dependsOn": [], - "options": { - "cwd": "packages/internal/docs", - "color": true, - "commands": ["pnpm nx run tools:chamber-exec docs nx run docs:build"], - "parallel": false - } - }, "start": { "executor": "nx:run-commands", "options": { diff --git a/packages/internal/docs/sidebars.js b/packages/internal/docs/sidebars.js index e202c60c9..64058c869 100644 --- a/packages/internal/docs/sidebars.js +++ b/packages/internal/docs/sidebars.js @@ -523,6 +523,7 @@ module.exports = { 'working-with-sb/dev-tools/sentry', 'working-with-sb/dev-tools/ssh-into-container', 'working-with-sb/dev-tools/plop', + 'working-with-sb/dev-tools/telemetry', ], }, ], diff --git a/packages/internal/ssm-editor/scripts/run.sh b/packages/internal/ssm-editor/scripts/run.sh index 1fe10c5c6..02eec4cf9 100644 --- a/packages/internal/ssm-editor/scripts/run.sh +++ b/packages/internal/ssm-editor/scripts/run.sh @@ -2,7 +2,7 @@ set -e -FULL_SERVICE_NAME="env-${PROJECT_NAME}-${ENV_STAGE}-$1"; +FULL_SERVICE_NAME="env-${PROJECT_NAME}-${ENV_STAGE}-$2"; CHAMBER_KMS_KEY_ALIAS="${PROJECT_NAME}-${ENV_STAGE}-main" CHAMBER_KMS_KEY_ALIAS="${CHAMBER_KMS_KEY_ALIAS}" /bin/chamber export "${FULL_SERVICE_NAME}" \ diff --git a/packages/internal/status-dashboard/Makefile b/packages/internal/status-dashboard/Makefile deleted file mode 100644 index 309958d7e..000000000 --- a/packages/internal/status-dashboard/Makefile +++ /dev/null @@ -1,6 +0,0 @@ -SELF_DIR := $(dir $(lastword $(MAKEFILE_LIST))) -include $(SELF_DIR)/../../../Makefile.base.mk - -build: - nx build - diff --git a/packages/internal/tools/README.md b/packages/internal/tools/README.md deleted file mode 100644 index 1aecf43e9..000000000 --- a/packages/internal/tools/README.md +++ /dev/null @@ -1,11 +0,0 @@ -# tools - -This library was generated with [Nx](https://nx.dev). - -## Building - -Run `nx build tools` to build the library. - -## Running unit tests - -Run `nx test tools` to execute the unit tests via [Jest](https://jestjs.io). diff --git a/packages/internal/tools/project.json b/packages/internal/tools/project.json index 651177f0c..510c0c0ad 100644 --- a/packages/internal/tools/project.json +++ b/packages/internal/tools/project.json @@ -44,22 +44,6 @@ "passWithNoTests": true } }, - "bootstrap-infra": { - "executor": "nx:run-commands", - "options": { - "color": true, - "cwd": "packages/internal/tools", - "command": "/bin/bash ./scripts/cdk-bootstrap.sh" - } - }, - "create-cicd-creds": { - "executor": "nx:run-commands", - "options": { - "color": true, - "cwd": "packages/internal/tools", - "command": "ts-node --project tsconfig.lib.json ./src/create-cicd-creds" - } - }, "upload-service-version": { "executor": "nx:run-commands", "options": { @@ -75,13 +59,6 @@ "cwd": "packages/internal/tools", "command": "ts-node --project tsconfig.lib.json ./src/upload-version" } - }, - "chamber-exec": { - "executor": "nx:run-commands", - "options": { - "color": true, - "command": "/bin/bash ./packages/internal/tools/scripts/chamber-exec.sh" - } } }, "tags": [] diff --git a/packages/internal/tools/scripts/cdk-bootstrap.sh b/packages/internal/tools/scripts/cdk-bootstrap.sh deleted file mode 100755 index 97b28b9de..000000000 --- a/packages/internal/tools/scripts/cdk-bootstrap.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/sh - -set -e - -AWS_ACCOUNT_ID=$(aws sts get-caller-identity --output text --query 'Account') - -cdk bootstrap "aws://$AWS_ACCOUNT_ID/$AWS_DEFAULT_REGION" -cdk bootstrap "aws://$AWS_ACCOUNT_ID/us-east-1" diff --git a/packages/internal/tools/scripts/chamber-exec.sh b/packages/internal/tools/scripts/chamber-exec.sh deleted file mode 100644 index eda2f935c..000000000 --- a/packages/internal/tools/scripts/chamber-exec.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/usr/bin/env bash - -chamber_service_name=env-${PROJECT_NAME}-${ENV_STAGE}-$1 - -if [[ -z "${ENV_STAGE}" ]] || [[ "${ENV_STAGE}" == "local" ]]; then - echo "Skipping secrets fetching with chamber for service ${chamber_service_name}..." - exec "${@:2}" -else - echo "Fetching secrets using chamber for service ${chamber_service_name}..." - chamber exec "${chamber_service_name}" -- "${@:2}" -fi diff --git a/packages/internal/tools/src/create-cicd-creds.ts b/packages/internal/tools/src/create-cicd-creds.ts deleted file mode 100644 index c3cf27628..000000000 --- a/packages/internal/tools/src/create-cicd-creds.ts +++ /dev/null @@ -1,56 +0,0 @@ -import * as URL from 'url'; -import * as AWS from 'aws-sdk'; -import { indexBy, prop } from 'ramda'; - -const PROJECT_NAME = process.env.PROJECT_NAME; - -const cloudFormation = new AWS.CloudFormation(); -const iam = new AWS.IAM(); - -function prefixGlobalResourceName(name) { - return `${PROJECT_NAME}-${name}`; -} - -export default async function getOutputsFromGlobalStack(stackName) { - const describeStackResult = await cloudFormation - .describeStacks({ - StackName: prefixGlobalResourceName(stackName), - }) - .promise(); - - const stack = describeStackResult?.Stacks?.[0]; - return indexBy(prop('ExportName'), stack?.Outputs ?? []); -} - -(async function () { - const globalStackOutputs = await getOutputsFromGlobalStack('GlobalStack'); - const { OutputValue: repoUserName } = - globalStackOutputs[prefixGlobalResourceName('codeRepoUserName')] ?? {}; - const { OutputValue: repoUrl } = - globalStackOutputs[prefixGlobalResourceName('codeRepoCloneUrlHttp')] ?? {}; - - if (!repoUserName || !repoUrl) { - console.error('Failed to fetch repository username and URL'); - return; - } - - const response = await iam - .createServiceSpecificCredential({ - UserName: repoUserName, - ServiceName: 'codecommit.amazonaws.com', - }) - .promise(); - - if (!response.ServiceSpecificCredential) { - console.error('Failed to create service specific credentials'); - return; - } - - const { ServicePassword: password, ServiceUserName: userName } = - response.ServiceSpecificCredential; - - const urlParts = URL.parse(repoUrl); - urlParts.auth = `${userName}:${password}`; - - console.log(URL.format(urlParts)); -})(); diff --git a/packages/internal/tools/src/upload-service-version.ts b/packages/internal/tools/src/upload-service-version.ts index 0d7a33f79..9d803b2b0 100644 --- a/packages/internal/tools/src/upload-service-version.ts +++ b/packages/internal/tools/src/upload-service-version.ts @@ -11,7 +11,7 @@ if (SB_TOOLS_ENABLED !== 'true') { process.exit(0); } -if (ENV_STAGE === 'local') { +if (!ENV_STAGE || ENV_STAGE === 'local') { console.log('Skipping upload-service-version for local env'); process.exit(0); } diff --git a/packages/webapp-libs/webapp-api-client/package.json b/packages/webapp-libs/webapp-api-client/package.json index eb165b74f..9aaef51b6 100644 --- a/packages/webapp-libs/webapp-api-client/package.json +++ b/packages/webapp-libs/webapp-api-client/package.json @@ -70,6 +70,7 @@ "react": "18.2.0", "react-hook-form": "^7.34.0", "storybook": "^7.0.23", - "ts-jest": "28.0.5" + "ts-jest": "28.0.5", + "fs-extra": "^11.1.1" } } diff --git a/packages/webapp-libs/webapp-api-client/project.json b/packages/webapp-libs/webapp-api-client/project.json index 41f0fc433..85f195444 100644 --- a/packages/webapp-libs/webapp-api-client/project.json +++ b/packages/webapp-libs/webapp-api-client/project.json @@ -19,10 +19,7 @@ "commands": ["pnpm run graphql-codegen -w -c ./graphql/codegen.ts"] }, "download-schema": { - "commands": [ - "/bin/sh ./scripts/download-graphql-schema.sh", - "nx run webapp-api-client:graphql:generate-types" - ] + "commands": ["node ./scripts/download-graphql-schema.js", "nx run webapp-api-client:graphql:generate-types"] } } } diff --git a/packages/webapp-libs/webapp-api-client/scripts/download-graphql-schema.js b/packages/webapp-libs/webapp-api-client/scripts/download-graphql-schema.js new file mode 100644 index 000000000..cac8f4729 --- /dev/null +++ b/packages/webapp-libs/webapp-api-client/scripts/download-graphql-schema.js @@ -0,0 +1,33 @@ +const { spawn } = require('child_process'); +const fs = require('fs-extra'); +const dotenv = require('dotenv'); + +function runCommand(command, args) { + return new Promise((resolve, reject) => { + const cmd = spawn(command, args, { stdio: 'inherit' }); + + cmd.on('close', (code) => { + if (code !== 0) { + reject(new Error(`"${command} ${args.join(' ')}" failed with code ${code}`)); + } else { + resolve(); + } + }); + }); +} + +(async () => { + try { + dotenv.config({ path: '../../webapp/.env' }); + + const apiUrl = 'http://localhost:5001/api/graphql/'; + + await fs.remove('./src/graphql/__generated/types.ts'); + await fs.remove('./src/graphql/__generated/hooks.ts'); + + await runCommand('pnpm', ['rover', 'graph', 'introspect', apiUrl, '--output', 'graphql/schema/api.graphql']); + } catch (error) { + console.error(`Error: ${error.message}`); + process.exit(1); + } +})(); diff --git a/packages/webapp-libs/webapp-api-client/scripts/download-graphql-schema.sh b/packages/webapp-libs/webapp-api-client/scripts/download-graphql-schema.sh deleted file mode 100755 index 227260e83..000000000 --- a/packages/webapp-libs/webapp-api-client/scripts/download-graphql-schema.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash - -export $(egrep -v '^#' .env | xargs) - -API_URL="http://localhost:5001/api/graphql/" - -rm -f ./src/graphql/__generated/types.ts -rm -f ./src/graphql/__generated/hooks.ts - -pnpm rover graph introspect "$API_URL" --output graphql/schema/api.graphql diff --git a/packages/webapp-libs/webapp-contentful/package.json b/packages/webapp-libs/webapp-contentful/package.json index 63e2f2bb3..3b0f37c5b 100644 --- a/packages/webapp-libs/webapp-contentful/package.json +++ b/packages/webapp-libs/webapp-contentful/package.json @@ -35,7 +35,8 @@ "react-markdown": "^8.0.3", "react-router": "^6.7.0", "react-router-dom": "^6.7.0", - "styled-components": "5.3.6" + "styled-components": "5.3.6", + "dotenv": "^16.3.1" }, "devDependencies": { "@graphql-codegen/add": "^3.2.1", @@ -87,6 +88,7 @@ "styled-components": "5.3.6", "ts-jest": "28.0.5", "@nx/react": "^16.3.2", - "@nx/jest": "^16.3.2" + "@nx/jest": "^16.3.2", + "fs-extra": "^11.1.1" } } diff --git a/packages/webapp-libs/webapp-contentful/project.json b/packages/webapp-libs/webapp-contentful/project.json index ea3a26fe0..8b01bbe3d 100644 --- a/packages/webapp-libs/webapp-contentful/project.json +++ b/packages/webapp-libs/webapp-contentful/project.json @@ -12,7 +12,7 @@ }, "configurations": { "download-schema": { - "commands": ["/bin/sh ./scripts/download-graphql-schema.sh"] + "commands": ["node ./scripts/download-graphql-schema.js"] } } } diff --git a/packages/webapp-libs/webapp-contentful/scripts/download-graphql-schema.js b/packages/webapp-libs/webapp-contentful/scripts/download-graphql-schema.js new file mode 100644 index 000000000..bb190746f --- /dev/null +++ b/packages/webapp-libs/webapp-contentful/scripts/download-graphql-schema.js @@ -0,0 +1,56 @@ +const { spawn } = require('child_process'); +const fs = require('fs-extra'); +const dotenv = require('dotenv'); +function runCommand(command, args) { + return new Promise((resolve, reject) => { + const cmd = spawn(command, args, { stdio: 'inherit' }); + + cmd.on('close', (code) => { + if (code !== 0) { + reject(new Error(`"${command} ${args.join(' ')}" failed with code ${code}`)); + } else { + resolve(); + } + }); + }); +} + +(async () => { + try { + dotenv.config({ path: '../../webapp/.env' }); + + const { VITE_CONTENTFUL_SPACE, VITE_CONTENTFUL_ENV, VITE_CONTENTFUL_TOKEN } = process.env; + + if (!VITE_CONTENTFUL_SPACE || VITE_CONTENTFUL_SPACE === '') { + console.log('VITE_CONTENTFUL_SPACE has not been set. Skipping...'); + return; + } + + if (!VITE_CONTENTFUL_ENV || VITE_CONTENTFUL_ENV === '') { + console.log('VITE_CONTENTFUL_ENV has not been set. Skipping...'); + return; + } + + if (!VITE_CONTENTFUL_TOKEN || VITE_CONTENTFUL_TOKEN === '') { + console.log('VITE_CONTENTFUL_TOKEN has not been set. Skipping...'); + return; + } + + const CONTENTFUL_URL = `https://graphql.contentful.com/content/v1/spaces/${VITE_CONTENTFUL_SPACE}/environments/${VITE_CONTENTFUL_ENV}?access_token=${VITE_CONTENTFUL_TOKEN}`; + + await fs.remove('./src/contentful/__generated/types.ts'); + await fs.remove('./src/contentful/__generated/hooks.ts'); + + await runCommand('pnpm', [ + 'rover', + 'graph', + 'introspect', + CONTENTFUL_URL, + '--output', + 'graphql/schema/contentful.graphql', + ]); + } catch (error) { + console.error(`Error: ${error.message}`); + process.exit(1); + } +})(); diff --git a/packages/webapp-libs/webapp-contentful/scripts/download-graphql-schema.sh b/packages/webapp-libs/webapp-contentful/scripts/download-graphql-schema.sh deleted file mode 100755 index f0f288423..000000000 --- a/packages/webapp-libs/webapp-contentful/scripts/download-graphql-schema.sh +++ /dev/null @@ -1,25 +0,0 @@ -#!/bin/bash - -export $(egrep -v '^#' .env | xargs) - -if [ -z "$VITE_CONTENTFUL_SPACE" ] || [ "$VITE_CONTENTFUL_SPACE" == "" ]; then - echo "VITE_CONTENTFUL_SPACE has not been set. Skipping..." - exit 0 -fi - -if [ -z "$VITE_CONTENTFUL_ENV" ] || [ "$VITE_CONTENTFUL_ENV" == "" ]; then - echo "VITE_CONTENTFUL_ENV has not been set. Skipping..." - exit 0 -fi - -if [ -z "$VITE_CONTENTFUL_TOKEN" ] || [ "$VITE_CONTENTFUL_TOKEN" == "" ]; then - echo "VITE_CONTENTFUL_TOKEN has not been set. Skipping..." - exit 0 -fi - -CONTENTFUL_URL="https://graphql.contentful.com/content/v1/spaces/$VITE_CONTENTFUL_SPACE/environments/$VITE_CONTENTFUL_ENV?access_token=$VITE_CONTENTFUL_TOKEN" - -rm -f ./src/contentful/__generated/types.ts -rm -f ./src/contentful/__generated/hooks.ts - -pnpm rover graph introspect "$CONTENTFUL_URL" --output graphql/schema/contentful.graphql diff --git a/packages/webapp-libs/webapp-core/README.md b/packages/webapp-libs/webapp-core/README.md deleted file mode 100644 index f95173b9e..000000000 --- a/packages/webapp-libs/webapp-core/README.md +++ /dev/null @@ -1,11 +0,0 @@ -# webapp-libs-webapp-core - -This library was generated with [Nx](https://nx.dev). - -## Building - -Run `nx build webapp-libs-webapp-core` to build the library. - -## Running unit tests - -Run `nx test webapp-libs-webapp-core` to execute the unit tests via [Jest](https://jestjs.io). diff --git a/packages/webapp-libs/webapp-emails/package.json b/packages/webapp-libs/webapp-emails/package.json index 51a4d95b1..0ac0a3e6d 100644 --- a/packages/webapp-libs/webapp-emails/package.json +++ b/packages/webapp-libs/webapp-emails/package.json @@ -3,11 +3,9 @@ "version": "2.0.3", "type": "commonjs", "scripts": { - "build": "pnpm nx run build-for-env", "test": "jest", "test:watch": "jest --watch", "lint": "eslint .", - "vite": "vite", "type-check": "tsc --noEmit --project tsconfig.lib.json" }, "dependencies": { diff --git a/packages/webapp-libs/webapp-emails/project.json b/packages/webapp-libs/webapp-emails/project.json index 33d5e2d5e..2c34ec086 100644 --- a/packages/webapp-libs/webapp-emails/project.json +++ b/packages/webapp-libs/webapp-emails/project.json @@ -4,22 +4,13 @@ "sourceRoot": "packages/webapp-libs/webapp-emails/src", "projectType": "library", "targets": { - "build-vite": { + "build": { "executor": "nx:run-commands", "defaultConfiguration": "default", "options": { "cwd": "packages/webapp-libs/webapp-emails", "color": true, - "command": "pnpm run vite -c vite.config.ts build" - } - }, - "build-for-env": { - "executor": "nx:run-commands", - "defaultConfiguration": "default", - "options": { - "cwd": "packages/webapp-libs/webapp-emails", - "color": true, - "command": "pnpm nx run tools:chamber-exec webapp nx run webapp-emails:build-vite" + "command": "pnpm vite -c vite.config.ts build" } } }, diff --git a/packages/webapp/Makefile b/packages/webapp/Makefile deleted file mode 100644 index f80f28c41..000000000 --- a/packages/webapp/Makefile +++ /dev/null @@ -1,16 +0,0 @@ -SELF_DIR := $(dir $(lastword $(MAKEFILE_LIST))) -include $(SELF_DIR)/../../Makefile.base.mk - -.PHONY: build test - -test: - pnpm nx test - -build: - pnpm nx build - -deploy: - pnpm nx deploy - -secrets: - $(MAKE) -C $(PROJECT_ROOT_DIR) secrets-editor SERVICE_NAME=webapp diff --git a/packages/webapp/package.json b/packages/webapp/package.json index 1320691b8..0f5ff9455 100644 --- a/packages/webapp/package.json +++ b/packages/webapp/package.json @@ -3,7 +3,6 @@ "version": "2.0.3", "private": true, "scripts": { - "build": "pnpm nx run build-with-env", "extract-intl": "formatjs extract 'src/**/!(*.d).(js|jsx|ts|tsx)' '../webapp-libs/*/src/**/!(*.d).(js|jsx|ts|tsx)' --id-interpolation-pattern '[sha512:contenthash:base64:6]' --out-file ../webapp-libs/webapp-core/src/translations/en.json --ignore src/tests/mocks/** --ignore ../webapp-libs/*src/tests/mocks/**", "lint": "pnpm run lint:js && pnpm run lint:css", "lint:css": "stylelint './src/**/*.ts'", diff --git a/packages/webapp/project.json b/packages/webapp/project.json index 15dddf919..33a6d8bbf 100644 --- a/packages/webapp/project.json +++ b/packages/webapp/project.json @@ -42,7 +42,7 @@ }, "dependsOn": ["setup", "graphql:generate-types"] }, - "build-vite": { + "build": { "executor": "nx:run-commands", "options": { "cwd": "packages/webapp", @@ -51,15 +51,6 @@ }, "dependsOn": ["graphql:generate-types"] }, - "build-with-env": { - "executor": "nx:run-commands", - "options": { - "cwd": "packages/webapp", - "color": true, - "command": "pnpm nx run tools:chamber-exec webapp nx run webapp:build-vite" - }, - "dependsOn": ["graphql:generate-types"] - }, "lint": { "executor": "@nx/linter:eslint", "outputs": ["{options.outputFile}"], @@ -78,6 +69,15 @@ ], "parallel": false } + }, + "diff": { + "executor": "nx:run-commands", + "options": { + "cwd": "packages/webapp", + "color": true, + "commands": ["pnpm run cdk diff *WebAppStack"], + "parallel": false + } } }, "tags": [] diff --git a/packages/workers/Dockerfile b/packages/workers/Dockerfile index efcff9b22..c0cf10c01 100644 --- a/packages/workers/Dockerfile +++ b/packages/workers/Dockerfile @@ -10,6 +10,8 @@ FROM $WORKERS_BASE_IMAGE ENV APP_PATH=/app ENV SRC_CORE_PATH=packages/internal/core ENV DEST_CORE_PATH=$APP_PATH/$SRC_CORE_PATH +ENV SRC_CLI_PATH=packages/internal/cli +ENV DEST_CLI_PATH=$APP_PATH/$SRC_CLI_PATH ENV SRC_WORKERS_PATH=packages/workers ENV DEST_WORKERS_PATH=$APP_PATH/$SRC_WORKERS_PATH @@ -34,7 +36,9 @@ WORKDIR $APP_PATH COPY package.json pnpm*.yaml $APP_PATH/ COPY $SRC_CORE_PATH/package.json $DEST_CORE_PATH/ COPY $SRC_WORKERS_PATH/package.json $DEST_WORKERS_PATH/ -RUN pnpm install --include-workspace-root --frozen-lockfile --filter=workers... +COPY tsconfig* $APP_PATH/ +COPY $SRC_CLI_PATH $DEST_CLI_PATH/ +RUN pnpm install --include-workspace-root --frozen-lockfile --filter=workers... --filter=cli... COPY nx.json tsconfig* jest* babel* .eslintrc* .prettier* .eslintrc* $APP_PATH/ COPY $SRC_CORE_PATH $DEST_CORE_PATH/ diff --git a/packages/workers/Makefile b/packages/workers/Makefile deleted file mode 100644 index 3193b03b7..000000000 --- a/packages/workers/Makefile +++ /dev/null @@ -1,34 +0,0 @@ -SELF_DIR := $(dir $(lastword $(MAKEFILE_LIST))) -include $(SELF_DIR)/../../Makefile.base.mk - -lint: - pnpm nx lint - -test: - pnpm nx test - -build: - pnpm nx build - -deploy: - pnpm nx deploy - -flake8: - flake8 - -black: - docker-compose run -T workers run black --config=pyproject.toml . - -invoke-local: d ?= {} -invoke-local: - docker-compose run -T workers node_modules/.bin/sls invoke local -f=$(f) -d=$(d) - -shell: - docker-compose run --rm workers bash - - -secrets: export CHAMBER_SERVICE=workers -secrets: - docker-compose build ssmeditor - docker-compose run --rm ssmeditor - sls "invoke" "local" "-f" "SynchronizeContentfulContent" "-d" "{\"source\":\"backend.contentfulSync\",\"detail-type\":\"complete\",\"detail\":{\"id\":\"56f478a32bb54ff6adf91b2f19ca6c1a\",\"type\":\"complete\"}}" \ No newline at end of file diff --git a/packages/workers/README.md b/packages/workers/README.md index 46c478d85..ed6be184c 100644 --- a/packages/workers/README.md +++ b/packages/workers/README.md @@ -1,19 +1,13 @@ # Workers -## Make rules +### `pnpm saas workers test` -### `make install` -Runs installation of all required project dependencies. - -### `make install-deploy` -This rule will be used by CodeBuild to install dependencies required to deploy previously built artifact. -This rule should most likely stay unchanged unless you know what you're doing! - -### `make test` Runs tests and linters. -### `make build` +### `pnpm saas workers build` + Runs tests and builds artifacts required by Serverless Framework. -### `make deploy` +### `pnpm saas workers deploy` + Deploys workers to AWS using Serverless Framework. diff --git a/packages/workers/package.json b/packages/workers/package.json index 7a8e71666..f0978dcb8 100755 --- a/packages/workers/package.json +++ b/packages/workers/package.json @@ -7,7 +7,8 @@ "stop-task-scheduling-executions": "/bin/bash ./scripts/stop-task-scheduling-executions.sh", "lint:js": "eslint .", "sls": "sls", - "serverless": "serverless" + "serverless": "serverless", + "diff": "echo 'no-diff-available'" }, "author": "", "license": "ISC", diff --git a/packages/workers/project.json b/packages/workers/project.json index c83e4fa7b..2817875b5 100644 --- a/packages/workers/project.json +++ b/packages/workers/project.json @@ -14,10 +14,7 @@ "executor": "nx:run-commands", "options": { "color": true, - "commands": [ - "pnpm nx run core:docker-login", - "docker-compose build workers" - ], + "commands": ["docker-compose build workers"], "parallel": false }, "dependsOn": ["setup"] @@ -36,7 +33,7 @@ "options": { "cwd": "packages/workers", "color": true, - "command": "node ./scripts/local-trigger-server.js" + "command": "node ./scripts/runtime/local-trigger-server.js" } }, "deploy": { @@ -44,7 +41,7 @@ "options": { "color": true, "commands": [ - "docker-compose run --rm --entrypoint /bin/bash workers /app/packages/workers/scripts/deploy.sh", + "docker-compose run --rm --entrypoint /bin/bash workers /app/packages/workers/scripts/runtime/run_deploy.sh", "pnpm nx run tools:upload-service-version workers" ], "parallel": false @@ -55,7 +52,7 @@ "executor": "nx:run-commands", "options": { "color": true, - "command": "docker-compose run --rm --entrypoint /bin/bash workers /app/packages/workers/scripts/run_lint.sh" + "command": "docker-compose run --rm --no-deps --entrypoint /bin/bash workers /app/packages/workers/scripts/runtime/run_lint.sh" }, "dependsOn": ["compose-build-image"] }, @@ -63,7 +60,7 @@ "executor": "nx:run-commands", "options": { "color": true, - "command": "docker-compose run --rm --entrypoint /bin/bash workers /app/packages/workers/scripts/run_tests.sh" + "command": "docker-compose run --rm --entrypoint /bin/bash workers /app/packages/workers/scripts/runtime/run_tests.sh" }, "dependsOn": ["compose-build-image"] }, @@ -71,7 +68,7 @@ "executor": "nx:run-commands", "options": { "color": true, - "command": "docker-compose run --rm --entrypoint /bin/bash workers /app/packages/workers/scripts/run_build.sh" + "command": "docker-compose run --rm --entrypoint /bin/bash workers /app/packages/workers/scripts/runtime/run_build.sh" }, "dependsOn": ["compose-build-image"] } diff --git a/packages/workers/scripts/local-trigger-server.js b/packages/workers/scripts/runtime/local-trigger-server.js similarity index 100% rename from packages/workers/scripts/local-trigger-server.js rename to packages/workers/scripts/runtime/local-trigger-server.js diff --git a/packages/workers/scripts/run_build.sh b/packages/workers/scripts/runtime/run_build.sh similarity index 100% rename from packages/workers/scripts/run_build.sh rename to packages/workers/scripts/runtime/run_build.sh diff --git a/packages/workers/scripts/deploy.sh b/packages/workers/scripts/runtime/run_deploy.sh similarity index 100% rename from packages/workers/scripts/deploy.sh rename to packages/workers/scripts/runtime/run_deploy.sh diff --git a/packages/workers/scripts/run_lint.sh b/packages/workers/scripts/runtime/run_lint.sh similarity index 100% rename from packages/workers/scripts/run_lint.sh rename to packages/workers/scripts/runtime/run_lint.sh diff --git a/packages/workers/scripts/run_tests.sh b/packages/workers/scripts/runtime/run_tests.sh similarity index 100% rename from packages/workers/scripts/run_tests.sh rename to packages/workers/scripts/runtime/run_tests.sh diff --git a/packages/workers/scripts/wait-for-it.sh b/packages/workers/scripts/wait-for-it.sh deleted file mode 100755 index 5b3a6f9a2..000000000 --- a/packages/workers/scripts/wait-for-it.sh +++ /dev/null @@ -1,177 +0,0 @@ -#!/usr/bin/env bash -# Use this script to test if a given TCP host/port are available - -cmdname=$(basename $0) - -echoerr() { if [[ $QUIET -ne 1 ]]; then echo "$@" 1>&2; fi } - -usage() -{ - cat << USAGE >&2 -Usage: - $cmdname host:port [-s] [-t timeout] [-- command args] - -h HOST | --host=HOST Host or IP under test - -p PORT | --port=PORT TCP port under test - Alternatively, you specify the host and port as host:port - -s | --strict Only execute subcommand if the test succeeds - -q | --quiet Don't output any status messages - -t TIMEOUT | --timeout=TIMEOUT - Timeout in seconds, zero for no timeout - -- COMMAND ARGS Execute command with args after the test finishes -USAGE - exit 1 -} - -wait_for() -{ - if [[ $TIMEOUT -gt 0 ]]; then - echoerr "$cmdname: waiting $TIMEOUT seconds for $HOST:$PORT" - else - echoerr "$cmdname: waiting for $HOST:$PORT without a timeout" - fi - start_ts=$(date +%s) - while : - do - if [[ $ISBUSY -eq 1 ]]; then - nc -z $HOST $PORT - result=$? - else - (echo > /dev/tcp/$HOST/$PORT) >/dev/null 2>&1 - result=$? - fi - if [[ $result -eq 0 ]]; then - end_ts=$(date +%s) - echoerr "$cmdname: $HOST:$PORT is available after $((end_ts - start_ts)) seconds" - break - fi - sleep 1 - done - return $result -} - -wait_for_wrapper() -{ - # In order to support SIGINT during timeout: http://unix.stackexchange.com/a/57692 - if [[ $QUIET -eq 1 ]]; then - timeout $BUSYTIMEFLAG $TIMEOUT $0 --quiet --child --host=$HOST --port=$PORT --timeout=$TIMEOUT & - else - timeout $BUSYTIMEFLAG $TIMEOUT $0 --child --host=$HOST --port=$PORT --timeout=$TIMEOUT & - fi - PID=$! - trap "kill -INT -$PID" INT - wait $PID - RESULT=$? - if [[ $RESULT -ne 0 ]]; then - echoerr "$cmdname: timeout occurred after waiting $TIMEOUT seconds for $HOST:$PORT" - fi - return $RESULT -} - -# process arguments -while [[ $# -gt 0 ]] -do - case "$1" in - *:* ) - hostport=(${1//:/ }) - HOST=${hostport[0]} - PORT=${hostport[1]} - shift 1 - ;; - --child) - CHILD=1 - shift 1 - ;; - -q | --quiet) - QUIET=1 - shift 1 - ;; - -s | --strict) - STRICT=1 - shift 1 - ;; - -h) - HOST="$2" - if [[ $HOST == "" ]]; then break; fi - shift 2 - ;; - --host=*) - HOST="${1#*=}" - shift 1 - ;; - -p) - PORT="$2" - if [[ $PORT == "" ]]; then break; fi - shift 2 - ;; - --port=*) - PORT="${1#*=}" - shift 1 - ;; - -t) - TIMEOUT="$2" - if [[ $TIMEOUT == "" ]]; then break; fi - shift 2 - ;; - --timeout=*) - TIMEOUT="${1#*=}" - shift 1 - ;; - --) - shift - CLI=("$@") - break - ;; - --help) - usage - ;; - *) - echoerr "Unknown argument: $1" - usage - ;; - esac -done - -if [[ "$HOST" == "" || "$PORT" == "" ]]; then - echoerr "Error: you need to provide a host and port to test." - usage -fi - -TIMEOUT=${TIMEOUT:-15} -STRICT=${STRICT:-0} -CHILD=${CHILD:-0} -QUIET=${QUIET:-0} - -# check to see if timeout is from busybox? -# check to see if timeout is from busybox? -TIMEOUT_PATH=$(realpath $(which timeout)) -if [[ $TIMEOUT_PATH =~ "busybox" ]]; then - ISBUSY=1 - BUSYTIMEFLAG="-t" -else - ISBUSY=0 - BUSYTIMEFLAG="" -fi - -if [[ $CHILD -gt 0 ]]; then - wait_for - RESULT=$? - exit $RESULT -else - if [[ $TIMEOUT -gt 0 ]]; then - wait_for_wrapper - RESULT=$? - else - wait_for - RESULT=$? - fi -fi - -if [[ $CLI != "" ]]; then - if [[ $RESULT -ne 0 && $STRICT -eq 1 ]]; then - echoerr "$cmdname: strict mode, refusing to execute subprocess" - exit $RESULT - fi - exec "${CLI[@]}" -else - exit $RESULT -fi \ No newline at end of file diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index cce63896b..cde9597cd 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,4 +1,4 @@ -lockfileVersion: '6.0' +lockfileVersion: '6.1' settings: autoInstallPeers: true @@ -26,7 +26,7 @@ importers: devDependencies: '@apollo/client': specifier: ^3.7.9 - version: 3.7.9(graphql-ws@5.11.2)(graphql@16.6.0)(react-dom@18.2.0)(react@18.2.0) + version: 3.7.9(graphql@16.6.0)(react-dom@18.2.0)(react@18.2.0) '@apollo/rover': specifier: ^0.12.2 version: 0.12.2 @@ -41,49 +41,40 @@ importers: version: 16.3.2(nx@16.3.2) '@nx/eslint-plugin': specifier: 16.3.2 - version: 16.3.2(@swc-node/register@1.5.5)(@swc/core@1.3.27)(@typescript-eslint/parser@5.59.9)(eslint-config-prettier@8.6.0)(eslint@8.34.0)(nx@16.3.2)(typescript@5.0.4) + version: 16.3.2(@typescript-eslint/parser@5.59.9)(eslint-config-prettier@8.6.0)(eslint@8.34.0)(nx@16.3.2)(typescript@5.0.4) '@nx/jest': specifier: 16.3.2 - version: 16.3.2(@swc-node/register@1.5.5)(@swc/core@1.3.27)(@types/node@18.14.2)(nx@16.3.2)(ts-node@10.9.1)(typescript@5.0.4) + version: 16.3.2(@types/node@18.14.2)(nx@16.3.2)(ts-node@10.9.1)(typescript@5.0.4) '@nx/js': specifier: 16.3.2 - version: 16.3.2(@swc-node/register@1.5.5)(@swc/core@1.3.27)(nx@16.3.2)(typescript@5.0.4) + version: 16.3.2(nx@16.3.2)(typescript@5.0.4) '@nx/linter': specifier: 16.3.2 - version: 16.3.2(@swc-node/register@1.5.5)(@swc/core@1.3.27)(eslint@8.34.0)(nx@16.3.2)(typescript@5.0.4) + version: 16.3.2(eslint@8.34.0)(nx@16.3.2)(typescript@5.0.4) '@nx/node': specifier: 16.3.2 - version: 16.3.2(@swc-node/register@1.5.5)(@swc/core@1.3.27)(@types/node@18.14.2)(eslint@8.34.0)(nx@16.3.2)(ts-node@10.9.1)(typescript@5.0.4) + version: 16.3.2(@types/node@18.14.2)(eslint@8.34.0)(nx@16.3.2)(ts-node@10.9.1)(typescript@5.0.4) '@nx/plugin': specifier: 16.3.2 - version: 16.3.2(@swc-node/register@1.5.5)(@swc/core@1.3.27)(@types/node@18.14.2)(eslint@8.34.0)(nx@16.3.2)(ts-node@10.9.1)(typescript@5.0.4) + version: 16.3.2(@types/node@18.14.2)(eslint@8.34.0)(nx@16.3.2)(ts-node@10.9.1)(typescript@5.0.4) '@nx/react': specifier: 16.3.2 - version: 16.3.2(@swc-node/register@1.5.5)(@swc/core@1.3.27)(eslint@8.34.0)(nx@16.3.2)(typescript@5.0.4)(webpack@5.85.1) + version: 16.3.2(eslint@8.34.0)(nx@16.3.2)(typescript@5.0.4)(webpack@5.85.1) '@nx/web': specifier: 16.3.2 - version: 16.3.2(@swc-node/register@1.5.5)(@swc/core@1.3.27)(nx@16.3.2)(typescript@5.0.4) + version: 16.3.2(nx@16.3.2)(typescript@5.0.4) '@pmmmwh/react-refresh-webpack-plugin': specifier: ^0.5.7 version: 0.5.10(react-refresh@0.10.0)(webpack@5.85.1) + '@sb/cli': + specifier: '*' + version: link:packages/internal/cli '@sb/core': specifier: '*' version: link:packages/internal/core '@svgr/webpack': specifier: ^6.1.2 version: 6.5.1 - '@swc-node/register': - specifier: ^1.4.2 - version: 1.5.5(@swc/core@1.3.27)(typescript@5.0.4) - '@swc/cli': - specifier: 0.1.62 - version: 0.1.62(@swc/core@1.3.27) - '@swc/core': - specifier: ^1.2.173 - version: 1.3.27 - '@swc/helpers': - specifier: 0.5.1 - version: 0.5.1 '@tailwindcss/typography': specifier: ^0.5.9 version: 0.5.9(tailwindcss@3.3.2) @@ -176,7 +167,7 @@ importers: version: 10.5.4 nx: specifier: 16.3.2 - version: 16.3.2(@swc-node/register@1.5.5)(@swc/core@1.3.27) + version: 16.3.2 nx-cloud: specifier: 16.0.5 version: 16.0.5 @@ -186,6 +177,9 @@ importers: react-refresh: specifier: ^0.10.0 version: 0.10.0 + string-argv: + specifier: ^0.3.2 + version: 0.3.2 tailwindcss: specifier: ^3.3.2 version: 3.3.2(ts-node@10.9.1) @@ -197,7 +191,7 @@ importers: version: 29.1.0(@babel/core@7.21.8)(babel-jest@29.4.3)(jest@29.4.3)(typescript@5.0.4) ts-node: specifier: 10.9.1 - version: 10.9.1(@swc/core@1.3.27)(@types/node@18.14.2)(typescript@5.0.4) + version: 10.9.1(@types/node@18.14.2)(typescript@5.0.4) tsconfig-paths: specifier: ^4.1.2 version: 4.1.2 @@ -213,6 +207,18 @@ importers: packages/backend: devDependencies: + '@aws-sdk/client-ecr': + specifier: ^3.398.0 + version: 3.398.0 + '@aws-sdk/client-ecs': + specifier: ^3.398.0 + version: 3.398.0 + '@aws-sdk/client-sfn': + specifier: ^3.398.0 + version: 3.398.0 + '@aws-sdk/client-sts': + specifier: ^3.398.0 + version: 3.398.0 '@sb/core': specifier: '*' version: link:../internal/core @@ -234,6 +240,9 @@ importers: constructs: specifier: ^10.1.225 version: 10.1.228 + fs-extra: + specifier: ^11.1.1 + version: 11.1.1 packages/contentful: dependencies: @@ -302,6 +311,133 @@ importers: specifier: ^10.1.225 version: 10.1.228 + packages/internal/cli: + dependencies: + '@apptension/saas-boilerplate-telemetry': + specifier: ^1.0.3 + version: 1.0.3 + '@aws-sdk/client-cloudformation': + specifier: ^3.398.0 + version: 3.398.0 + '@aws-sdk/client-ecr': + specifier: ^3.398.0 + version: 3.398.0 + '@aws-sdk/client-ecs': + specifier: ^3.398.0 + version: 3.398.0 + '@aws-sdk/client-iam': + specifier: ^3.398.0 + version: 3.398.0 + '@aws-sdk/client-sfn': + specifier: ^3.398.0 + version: 3.398.0 + '@aws-sdk/client-sts': + specifier: ^3.398.0 + version: 3.398.0 + '@oclif/color': + specifier: ^1.0.11 + version: 1.0.11 + '@oclif/core': + specifier: ^2.15.0 + version: 2.15.0(@types/node@16.18.47)(typescript@5.0.4) + '@oclif/errors': + specifier: ^1.3.6 + version: 1.3.6 + '@oclif/plugin-autocomplete': + specifier: ^2.3.8 + version: 2.3.8(@types/node@16.18.47)(typescript@5.0.4) + '@oclif/plugin-help': + specifier: ^5.2.19 + version: 5.2.19(@types/node@16.18.47)(typescript@5.0.4) + '@oclif/plugin-plugins': + specifier: ^3.4.0 + version: 3.4.0(@types/node@16.18.47)(typescript@5.0.4) + '@opentelemetry/api': + specifier: ^1.5.0 + version: 1.5.0 + '@opentelemetry/exporter-trace-otlp-proto': + specifier: ^0.42.0 + version: 0.42.0(@opentelemetry/api@1.5.0) + '@opentelemetry/resources': + specifier: ^1.16.0 + version: 1.16.0(@opentelemetry/api@1.5.0) + '@opentelemetry/sdk-metrics': + specifier: ^1.16.0 + version: 1.16.0(@opentelemetry/api@1.5.0) + '@opentelemetry/sdk-node': + specifier: ^0.42.0 + version: 0.42.0(@opentelemetry/api@1.5.0) + '@opentelemetry/sdk-trace-base': + specifier: ^1.16.0 + version: 1.16.0(@opentelemetry/api@1.5.0) + '@opentelemetry/sdk-trace-node': + specifier: ^1.16.0 + version: 1.16.0(@opentelemetry/api@1.5.0) + '@opentelemetry/semantic-conventions': + specifier: ^1.16.0 + version: 1.16.0 + dotenv: + specifier: ^16.3.1 + version: 16.3.1 + envalid: + specifier: ^7.3.1 + version: 7.3.1 + lookpath: + specifier: ^1.2.2 + version: 1.2.2 + node-persist: + specifier: ^3.1.3 + version: 3.1.3 + ramda: + specifier: ^0.29.0 + version: 0.29.0 + devDependencies: + '@oclif/test': + specifier: ^2.4.7 + version: 2.4.7(@types/node@16.18.47)(typescript@5.0.4) + '@types/chai': + specifier: ^4 + version: 4.0.0 + '@types/mocha': + specifier: ^9.0.0 + version: 9.0.0 + '@types/node': + specifier: ^16.18.47 + version: 16.18.47 + '@types/node-persist': + specifier: ^3.1.4 + version: 3.1.4 + '@types/ramda': + specifier: ^0.29.3 + version: 0.29.3 + chai: + specifier: ^4 + version: 4.0.0 + eslint: + specifier: ^7.32.0 + version: 7.32.0 + eslint-config-oclif: + specifier: ^4 + version: 4.0.0(eslint@7.32.0) + eslint-config-oclif-typescript: + specifier: ^1.0.3 + version: 1.0.3(eslint@7.32.0)(typescript@5.0.4) + mocha: + specifier: ^9 + version: 9.0.0 + oclif: + specifier: ^3.14.0 + version: 3.14.0(@types/node@16.18.47)(typescript@5.0.4) + shx: + specifier: ^0.3.3 + version: 0.3.3 + ts-node: + specifier: ^10.9.1 + version: 10.9.1(@types/node@16.18.47)(typescript@5.0.4) + tslib: + specifier: ^2.6.2 + version: 2.6.2 + packages/internal/core: devDependencies: dotenv: @@ -313,15 +449,18 @@ importers: envalid: specifier: ^7.3.1 version: 7.3.1 + lookpath: + specifier: ^1.2.2 + version: 1.2.2 packages/internal/docs: dependencies: '@docusaurus/core': specifier: ^2.4.0 - version: 2.4.0(@docusaurus/types@2.4.0)(@swc/core@1.3.27)(eslint@8.34.0)(react-dom@16.14.0)(react@16.14.0)(typescript@5.0.4) + version: 2.4.0(@docusaurus/types@2.4.0)(eslint@8.34.0)(react-dom@16.14.0)(react@16.14.0)(typescript@5.0.4) '@docusaurus/preset-classic': specifier: ^2.4.0 - version: 2.4.0(@algolia/client-search@4.14.3)(@swc/core@1.3.27)(@types/react@18.0.28)(eslint@8.34.0)(react-dom@16.14.0)(react@16.14.0)(typescript@5.0.4) + version: 2.4.0(@algolia/client-search@4.14.3)(@types/react@18.0.28)(eslint@8.34.0)(react-dom@16.14.0)(react@16.14.0)(typescript@5.0.4) '@mdx-js/react': specifier: ^1.6.21 version: 1.6.22(react@16.14.0) @@ -346,10 +485,10 @@ importers: devDependencies: '@docusaurus/module-type-aliases': specifier: ^2.4.0 - version: 2.4.0(@swc/core@1.3.27)(react-dom@16.14.0)(react@16.14.0) + version: 2.4.0(react-dom@16.14.0)(react@16.14.0) '@docusaurus/types': specifier: ^2.4.0 - version: 2.4.0(@swc/core@1.3.27)(react-dom@16.14.0)(react@16.14.0) + version: 2.4.0(react-dom@16.14.0)(react@16.14.0) '@sb/core': specifier: '*' version: link:../core @@ -441,13 +580,13 @@ importers: devDependencies: '@nx/react': specifier: ^16.3.2 - version: 16.3.2(@swc-node/register@1.5.5)(@swc/core@1.3.27)(eslint@8.34.0)(nx@16.3.2)(typescript@5.0.4)(webpack@5.85.1) + version: 16.3.2(eslint@8.34.0)(nx@16.3.2)(typescript@5.0.4)(webpack@5.85.1) '@nx/web': specifier: ^16.3.2 - version: 16.3.2(@swc-node/register@1.5.5)(@swc/core@1.3.27)(nx@16.3.2)(typescript@5.0.4) + version: 16.3.2(nx@16.3.2)(typescript@5.0.4) '@nx/webpack': specifier: ^16.3.2 - version: 16.3.2(@swc-node/register@1.5.5)(@swc/core@1.3.27)(@types/node@18.15.10)(nx@16.3.2)(typescript@5.0.4) + version: 16.3.2(@types/node@18.15.10)(nx@16.3.2)(typescript@5.0.4) '@sb/core': specifier: '*' version: link:../core @@ -514,7 +653,7 @@ importers: dependencies: '@apollo/client': specifier: ^3.7.9 - version: 3.7.9(graphql-ws@5.11.2)(graphql@16.6.0)(react-dom@18.2.0)(react@18.2.0) + version: 3.7.9(graphql@16.6.0)(react-dom@18.2.0)(react@18.2.0) '@iconify-icons/ion': specifier: ^1.2.4 version: 1.2.7 @@ -523,13 +662,13 @@ importers: version: 4.0.1(react@18.2.0) '@nx/jest': specifier: ^16.3.2 - version: 16.3.2(@swc-node/register@1.5.5)(@swc/core@1.3.27)(@types/node@18.15.10)(nx@16.3.2)(ts-node@10.9.1)(typescript@5.0.4) + version: 16.3.2(@types/node@18.15.10)(nx@16.3.2)(ts-node@10.9.1)(typescript@5.0.4) '@nx/js': specifier: ^16.3.2 - version: 16.3.2(@swc-node/register@1.5.5)(@swc/core@1.3.27)(nx@16.3.2)(typescript@5.0.4) + version: 16.3.2(nx@16.3.2)(typescript@5.0.4) '@nx/react': specifier: ^16.3.2 - version: 16.3.2(@swc-node/register@1.5.5)(@swc/core@1.3.27)(eslint@8.34.0)(nx@16.3.2)(typescript@5.0.4)(webpack@5.85.1) + version: 16.3.2(eslint@8.34.0)(nx@16.3.2)(typescript@5.0.4)(webpack@5.85.1) '@sentry/react': specifier: ^7.17.4 version: 7.31.1(react@18.2.0) @@ -978,10 +1117,10 @@ importers: version: 8.3.15(graphql@16.6.0) '@nx/jest': specifier: ^16.3.2 - version: 16.3.2(@swc-node/register@1.5.5)(@swc/core@1.3.27)(@types/node@18.15.10)(nx@16.3.2)(ts-node@10.9.1)(typescript@5.0.4) + version: 16.3.2(@types/node@18.15.10)(nx@16.3.2)(ts-node@10.9.1)(typescript@5.0.4) '@nx/react': specifier: ^16.3.2 - version: 16.3.2(@swc-node/register@1.5.5)(@swc/core@1.3.27)(eslint@8.34.0)(nx@16.3.2)(typescript@5.0.4)(webpack@5.85.1) + version: 16.3.2(eslint@8.34.0)(nx@16.3.2)(typescript@5.0.4)(webpack@5.85.1) '@storybook/react': specifier: ^7.0.23 version: 7.0.23(react-dom@18.2.0)(react@18.2.0)(typescript@5.0.4) @@ -1024,6 +1163,9 @@ importers: babel-jest: specifier: 28.1.3 version: 28.1.3(@babel/core@7.21.8) + fs-extra: + specifier: ^11.1.1 + version: 11.1.1 graphql: specifier: ^16.6.0 version: 16.6.0 @@ -1078,6 +1220,9 @@ importers: '@types/node': specifier: ^18.15.10 version: 18.15.10 + dotenv: + specifier: ^16.3.1 + version: 16.3.1 lucide-react: specifier: ^0.224.0 version: 0.224.0(react@18.2.0) @@ -1117,10 +1262,10 @@ importers: version: 4.0.1(react@18.2.0) '@nx/jest': specifier: ^16.3.2 - version: 16.3.2(@swc-node/register@1.5.5)(@swc/core@1.3.27)(@types/node@18.15.10)(nx@16.3.2)(ts-node@10.9.1)(typescript@5.0.4) + version: 16.3.2(@types/node@18.15.10)(nx@16.3.2)(ts-node@10.9.1)(typescript@5.0.4) '@nx/react': specifier: ^16.3.2 - version: 16.3.2(@swc-node/register@1.5.5)(@swc/core@1.3.27)(eslint@8.34.0)(nx@16.3.2)(typescript@5.0.4)(webpack@5.85.1) + version: 16.3.2(eslint@8.34.0)(nx@16.3.2)(typescript@5.0.4)(webpack@5.85.1) '@storybook/addon-actions': specifier: ^7.0.23 version: 7.0.23(react-dom@18.2.0)(react@18.2.0) @@ -1196,6 +1341,9 @@ importers: eslint-plugin-testing-library: specifier: ^5.9.1 version: 5.9.1(eslint@8.34.0)(typescript@5.0.4) + fs-extra: + specifier: ^11.1.1 + version: 11.1.1 jest: specifier: 28.1.3 version: 28.1.3(@types/node@18.15.10)(ts-node@10.9.1) @@ -1304,13 +1452,13 @@ importers: version: 4.0.1(react@18.2.0) '@nx/jest': specifier: ^16.3.2 - version: 16.3.2(@swc-node/register@1.5.5)(@swc/core@1.3.27)(@types/node@18.15.10)(nx@16.3.2)(ts-node@10.9.1)(typescript@5.0.4) + version: 16.3.2(@types/node@18.15.10)(nx@16.3.2)(ts-node@10.9.1)(typescript@5.0.4) '@nx/js': specifier: ^16.3.2 - version: 16.3.2(@swc-node/register@1.5.5)(@swc/core@1.3.27)(nx@16.3.2)(typescript@5.0.4) + version: 16.3.2(nx@16.3.2)(typescript@5.0.4) '@nx/react': specifier: ^16.3.2 - version: 16.3.2(@swc-node/register@1.5.5)(@swc/core@1.3.27)(eslint@8.34.0)(nx@16.3.2)(typescript@5.0.4)(webpack@5.85.1) + version: 16.3.2(eslint@8.34.0)(nx@16.3.2)(typescript@5.0.4)(webpack@5.85.1) '@sentry/react': specifier: ^7.17.4 version: 7.31.1(react@18.2.0) @@ -1527,10 +1675,10 @@ importers: version: 4.0.1(react@18.2.0) '@nx/jest': specifier: ^16.3.2 - version: 16.3.2(@swc-node/register@1.5.5)(@swc/core@1.3.27)(@types/node@18.15.10)(nx@16.3.2)(ts-node@10.9.1)(typescript@5.0.4) + version: 16.3.2(@types/node@18.15.10)(nx@16.3.2)(ts-node@10.9.1)(typescript@5.0.4) '@nx/react': specifier: ^16.3.2 - version: 16.3.2(@swc-node/register@1.5.5)(@swc/core@1.3.27)(eslint@8.34.0)(nx@16.3.2)(typescript@5.0.4)(webpack@5.85.1) + version: 16.3.2(eslint@8.34.0)(nx@16.3.2)(typescript@5.0.4)(webpack@5.85.1) '@storybook/addon-actions': specifier: ^7.0.23 version: 7.0.23(react-dom@18.2.0)(react@18.2.0) @@ -1678,10 +1826,10 @@ importers: version: 4.0.1(react@18.2.0) '@nx/jest': specifier: ^16.3.2 - version: 16.3.2(@swc-node/register@1.5.5)(@swc/core@1.3.27)(@types/node@18.15.10)(nx@16.3.2)(ts-node@10.9.1)(typescript@5.0.4) + version: 16.3.2(@types/node@18.15.10)(nx@16.3.2)(ts-node@10.9.1)(typescript@5.0.4) '@nx/react': specifier: ^16.3.2 - version: 16.3.2(@swc-node/register@1.5.5)(@swc/core@1.3.27)(eslint@8.34.0)(nx@16.3.2)(typescript@5.0.4)(webpack@5.85.1) + version: 16.3.2(eslint@8.34.0)(nx@16.3.2)(typescript@5.0.4)(webpack@5.85.1) '@storybook/addon-actions': specifier: ^7.0.23 version: 7.0.23(react-dom@18.2.0)(react@18.2.0) @@ -1908,10 +2056,10 @@ importers: version: 4.0.1(react@18.2.0) '@nx/jest': specifier: ^16.3.2 - version: 16.3.2(@swc-node/register@1.5.5)(@swc/core@1.3.27)(@types/node@18.15.10)(nx@16.3.2)(ts-node@10.9.1)(typescript@5.0.4) + version: 16.3.2(@types/node@18.15.10)(nx@16.3.2)(ts-node@10.9.1)(typescript@5.0.4) '@nx/react': specifier: ^16.3.2 - version: 16.3.2(@swc-node/register@1.5.5)(@swc/core@1.3.27)(eslint@8.34.0)(nx@16.3.2)(typescript@5.0.4)(webpack@5.85.1) + version: 16.3.2(eslint@8.34.0)(nx@16.3.2)(typescript@5.0.4)(webpack@5.85.1) '@storybook/addon-actions': specifier: ^7.0.23 version: 7.0.23(react-dom@18.2.0)(react@18.2.0) @@ -2065,10 +2213,10 @@ importers: version: 4.0.1(react@18.2.0) '@nx/jest': specifier: ^16.3.2 - version: 16.3.2(@swc-node/register@1.5.5)(@swc/core@1.3.27)(@types/node@18.15.10)(nx@16.3.2)(ts-node@10.9.1)(typescript@5.0.4) + version: 16.3.2(@types/node@18.15.10)(nx@16.3.2)(ts-node@10.9.1)(typescript@5.0.4) '@nx/react': specifier: ^16.3.2 - version: 16.3.2(@swc-node/register@1.5.5)(@swc/core@1.3.27)(eslint@8.34.0)(nx@16.3.2)(typescript@5.0.4)(webpack@5.85.1) + version: 16.3.2(eslint@8.34.0)(nx@16.3.2)(typescript@5.0.4)(webpack@5.85.1) '@storybook/addon-actions': specifier: ^7.0.23 version: 7.0.23(react-dom@18.2.0)(react@18.2.0) @@ -2191,7 +2339,7 @@ importers: dependencies: '@apollo/client': specifier: ^3.7.9 - version: 3.7.9(graphql-ws@5.11.2)(graphql@16.6.0)(react-dom@18.2.0)(react@18.2.0) + version: 3.7.9(graphql@16.6.0)(react-dom@18.2.0)(react@18.2.0) '@sb/webapp-api-client': specifier: '*' version: link:../webapp-api-client @@ -2219,10 +2367,10 @@ importers: version: 4.0.1(react@18.2.0) '@nx/jest': specifier: ^16.3.2 - version: 16.3.2(@swc-node/register@1.5.5)(@swc/core@1.3.27)(@types/node@18.15.10)(nx@16.3.2)(ts-node@10.9.1)(typescript@5.0.4) + version: 16.3.2(@types/node@18.15.10)(nx@16.3.2)(ts-node@10.9.1)(typescript@5.0.4) '@nx/react': specifier: ^16.3.2 - version: 16.3.2(@swc-node/register@1.5.5)(@swc/core@1.3.27)(eslint@8.34.0)(nx@16.3.2)(typescript@5.0.4)(webpack@5.85.1) + version: 16.3.2(eslint@8.34.0)(nx@16.3.2)(typescript@5.0.4)(webpack@5.85.1) '@storybook/addon-actions': specifier: ^7.0.23 version: 7.0.23(react-dom@18.2.0)(react@18.2.0) @@ -2557,6 +2705,41 @@ packages: response-iterator: 0.2.6 symbol-observable: 4.0.0 ts-invariant: 0.10.3 + tslib: 2.6.2 + zen-observable-ts: 1.2.5 + + /@apollo/client@3.7.9(graphql@16.6.0)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-YnJvrJOVWrp4y/zdNvUaM8q4GuSHCEIecsRDTJhK/veT33P/B7lfqGJ24NeLdKMj8tDEuXYF7V0t+th4+rgC+Q==} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 + graphql-ws: ^5.5.5 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + subscriptions-transport-ws: ^0.9.0 || ^0.11.0 + peerDependenciesMeta: + graphql-ws: + optional: true + react: + optional: true + react-dom: + optional: true + subscriptions-transport-ws: + optional: true + dependencies: + '@graphql-typed-document-node/core': 3.2.0(graphql@16.6.0) + '@wry/context': 0.7.0 + '@wry/equality': 0.5.3 + '@wry/trie': 0.3.2 + graphql: 16.6.0 + graphql-tag: 2.12.6(graphql@16.6.0) + hoist-non-react-statics: 3.3.2 + optimism: 0.16.2 + prop-types: 15.8.1 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + response-iterator: 0.2.6 + symbol-observable: 4.0.0 + ts-invariant: 0.10.3 tslib: 2.5.0 zen-observable-ts: 1.2.5 @@ -2574,6 +2757,11 @@ packages: - debug dev: true + /@apptension/saas-boilerplate-telemetry@1.0.3: + resolution: {integrity: sha512-zhfmgMadvMAkLacCp9Tgi9V36t0E+x+JelEEHM2h7kE2A/TmADWmZLc98CYQXKVYfWMpKpfdmJ51lFMQOkeTng==} + engines: {node: '>=16.14.0'} + dev: false + /@ardatan/aggregate-error@0.0.6: resolution: {integrity: sha512-vyrkEHG1jrukmzTPtyWB4NLPauUw5bQeg4uhn8f+1SSynmrOcyvlb1GKQjjgoBzElLdfXCRYX8UnBlhklOHYRQ==} engines: {node: '>=8'} @@ -2652,15 +2840,13 @@ packages: resolution: {integrity: sha512-IzSgsrxUcsrejQbPVilIKy16kAT52EwB6zSaI+M3xxIhKh5+aldEyvI+z6erM7TCLB2BJsFrtHjp6/4/sr+3dA==} dependencies: '@aws-crypto/util': 3.0.0 - '@aws-sdk/types': 3.342.0 + '@aws-sdk/types': 3.398.0 tslib: 1.14.1 - dev: false /@aws-crypto/ie11-detection@3.0.0: resolution: {integrity: sha512-341lBBkiY1DfDNKai/wXM3aujNBkXR7tq1URPQDL9wi3AUbI80NR74uF1TXHMm7po1AcnFk8iu2S2IeU/+/A+Q==} dependencies: tslib: 1.14.1 - dev: false /@aws-crypto/sha256-browser@3.0.0: resolution: {integrity: sha512-8VLmW2B+gjFbU5uMeqtQM6Nj0/F1bro80xQXCW6CQBWgosFWXTx77aeOF5CAIAmbOK64SdMBJdNr6J41yP5mvQ==} @@ -2669,40 +2855,36 @@ packages: '@aws-crypto/sha256-js': 3.0.0 '@aws-crypto/supports-web-crypto': 3.0.0 '@aws-crypto/util': 3.0.0 - '@aws-sdk/types': 3.342.0 + '@aws-sdk/types': 3.398.0 '@aws-sdk/util-locate-window': 3.208.0 '@aws-sdk/util-utf8-browser': 3.188.0 tslib: 1.14.1 - dev: false /@aws-crypto/sha256-js@3.0.0: resolution: {integrity: sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ==} dependencies: '@aws-crypto/util': 3.0.0 - '@aws-sdk/types': 3.342.0 + '@aws-sdk/types': 3.398.0 tslib: 1.14.1 - dev: false /@aws-crypto/supports-web-crypto@3.0.0: resolution: {integrity: sha512-06hBdMwUAb2WFTuGG73LSC0wfPu93xWwo5vL2et9eymgmu3Id5vFAHBbajVWiGhPO37qcsdCap/FqXvJGJWPIg==} dependencies: tslib: 1.14.1 - dev: false /@aws-crypto/util@3.0.0: resolution: {integrity: sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w==} dependencies: - '@aws-sdk/types': 3.342.0 + '@aws-sdk/types': 3.398.0 '@aws-sdk/util-utf8-browser': 3.188.0 tslib: 1.14.1 - dev: false /@aws-sdk/abort-controller@3.272.0: resolution: {integrity: sha512-s2TV3phapcTwZNr4qLxbfuQuE9ZMP4RoJdkvRRCkKdm6jslsWLJf2Zlcxti/23hOlINUMYv2iXE2pftIgWGdpg==} engines: {node: '>=14.0.0'} dependencies: '@aws-sdk/types': 3.272.0 - tslib: 2.5.0 + tslib: 2.6.2 dev: false /@aws-sdk/abort-controller@3.342.0: @@ -2710,7 +2892,54 @@ packages: engines: {node: '>=14.0.0'} dependencies: '@aws-sdk/types': 3.342.0 - tslib: 2.5.0 + tslib: 2.6.2 + dev: false + + /@aws-sdk/client-cloudformation@3.398.0: + resolution: {integrity: sha512-NQAjm0FYmmMT9jn7y2kYpa5MtANwe2c+65IJATXCJC9YqmDxDveZce6YmOpZ3Qflf7Z1J2A7rYAwo0qO35/Zcg==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-crypto/sha256-browser': 3.0.0 + '@aws-crypto/sha256-js': 3.0.0 + '@aws-sdk/client-sts': 3.398.0 + '@aws-sdk/credential-provider-node': 3.398.0 + '@aws-sdk/middleware-host-header': 3.398.0 + '@aws-sdk/middleware-logger': 3.398.0 + '@aws-sdk/middleware-recursion-detection': 3.398.0 + '@aws-sdk/middleware-signing': 3.398.0 + '@aws-sdk/middleware-user-agent': 3.398.0 + '@aws-sdk/types': 3.398.0 + '@aws-sdk/util-endpoints': 3.398.0 + '@aws-sdk/util-user-agent-browser': 3.398.0 + '@aws-sdk/util-user-agent-node': 3.398.0 + '@smithy/config-resolver': 2.0.5 + '@smithy/fetch-http-handler': 2.0.5 + '@smithy/hash-node': 2.0.5 + '@smithy/invalid-dependency': 2.0.5 + '@smithy/middleware-content-length': 2.0.5 + '@smithy/middleware-endpoint': 2.0.5 + '@smithy/middleware-retry': 2.0.5 + '@smithy/middleware-serde': 2.0.5 + '@smithy/middleware-stack': 2.0.0 + '@smithy/node-config-provider': 2.0.5 + '@smithy/node-http-handler': 2.0.5 + '@smithy/protocol-http': 2.0.5 + '@smithy/smithy-client': 2.0.5 + '@smithy/types': 2.2.2 + '@smithy/url-parser': 2.0.5 + '@smithy/util-base64': 2.0.0 + '@smithy/util-body-length-browser': 2.0.0 + '@smithy/util-body-length-node': 2.1.0 + '@smithy/util-defaults-mode-browser': 2.0.5 + '@smithy/util-defaults-mode-node': 2.0.5 + '@smithy/util-retry': 2.0.0 + '@smithy/util-utf8': 2.0.0 + '@smithy/util-waiter': 2.0.5 + fast-xml-parser: 4.2.5 + tslib: 2.6.2 + uuid: 8.3.2 + transitivePeerDependencies: + - aws-crt dev: false /@aws-sdk/client-codebuild@3.342.0: @@ -2757,6 +2986,140 @@ packages: - aws-crt dev: false + /@aws-sdk/client-ecr@3.398.0: + resolution: {integrity: sha512-HMFaxz3ZkuqvvTcQVu5o4CRDJPZzS7JWuyhODiKgL5tN+Q4CFSkLA1axUdERWXJkKNyMQN8ZoLLZ8nMAQmhyYA==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-crypto/sha256-browser': 3.0.0 + '@aws-crypto/sha256-js': 3.0.0 + '@aws-sdk/client-sts': 3.398.0 + '@aws-sdk/credential-provider-node': 3.398.0 + '@aws-sdk/middleware-host-header': 3.398.0 + '@aws-sdk/middleware-logger': 3.398.0 + '@aws-sdk/middleware-recursion-detection': 3.398.0 + '@aws-sdk/middleware-signing': 3.398.0 + '@aws-sdk/middleware-user-agent': 3.398.0 + '@aws-sdk/types': 3.398.0 + '@aws-sdk/util-endpoints': 3.398.0 + '@aws-sdk/util-user-agent-browser': 3.398.0 + '@aws-sdk/util-user-agent-node': 3.398.0 + '@smithy/config-resolver': 2.0.5 + '@smithy/fetch-http-handler': 2.0.5 + '@smithy/hash-node': 2.0.5 + '@smithy/invalid-dependency': 2.0.5 + '@smithy/middleware-content-length': 2.0.5 + '@smithy/middleware-endpoint': 2.0.5 + '@smithy/middleware-retry': 2.0.5 + '@smithy/middleware-serde': 2.0.5 + '@smithy/middleware-stack': 2.0.0 + '@smithy/node-config-provider': 2.0.5 + '@smithy/node-http-handler': 2.0.5 + '@smithy/protocol-http': 2.0.5 + '@smithy/smithy-client': 2.0.5 + '@smithy/types': 2.2.2 + '@smithy/url-parser': 2.0.5 + '@smithy/util-base64': 2.0.0 + '@smithy/util-body-length-browser': 2.0.0 + '@smithy/util-body-length-node': 2.1.0 + '@smithy/util-defaults-mode-browser': 2.0.5 + '@smithy/util-defaults-mode-node': 2.0.5 + '@smithy/util-retry': 2.0.0 + '@smithy/util-utf8': 2.0.0 + '@smithy/util-waiter': 2.0.5 + tslib: 2.5.0 + transitivePeerDependencies: + - aws-crt + + /@aws-sdk/client-ecs@3.398.0: + resolution: {integrity: sha512-bjLdxYs9fV6u5qZI5HssZrcrM2pD8JOxqo4ApHTo1ldhwtKiSsrsJv2nJ721bRT0iByDrtgI72EKfGMBysE+lA==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-crypto/sha256-browser': 3.0.0 + '@aws-crypto/sha256-js': 3.0.0 + '@aws-sdk/client-sts': 3.398.0 + '@aws-sdk/credential-provider-node': 3.398.0 + '@aws-sdk/middleware-host-header': 3.398.0 + '@aws-sdk/middleware-logger': 3.398.0 + '@aws-sdk/middleware-recursion-detection': 3.398.0 + '@aws-sdk/middleware-signing': 3.398.0 + '@aws-sdk/middleware-user-agent': 3.398.0 + '@aws-sdk/types': 3.398.0 + '@aws-sdk/util-endpoints': 3.398.0 + '@aws-sdk/util-user-agent-browser': 3.398.0 + '@aws-sdk/util-user-agent-node': 3.398.0 + '@smithy/config-resolver': 2.0.5 + '@smithy/fetch-http-handler': 2.0.5 + '@smithy/hash-node': 2.0.5 + '@smithy/invalid-dependency': 2.0.5 + '@smithy/middleware-content-length': 2.0.5 + '@smithy/middleware-endpoint': 2.0.5 + '@smithy/middleware-retry': 2.0.5 + '@smithy/middleware-serde': 2.0.5 + '@smithy/middleware-stack': 2.0.0 + '@smithy/node-config-provider': 2.0.5 + '@smithy/node-http-handler': 2.0.5 + '@smithy/protocol-http': 2.0.5 + '@smithy/smithy-client': 2.0.5 + '@smithy/types': 2.2.2 + '@smithy/url-parser': 2.0.5 + '@smithy/util-base64': 2.0.0 + '@smithy/util-body-length-browser': 2.0.0 + '@smithy/util-body-length-node': 2.1.0 + '@smithy/util-defaults-mode-browser': 2.0.5 + '@smithy/util-defaults-mode-node': 2.0.5 + '@smithy/util-retry': 2.0.0 + '@smithy/util-utf8': 2.0.0 + '@smithy/util-waiter': 2.0.5 + tslib: 2.5.0 + transitivePeerDependencies: + - aws-crt + + /@aws-sdk/client-iam@3.398.0: + resolution: {integrity: sha512-wQEVjrS1f00NxZNCnAzGhn1HLmFlqkMjgCNRskRF2Qz/ppgSsdgUEc/D5msusWKNo+p9e2ixHKB8eATX03kUXQ==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-crypto/sha256-browser': 3.0.0 + '@aws-crypto/sha256-js': 3.0.0 + '@aws-sdk/client-sts': 3.398.0 + '@aws-sdk/credential-provider-node': 3.398.0 + '@aws-sdk/middleware-host-header': 3.398.0 + '@aws-sdk/middleware-logger': 3.398.0 + '@aws-sdk/middleware-recursion-detection': 3.398.0 + '@aws-sdk/middleware-signing': 3.398.0 + '@aws-sdk/middleware-user-agent': 3.398.0 + '@aws-sdk/types': 3.398.0 + '@aws-sdk/util-endpoints': 3.398.0 + '@aws-sdk/util-user-agent-browser': 3.398.0 + '@aws-sdk/util-user-agent-node': 3.398.0 + '@smithy/config-resolver': 2.0.5 + '@smithy/fetch-http-handler': 2.0.5 + '@smithy/hash-node': 2.0.5 + '@smithy/invalid-dependency': 2.0.5 + '@smithy/middleware-content-length': 2.0.5 + '@smithy/middleware-endpoint': 2.0.5 + '@smithy/middleware-retry': 2.0.5 + '@smithy/middleware-serde': 2.0.5 + '@smithy/middleware-stack': 2.0.0 + '@smithy/node-config-provider': 2.0.5 + '@smithy/node-http-handler': 2.0.5 + '@smithy/protocol-http': 2.0.5 + '@smithy/smithy-client': 2.0.5 + '@smithy/types': 2.2.2 + '@smithy/url-parser': 2.0.5 + '@smithy/util-base64': 2.0.0 + '@smithy/util-body-length-browser': 2.0.0 + '@smithy/util-body-length-node': 2.1.0 + '@smithy/util-defaults-mode-browser': 2.0.5 + '@smithy/util-defaults-mode-node': 2.0.5 + '@smithy/util-retry': 2.0.0 + '@smithy/util-utf8': 2.0.0 + '@smithy/util-waiter': 2.0.5 + fast-xml-parser: 4.2.5 + tslib: 2.6.2 + transitivePeerDependencies: + - aws-crt + dev: false + /@aws-sdk/client-ses@3.272.0: resolution: {integrity: sha512-gXf8azWBspi+CmgbNYYTN3qf5lnWyrgEwnAs8Lxc3Q4dmzS9RlgdmYrmbxYesCqWB50meHqkfWY84qkE8Gszrw==} engines: {node: '>=14.0.0'} @@ -2797,11 +3160,54 @@ packages: '@aws-sdk/util-utf8': 3.254.0 '@aws-sdk/util-waiter': 3.272.0 fast-xml-parser: 4.0.11 - tslib: 2.5.0 + tslib: 2.6.2 transitivePeerDependencies: - aws-crt dev: false + /@aws-sdk/client-sfn@3.398.0: + resolution: {integrity: sha512-em7IyEGiqbuQS8P97MAHZlzXhJIIMbVBtUJwtENoJLwTZpisyh8X7fiXMljdzd5PJksu3v7iWh5qkhuiykWp1g==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-crypto/sha256-browser': 3.0.0 + '@aws-crypto/sha256-js': 3.0.0 + '@aws-sdk/client-sts': 3.398.0 + '@aws-sdk/credential-provider-node': 3.398.0 + '@aws-sdk/middleware-host-header': 3.398.0 + '@aws-sdk/middleware-logger': 3.398.0 + '@aws-sdk/middleware-recursion-detection': 3.398.0 + '@aws-sdk/middleware-signing': 3.398.0 + '@aws-sdk/middleware-user-agent': 3.398.0 + '@aws-sdk/types': 3.398.0 + '@aws-sdk/util-endpoints': 3.398.0 + '@aws-sdk/util-user-agent-browser': 3.398.0 + '@aws-sdk/util-user-agent-node': 3.398.0 + '@smithy/config-resolver': 2.0.5 + '@smithy/fetch-http-handler': 2.0.5 + '@smithy/hash-node': 2.0.5 + '@smithy/invalid-dependency': 2.0.5 + '@smithy/middleware-content-length': 2.0.5 + '@smithy/middleware-endpoint': 2.0.5 + '@smithy/middleware-retry': 2.0.5 + '@smithy/middleware-serde': 2.0.5 + '@smithy/middleware-stack': 2.0.0 + '@smithy/node-config-provider': 2.0.5 + '@smithy/node-http-handler': 2.0.5 + '@smithy/protocol-http': 2.0.5 + '@smithy/smithy-client': 2.0.5 + '@smithy/types': 2.2.2 + '@smithy/url-parser': 2.0.5 + '@smithy/util-base64': 2.0.0 + '@smithy/util-body-length-browser': 2.0.0 + '@smithy/util-body-length-node': 2.1.0 + '@smithy/util-defaults-mode-browser': 2.0.5 + '@smithy/util-defaults-mode-node': 2.0.5 + '@smithy/util-retry': 2.0.0 + '@smithy/util-utf8': 2.0.0 + tslib: 2.5.0 + transitivePeerDependencies: + - aws-crt + /@aws-sdk/client-sso-oidc@3.272.0: resolution: {integrity: sha512-ECcXu3xoa1yggnGKMTh29eWNHiF/wC6r5Uqbla22eOOosyh0+Z6lkJ3JUSLOUKCkBXA4Cs/tJL9UDFBrKbSlvA==} engines: {node: '>=14.0.0'} @@ -2837,7 +3243,7 @@ packages: '@aws-sdk/util-user-agent-browser': 3.272.0 '@aws-sdk/util-user-agent-node': 3.272.0 '@aws-sdk/util-utf8': 3.254.0 - tslib: 2.5.0 + tslib: 2.6.2 transitivePeerDependencies: - aws-crt dev: false @@ -2878,7 +3284,7 @@ packages: '@aws-sdk/util-utf8': 3.310.0 '@smithy/protocol-http': 1.0.1 '@smithy/types': 1.0.0 - tslib: 2.5.0 + tslib: 2.6.2 transitivePeerDependencies: - aws-crt dev: false @@ -2918,7 +3324,7 @@ packages: '@aws-sdk/util-user-agent-browser': 3.272.0 '@aws-sdk/util-user-agent-node': 3.272.0 '@aws-sdk/util-utf8': 3.254.0 - tslib: 2.5.0 + tslib: 2.6.2 transitivePeerDependencies: - aws-crt dev: false @@ -2959,11 +3365,51 @@ packages: '@aws-sdk/util-utf8': 3.310.0 '@smithy/protocol-http': 1.0.1 '@smithy/types': 1.0.0 - tslib: 2.5.0 + tslib: 2.6.2 transitivePeerDependencies: - aws-crt dev: false + /@aws-sdk/client-sso@3.398.0: + resolution: {integrity: sha512-CygL0jhfibw4kmWXG/3sfZMFNjcXo66XUuPC4BqZBk8Rj5vFoxp1vZeMkDLzTIk97Nvo5J5Bh+QnXKhub6AckQ==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-crypto/sha256-browser': 3.0.0 + '@aws-crypto/sha256-js': 3.0.0 + '@aws-sdk/middleware-host-header': 3.398.0 + '@aws-sdk/middleware-logger': 3.398.0 + '@aws-sdk/middleware-recursion-detection': 3.398.0 + '@aws-sdk/middleware-user-agent': 3.398.0 + '@aws-sdk/types': 3.398.0 + '@aws-sdk/util-endpoints': 3.398.0 + '@aws-sdk/util-user-agent-browser': 3.398.0 + '@aws-sdk/util-user-agent-node': 3.398.0 + '@smithy/config-resolver': 2.0.5 + '@smithy/fetch-http-handler': 2.0.5 + '@smithy/hash-node': 2.0.5 + '@smithy/invalid-dependency': 2.0.5 + '@smithy/middleware-content-length': 2.0.5 + '@smithy/middleware-endpoint': 2.0.5 + '@smithy/middleware-retry': 2.0.5 + '@smithy/middleware-serde': 2.0.5 + '@smithy/middleware-stack': 2.0.0 + '@smithy/node-config-provider': 2.0.5 + '@smithy/node-http-handler': 2.0.5 + '@smithy/protocol-http': 2.0.5 + '@smithy/smithy-client': 2.0.5 + '@smithy/types': 2.2.2 + '@smithy/url-parser': 2.0.5 + '@smithy/util-base64': 2.0.0 + '@smithy/util-body-length-browser': 2.0.0 + '@smithy/util-body-length-node': 2.1.0 + '@smithy/util-defaults-mode-browser': 2.0.5 + '@smithy/util-defaults-mode-node': 2.0.5 + '@smithy/util-retry': 2.0.0 + '@smithy/util-utf8': 2.0.0 + tslib: 2.6.2 + transitivePeerDependencies: + - aws-crt + /@aws-sdk/client-sts@3.272.0: resolution: {integrity: sha512-kigxCxURp3WupufGaL/LABMb7UQfzAQkKcj9royizL3ItJ0vw5kW/JFrPje5IW1mfLgdPF7PI9ShOjE0fCLTqA==} engines: {node: '>=14.0.0'} @@ -3003,7 +3449,7 @@ packages: '@aws-sdk/util-user-agent-node': 3.272.0 '@aws-sdk/util-utf8': 3.254.0 fast-xml-parser: 4.0.11 - tslib: 2.5.0 + tslib: 2.6.2 transitivePeerDependencies: - aws-crt dev: false @@ -3048,11 +3494,55 @@ packages: '@smithy/protocol-http': 1.0.1 '@smithy/types': 1.0.0 fast-xml-parser: 4.1.2 - tslib: 2.5.0 + tslib: 2.6.2 transitivePeerDependencies: - aws-crt dev: false + /@aws-sdk/client-sts@3.398.0: + resolution: {integrity: sha512-/3Pa9wLMvBZipKraq3AtbmTfXW6q9kyvhwOno64f1Fz7kFb8ijQFMGoATS70B2pGEZTlxkUqJFWDiisT6Q6dFg==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-crypto/sha256-browser': 3.0.0 + '@aws-crypto/sha256-js': 3.0.0 + '@aws-sdk/credential-provider-node': 3.398.0 + '@aws-sdk/middleware-host-header': 3.398.0 + '@aws-sdk/middleware-logger': 3.398.0 + '@aws-sdk/middleware-recursion-detection': 3.398.0 + '@aws-sdk/middleware-sdk-sts': 3.398.0 + '@aws-sdk/middleware-signing': 3.398.0 + '@aws-sdk/middleware-user-agent': 3.398.0 + '@aws-sdk/types': 3.398.0 + '@aws-sdk/util-endpoints': 3.398.0 + '@aws-sdk/util-user-agent-browser': 3.398.0 + '@aws-sdk/util-user-agent-node': 3.398.0 + '@smithy/config-resolver': 2.0.5 + '@smithy/fetch-http-handler': 2.0.5 + '@smithy/hash-node': 2.0.5 + '@smithy/invalid-dependency': 2.0.5 + '@smithy/middleware-content-length': 2.0.5 + '@smithy/middleware-endpoint': 2.0.5 + '@smithy/middleware-retry': 2.0.5 + '@smithy/middleware-serde': 2.0.5 + '@smithy/middleware-stack': 2.0.0 + '@smithy/node-config-provider': 2.0.5 + '@smithy/node-http-handler': 2.0.5 + '@smithy/protocol-http': 2.0.5 + '@smithy/smithy-client': 2.0.5 + '@smithy/types': 2.2.2 + '@smithy/url-parser': 2.0.5 + '@smithy/util-base64': 2.0.0 + '@smithy/util-body-length-browser': 2.0.0 + '@smithy/util-body-length-node': 2.1.0 + '@smithy/util-defaults-mode-browser': 2.0.5 + '@smithy/util-defaults-mode-node': 2.0.5 + '@smithy/util-retry': 2.0.0 + '@smithy/util-utf8': 2.0.0 + fast-xml-parser: 4.2.5 + tslib: 2.5.0 + transitivePeerDependencies: + - aws-crt + /@aws-sdk/config-resolver@3.272.0: resolution: {integrity: sha512-Dr4CffRVNsOp3LRNdpvcH6XuSgXOSLblWliCy/5I86cNl567KVMxujVx6uPrdTXYs2h1rt3MNl6jQGnAiJeTbw==} engines: {node: '>=14.0.0'} @@ -3061,7 +3551,7 @@ packages: '@aws-sdk/types': 3.272.0 '@aws-sdk/util-config-provider': 3.208.0 '@aws-sdk/util-middleware': 3.272.0 - tslib: 2.5.0 + tslib: 2.6.2 dev: false /@aws-sdk/config-resolver@3.342.0: @@ -3071,7 +3561,7 @@ packages: '@aws-sdk/types': 3.342.0 '@aws-sdk/util-config-provider': 3.310.0 '@aws-sdk/util-middleware': 3.342.0 - tslib: 2.5.0 + tslib: 2.6.2 dev: false /@aws-sdk/credential-provider-env@3.272.0: @@ -3080,7 +3570,7 @@ packages: dependencies: '@aws-sdk/property-provider': 3.272.0 '@aws-sdk/types': 3.272.0 - tslib: 2.5.0 + tslib: 2.6.2 dev: false /@aws-sdk/credential-provider-env@3.342.0: @@ -3089,9 +3579,18 @@ packages: dependencies: '@aws-sdk/property-provider': 3.342.0 '@aws-sdk/types': 3.342.0 - tslib: 2.5.0 + tslib: 2.6.2 dev: false + /@aws-sdk/credential-provider-env@3.398.0: + resolution: {integrity: sha512-Z8Yj5z7FroAsR6UVML+XUdlpoqEe9Dnle8c2h8/xWwIC2feTfIBhjLhRVxfbpbM1pLgBSNEcZ7U8fwq5l7ESVQ==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/types': 3.398.0 + '@smithy/property-provider': 2.0.5 + '@smithy/types': 2.2.2 + tslib: 2.6.2 + /@aws-sdk/credential-provider-imds@3.272.0: resolution: {integrity: sha512-wwAfVY1jTFQEfxVfdYD5r5ieYGl+0g4nhekVxNMqE8E1JeRDd18OqiwAflzpgBIqxfqvCUkf+vl5JYyacMkNAQ==} engines: {node: '>=14.0.0'} @@ -3100,7 +3599,7 @@ packages: '@aws-sdk/property-provider': 3.272.0 '@aws-sdk/types': 3.272.0 '@aws-sdk/url-parser': 3.272.0 - tslib: 2.5.0 + tslib: 2.6.2 dev: false /@aws-sdk/credential-provider-imds@3.342.0: @@ -3111,7 +3610,7 @@ packages: '@aws-sdk/property-provider': 3.342.0 '@aws-sdk/types': 3.342.0 '@aws-sdk/url-parser': 3.342.0 - tslib: 2.5.0 + tslib: 2.6.2 dev: false /@aws-sdk/credential-provider-ini@3.272.0: @@ -3126,7 +3625,7 @@ packages: '@aws-sdk/property-provider': 3.272.0 '@aws-sdk/shared-ini-file-loader': 3.272.0 '@aws-sdk/types': 3.272.0 - tslib: 2.5.0 + tslib: 2.6.2 transitivePeerDependencies: - aws-crt dev: false @@ -3143,11 +3642,28 @@ packages: '@aws-sdk/property-provider': 3.342.0 '@aws-sdk/shared-ini-file-loader': 3.342.0 '@aws-sdk/types': 3.342.0 - tslib: 2.5.0 + tslib: 2.6.2 transitivePeerDependencies: - aws-crt dev: false + /@aws-sdk/credential-provider-ini@3.398.0: + resolution: {integrity: sha512-AsK1lStK3nB9Cn6S6ODb1ktGh7SRejsNVQVKX3t5d3tgOaX+aX1Iwy8FzM/ZEN8uCloeRifUGIY9uQFygg5mSw==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/credential-provider-env': 3.398.0 + '@aws-sdk/credential-provider-process': 3.398.0 + '@aws-sdk/credential-provider-sso': 3.398.0 + '@aws-sdk/credential-provider-web-identity': 3.398.0 + '@aws-sdk/types': 3.398.0 + '@smithy/credential-provider-imds': 2.0.5 + '@smithy/property-provider': 2.0.5 + '@smithy/shared-ini-file-loader': 2.0.5 + '@smithy/types': 2.2.2 + tslib: 2.6.2 + transitivePeerDependencies: + - aws-crt + /@aws-sdk/credential-provider-node@3.272.0: resolution: {integrity: sha512-FI8uvwM1IxiRSvbkdKv8DZG5vxU3ezaseTaB1fHWTxEUFb0pWIoHX9oeOKer9Fj31SOZTCNAaYFURbSRuZlm/w==} engines: {node: '>=14.0.0'} @@ -3161,7 +3677,7 @@ packages: '@aws-sdk/property-provider': 3.272.0 '@aws-sdk/shared-ini-file-loader': 3.272.0 '@aws-sdk/types': 3.272.0 - tslib: 2.5.0 + tslib: 2.6.2 transitivePeerDependencies: - aws-crt dev: false @@ -3179,11 +3695,29 @@ packages: '@aws-sdk/property-provider': 3.342.0 '@aws-sdk/shared-ini-file-loader': 3.342.0 '@aws-sdk/types': 3.342.0 - tslib: 2.5.0 + tslib: 2.6.2 transitivePeerDependencies: - aws-crt dev: false + /@aws-sdk/credential-provider-node@3.398.0: + resolution: {integrity: sha512-odmI/DSKfuWUYeDnGTCEHBbC8/MwnF6yEq874zl6+owoVv0ZsYP8qBHfiJkYqrwg7wQ7Pi40sSAPC1rhesGwzg==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/credential-provider-env': 3.398.0 + '@aws-sdk/credential-provider-ini': 3.398.0 + '@aws-sdk/credential-provider-process': 3.398.0 + '@aws-sdk/credential-provider-sso': 3.398.0 + '@aws-sdk/credential-provider-web-identity': 3.398.0 + '@aws-sdk/types': 3.398.0 + '@smithy/credential-provider-imds': 2.0.5 + '@smithy/property-provider': 2.0.5 + '@smithy/shared-ini-file-loader': 2.0.5 + '@smithy/types': 2.2.2 + tslib: 2.6.2 + transitivePeerDependencies: + - aws-crt + /@aws-sdk/credential-provider-process@3.272.0: resolution: {integrity: sha512-hiCAjWWm2PeBFp5cjkxqyam/XADjiS+e7GzwC34TbZn3LisS0uoweLojj9tD11NnnUhyhbLteUvu5+rotOLwrg==} engines: {node: '>=14.0.0'} @@ -3191,7 +3725,7 @@ packages: '@aws-sdk/property-provider': 3.272.0 '@aws-sdk/shared-ini-file-loader': 3.272.0 '@aws-sdk/types': 3.272.0 - tslib: 2.5.0 + tslib: 2.6.2 dev: false /@aws-sdk/credential-provider-process@3.342.0: @@ -3201,9 +3735,19 @@ packages: '@aws-sdk/property-provider': 3.342.0 '@aws-sdk/shared-ini-file-loader': 3.342.0 '@aws-sdk/types': 3.342.0 - tslib: 2.5.0 + tslib: 2.6.2 dev: false + /@aws-sdk/credential-provider-process@3.398.0: + resolution: {integrity: sha512-WrkBL1W7TXN508PA9wRXPFtzmGpVSW98gDaHEaa8GolAPHMPa5t2QcC/z/cFpglzrcVv8SA277zu9Z8tELdZhg==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/types': 3.398.0 + '@smithy/property-provider': 2.0.5 + '@smithy/shared-ini-file-loader': 2.0.5 + '@smithy/types': 2.2.2 + tslib: 2.6.2 + /@aws-sdk/credential-provider-sso@3.272.0: resolution: {integrity: sha512-hwYaulyiU/7chKKFecxCeo0ls6Dxs7h+5EtoYcJJGvfpvCncyOZF35t00OAsCd3Wo7HkhhgfpGdb6dmvCNQAZQ==} engines: {node: '>=14.0.0'} @@ -3213,7 +3757,7 @@ packages: '@aws-sdk/shared-ini-file-loader': 3.272.0 '@aws-sdk/token-providers': 3.272.0 '@aws-sdk/types': 3.272.0 - tslib: 2.5.0 + tslib: 2.6.2 transitivePeerDependencies: - aws-crt dev: false @@ -3227,18 +3771,32 @@ packages: '@aws-sdk/shared-ini-file-loader': 3.342.0 '@aws-sdk/token-providers': 3.342.0 '@aws-sdk/types': 3.342.0 - tslib: 2.5.0 + tslib: 2.6.2 transitivePeerDependencies: - aws-crt dev: false + /@aws-sdk/credential-provider-sso@3.398.0: + resolution: {integrity: sha512-2Dl35587xbnzR/GGZqA2MnFs8+kS4wbHQO9BioU0okA+8NRueohNMdrdQmQDdSNK4BfIpFspiZmFkXFNyEAfgw==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/client-sso': 3.398.0 + '@aws-sdk/token-providers': 3.398.0 + '@aws-sdk/types': 3.398.0 + '@smithy/property-provider': 2.0.5 + '@smithy/shared-ini-file-loader': 2.0.5 + '@smithy/types': 2.2.2 + tslib: 2.6.2 + transitivePeerDependencies: + - aws-crt + /@aws-sdk/credential-provider-web-identity@3.272.0: resolution: {integrity: sha512-ImrHMkcgneGa/HadHAQXPwOrX26sAKuB8qlMxZF/ZCM2B55u8deY+ZVkVuraeKb7YsahMGehPFOfRAF6mvFI5Q==} engines: {node: '>=14.0.0'} dependencies: '@aws-sdk/property-provider': 3.272.0 '@aws-sdk/types': 3.272.0 - tslib: 2.5.0 + tslib: 2.6.2 dev: false /@aws-sdk/credential-provider-web-identity@3.342.0: @@ -3247,16 +3805,25 @@ packages: dependencies: '@aws-sdk/property-provider': 3.342.0 '@aws-sdk/types': 3.342.0 - tslib: 2.5.0 + tslib: 2.6.2 dev: false + /@aws-sdk/credential-provider-web-identity@3.398.0: + resolution: {integrity: sha512-iG3905Alv9pINbQ8/MIsshgqYMbWx+NDQWpxbIW3W0MkSH3iAqdVpSCteYidYX9G/jv2Um1nW3y360ib20bvNg==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/types': 3.398.0 + '@smithy/property-provider': 2.0.5 + '@smithy/types': 2.2.2 + tslib: 2.6.2 + /@aws-sdk/eventstream-codec@3.342.0: resolution: {integrity: sha512-IwtvSuplioMyiu/pQgpazKkGWDM5M5BOx85zmsB0uNxt6rmje8+WqPmGmuPdmJv4bLC5dJPLovcCp/fuH8XWhA==} dependencies: '@aws-crypto/crc32': 3.0.0 '@aws-sdk/types': 3.342.0 '@aws-sdk/util-hex-encoding': 3.310.0 - tslib: 2.5.0 + tslib: 2.6.2 dev: false /@aws-sdk/fetch-http-handler@3.272.0: @@ -3266,7 +3833,7 @@ packages: '@aws-sdk/querystring-builder': 3.272.0 '@aws-sdk/types': 3.272.0 '@aws-sdk/util-base64': 3.208.0 - tslib: 2.5.0 + tslib: 2.6.2 dev: false /@aws-sdk/fetch-http-handler@3.342.0: @@ -3276,7 +3843,7 @@ packages: '@aws-sdk/querystring-builder': 3.342.0 '@aws-sdk/types': 3.342.0 '@aws-sdk/util-base64': 3.310.0 - tslib: 2.5.0 + tslib: 2.6.2 dev: false /@aws-sdk/hash-node@3.272.0: @@ -3286,7 +3853,7 @@ packages: '@aws-sdk/types': 3.272.0 '@aws-sdk/util-buffer-from': 3.208.0 '@aws-sdk/util-utf8': 3.254.0 - tslib: 2.5.0 + tslib: 2.6.2 dev: false /@aws-sdk/hash-node@3.342.0: @@ -3296,35 +3863,35 @@ packages: '@aws-sdk/types': 3.342.0 '@aws-sdk/util-buffer-from': 3.310.0 '@aws-sdk/util-utf8': 3.310.0 - tslib: 2.5.0 + tslib: 2.6.2 dev: false /@aws-sdk/invalid-dependency@3.272.0: resolution: {integrity: sha512-ysW6wbjl1Y78txHUQ/Tldj2Rg1BI7rpMO9B9xAF6yAX3mQ7t6SUPQG/ewOGvH2208NBIl3qP5e/hDf0Q6r/1iw==} dependencies: '@aws-sdk/types': 3.272.0 - tslib: 2.5.0 + tslib: 2.6.2 dev: false /@aws-sdk/invalid-dependency@3.342.0: resolution: {integrity: sha512-3qza2Br1jGKJi8toPYG9u5aGJ3sbGmJLgKDvlga7q3F8JaeB92He6muRJ07eyDvxZ9jiKhLZ2mtYoVcEjI7Mgw==} dependencies: '@aws-sdk/types': 3.342.0 - tslib: 2.5.0 + tslib: 2.6.2 dev: false /@aws-sdk/is-array-buffer@3.201.0: resolution: {integrity: sha512-UPez5qLh3dNgt0DYnPD/q0mVJY84rA17QE26hVNOW3fAji8W2wrwrxdacWOxyXvlxWsVRcKmr+lay1MDqpAMfg==} engines: {node: '>=14.0.0'} dependencies: - tslib: 2.5.0 + tslib: 2.6.2 dev: false /@aws-sdk/is-array-buffer@3.310.0: resolution: {integrity: sha512-urnbcCR+h9NWUnmOtet/s4ghvzsidFmspfhYaHAmSRdy9yDjdjBJMFjjsn85A1ODUktztm+cVncXjQ38WCMjMQ==} engines: {node: '>=14.0.0'} dependencies: - tslib: 2.5.0 + tslib: 2.6.2 dev: false /@aws-sdk/middleware-content-length@3.272.0: @@ -3333,7 +3900,7 @@ packages: dependencies: '@aws-sdk/protocol-http': 3.272.0 '@aws-sdk/types': 3.272.0 - tslib: 2.5.0 + tslib: 2.6.2 dev: false /@aws-sdk/middleware-content-length@3.342.0: @@ -3342,7 +3909,7 @@ packages: dependencies: '@aws-sdk/protocol-http': 3.342.0 '@aws-sdk/types': 3.342.0 - tslib: 2.5.0 + tslib: 2.6.2 dev: false /@aws-sdk/middleware-endpoint@3.272.0: @@ -3356,7 +3923,7 @@ packages: '@aws-sdk/url-parser': 3.272.0 '@aws-sdk/util-config-provider': 3.208.0 '@aws-sdk/util-middleware': 3.272.0 - tslib: 2.5.0 + tslib: 2.6.2 dev: false /@aws-sdk/middleware-endpoint@3.342.0: @@ -3367,7 +3934,7 @@ packages: '@aws-sdk/types': 3.342.0 '@aws-sdk/url-parser': 3.342.0 '@aws-sdk/util-middleware': 3.342.0 - tslib: 2.5.0 + tslib: 2.6.2 dev: false /@aws-sdk/middleware-host-header@3.272.0: @@ -3376,7 +3943,7 @@ packages: dependencies: '@aws-sdk/protocol-http': 3.272.0 '@aws-sdk/types': 3.272.0 - tslib: 2.5.0 + tslib: 2.6.2 dev: false /@aws-sdk/middleware-host-header@3.342.0: @@ -3385,15 +3952,24 @@ packages: dependencies: '@aws-sdk/protocol-http': 3.342.0 '@aws-sdk/types': 3.342.0 - tslib: 2.5.0 + tslib: 2.6.2 dev: false + /@aws-sdk/middleware-host-header@3.398.0: + resolution: {integrity: sha512-m+5laWdBaxIZK2ko0OwcCHJZJ5V1MgEIt8QVQ3k4/kOkN9ICjevOYmba751pHoTnbOYB7zQd6D2OT3EYEEsUcA==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/types': 3.398.0 + '@smithy/protocol-http': 2.0.5 + '@smithy/types': 2.2.2 + tslib: 2.6.2 + /@aws-sdk/middleware-logger@3.272.0: resolution: {integrity: sha512-u2SQ0hWrFwxbxxYMG5uMEgf01pQY5jauK/LYWgGIvuCmFgiyRQQP3oN7kkmsxnS9MWmNmhbyQguX2NY02s5e9w==} engines: {node: '>=14.0.0'} dependencies: '@aws-sdk/types': 3.272.0 - tslib: 2.5.0 + tslib: 2.6.2 dev: false /@aws-sdk/middleware-logger@3.342.0: @@ -3401,16 +3977,24 @@ packages: engines: {node: '>=14.0.0'} dependencies: '@aws-sdk/types': 3.342.0 - tslib: 2.5.0 + tslib: 2.6.2 dev: false + /@aws-sdk/middleware-logger@3.398.0: + resolution: {integrity: sha512-CiJjW+FL12elS6Pn7/UVjVK8HWHhXMfvHZvOwx/Qkpy340sIhkuzOO6fZEruECDTZhl2Wqn81XdJ1ZQ4pRKpCg==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/types': 3.398.0 + '@smithy/types': 2.2.2 + tslib: 2.6.2 + /@aws-sdk/middleware-recursion-detection@3.272.0: resolution: {integrity: sha512-Gp/eKWeUWVNiiBdmUM2qLkBv+VLSJKoWAO+aKmyxxwjjmWhE0FrfA1NQ1a3g+NGMhRbAfQdaYswRAKsul70ISg==} engines: {node: '>=14.0.0'} dependencies: '@aws-sdk/protocol-http': 3.272.0 '@aws-sdk/types': 3.272.0 - tslib: 2.5.0 + tslib: 2.6.2 dev: false /@aws-sdk/middleware-recursion-detection@3.342.0: @@ -3419,9 +4003,18 @@ packages: dependencies: '@aws-sdk/protocol-http': 3.342.0 '@aws-sdk/types': 3.342.0 - tslib: 2.5.0 + tslib: 2.6.2 dev: false + /@aws-sdk/middleware-recursion-detection@3.398.0: + resolution: {integrity: sha512-7QpOqPQAZNXDXv6vsRex4R8dLniL0E/80OPK4PPFsrCh9btEyhN9Begh4i1T+5lL28hmYkztLOkTQ2N5J3hgRQ==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/types': 3.398.0 + '@smithy/protocol-http': 2.0.5 + '@smithy/types': 2.2.2 + tslib: 2.6.2 + /@aws-sdk/middleware-retry@3.272.0: resolution: {integrity: sha512-pCGvHM7C76VbO/dFerH+Vwf7tGv7j+e+eGrvhQ35mRghCtfIou/WMfTZlD1TNee93crrAQQVZKjtW3dMB3WCzg==} engines: {node: '>=14.0.0'} @@ -3431,7 +4024,7 @@ packages: '@aws-sdk/types': 3.272.0 '@aws-sdk/util-middleware': 3.272.0 '@aws-sdk/util-retry': 3.272.0 - tslib: 2.5.0 + tslib: 2.6.2 uuid: 8.3.2 dev: false @@ -3444,7 +4037,7 @@ packages: '@aws-sdk/types': 3.342.0 '@aws-sdk/util-middleware': 3.342.0 '@aws-sdk/util-retry': 3.342.0 - tslib: 2.5.0 + tslib: 2.6.2 uuid: 8.3.2 dev: false @@ -3457,7 +4050,7 @@ packages: '@aws-sdk/protocol-http': 3.272.0 '@aws-sdk/signature-v4': 3.272.0 '@aws-sdk/types': 3.272.0 - tslib: 2.5.0 + tslib: 2.6.2 dev: false /@aws-sdk/middleware-sdk-sts@3.342.0: @@ -3466,15 +4059,24 @@ packages: dependencies: '@aws-sdk/middleware-signing': 3.342.0 '@aws-sdk/types': 3.342.0 - tslib: 2.5.0 + tslib: 2.6.2 dev: false + /@aws-sdk/middleware-sdk-sts@3.398.0: + resolution: {integrity: sha512-+JH76XHEgfVihkY+GurohOQ5Z83zVN1nYcQzwCFnCDTh4dG4KwhnZKG+WPw6XJECocY0R+H0ivofeALHvVWJtQ==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/middleware-signing': 3.398.0 + '@aws-sdk/types': 3.398.0 + '@smithy/types': 2.2.2 + tslib: 2.6.2 + /@aws-sdk/middleware-serde@3.272.0: resolution: {integrity: sha512-kW1uOxgPSwtXPB5rm3QLdWomu42lkYpQL94tM1BjyFOWmBLO2lQhk5a7Dw6HkTozT9a+vxtscLChRa6KZe61Hw==} engines: {node: '>=14.0.0'} dependencies: '@aws-sdk/types': 3.272.0 - tslib: 2.5.0 + tslib: 2.6.2 dev: false /@aws-sdk/middleware-serde@3.342.0: @@ -3482,7 +4084,7 @@ packages: engines: {node: '>=14.0.0'} dependencies: '@aws-sdk/types': 3.342.0 - tslib: 2.5.0 + tslib: 2.6.2 dev: false /@aws-sdk/middleware-signing@3.272.0: @@ -3494,7 +4096,7 @@ packages: '@aws-sdk/signature-v4': 3.272.0 '@aws-sdk/types': 3.272.0 '@aws-sdk/util-middleware': 3.272.0 - tslib: 2.5.0 + tslib: 2.6.2 dev: false /@aws-sdk/middleware-signing@3.342.0: @@ -3506,21 +4108,33 @@ packages: '@aws-sdk/signature-v4': 3.342.0 '@aws-sdk/types': 3.342.0 '@aws-sdk/util-middleware': 3.342.0 - tslib: 2.5.0 + tslib: 2.6.2 dev: false + /@aws-sdk/middleware-signing@3.398.0: + resolution: {integrity: sha512-O0KqXAix1TcvZBFt1qoFkHMUNJOSgjJTYS7lFTRKSwgsD27bdW2TM2r9R8DAccWFt5Amjkdt+eOwQMIXPGTm8w==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/types': 3.398.0 + '@smithy/property-provider': 2.0.5 + '@smithy/protocol-http': 2.0.5 + '@smithy/signature-v4': 2.0.5 + '@smithy/types': 2.2.2 + '@smithy/util-middleware': 2.0.0 + tslib: 2.6.2 + /@aws-sdk/middleware-stack@3.272.0: resolution: {integrity: sha512-jhwhknnPBGhfXAGV5GXUWfEhDFoP/DN8MPCO2yC5OAxyp6oVJ8lTPLkZYMTW5VL0c0eG44dXpF4Ib01V+PlDrQ==} engines: {node: '>=14.0.0'} dependencies: - tslib: 2.5.0 + tslib: 2.6.2 dev: false /@aws-sdk/middleware-stack@3.342.0: resolution: {integrity: sha512-nDYtLAv9IZq8YFxtbyAiK/U1mtvtJS0DG6HiIPT5jpHcRpuWRHQ170EAW51zYts+21Ffj1VA6ZPkbup83+T6/w==} engines: {node: '>=14.0.0'} dependencies: - tslib: 2.5.0 + tslib: 2.6.2 dev: false /@aws-sdk/middleware-user-agent@3.272.0: @@ -3529,7 +4143,7 @@ packages: dependencies: '@aws-sdk/protocol-http': 3.272.0 '@aws-sdk/types': 3.272.0 - tslib: 2.5.0 + tslib: 2.6.2 dev: false /@aws-sdk/middleware-user-agent@3.342.0: @@ -3539,9 +4153,19 @@ packages: '@aws-sdk/protocol-http': 3.342.0 '@aws-sdk/types': 3.342.0 '@aws-sdk/util-endpoints': 3.342.0 - tslib: 2.5.0 + tslib: 2.6.2 dev: false + /@aws-sdk/middleware-user-agent@3.398.0: + resolution: {integrity: sha512-nF1jg0L+18b5HvTcYzwyFgfZQQMELJINFqI0mi4yRKaX7T5a3aGp5RVLGGju/6tAGTuFbfBoEhkhU3kkxexPYQ==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/types': 3.398.0 + '@aws-sdk/util-endpoints': 3.398.0 + '@smithy/protocol-http': 2.0.5 + '@smithy/types': 2.2.2 + tslib: 2.6.2 + /@aws-sdk/node-config-provider@3.272.0: resolution: {integrity: sha512-YYCIBh9g1EQo7hm2l22HX5Yr9RoPQ2RCvhzKvF1n1e8t1QH4iObQrYUtqHG4khcm64Cft8C5MwZmgzHbya5Z6Q==} engines: {node: '>=14.0.0'} @@ -3549,7 +4173,7 @@ packages: '@aws-sdk/property-provider': 3.272.0 '@aws-sdk/shared-ini-file-loader': 3.272.0 '@aws-sdk/types': 3.272.0 - tslib: 2.5.0 + tslib: 2.6.2 dev: false /@aws-sdk/node-config-provider@3.342.0: @@ -3559,7 +4183,7 @@ packages: '@aws-sdk/property-provider': 3.342.0 '@aws-sdk/shared-ini-file-loader': 3.342.0 '@aws-sdk/types': 3.342.0 - tslib: 2.5.0 + tslib: 2.6.2 dev: false /@aws-sdk/node-http-handler@3.272.0: @@ -3570,7 +4194,7 @@ packages: '@aws-sdk/protocol-http': 3.272.0 '@aws-sdk/querystring-builder': 3.272.0 '@aws-sdk/types': 3.272.0 - tslib: 2.5.0 + tslib: 2.6.2 dev: false /@aws-sdk/node-http-handler@3.342.0: @@ -3581,7 +4205,7 @@ packages: '@aws-sdk/protocol-http': 3.342.0 '@aws-sdk/querystring-builder': 3.342.0 '@aws-sdk/types': 3.342.0 - tslib: 2.5.0 + tslib: 2.6.2 dev: false /@aws-sdk/property-provider@3.272.0: @@ -3589,7 +4213,7 @@ packages: engines: {node: '>=14.0.0'} dependencies: '@aws-sdk/types': 3.272.0 - tslib: 2.5.0 + tslib: 2.6.2 dev: false /@aws-sdk/property-provider@3.342.0: @@ -3597,7 +4221,7 @@ packages: engines: {node: '>=14.0.0'} dependencies: '@aws-sdk/types': 3.342.0 - tslib: 2.5.0 + tslib: 2.6.2 dev: false /@aws-sdk/protocol-http@3.272.0: @@ -3605,7 +4229,7 @@ packages: engines: {node: '>=14.0.0'} dependencies: '@aws-sdk/types': 3.272.0 - tslib: 2.5.0 + tslib: 2.6.2 dev: false /@aws-sdk/protocol-http@3.342.0: @@ -3613,7 +4237,7 @@ packages: engines: {node: '>=14.0.0'} dependencies: '@aws-sdk/types': 3.342.0 - tslib: 2.5.0 + tslib: 2.6.2 dev: false /@aws-sdk/querystring-builder@3.272.0: @@ -3622,7 +4246,7 @@ packages: dependencies: '@aws-sdk/types': 3.272.0 '@aws-sdk/util-uri-escape': 3.201.0 - tslib: 2.5.0 + tslib: 2.6.2 dev: false /@aws-sdk/querystring-builder@3.342.0: @@ -3631,7 +4255,7 @@ packages: dependencies: '@aws-sdk/types': 3.342.0 '@aws-sdk/util-uri-escape': 3.310.0 - tslib: 2.5.0 + tslib: 2.6.2 dev: false /@aws-sdk/querystring-parser@3.272.0: @@ -3639,7 +4263,7 @@ packages: engines: {node: '>=14.0.0'} dependencies: '@aws-sdk/types': 3.272.0 - tslib: 2.5.0 + tslib: 2.6.2 dev: false /@aws-sdk/querystring-parser@3.342.0: @@ -3647,7 +4271,7 @@ packages: engines: {node: '>=14.0.0'} dependencies: '@aws-sdk/types': 3.342.0 - tslib: 2.5.0 + tslib: 2.6.2 dev: false /@aws-sdk/service-error-classification@3.272.0: @@ -3665,7 +4289,7 @@ packages: engines: {node: '>=14.0.0'} dependencies: '@aws-sdk/types': 3.272.0 - tslib: 2.5.0 + tslib: 2.6.2 dev: false /@aws-sdk/shared-ini-file-loader@3.342.0: @@ -3673,7 +4297,7 @@ packages: engines: {node: '>=14.0.0'} dependencies: '@aws-sdk/types': 3.342.0 - tslib: 2.5.0 + tslib: 2.6.2 dev: false /@aws-sdk/signature-v4@3.272.0: @@ -3686,7 +4310,7 @@ packages: '@aws-sdk/util-middleware': 3.272.0 '@aws-sdk/util-uri-escape': 3.201.0 '@aws-sdk/util-utf8': 3.254.0 - tslib: 2.5.0 + tslib: 2.6.2 dev: false /@aws-sdk/signature-v4@3.342.0: @@ -3700,7 +4324,7 @@ packages: '@aws-sdk/util-middleware': 3.342.0 '@aws-sdk/util-uri-escape': 3.310.0 '@aws-sdk/util-utf8': 3.310.0 - tslib: 2.5.0 + tslib: 2.6.2 dev: false /@aws-sdk/smithy-client@3.272.0: @@ -3709,7 +4333,7 @@ packages: dependencies: '@aws-sdk/middleware-stack': 3.272.0 '@aws-sdk/types': 3.272.0 - tslib: 2.5.0 + tslib: 2.6.2 dev: false /@aws-sdk/smithy-client@3.342.0: @@ -3718,7 +4342,7 @@ packages: dependencies: '@aws-sdk/middleware-stack': 3.342.0 '@aws-sdk/types': 3.342.0 - tslib: 2.5.0 + tslib: 2.6.2 dev: false /@aws-sdk/token-providers@3.272.0: @@ -3729,7 +4353,7 @@ packages: '@aws-sdk/property-provider': 3.272.0 '@aws-sdk/shared-ini-file-loader': 3.272.0 '@aws-sdk/types': 3.272.0 - tslib: 2.5.0 + tslib: 2.6.2 transitivePeerDependencies: - aws-crt dev: false @@ -3742,31 +4366,80 @@ packages: '@aws-sdk/property-provider': 3.342.0 '@aws-sdk/shared-ini-file-loader': 3.342.0 '@aws-sdk/types': 3.342.0 - tslib: 2.5.0 + tslib: 2.6.2 transitivePeerDependencies: - aws-crt dev: false + /@aws-sdk/token-providers@3.398.0: + resolution: {integrity: sha512-nrYgjzavGCKJL/48Vt0EL+OlIc5UZLfNGpgyUW9cv3XZwl+kXV0QB+HH0rHZZLfpbBgZ2RBIJR9uD5ieu/6hpQ==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-crypto/sha256-browser': 3.0.0 + '@aws-crypto/sha256-js': 3.0.0 + '@aws-sdk/middleware-host-header': 3.398.0 + '@aws-sdk/middleware-logger': 3.398.0 + '@aws-sdk/middleware-recursion-detection': 3.398.0 + '@aws-sdk/middleware-user-agent': 3.398.0 + '@aws-sdk/types': 3.398.0 + '@aws-sdk/util-endpoints': 3.398.0 + '@aws-sdk/util-user-agent-browser': 3.398.0 + '@aws-sdk/util-user-agent-node': 3.398.0 + '@smithy/config-resolver': 2.0.5 + '@smithy/fetch-http-handler': 2.0.5 + '@smithy/hash-node': 2.0.5 + '@smithy/invalid-dependency': 2.0.5 + '@smithy/middleware-content-length': 2.0.5 + '@smithy/middleware-endpoint': 2.0.5 + '@smithy/middleware-retry': 2.0.5 + '@smithy/middleware-serde': 2.0.5 + '@smithy/middleware-stack': 2.0.0 + '@smithy/node-config-provider': 2.0.5 + '@smithy/node-http-handler': 2.0.5 + '@smithy/property-provider': 2.0.5 + '@smithy/protocol-http': 2.0.5 + '@smithy/shared-ini-file-loader': 2.0.5 + '@smithy/smithy-client': 2.0.5 + '@smithy/types': 2.2.2 + '@smithy/url-parser': 2.0.5 + '@smithy/util-base64': 2.0.0 + '@smithy/util-body-length-browser': 2.0.0 + '@smithy/util-body-length-node': 2.1.0 + '@smithy/util-defaults-mode-browser': 2.0.5 + '@smithy/util-defaults-mode-node': 2.0.5 + '@smithy/util-retry': 2.0.0 + '@smithy/util-utf8': 2.0.0 + tslib: 2.6.2 + transitivePeerDependencies: + - aws-crt + /@aws-sdk/types@3.272.0: resolution: {integrity: sha512-MmmL6vxMGP5Bsi+4wRx4mxYlU/LX6M0noOXrDh/x5FfG7/4ZOar/nDxqDadhJtNM88cuWVHZWY59P54JzkGWmA==} engines: {node: '>=14.0.0'} dependencies: - tslib: 2.5.0 + tslib: 2.6.2 dev: false /@aws-sdk/types@3.342.0: resolution: {integrity: sha512-5uyXVda/AgUpdZNJ9JPHxwyxr08miPiZ/CKSMcRdQVjcNnrdzY9m/iM9LvnQT44sQO+IEEkF2IoZIWvZcq199A==} engines: {node: '>=14.0.0'} dependencies: - tslib: 2.5.0 + tslib: 2.6.2 dev: false + /@aws-sdk/types@3.398.0: + resolution: {integrity: sha512-r44fkS+vsEgKCuEuTV+TIk0t0m5ZlXHNjSDYEUvzLStbbfUFiNus/YG4UCa0wOk9R7VuQI67badsvvPeVPCGDQ==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/types': 2.2.2 + tslib: 2.6.2 + /@aws-sdk/url-parser@3.272.0: resolution: {integrity: sha512-vX/Tx02PlnQ/Kgtf5TnrNDHPNbY+amLZjW0Z1d9vzAvSZhQ4i9Y18yxoRDIaDTCNVRDjdhV8iuctW+05PB5JtQ==} dependencies: '@aws-sdk/querystring-parser': 3.272.0 '@aws-sdk/types': 3.272.0 - tslib: 2.5.0 + tslib: 2.6.2 dev: false /@aws-sdk/url-parser@3.342.0: @@ -3774,7 +4447,7 @@ packages: dependencies: '@aws-sdk/querystring-parser': 3.342.0 '@aws-sdk/types': 3.342.0 - tslib: 2.5.0 + tslib: 2.6.2 dev: false /@aws-sdk/util-base64@3.208.0: @@ -3782,7 +4455,7 @@ packages: engines: {node: '>=14.0.0'} dependencies: '@aws-sdk/util-buffer-from': 3.208.0 - tslib: 2.5.0 + tslib: 2.6.2 dev: false /@aws-sdk/util-base64@3.310.0: @@ -3790,33 +4463,33 @@ packages: engines: {node: '>=14.0.0'} dependencies: '@aws-sdk/util-buffer-from': 3.310.0 - tslib: 2.5.0 + tslib: 2.6.2 dev: false /@aws-sdk/util-body-length-browser@3.188.0: resolution: {integrity: sha512-8VpnwFWXhnZ/iRSl9mTf+VKOX9wDE8QtN4bj9pBfxwf90H1X7E8T6NkiZD3k+HubYf2J94e7DbeHs7fuCPW5Qg==} dependencies: - tslib: 2.5.0 + tslib: 2.6.2 dev: false /@aws-sdk/util-body-length-browser@3.310.0: resolution: {integrity: sha512-sxsC3lPBGfpHtNTUoGXMQXLwjmR0zVpx0rSvzTPAuoVILVsp5AU/w5FphNPxD5OVIjNbZv9KsKTuvNTiZjDp9g==} dependencies: - tslib: 2.5.0 + tslib: 2.6.2 dev: false /@aws-sdk/util-body-length-node@3.208.0: resolution: {integrity: sha512-3zj50e5g7t/MQf53SsuuSf0hEELzMtD8RX8C76f12OSRo2Bca4FLLYHe0TZbxcfQHom8/hOaeZEyTyMogMglqg==} engines: {node: '>=14.0.0'} dependencies: - tslib: 2.5.0 + tslib: 2.6.2 dev: false /@aws-sdk/util-body-length-node@3.310.0: resolution: {integrity: sha512-2tqGXdyKhyA6w4zz7UPoS8Ip+7sayOg9BwHNidiGm2ikbDxm1YrCfYXvCBdwaJxa4hJfRVz+aL9e+d3GqPI9pQ==} engines: {node: '>=14.0.0'} dependencies: - tslib: 2.5.0 + tslib: 2.6.2 dev: false /@aws-sdk/util-buffer-from@3.208.0: @@ -3824,7 +4497,7 @@ packages: engines: {node: '>=14.0.0'} dependencies: '@aws-sdk/is-array-buffer': 3.201.0 - tslib: 2.5.0 + tslib: 2.6.2 dev: false /@aws-sdk/util-buffer-from@3.310.0: @@ -3832,21 +4505,21 @@ packages: engines: {node: '>=14.0.0'} dependencies: '@aws-sdk/is-array-buffer': 3.310.0 - tslib: 2.5.0 + tslib: 2.6.2 dev: false /@aws-sdk/util-config-provider@3.208.0: resolution: {integrity: sha512-DSRqwrERUsT34ug+anlMBIFooBEGwM8GejC7q00Y/9IPrQy50KnG5PW2NiTjuLKNi7pdEOlwTSEocJE15eDZIg==} engines: {node: '>=14.0.0'} dependencies: - tslib: 2.5.0 + tslib: 2.6.2 dev: false /@aws-sdk/util-config-provider@3.310.0: resolution: {integrity: sha512-xIBaYo8dwiojCw8vnUcIL4Z5tyfb1v3yjqyJKJWV/dqKUFOOS0U591plmXbM+M/QkXyML3ypon1f8+BoaDExrg==} engines: {node: '>=14.0.0'} dependencies: - tslib: 2.5.0 + tslib: 2.6.2 dev: false /@aws-sdk/util-defaults-mode-browser@3.272.0: @@ -3856,7 +4529,7 @@ packages: '@aws-sdk/property-provider': 3.272.0 '@aws-sdk/types': 3.272.0 bowser: 2.11.0 - tslib: 2.5.0 + tslib: 2.6.2 dev: false /@aws-sdk/util-defaults-mode-browser@3.342.0: @@ -3866,7 +4539,7 @@ packages: '@aws-sdk/property-provider': 3.342.0 '@aws-sdk/types': 3.342.0 bowser: 2.11.0 - tslib: 2.5.0 + tslib: 2.6.2 dev: false /@aws-sdk/util-defaults-mode-node@3.272.0: @@ -3878,7 +4551,7 @@ packages: '@aws-sdk/node-config-provider': 3.272.0 '@aws-sdk/property-provider': 3.272.0 '@aws-sdk/types': 3.272.0 - tslib: 2.5.0 + tslib: 2.6.2 dev: false /@aws-sdk/util-defaults-mode-node@3.342.0: @@ -3890,7 +4563,7 @@ packages: '@aws-sdk/node-config-provider': 3.342.0 '@aws-sdk/property-provider': 3.342.0 '@aws-sdk/types': 3.342.0 - tslib: 2.5.0 + tslib: 2.6.2 dev: false /@aws-sdk/util-endpoints@3.272.0: @@ -3898,7 +4571,7 @@ packages: engines: {node: '>=14.0.0'} dependencies: '@aws-sdk/types': 3.272.0 - tslib: 2.5.0 + tslib: 2.6.2 dev: false /@aws-sdk/util-endpoints@3.342.0: @@ -3906,42 +4579,48 @@ packages: engines: {node: '>=14.0.0'} dependencies: '@aws-sdk/types': 3.342.0 - tslib: 2.5.0 + tslib: 2.6.2 dev: false + /@aws-sdk/util-endpoints@3.398.0: + resolution: {integrity: sha512-Fy0gLYAei/Rd6BrXG4baspCnWTUSd0NdokU1pZh4KlfEAEN1i8SPPgfiO5hLk7+2inqtCmqxVJlfqbMVe9k4bw==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/types': 3.398.0 + tslib: 2.6.2 + /@aws-sdk/util-hex-encoding@3.201.0: resolution: {integrity: sha512-7t1vR1pVxKx0motd3X9rI3m/xNp78p3sHtP5yo4NP4ARpxyJ0fokBomY8ScaH2D/B+U5o9ARxldJUdMqyBlJcA==} engines: {node: '>=14.0.0'} dependencies: - tslib: 2.5.0 + tslib: 2.6.2 dev: false /@aws-sdk/util-hex-encoding@3.310.0: resolution: {integrity: sha512-sVN7mcCCDSJ67pI1ZMtk84SKGqyix6/0A1Ab163YKn+lFBQRMKexleZzpYzNGxYzmQS6VanP/cfU7NiLQOaSfA==} engines: {node: '>=14.0.0'} dependencies: - tslib: 2.5.0 + tslib: 2.6.2 dev: false /@aws-sdk/util-locate-window@3.208.0: resolution: {integrity: sha512-iua1A2+P7JJEDHVgvXrRJSvsnzG7stYSGQnBVphIUlemwl6nN5D+QrgbjECtrbxRz8asYFHSzhdhECqN+tFiBg==} engines: {node: '>=14.0.0'} dependencies: - tslib: 2.5.0 - dev: false + tslib: 2.6.2 /@aws-sdk/util-middleware@3.272.0: resolution: {integrity: sha512-Abw8m30arbwxqmeMMha5J11ESpHUNmCeSqSzE8/C4B8jZQtHY4kq7f+upzcNIQ11lsd+uzBEzNG3+dDRi0XOJQ==} engines: {node: '>=14.0.0'} dependencies: - tslib: 2.5.0 + tslib: 2.6.2 dev: false /@aws-sdk/util-middleware@3.342.0: resolution: {integrity: sha512-P2LYyMP4JUFZBy9DcMvCDxWU34mlShCyrqBZ1ouuGW7UMgRb1PTEvpLAVndIWn9H+1KGDFjMqOWp1FZHr4YZOA==} engines: {node: '>=14.0.0'} dependencies: - tslib: 2.5.0 + tslib: 2.6.2 dev: false /@aws-sdk/util-retry@3.272.0: @@ -3949,7 +4628,7 @@ packages: engines: {node: '>= 14.0.0'} dependencies: '@aws-sdk/service-error-classification': 3.272.0 - tslib: 2.5.0 + tslib: 2.6.2 dev: false /@aws-sdk/util-retry@3.342.0: @@ -3957,21 +4636,21 @@ packages: engines: {node: '>= 14.0.0'} dependencies: '@aws-sdk/service-error-classification': 3.342.0 - tslib: 2.5.0 + tslib: 2.6.2 dev: false /@aws-sdk/util-uri-escape@3.201.0: resolution: {integrity: sha512-TeTWbGx4LU2c5rx0obHeDFeO9HvwYwQtMh1yniBz00pQb6Qt6YVOETVQikRZ+XRQwEyCg/dA375UplIpiy54mA==} engines: {node: '>=14.0.0'} dependencies: - tslib: 2.5.0 + tslib: 2.6.2 dev: false /@aws-sdk/util-uri-escape@3.310.0: resolution: {integrity: sha512-drzt+aB2qo2LgtDoiy/3sVG8w63cgLkqFIa2NFlGpUgHFWTXkqtbgf4L5QdjRGKWhmZsnqkbtL7vkSWEcYDJ4Q==} engines: {node: '>=14.0.0'} dependencies: - tslib: 2.5.0 + tslib: 2.6.2 dev: false /@aws-sdk/util-user-agent-browser@3.272.0: @@ -3979,7 +4658,7 @@ packages: dependencies: '@aws-sdk/types': 3.272.0 bowser: 2.11.0 - tslib: 2.5.0 + tslib: 2.6.2 dev: false /@aws-sdk/util-user-agent-browser@3.342.0: @@ -3987,9 +4666,17 @@ packages: dependencies: '@aws-sdk/types': 3.342.0 bowser: 2.11.0 - tslib: 2.5.0 + tslib: 2.6.2 dev: false + /@aws-sdk/util-user-agent-browser@3.398.0: + resolution: {integrity: sha512-A3Tzx1tkDHlBT+IgxmsMCHbV8LM7SwwCozq2ZjJRx0nqw3MCrrcxQFXldHeX/gdUMO+0Oocb7HGSnVODTq+0EA==} + dependencies: + '@aws-sdk/types': 3.398.0 + '@smithy/types': 2.2.2 + bowser: 2.11.0 + tslib: 2.6.2 + /@aws-sdk/util-user-agent-node@3.272.0: resolution: {integrity: sha512-ljK+R3l+Q1LIHrcR+Knhk0rmcSkfFadZ8V+crEGpABf/QUQRg7NkZMsoe814tfBO5F7tMxo8wwwSdaVNNHtoRA==} engines: {node: '>=14.0.0'} @@ -4001,7 +4688,7 @@ packages: dependencies: '@aws-sdk/node-config-provider': 3.272.0 '@aws-sdk/types': 3.272.0 - tslib: 2.5.0 + tslib: 2.6.2 dev: false /@aws-sdk/util-user-agent-node@3.342.0: @@ -4015,21 +4702,34 @@ packages: dependencies: '@aws-sdk/node-config-provider': 3.342.0 '@aws-sdk/types': 3.342.0 - tslib: 2.5.0 + tslib: 2.6.2 dev: false + /@aws-sdk/util-user-agent-node@3.398.0: + resolution: {integrity: sha512-RTVQofdj961ej4//fEkppFf4KXqKGMTCqJYghx3G0C/MYXbg7MGl7LjfNGtJcboRE8pfHHQ/TUWBDA7RIAPPlQ==} + engines: {node: '>=14.0.0'} + peerDependencies: + aws-crt: '>=1.0.0' + peerDependenciesMeta: + aws-crt: + optional: true + dependencies: + '@aws-sdk/types': 3.398.0 + '@smithy/node-config-provider': 2.0.5 + '@smithy/types': 2.2.2 + tslib: 2.6.2 + /@aws-sdk/util-utf8-browser@3.188.0: resolution: {integrity: sha512-jt627x0+jE+Ydr9NwkFstg3cUvgWh56qdaqAMDsqgRlKD21md/6G226z/Qxl7lb1VEW2LlmCx43ai/37Qwcj2Q==} dependencies: - tslib: 2.5.0 - dev: false + tslib: 2.6.2 /@aws-sdk/util-utf8@3.254.0: resolution: {integrity: sha512-14Kso/eIt5/qfIBmhEL9L1IfyUqswjSTqO2mY7KOzUZ9SZbwn3rpxmtkhmATkRjD7XIlLKaxBkI7tU9Zjzj8Kw==} engines: {node: '>=14.0.0'} dependencies: '@aws-sdk/util-buffer-from': 3.208.0 - tslib: 2.5.0 + tslib: 2.6.2 dev: false /@aws-sdk/util-utf8@3.310.0: @@ -4037,7 +4737,7 @@ packages: engines: {node: '>=14.0.0'} dependencies: '@aws-sdk/util-buffer-from': 3.310.0 - tslib: 2.5.0 + tslib: 2.6.2 dev: false /@aws-sdk/util-waiter@3.272.0: @@ -4046,14 +4746,14 @@ packages: dependencies: '@aws-sdk/abort-controller': 3.272.0 '@aws-sdk/types': 3.272.0 - tslib: 2.5.0 + tslib: 2.6.2 dev: false - /@babel/code-frame@7.18.6: - resolution: {integrity: sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==} - engines: {node: '>=6.9.0'} + /@babel/code-frame@7.12.11: + resolution: {integrity: sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==} dependencies: '@babel/highlight': 7.18.6 + dev: true /@babel/code-frame@7.21.4: resolution: {integrity: sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g==} @@ -4107,7 +4807,7 @@ packages: debug: 4.3.4(supports-color@8.1.1) gensync: 1.0.0-beta.2 json5: 2.2.3 - semver: 6.3.0 + semver: 6.3.1 transitivePeerDependencies: - supports-color dev: true @@ -4117,7 +4817,7 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@ampproject/remapping': 2.2.0 - '@babel/code-frame': 7.18.6 + '@babel/code-frame': 7.21.4 '@babel/generator': 7.20.7 '@babel/helper-compilation-targets': 7.20.7(@babel/core@7.20.12) '@babel/helper-module-transforms': 7.20.11 @@ -4130,7 +4830,7 @@ packages: debug: 4.3.4(supports-color@8.1.1) gensync: 1.0.0-beta.2 json5: 2.2.3 - semver: 6.3.0 + semver: 6.3.1 transitivePeerDependencies: - supports-color @@ -4152,10 +4852,24 @@ packages: debug: 4.3.4(supports-color@8.1.1) gensync: 1.0.0-beta.2 json5: 2.2.3 - semver: 6.3.0 + semver: 6.3.1 transitivePeerDependencies: - supports-color + /@babel/eslint-parser@7.22.15(@babel/core@7.21.8)(eslint@7.32.0): + resolution: {integrity: sha512-yc8OOBIQk1EcRrpizuARSQS0TWAcOMpEJ1aafhNznaeYkeL+OhqnDObGFylB8ka8VFF/sZc+S4RzHyO+3LjQxg==} + engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0} + peerDependencies: + '@babel/core': ^7.11.0 + eslint: ^7.5.0 || ^8.0.0 + dependencies: + '@babel/core': 7.21.8 + '@nicolo-ribaudo/eslint-scope-5-internals': 5.1.1-v1 + eslint: 7.32.0 + eslint-visitor-keys: 2.1.0 + semver: 6.3.1 + dev: true + /@babel/generator@7.17.7: resolution: {integrity: sha512-oLcVCTeIFadUoArDTwpluncplrYBmTCCZZgXCbgNGvOBBiSDDK3eWO4b/+eOTli5tKv1lg+a5/NAXg+nTcei1w==} engines: {node: '>=6.9.0'} @@ -4215,7 +4929,7 @@ packages: '@babel/helper-validator-option': 7.21.0 browserslist: 4.21.9 lru-cache: 5.1.1 - semver: 6.3.0 + semver: 6.3.1 /@babel/helper-compilation-targets@7.21.5(@babel/core@7.17.8): resolution: {integrity: sha512-1RkbFGUKex4lvsB9yhIfWltJM5cZKUftB2eNajaDv3dCMEp49iBG0K14uH8NnX9IPux2+mK7JGEOB0jn48/J6w==} @@ -4228,7 +4942,7 @@ packages: '@babel/helper-validator-option': 7.21.0 browserslist: 4.21.9 lru-cache: 5.1.1 - semver: 6.3.0 + semver: 6.3.1 dev: true /@babel/helper-compilation-targets@7.21.5(@babel/core@7.20.12): @@ -4242,7 +4956,7 @@ packages: '@babel/helper-validator-option': 7.21.0 browserslist: 4.21.9 lru-cache: 5.1.1 - semver: 6.3.0 + semver: 6.3.1 /@babel/helper-compilation-targets@7.21.5(@babel/core@7.21.8): resolution: {integrity: sha512-1RkbFGUKex4lvsB9yhIfWltJM5cZKUftB2eNajaDv3dCMEp49iBG0K14uH8NnX9IPux2+mK7JGEOB0jn48/J6w==} @@ -4255,7 +4969,7 @@ packages: '@babel/helper-validator-option': 7.21.0 browserslist: 4.21.9 lru-cache: 5.1.1 - semver: 6.3.0 + semver: 6.3.1 /@babel/helper-create-class-features-plugin@7.22.1(@babel/core@7.20.12): resolution: {integrity: sha512-SowrZ9BWzYFgzUMwUmowbPSGu6CXL5MSuuCkG3bejahSpSymioPmuLdhPxNOc9MjuNGjy7M/HaXvJ8G82Lywlw==} @@ -4272,7 +4986,7 @@ packages: '@babel/helper-replace-supers': 7.22.1 '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 '@babel/helper-split-export-declaration': 7.18.6 - semver: 6.3.0 + semver: 6.3.1 transitivePeerDependencies: - supports-color @@ -4291,7 +5005,7 @@ packages: '@babel/helper-replace-supers': 7.22.1 '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 '@babel/helper-split-export-declaration': 7.18.6 - semver: 6.3.0 + semver: 6.3.1 transitivePeerDependencies: - supports-color @@ -4326,7 +5040,7 @@ packages: debug: 4.3.4(supports-color@8.1.1) lodash.debounce: 4.0.8 resolve: 1.22.2 - semver: 6.3.0 + semver: 6.3.1 transitivePeerDependencies: - supports-color @@ -4341,7 +5055,7 @@ packages: debug: 4.3.4(supports-color@8.1.1) lodash.debounce: 4.0.8 resolve: 1.22.2 - semver: 6.3.0 + semver: 6.3.1 transitivePeerDependencies: - supports-color @@ -6077,7 +6791,7 @@ packages: babel-plugin-polyfill-corejs2: 0.3.3(@babel/core@7.20.12) babel-plugin-polyfill-corejs3: 0.6.0(@babel/core@7.20.12) babel-plugin-polyfill-regenerator: 0.4.1(@babel/core@7.20.12) - semver: 6.3.0 + semver: 6.3.1 transitivePeerDependencies: - supports-color @@ -6093,7 +6807,7 @@ packages: babel-plugin-polyfill-corejs2: 0.3.3(@babel/core@7.21.8) babel-plugin-polyfill-corejs3: 0.6.0(@babel/core@7.21.8) babel-plugin-polyfill-regenerator: 0.4.1(@babel/core@7.21.8) - semver: 6.3.0 + semver: 6.3.1 transitivePeerDependencies: - supports-color @@ -6335,7 +7049,7 @@ packages: babel-plugin-polyfill-corejs3: 0.6.0(@babel/core@7.20.12) babel-plugin-polyfill-regenerator: 0.4.1(@babel/core@7.20.12) core-js-compat: 3.27.2 - semver: 6.3.0 + semver: 6.3.1 transitivePeerDependencies: - supports-color @@ -6421,7 +7135,7 @@ packages: babel-plugin-polyfill-corejs3: 0.6.0(@babel/core@7.21.8) babel-plugin-polyfill-regenerator: 0.4.1(@babel/core@7.21.8) core-js-compat: 3.27.2 - semver: 6.3.0 + semver: 6.3.1 transitivePeerDependencies: - supports-color @@ -6763,7 +7477,7 @@ packages: - '@algolia/client-search' dev: false - /@docusaurus/core@2.4.0(@docusaurus/types@2.4.0)(@swc/core@1.3.27)(eslint@8.34.0)(react-dom@16.14.0)(react@16.14.0)(typescript@5.0.4): + /@docusaurus/core@2.4.0(@docusaurus/types@2.4.0)(eslint@8.34.0)(react-dom@16.14.0)(react@16.14.0)(typescript@5.0.4): resolution: {integrity: sha512-J55/WEoIpRcLf3afO5POHPguVZosKmJEQWKBL+K7TAnfuE7i+Y0NPLlkKtnWCehagGsgTqClfQEexH/UT4kELA==} engines: {node: '>=16.14'} hasBin: true @@ -6783,11 +7497,11 @@ packages: '@babel/traverse': 7.20.13 '@docusaurus/cssnano-preset': 2.4.0 '@docusaurus/logger': 2.4.0 - '@docusaurus/mdx-loader': 2.4.0(@docusaurus/types@2.4.0)(@swc/core@1.3.27)(react-dom@16.14.0)(react@16.14.0) + '@docusaurus/mdx-loader': 2.4.0(@docusaurus/types@2.4.0)(react-dom@16.14.0)(react@16.14.0) '@docusaurus/react-loadable': 5.5.2(react@16.14.0) - '@docusaurus/utils': 2.4.0(@docusaurus/types@2.4.0)(@swc/core@1.3.27) + '@docusaurus/utils': 2.4.0(@docusaurus/types@2.4.0) '@docusaurus/utils-common': 2.4.0(@docusaurus/types@2.4.0) - '@docusaurus/utils-validation': 2.4.0(@docusaurus/types@2.4.0)(@swc/core@1.3.27) + '@docusaurus/utils-validation': 2.4.0(@docusaurus/types@2.4.0) '@slorber/static-site-generator-webpack-plugin': 4.0.7 '@svgr/webpack': 6.5.1 autoprefixer: 10.4.13(postcss@8.4.21) @@ -6834,12 +7548,12 @@ packages: semver: 7.3.8 serve-handler: 6.1.5 shelljs: 0.8.5 - terser-webpack-plugin: 5.3.6(@swc/core@1.3.27)(webpack@5.75.0) - tslib: 2.5.0 + terser-webpack-plugin: 5.3.6(webpack@5.75.0) + tslib: 2.6.2 update-notifier: 5.1.0 url-loader: 4.1.1(file-loader@6.2.0)(webpack@5.75.0) wait-on: 6.0.1 - webpack: 5.75.0(@swc/core@1.3.27) + webpack: 5.75.0 webpack-bundle-analyzer: 4.7.0 webpack-dev-server: 4.11.1(webpack@5.75.0) webpack-merge: 5.8.0 @@ -6870,7 +7584,7 @@ packages: cssnano-preset-advanced: 5.3.9(postcss@8.4.23) postcss: 8.4.23 postcss-sort-media-queries: 4.3.0(postcss@8.4.23) - tslib: 2.5.0 + tslib: 2.6.2 dev: false /@docusaurus/logger@2.4.0: @@ -6878,10 +7592,10 @@ packages: engines: {node: '>=16.14'} dependencies: chalk: 4.1.2 - tslib: 2.5.0 + tslib: 2.6.2 dev: false - /@docusaurus/mdx-loader@2.4.0(@docusaurus/types@2.4.0)(@swc/core@1.3.27)(react-dom@16.14.0)(react@16.14.0): + /@docusaurus/mdx-loader@2.4.0(@docusaurus/types@2.4.0)(react-dom@16.14.0)(react@16.14.0): resolution: {integrity: sha512-GWoH4izZKOmFoC+gbI2/y8deH/xKLvzz/T5BsEexBye8EHQlwsA7FMrVa48N063bJBH4FUOiRRXxk5rq9cC36g==} engines: {node: '>=16.14'} peerDependencies: @@ -6891,7 +7605,7 @@ packages: '@babel/parser': 7.21.8 '@babel/traverse': 7.21.5 '@docusaurus/logger': 2.4.0 - '@docusaurus/utils': 2.4.0(@docusaurus/types@2.4.0)(@swc/core@1.3.27) + '@docusaurus/utils': 2.4.0(@docusaurus/types@2.4.0) '@mdx-js/mdx': 1.6.22 escape-html: 1.0.3 file-loader: 6.2.0(webpack@5.75.0) @@ -6902,11 +7616,11 @@ packages: react-dom: 16.14.0(react@16.14.0) remark-emoji: 2.2.0 stringify-object: 3.3.0 - tslib: 2.5.0 + tslib: 2.6.2 unified: 9.2.2 unist-util-visit: 2.0.3 url-loader: 4.1.1(file-loader@6.2.0)(webpack@5.75.0) - webpack: 5.75.0(@swc/core@1.3.27) + webpack: 5.75.0 transitivePeerDependencies: - '@docusaurus/types' - '@swc/core' @@ -6916,14 +7630,14 @@ packages: - webpack-cli dev: false - /@docusaurus/module-type-aliases@2.4.0(@swc/core@1.3.27)(react-dom@16.14.0)(react@16.14.0): + /@docusaurus/module-type-aliases@2.4.0(react-dom@16.14.0)(react@16.14.0): resolution: {integrity: sha512-YEQO2D3UXs72qCn8Cr+RlycSQXVGN9iEUyuHwTuK4/uL/HFomB2FHSU0vSDM23oLd+X/KibQ3Ez6nGjQLqXcHg==} peerDependencies: react: '*' react-dom: '*' dependencies: '@docusaurus/react-loadable': 5.5.2(react@16.14.0) - '@docusaurus/types': 2.4.0(@swc/core@1.3.27)(react-dom@16.14.0)(react@16.14.0) + '@docusaurus/types': 2.4.0(react-dom@16.14.0)(react@16.14.0) '@types/history': 4.7.11 '@types/react': 18.0.28 '@types/react-router-config': 5.0.6 @@ -6938,20 +7652,20 @@ packages: - uglify-js - webpack-cli - /@docusaurus/plugin-content-blog@2.4.0(@swc/core@1.3.27)(eslint@8.34.0)(react-dom@16.14.0)(react@16.14.0)(typescript@5.0.4): + /@docusaurus/plugin-content-blog@2.4.0(eslint@8.34.0)(react-dom@16.14.0)(react@16.14.0)(typescript@5.0.4): resolution: {integrity: sha512-YwkAkVUxtxoBAIj/MCb4ohN0SCtHBs4AS75jMhPpf67qf3j+U/4n33cELq7567hwyZ6fMz2GPJcVmctzlGGThQ==} engines: {node: '>=16.14'} peerDependencies: react: ^16.8.4 || ^17.0.0 react-dom: ^16.8.4 || ^17.0.0 dependencies: - '@docusaurus/core': 2.4.0(@docusaurus/types@2.4.0)(@swc/core@1.3.27)(eslint@8.34.0)(react-dom@16.14.0)(react@16.14.0)(typescript@5.0.4) + '@docusaurus/core': 2.4.0(@docusaurus/types@2.4.0)(eslint@8.34.0)(react-dom@16.14.0)(react@16.14.0)(typescript@5.0.4) '@docusaurus/logger': 2.4.0 - '@docusaurus/mdx-loader': 2.4.0(@docusaurus/types@2.4.0)(@swc/core@1.3.27)(react-dom@16.14.0)(react@16.14.0) - '@docusaurus/types': 2.4.0(@swc/core@1.3.27)(react-dom@16.14.0)(react@16.14.0) - '@docusaurus/utils': 2.4.0(@docusaurus/types@2.4.0)(@swc/core@1.3.27) + '@docusaurus/mdx-loader': 2.4.0(@docusaurus/types@2.4.0)(react-dom@16.14.0)(react@16.14.0) + '@docusaurus/types': 2.4.0(react-dom@16.14.0)(react@16.14.0) + '@docusaurus/utils': 2.4.0(@docusaurus/types@2.4.0) '@docusaurus/utils-common': 2.4.0(@docusaurus/types@2.4.0) - '@docusaurus/utils-validation': 2.4.0(@docusaurus/types@2.4.0)(@swc/core@1.3.27) + '@docusaurus/utils-validation': 2.4.0(@docusaurus/types@2.4.0) cheerio: 1.0.0-rc.12 feed: 4.2.2 fs-extra: 10.1.0 @@ -6959,10 +7673,10 @@ packages: react: 16.14.0 react-dom: 16.14.0(react@16.14.0) reading-time: 1.5.0 - tslib: 2.5.0 + tslib: 2.6.2 unist-util-visit: 2.0.3 utility-types: 3.10.0 - webpack: 5.75.0(@swc/core@1.3.27) + webpack: 5.75.0 transitivePeerDependencies: - '@parcel/css' - '@swc/core' @@ -6981,20 +7695,20 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-content-docs@2.4.0(@swc/core@1.3.27)(eslint@8.34.0)(react-dom@16.14.0)(react@16.14.0)(typescript@5.0.4): + /@docusaurus/plugin-content-docs@2.4.0(eslint@8.34.0)(react-dom@16.14.0)(react@16.14.0)(typescript@5.0.4): resolution: {integrity: sha512-ic/Z/ZN5Rk/RQo+Io6rUGpToOtNbtPloMR2JcGwC1xT2riMu6zzfSwmBi9tHJgdXH6CB5jG+0dOZZO8QS5tmDg==} engines: {node: '>=16.14'} peerDependencies: react: ^16.8.4 || ^17.0.0 react-dom: ^16.8.4 || ^17.0.0 dependencies: - '@docusaurus/core': 2.4.0(@docusaurus/types@2.4.0)(@swc/core@1.3.27)(eslint@8.34.0)(react-dom@16.14.0)(react@16.14.0)(typescript@5.0.4) + '@docusaurus/core': 2.4.0(@docusaurus/types@2.4.0)(eslint@8.34.0)(react-dom@16.14.0)(react@16.14.0)(typescript@5.0.4) '@docusaurus/logger': 2.4.0 - '@docusaurus/mdx-loader': 2.4.0(@docusaurus/types@2.4.0)(@swc/core@1.3.27)(react-dom@16.14.0)(react@16.14.0) - '@docusaurus/module-type-aliases': 2.4.0(@swc/core@1.3.27)(react-dom@16.14.0)(react@16.14.0) - '@docusaurus/types': 2.4.0(@swc/core@1.3.27)(react-dom@16.14.0)(react@16.14.0) - '@docusaurus/utils': 2.4.0(@docusaurus/types@2.4.0)(@swc/core@1.3.27) - '@docusaurus/utils-validation': 2.4.0(@docusaurus/types@2.4.0)(@swc/core@1.3.27) + '@docusaurus/mdx-loader': 2.4.0(@docusaurus/types@2.4.0)(react-dom@16.14.0)(react@16.14.0) + '@docusaurus/module-type-aliases': 2.4.0(react-dom@16.14.0)(react@16.14.0) + '@docusaurus/types': 2.4.0(react-dom@16.14.0)(react@16.14.0) + '@docusaurus/utils': 2.4.0(@docusaurus/types@2.4.0) + '@docusaurus/utils-validation': 2.4.0(@docusaurus/types@2.4.0) '@types/react-router-config': 5.0.6 combine-promises: 1.1.0 fs-extra: 10.1.0 @@ -7003,9 +7717,9 @@ packages: lodash: 4.17.21 react: 16.14.0 react-dom: 16.14.0(react@16.14.0) - tslib: 2.5.0 + tslib: 2.6.2 utility-types: 3.10.0 - webpack: 5.75.0(@swc/core@1.3.27) + webpack: 5.75.0 transitivePeerDependencies: - '@parcel/css' - '@swc/core' @@ -7024,23 +7738,23 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-content-pages@2.4.0(@swc/core@1.3.27)(eslint@8.34.0)(react-dom@16.14.0)(react@16.14.0)(typescript@5.0.4): + /@docusaurus/plugin-content-pages@2.4.0(eslint@8.34.0)(react-dom@16.14.0)(react@16.14.0)(typescript@5.0.4): resolution: {integrity: sha512-Pk2pOeOxk8MeU3mrTU0XLIgP9NZixbdcJmJ7RUFrZp1Aj42nd0RhIT14BGvXXyqb8yTQlk4DmYGAzqOfBsFyGw==} engines: {node: '>=16.14'} peerDependencies: react: ^16.8.4 || ^17.0.0 react-dom: ^16.8.4 || ^17.0.0 dependencies: - '@docusaurus/core': 2.4.0(@docusaurus/types@2.4.0)(@swc/core@1.3.27)(eslint@8.34.0)(react-dom@16.14.0)(react@16.14.0)(typescript@5.0.4) - '@docusaurus/mdx-loader': 2.4.0(@docusaurus/types@2.4.0)(@swc/core@1.3.27)(react-dom@16.14.0)(react@16.14.0) - '@docusaurus/types': 2.4.0(@swc/core@1.3.27)(react-dom@16.14.0)(react@16.14.0) - '@docusaurus/utils': 2.4.0(@docusaurus/types@2.4.0)(@swc/core@1.3.27) - '@docusaurus/utils-validation': 2.4.0(@docusaurus/types@2.4.0)(@swc/core@1.3.27) + '@docusaurus/core': 2.4.0(@docusaurus/types@2.4.0)(eslint@8.34.0)(react-dom@16.14.0)(react@16.14.0)(typescript@5.0.4) + '@docusaurus/mdx-loader': 2.4.0(@docusaurus/types@2.4.0)(react-dom@16.14.0)(react@16.14.0) + '@docusaurus/types': 2.4.0(react-dom@16.14.0)(react@16.14.0) + '@docusaurus/utils': 2.4.0(@docusaurus/types@2.4.0) + '@docusaurus/utils-validation': 2.4.0(@docusaurus/types@2.4.0) fs-extra: 10.1.0 react: 16.14.0 react-dom: 16.14.0(react@16.14.0) - tslib: 2.5.0 - webpack: 5.75.0(@swc/core@1.3.27) + tslib: 2.6.2 + webpack: 5.75.0 transitivePeerDependencies: - '@parcel/css' - '@swc/core' @@ -7059,21 +7773,21 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-debug@2.4.0(@swc/core@1.3.27)(@types/react@18.0.28)(eslint@8.34.0)(react-dom@16.14.0)(react@16.14.0)(typescript@5.0.4): + /@docusaurus/plugin-debug@2.4.0(@types/react@18.0.28)(eslint@8.34.0)(react-dom@16.14.0)(react@16.14.0)(typescript@5.0.4): resolution: {integrity: sha512-KC56DdYjYT7Txyux71vXHXGYZuP6yYtqwClvYpjKreWIHWus5Zt6VNi23rMZv3/QKhOCrN64zplUbdfQMvddBQ==} engines: {node: '>=16.14'} peerDependencies: react: ^16.8.4 || ^17.0.0 react-dom: ^16.8.4 || ^17.0.0 dependencies: - '@docusaurus/core': 2.4.0(@docusaurus/types@2.4.0)(@swc/core@1.3.27)(eslint@8.34.0)(react-dom@16.14.0)(react@16.14.0)(typescript@5.0.4) - '@docusaurus/types': 2.4.0(@swc/core@1.3.27)(react-dom@16.14.0)(react@16.14.0) - '@docusaurus/utils': 2.4.0(@docusaurus/types@2.4.0)(@swc/core@1.3.27) + '@docusaurus/core': 2.4.0(@docusaurus/types@2.4.0)(eslint@8.34.0)(react-dom@16.14.0)(react@16.14.0)(typescript@5.0.4) + '@docusaurus/types': 2.4.0(react-dom@16.14.0)(react@16.14.0) + '@docusaurus/utils': 2.4.0(@docusaurus/types@2.4.0) fs-extra: 10.1.0 react: 16.14.0 react-dom: 16.14.0(react@16.14.0) react-json-view: 1.21.3(@types/react@18.0.28)(react-dom@16.14.0)(react@16.14.0) - tslib: 2.5.0 + tslib: 2.6.2 transitivePeerDependencies: - '@parcel/css' - '@swc/core' @@ -7094,19 +7808,19 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-google-analytics@2.4.0(@swc/core@1.3.27)(eslint@8.34.0)(react-dom@16.14.0)(react@16.14.0)(typescript@5.0.4): + /@docusaurus/plugin-google-analytics@2.4.0(eslint@8.34.0)(react-dom@16.14.0)(react@16.14.0)(typescript@5.0.4): resolution: {integrity: sha512-uGUzX67DOAIglygdNrmMOvEp8qG03X20jMWadeqVQktS6nADvozpSLGx4J0xbkblhJkUzN21WiilsP9iVP+zkw==} engines: {node: '>=16.14'} peerDependencies: react: ^16.8.4 || ^17.0.0 react-dom: ^16.8.4 || ^17.0.0 dependencies: - '@docusaurus/core': 2.4.0(@docusaurus/types@2.4.0)(@swc/core@1.3.27)(eslint@8.34.0)(react-dom@16.14.0)(react@16.14.0)(typescript@5.0.4) - '@docusaurus/types': 2.4.0(@swc/core@1.3.27)(react-dom@16.14.0)(react@16.14.0) - '@docusaurus/utils-validation': 2.4.0(@docusaurus/types@2.4.0)(@swc/core@1.3.27) + '@docusaurus/core': 2.4.0(@docusaurus/types@2.4.0)(eslint@8.34.0)(react-dom@16.14.0)(react@16.14.0)(typescript@5.0.4) + '@docusaurus/types': 2.4.0(react-dom@16.14.0)(react@16.14.0) + '@docusaurus/utils-validation': 2.4.0(@docusaurus/types@2.4.0) react: 16.14.0 react-dom: 16.14.0(react@16.14.0) - tslib: 2.5.0 + tslib: 2.6.2 transitivePeerDependencies: - '@parcel/css' - '@swc/core' @@ -7125,19 +7839,19 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-google-gtag@2.4.0(@swc/core@1.3.27)(eslint@8.34.0)(react-dom@16.14.0)(react@16.14.0)(typescript@5.0.4): + /@docusaurus/plugin-google-gtag@2.4.0(eslint@8.34.0)(react-dom@16.14.0)(react@16.14.0)(typescript@5.0.4): resolution: {integrity: sha512-adj/70DANaQs2+TF/nRdMezDXFAV/O/pjAbUgmKBlyOTq5qoMe0Tk4muvQIwWUmiUQxFJe+sKlZGM771ownyOg==} engines: {node: '>=16.14'} peerDependencies: react: ^16.8.4 || ^17.0.0 react-dom: ^16.8.4 || ^17.0.0 dependencies: - '@docusaurus/core': 2.4.0(@docusaurus/types@2.4.0)(@swc/core@1.3.27)(eslint@8.34.0)(react-dom@16.14.0)(react@16.14.0)(typescript@5.0.4) - '@docusaurus/types': 2.4.0(@swc/core@1.3.27)(react-dom@16.14.0)(react@16.14.0) - '@docusaurus/utils-validation': 2.4.0(@docusaurus/types@2.4.0)(@swc/core@1.3.27) + '@docusaurus/core': 2.4.0(@docusaurus/types@2.4.0)(eslint@8.34.0)(react-dom@16.14.0)(react@16.14.0)(typescript@5.0.4) + '@docusaurus/types': 2.4.0(react-dom@16.14.0)(react@16.14.0) + '@docusaurus/utils-validation': 2.4.0(@docusaurus/types@2.4.0) react: 16.14.0 react-dom: 16.14.0(react@16.14.0) - tslib: 2.5.0 + tslib: 2.6.2 transitivePeerDependencies: - '@parcel/css' - '@swc/core' @@ -7156,19 +7870,19 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-google-tag-manager@2.4.0(@swc/core@1.3.27)(eslint@8.34.0)(react-dom@16.14.0)(react@16.14.0)(typescript@5.0.4): + /@docusaurus/plugin-google-tag-manager@2.4.0(eslint@8.34.0)(react-dom@16.14.0)(react@16.14.0)(typescript@5.0.4): resolution: {integrity: sha512-E66uGcYs4l7yitmp/8kMEVQftFPwV9iC62ORh47Veqzs6ExwnhzBkJmwDnwIysHBF1vlxnzET0Fl2LfL5fRR3A==} engines: {node: '>=16.14'} peerDependencies: react: ^16.8.4 || ^17.0.0 react-dom: ^16.8.4 || ^17.0.0 dependencies: - '@docusaurus/core': 2.4.0(@docusaurus/types@2.4.0)(@swc/core@1.3.27)(eslint@8.34.0)(react-dom@16.14.0)(react@16.14.0)(typescript@5.0.4) - '@docusaurus/types': 2.4.0(@swc/core@1.3.27)(react-dom@16.14.0)(react@16.14.0) - '@docusaurus/utils-validation': 2.4.0(@docusaurus/types@2.4.0)(@swc/core@1.3.27) + '@docusaurus/core': 2.4.0(@docusaurus/types@2.4.0)(eslint@8.34.0)(react-dom@16.14.0)(react@16.14.0)(typescript@5.0.4) + '@docusaurus/types': 2.4.0(react-dom@16.14.0)(react@16.14.0) + '@docusaurus/utils-validation': 2.4.0(@docusaurus/types@2.4.0) react: 16.14.0 react-dom: 16.14.0(react@16.14.0) - tslib: 2.5.0 + tslib: 2.6.2 transitivePeerDependencies: - '@parcel/css' - '@swc/core' @@ -7187,24 +7901,24 @@ packages: - webpack-cli dev: false - /@docusaurus/plugin-sitemap@2.4.0(@swc/core@1.3.27)(eslint@8.34.0)(react-dom@16.14.0)(react@16.14.0)(typescript@5.0.4): + /@docusaurus/plugin-sitemap@2.4.0(eslint@8.34.0)(react-dom@16.14.0)(react@16.14.0)(typescript@5.0.4): resolution: {integrity: sha512-pZxh+ygfnI657sN8a/FkYVIAmVv0CGk71QMKqJBOfMmDHNN1FeDeFkBjWP49ejBqpqAhjufkv5UWq3UOu2soCw==} engines: {node: '>=16.14'} peerDependencies: react: ^16.8.4 || ^17.0.0 react-dom: ^16.8.4 || ^17.0.0 dependencies: - '@docusaurus/core': 2.4.0(@docusaurus/types@2.4.0)(@swc/core@1.3.27)(eslint@8.34.0)(react-dom@16.14.0)(react@16.14.0)(typescript@5.0.4) + '@docusaurus/core': 2.4.0(@docusaurus/types@2.4.0)(eslint@8.34.0)(react-dom@16.14.0)(react@16.14.0)(typescript@5.0.4) '@docusaurus/logger': 2.4.0 - '@docusaurus/types': 2.4.0(@swc/core@1.3.27)(react-dom@16.14.0)(react@16.14.0) - '@docusaurus/utils': 2.4.0(@docusaurus/types@2.4.0)(@swc/core@1.3.27) + '@docusaurus/types': 2.4.0(react-dom@16.14.0)(react@16.14.0) + '@docusaurus/utils': 2.4.0(@docusaurus/types@2.4.0) '@docusaurus/utils-common': 2.4.0(@docusaurus/types@2.4.0) - '@docusaurus/utils-validation': 2.4.0(@docusaurus/types@2.4.0)(@swc/core@1.3.27) + '@docusaurus/utils-validation': 2.4.0(@docusaurus/types@2.4.0) fs-extra: 10.1.0 react: 16.14.0 react-dom: 16.14.0(react@16.14.0) sitemap: 7.1.1 - tslib: 2.5.0 + tslib: 2.6.2 transitivePeerDependencies: - '@parcel/css' - '@swc/core' @@ -7223,26 +7937,26 @@ packages: - webpack-cli dev: false - /@docusaurus/preset-classic@2.4.0(@algolia/client-search@4.14.3)(@swc/core@1.3.27)(@types/react@18.0.28)(eslint@8.34.0)(react-dom@16.14.0)(react@16.14.0)(typescript@5.0.4): + /@docusaurus/preset-classic@2.4.0(@algolia/client-search@4.14.3)(@types/react@18.0.28)(eslint@8.34.0)(react-dom@16.14.0)(react@16.14.0)(typescript@5.0.4): resolution: {integrity: sha512-/5z5o/9bc6+P5ool2y01PbJhoGddEGsC0ej1MF6mCoazk8A+kW4feoUd68l7Bnv01rCnG3xy7kHUQP97Y0grUA==} engines: {node: '>=16.14'} peerDependencies: react: ^16.8.4 || ^17.0.0 react-dom: ^16.8.4 || ^17.0.0 dependencies: - '@docusaurus/core': 2.4.0(@docusaurus/types@2.4.0)(@swc/core@1.3.27)(eslint@8.34.0)(react-dom@16.14.0)(react@16.14.0)(typescript@5.0.4) - '@docusaurus/plugin-content-blog': 2.4.0(@swc/core@1.3.27)(eslint@8.34.0)(react-dom@16.14.0)(react@16.14.0)(typescript@5.0.4) - '@docusaurus/plugin-content-docs': 2.4.0(@swc/core@1.3.27)(eslint@8.34.0)(react-dom@16.14.0)(react@16.14.0)(typescript@5.0.4) - '@docusaurus/plugin-content-pages': 2.4.0(@swc/core@1.3.27)(eslint@8.34.0)(react-dom@16.14.0)(react@16.14.0)(typescript@5.0.4) - '@docusaurus/plugin-debug': 2.4.0(@swc/core@1.3.27)(@types/react@18.0.28)(eslint@8.34.0)(react-dom@16.14.0)(react@16.14.0)(typescript@5.0.4) - '@docusaurus/plugin-google-analytics': 2.4.0(@swc/core@1.3.27)(eslint@8.34.0)(react-dom@16.14.0)(react@16.14.0)(typescript@5.0.4) - '@docusaurus/plugin-google-gtag': 2.4.0(@swc/core@1.3.27)(eslint@8.34.0)(react-dom@16.14.0)(react@16.14.0)(typescript@5.0.4) - '@docusaurus/plugin-google-tag-manager': 2.4.0(@swc/core@1.3.27)(eslint@8.34.0)(react-dom@16.14.0)(react@16.14.0)(typescript@5.0.4) - '@docusaurus/plugin-sitemap': 2.4.0(@swc/core@1.3.27)(eslint@8.34.0)(react-dom@16.14.0)(react@16.14.0)(typescript@5.0.4) - '@docusaurus/theme-classic': 2.4.0(@swc/core@1.3.27)(eslint@8.34.0)(react-dom@16.14.0)(react@16.14.0)(typescript@5.0.4) - '@docusaurus/theme-common': 2.4.0(@docusaurus/types@2.4.0)(@swc/core@1.3.27)(eslint@8.34.0)(react-dom@16.14.0)(react@16.14.0)(typescript@5.0.4) - '@docusaurus/theme-search-algolia': 2.4.0(@algolia/client-search@4.14.3)(@docusaurus/types@2.4.0)(@swc/core@1.3.27)(@types/react@18.0.28)(eslint@8.34.0)(react-dom@16.14.0)(react@16.14.0)(typescript@5.0.4) - '@docusaurus/types': 2.4.0(@swc/core@1.3.27)(react-dom@16.14.0)(react@16.14.0) + '@docusaurus/core': 2.4.0(@docusaurus/types@2.4.0)(eslint@8.34.0)(react-dom@16.14.0)(react@16.14.0)(typescript@5.0.4) + '@docusaurus/plugin-content-blog': 2.4.0(eslint@8.34.0)(react-dom@16.14.0)(react@16.14.0)(typescript@5.0.4) + '@docusaurus/plugin-content-docs': 2.4.0(eslint@8.34.0)(react-dom@16.14.0)(react@16.14.0)(typescript@5.0.4) + '@docusaurus/plugin-content-pages': 2.4.0(eslint@8.34.0)(react-dom@16.14.0)(react@16.14.0)(typescript@5.0.4) + '@docusaurus/plugin-debug': 2.4.0(@types/react@18.0.28)(eslint@8.34.0)(react-dom@16.14.0)(react@16.14.0)(typescript@5.0.4) + '@docusaurus/plugin-google-analytics': 2.4.0(eslint@8.34.0)(react-dom@16.14.0)(react@16.14.0)(typescript@5.0.4) + '@docusaurus/plugin-google-gtag': 2.4.0(eslint@8.34.0)(react-dom@16.14.0)(react@16.14.0)(typescript@5.0.4) + '@docusaurus/plugin-google-tag-manager': 2.4.0(eslint@8.34.0)(react-dom@16.14.0)(react@16.14.0)(typescript@5.0.4) + '@docusaurus/plugin-sitemap': 2.4.0(eslint@8.34.0)(react-dom@16.14.0)(react@16.14.0)(typescript@5.0.4) + '@docusaurus/theme-classic': 2.4.0(eslint@8.34.0)(react-dom@16.14.0)(react@16.14.0)(typescript@5.0.4) + '@docusaurus/theme-common': 2.4.0(@docusaurus/types@2.4.0)(eslint@8.34.0)(react-dom@16.14.0)(react@16.14.0)(typescript@5.0.4) + '@docusaurus/theme-search-algolia': 2.4.0(@algolia/client-search@4.14.3)(@docusaurus/types@2.4.0)(@types/react@18.0.28)(eslint@8.34.0)(react-dom@16.14.0)(react@16.14.0)(typescript@5.0.4) + '@docusaurus/types': 2.4.0(react-dom@16.14.0)(react@16.14.0) react: 16.14.0 react-dom: 16.14.0(react@16.14.0) transitivePeerDependencies: @@ -7275,25 +7989,25 @@ packages: prop-types: 15.8.1 react: 16.14.0 - /@docusaurus/theme-classic@2.4.0(@swc/core@1.3.27)(eslint@8.34.0)(react-dom@16.14.0)(react@16.14.0)(typescript@5.0.4): + /@docusaurus/theme-classic@2.4.0(eslint@8.34.0)(react-dom@16.14.0)(react@16.14.0)(typescript@5.0.4): resolution: {integrity: sha512-GMDX5WU6Z0OC65eQFgl3iNNEbI9IMJz9f6KnOyuMxNUR6q0qVLsKCNopFUDfFNJ55UU50o7P7o21yVhkwpfJ9w==} engines: {node: '>=16.14'} peerDependencies: react: ^16.8.4 || ^17.0.0 react-dom: ^16.8.4 || ^17.0.0 dependencies: - '@docusaurus/core': 2.4.0(@docusaurus/types@2.4.0)(@swc/core@1.3.27)(eslint@8.34.0)(react-dom@16.14.0)(react@16.14.0)(typescript@5.0.4) - '@docusaurus/mdx-loader': 2.4.0(@docusaurus/types@2.4.0)(@swc/core@1.3.27)(react-dom@16.14.0)(react@16.14.0) - '@docusaurus/module-type-aliases': 2.4.0(@swc/core@1.3.27)(react-dom@16.14.0)(react@16.14.0) - '@docusaurus/plugin-content-blog': 2.4.0(@swc/core@1.3.27)(eslint@8.34.0)(react-dom@16.14.0)(react@16.14.0)(typescript@5.0.4) - '@docusaurus/plugin-content-docs': 2.4.0(@swc/core@1.3.27)(eslint@8.34.0)(react-dom@16.14.0)(react@16.14.0)(typescript@5.0.4) - '@docusaurus/plugin-content-pages': 2.4.0(@swc/core@1.3.27)(eslint@8.34.0)(react-dom@16.14.0)(react@16.14.0)(typescript@5.0.4) - '@docusaurus/theme-common': 2.4.0(@docusaurus/types@2.4.0)(@swc/core@1.3.27)(eslint@8.34.0)(react-dom@16.14.0)(react@16.14.0)(typescript@5.0.4) + '@docusaurus/core': 2.4.0(@docusaurus/types@2.4.0)(eslint@8.34.0)(react-dom@16.14.0)(react@16.14.0)(typescript@5.0.4) + '@docusaurus/mdx-loader': 2.4.0(@docusaurus/types@2.4.0)(react-dom@16.14.0)(react@16.14.0) + '@docusaurus/module-type-aliases': 2.4.0(react-dom@16.14.0)(react@16.14.0) + '@docusaurus/plugin-content-blog': 2.4.0(eslint@8.34.0)(react-dom@16.14.0)(react@16.14.0)(typescript@5.0.4) + '@docusaurus/plugin-content-docs': 2.4.0(eslint@8.34.0)(react-dom@16.14.0)(react@16.14.0)(typescript@5.0.4) + '@docusaurus/plugin-content-pages': 2.4.0(eslint@8.34.0)(react-dom@16.14.0)(react@16.14.0)(typescript@5.0.4) + '@docusaurus/theme-common': 2.4.0(@docusaurus/types@2.4.0)(eslint@8.34.0)(react-dom@16.14.0)(react@16.14.0)(typescript@5.0.4) '@docusaurus/theme-translations': 2.4.0 - '@docusaurus/types': 2.4.0(@swc/core@1.3.27)(react-dom@16.14.0)(react@16.14.0) - '@docusaurus/utils': 2.4.0(@docusaurus/types@2.4.0)(@swc/core@1.3.27) + '@docusaurus/types': 2.4.0(react-dom@16.14.0)(react@16.14.0) + '@docusaurus/utils': 2.4.0(@docusaurus/types@2.4.0) '@docusaurus/utils-common': 2.4.0(@docusaurus/types@2.4.0) - '@docusaurus/utils-validation': 2.4.0(@docusaurus/types@2.4.0)(@swc/core@1.3.27) + '@docusaurus/utils-validation': 2.4.0(@docusaurus/types@2.4.0) '@mdx-js/react': 1.6.22(react@16.14.0) clsx: 1.2.1 copy-text-to-clipboard: 3.0.1 @@ -7307,7 +8021,7 @@ packages: react-dom: 16.14.0(react@16.14.0) react-router-dom: 5.3.4(react@16.14.0) rtlcss: 3.5.0 - tslib: 2.5.0 + tslib: 2.6.2 utility-types: 3.10.0 transitivePeerDependencies: - '@parcel/css' @@ -7327,19 +8041,19 @@ packages: - webpack-cli dev: false - /@docusaurus/theme-common@2.4.0(@docusaurus/types@2.4.0)(@swc/core@1.3.27)(eslint@8.34.0)(react-dom@16.14.0)(react@16.14.0)(typescript@5.0.4): + /@docusaurus/theme-common@2.4.0(@docusaurus/types@2.4.0)(eslint@8.34.0)(react-dom@16.14.0)(react@16.14.0)(typescript@5.0.4): resolution: {integrity: sha512-IkG/l5f/FLY6cBIxtPmFnxpuPzc5TupuqlOx+XDN+035MdQcAh8wHXXZJAkTeYDeZ3anIUSUIvWa7/nRKoQEfg==} engines: {node: '>=16.14'} peerDependencies: react: ^16.8.4 || ^17.0.0 react-dom: ^16.8.4 || ^17.0.0 dependencies: - '@docusaurus/mdx-loader': 2.4.0(@docusaurus/types@2.4.0)(@swc/core@1.3.27)(react-dom@16.14.0)(react@16.14.0) - '@docusaurus/module-type-aliases': 2.4.0(@swc/core@1.3.27)(react-dom@16.14.0)(react@16.14.0) - '@docusaurus/plugin-content-blog': 2.4.0(@swc/core@1.3.27)(eslint@8.34.0)(react-dom@16.14.0)(react@16.14.0)(typescript@5.0.4) - '@docusaurus/plugin-content-docs': 2.4.0(@swc/core@1.3.27)(eslint@8.34.0)(react-dom@16.14.0)(react@16.14.0)(typescript@5.0.4) - '@docusaurus/plugin-content-pages': 2.4.0(@swc/core@1.3.27)(eslint@8.34.0)(react-dom@16.14.0)(react@16.14.0)(typescript@5.0.4) - '@docusaurus/utils': 2.4.0(@docusaurus/types@2.4.0)(@swc/core@1.3.27) + '@docusaurus/mdx-loader': 2.4.0(@docusaurus/types@2.4.0)(react-dom@16.14.0)(react@16.14.0) + '@docusaurus/module-type-aliases': 2.4.0(react-dom@16.14.0)(react@16.14.0) + '@docusaurus/plugin-content-blog': 2.4.0(eslint@8.34.0)(react-dom@16.14.0)(react@16.14.0)(typescript@5.0.4) + '@docusaurus/plugin-content-docs': 2.4.0(eslint@8.34.0)(react-dom@16.14.0)(react@16.14.0)(typescript@5.0.4) + '@docusaurus/plugin-content-pages': 2.4.0(eslint@8.34.0)(react-dom@16.14.0)(react@16.14.0)(typescript@5.0.4) + '@docusaurus/utils': 2.4.0(@docusaurus/types@2.4.0) '@docusaurus/utils-common': 2.4.0(@docusaurus/types@2.4.0) '@types/history': 4.7.11 '@types/react': 18.0.28 @@ -7349,7 +8063,7 @@ packages: prism-react-renderer: 1.3.5(react@16.14.0) react: 16.14.0 react-dom: 16.14.0(react@16.14.0) - tslib: 2.5.0 + tslib: 2.6.2 use-sync-external-store: 1.2.0(react@16.14.0) utility-types: 3.10.0 transitivePeerDependencies: @@ -7371,7 +8085,7 @@ packages: - webpack-cli dev: false - /@docusaurus/theme-search-algolia@2.4.0(@algolia/client-search@4.14.3)(@docusaurus/types@2.4.0)(@swc/core@1.3.27)(@types/react@18.0.28)(eslint@8.34.0)(react-dom@16.14.0)(react@16.14.0)(typescript@5.0.4): + /@docusaurus/theme-search-algolia@2.4.0(@algolia/client-search@4.14.3)(@docusaurus/types@2.4.0)(@types/react@18.0.28)(eslint@8.34.0)(react-dom@16.14.0)(react@16.14.0)(typescript@5.0.4): resolution: {integrity: sha512-pPCJSCL1Qt4pu/Z0uxBAuke0yEBbxh0s4fOvimna7TEcBLPq0x06/K78AaABXrTVQM6S0vdocFl9EoNgU17hqA==} engines: {node: '>=16.14'} peerDependencies: @@ -7379,13 +8093,13 @@ packages: react-dom: ^16.8.4 || ^17.0.0 dependencies: '@docsearch/react': 3.3.2(@algolia/client-search@4.14.3)(@types/react@18.0.28)(react-dom@16.14.0)(react@16.14.0) - '@docusaurus/core': 2.4.0(@docusaurus/types@2.4.0)(@swc/core@1.3.27)(eslint@8.34.0)(react-dom@16.14.0)(react@16.14.0)(typescript@5.0.4) + '@docusaurus/core': 2.4.0(@docusaurus/types@2.4.0)(eslint@8.34.0)(react-dom@16.14.0)(react@16.14.0)(typescript@5.0.4) '@docusaurus/logger': 2.4.0 - '@docusaurus/plugin-content-docs': 2.4.0(@swc/core@1.3.27)(eslint@8.34.0)(react-dom@16.14.0)(react@16.14.0)(typescript@5.0.4) - '@docusaurus/theme-common': 2.4.0(@docusaurus/types@2.4.0)(@swc/core@1.3.27)(eslint@8.34.0)(react-dom@16.14.0)(react@16.14.0)(typescript@5.0.4) + '@docusaurus/plugin-content-docs': 2.4.0(eslint@8.34.0)(react-dom@16.14.0)(react@16.14.0)(typescript@5.0.4) + '@docusaurus/theme-common': 2.4.0(@docusaurus/types@2.4.0)(eslint@8.34.0)(react-dom@16.14.0)(react@16.14.0)(typescript@5.0.4) '@docusaurus/theme-translations': 2.4.0 - '@docusaurus/utils': 2.4.0(@docusaurus/types@2.4.0)(@swc/core@1.3.27) - '@docusaurus/utils-validation': 2.4.0(@docusaurus/types@2.4.0)(@swc/core@1.3.27) + '@docusaurus/utils': 2.4.0(@docusaurus/types@2.4.0) + '@docusaurus/utils-validation': 2.4.0(@docusaurus/types@2.4.0) algoliasearch: 4.14.3 algoliasearch-helper: 3.11.3(algoliasearch@4.14.3) clsx: 1.2.1 @@ -7394,7 +8108,7 @@ packages: lodash: 4.17.21 react: 16.14.0 react-dom: 16.14.0(react@16.14.0) - tslib: 2.5.0 + tslib: 2.6.2 utility-types: 3.10.0 transitivePeerDependencies: - '@algolia/client-search' @@ -7422,10 +8136,10 @@ packages: engines: {node: '>=16.14'} dependencies: fs-extra: 10.1.0 - tslib: 2.5.0 + tslib: 2.6.2 dev: false - /@docusaurus/types@2.4.0(@swc/core@1.3.27)(react-dom@16.14.0)(react@16.14.0): + /@docusaurus/types@2.4.0(react-dom@16.14.0)(react@16.14.0): resolution: {integrity: sha512-xaBXr+KIPDkIaef06c+i2HeTqVNixB7yFut5fBXPGI2f1rrmEV2vLMznNGsFwvZ5XmA3Quuefd4OGRkdo97Dhw==} peerDependencies: react: ^16.8.4 || ^17.0.0 @@ -7439,7 +8153,7 @@ packages: react-dom: 16.14.0(react@16.14.0) react-helmet-async: 1.3.0(react-dom@16.14.0)(react@16.14.0) utility-types: 3.10.0 - webpack: 5.75.0(@swc/core@1.3.27) + webpack: 5.75.0 webpack-merge: 5.8.0 transitivePeerDependencies: - '@swc/core' @@ -7456,19 +8170,19 @@ packages: '@docusaurus/types': optional: true dependencies: - '@docusaurus/types': 2.4.0(@swc/core@1.3.27)(react-dom@16.14.0)(react@16.14.0) - tslib: 2.5.0 + '@docusaurus/types': 2.4.0(react-dom@16.14.0)(react@16.14.0) + tslib: 2.6.2 dev: false - /@docusaurus/utils-validation@2.4.0(@docusaurus/types@2.4.0)(@swc/core@1.3.27): + /@docusaurus/utils-validation@2.4.0(@docusaurus/types@2.4.0): resolution: {integrity: sha512-IrBsBbbAp6y7mZdJx4S4pIA7dUyWSA0GNosPk6ZJ0fX3uYIEQgcQSGIgTeSC+8xPEx3c16o03en1jSDpgQgz/w==} engines: {node: '>=16.14'} dependencies: '@docusaurus/logger': 2.4.0 - '@docusaurus/utils': 2.4.0(@docusaurus/types@2.4.0)(@swc/core@1.3.27) + '@docusaurus/utils': 2.4.0(@docusaurus/types@2.4.0) joi: 17.9.2 js-yaml: 4.1.0 - tslib: 2.5.0 + tslib: 2.6.2 transitivePeerDependencies: - '@docusaurus/types' - '@swc/core' @@ -7478,7 +8192,7 @@ packages: - webpack-cli dev: false - /@docusaurus/utils@2.4.0(@docusaurus/types@2.4.0)(@swc/core@1.3.27): + /@docusaurus/utils@2.4.0(@docusaurus/types@2.4.0): resolution: {integrity: sha512-89hLYkvtRX92j+C+ERYTuSUK6nF9bGM32QThcHPg2EDDHVw6FzYQXmX6/p+pU5SDyyx5nBlE4qXR92RxCAOqfg==} engines: {node: '>=16.14'} peerDependencies: @@ -7488,7 +8202,7 @@ packages: optional: true dependencies: '@docusaurus/logger': 2.4.0 - '@docusaurus/types': 2.4.0(@swc/core@1.3.27)(react-dom@16.14.0)(react@16.14.0) + '@docusaurus/types': 2.4.0(react-dom@16.14.0)(react@16.14.0) '@svgr/webpack': 6.5.1 escape-string-regexp: 4.0.0 file-loader: 6.2.0(webpack@5.75.0) @@ -7501,9 +8215,9 @@ packages: micromatch: 4.0.5 resolve-pathname: 3.0.0 shelljs: 0.8.5 - tslib: 2.5.0 + tslib: 2.6.2 url-loader: 4.1.1(file-loader@6.2.0)(webpack@5.75.0) - webpack: 5.75.0(@swc/core@1.3.27) + webpack: 5.75.0 transitivePeerDependencies: - '@swc/core' - esbuild @@ -7949,6 +8663,23 @@ packages: engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} dev: true + /@eslint/eslintrc@0.4.3: + resolution: {integrity: sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==} + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + ajv: 6.12.6 + debug: 4.3.4(supports-color@8.1.1) + espree: 7.3.1 + globals: 13.19.0 + ignore: 4.0.6 + import-fresh: 3.3.0 + js-yaml: 3.14.1 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + dev: true + /@eslint/eslintrc@1.4.1: resolution: {integrity: sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -8032,37 +8763,37 @@ packages: resolution: {integrity: sha512-SlsbRC/RX+/zg4AApWIFNDdkLtFbkq3LNoZWXZCE/nHVKqoIJyaoQyge/I0Y38vLxowUn9KTtXgusLD91+orbg==} dependencies: '@formatjs/intl-localematcher': 0.2.32 - tslib: 2.5.0 + tslib: 2.6.2 /@formatjs/fast-memoize@1.2.7: resolution: {integrity: sha512-hPeM5LXUUjtCKPybWOUAWpv8lpja8Xz+uKprFPJcg5F2Rd+/bf1E0UUsLRpaAgOReAf5HMRtoIgv/UcyPICrTQ==} dependencies: - tslib: 2.5.0 + tslib: 2.6.2 /@formatjs/icu-messageformat-parser@2.1.14: resolution: {integrity: sha512-0KqeVOb72losEhUW+59vhZGGd14s1f35uThfEMVKZHKLEObvJdFTiI3ZQwvTMUCzLEMxnS6mtnYPmG4mTvwd3Q==} dependencies: '@formatjs/ecma402-abstract': 1.14.3 '@formatjs/icu-skeleton-parser': 1.3.18 - tslib: 2.5.0 + tslib: 2.6.2 /@formatjs/icu-skeleton-parser@1.3.18: resolution: {integrity: sha512-ND1ZkZfmLPcHjAH1sVpkpQxA+QYfOX3py3SjKWMUVGDow18gZ0WPqz3F+pJLYQMpS2LnnQ5zYR2jPVYTbRwMpg==} dependencies: '@formatjs/ecma402-abstract': 1.14.3 - tslib: 2.5.0 + tslib: 2.6.2 /@formatjs/intl-displaynames@6.2.3: resolution: {integrity: sha512-teB0L68MDGM8jEKQg55w7nvFjzeLHE6e3eK/04s+iuEVYYmvjjiHJKHrthKENzcJ0F6mHf/AwXrbX+1mKxT6AQ==} dependencies: '@formatjs/ecma402-abstract': 1.14.3 '@formatjs/intl-localematcher': 0.2.32 - tslib: 2.5.0 + tslib: 2.6.2 /@formatjs/intl-getcanonicallocales@2.0.5: resolution: {integrity: sha512-YOk+Fa5gpPq5bdpm8JDAY5bkfCkR+NENZKQbLHeqhm8JchHcclPwZ9FU48gYGg3CW6Wi/cTCOvmOrzsIhlkr0w==} dependencies: - tslib: 2.4.1 + tslib: 2.6.2 dev: true /@formatjs/intl-listformat@7.1.7: @@ -8070,19 +8801,19 @@ packages: dependencies: '@formatjs/ecma402-abstract': 1.14.3 '@formatjs/intl-localematcher': 0.2.32 - tslib: 2.5.0 + tslib: 2.6.2 /@formatjs/intl-localematcher@0.2.32: resolution: {integrity: sha512-k/MEBstff4sttohyEpXxCmC3MqbUn9VvHGlZ8fauLzkbwXmVrEeyzS+4uhrvAk9DWU9/7otYWxyDox4nT/KVLQ==} dependencies: - tslib: 2.5.0 + tslib: 2.6.2 /@formatjs/intl-pluralrules@5.1.8: resolution: {integrity: sha512-uevO916EWoeuueqeNzHjnUzpfWZzXFJibC/sEvPR/ZiZH5btWuOLeJLdb1To4nMH8ZJQlmAf8SDpFf+eWvz5lQ==} dependencies: '@formatjs/ecma402-abstract': 1.14.3 '@formatjs/intl-localematcher': 0.2.32 - tslib: 2.4.1 + tslib: 2.6.2 dev: true /@formatjs/intl@2.6.3(typescript@5.0.4): @@ -8099,7 +8830,7 @@ packages: '@formatjs/intl-displaynames': 6.2.3 '@formatjs/intl-listformat': 7.1.7 intl-messageformat: 10.2.5 - tslib: 2.5.0 + tslib: 2.6.2 typescript: 5.0.4 /@formatjs/ts-transformer@3.11.5(ts-jest@28.0.5): @@ -8112,12 +8843,16 @@ packages: dependencies: '@formatjs/icu-messageformat-parser': 2.1.14 '@types/json-stable-stringify': 1.0.34 - '@types/node': 17.0.45 + '@types/node': 16.18.47 chalk: 4.1.2 json-stable-stringify: 1.0.2 ts-jest: 28.0.5(@babel/core@7.21.8)(babel-jest@28.1.3)(esbuild@0.16.17)(jest@28.1.3)(typescript@5.0.4) - tslib: 2.5.0 - typescript: 4.9.4 + tslib: 2.6.2 + typescript: 4.9.5 + dev: true + + /@gar/promisify@1.1.3: + resolution: {integrity: sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==} dev: true /@graphql-cli/common@4.1.0(graphql-config@3.0.3)(graphql@15.3.0)(yargs@16.0.3): @@ -8235,8 +8970,8 @@ packages: shell-quote: 1.7.4 string-env-interpolation: 1.0.1 ts-log: 2.2.5 - ts-node: 10.9.1(@swc/core@1.3.27)(@types/node@18.15.10)(typescript@5.0.4) - tslib: 2.5.0 + ts-node: 10.9.1(@types/node@18.15.10)(typescript@5.0.4) + tslib: 2.6.2 yaml: 1.10.2 yargs: 17.6.2 transitivePeerDependencies: @@ -8290,7 +9025,7 @@ packages: shell-quote: 1.7.4 string-env-interpolation: 1.0.1 ts-log: 2.2.5 - tslib: 2.5.0 + tslib: 2.6.2 yaml: 1.10.2 yargs: 17.6.2 transitivePeerDependencies: @@ -8673,7 +9408,7 @@ packages: '@graphql-tools/utils': 9.1.4(graphql@16.6.0) '@whatwg-node/fetch': 0.6.2 graphql: 16.6.0 - tslib: 2.5.0 + tslib: 2.6.2 transitivePeerDependencies: - encoding dev: true @@ -8698,7 +9433,7 @@ packages: '@graphql-tools/utils': 9.1.4(graphql@16.6.0) dataloader: 2.1.0 graphql: 16.6.0 - tslib: 2.5.0 + tslib: 2.6.2 value-or-promise: 1.0.12 dev: true @@ -8711,7 +9446,7 @@ packages: '@graphql-tools/utils': 9.1.4(graphql@16.6.0) globby: 11.1.0 graphql: 16.6.0 - tslib: 2.5.0 + tslib: 2.6.2 unixify: 1.0.0 transitivePeerDependencies: - '@babel/core' @@ -8727,7 +9462,7 @@ packages: '@graphql-tools/utils': 9.2.1(graphql@16.6.0) globby: 11.1.0 graphql: 16.6.0 - tslib: 2.5.0 + tslib: 2.6.2 unixify: 1.0.0 transitivePeerDependencies: - '@babel/core' @@ -8771,7 +9506,7 @@ packages: dependencies: graphql: 16.6.0 lodash.sortby: 4.7.0 - tslib: 2.5.0 + tslib: 2.6.2 dev: true /@graphql-tools/executor-graphql-ws@0.0.7(graphql@16.6.0): @@ -8785,7 +9520,7 @@ packages: graphql: 16.6.0 graphql-ws: 5.11.2(graphql@16.6.0) isomorphic-ws: 5.0.0(ws@8.12.0) - tslib: 2.5.0 + tslib: 2.6.2 ws: 8.12.0 transitivePeerDependencies: - bufferutil @@ -8804,7 +9539,7 @@ packages: extract-files: 11.0.0 graphql: 16.6.0 meros: 1.2.1(@types/node@18.15.10) - tslib: 2.5.0 + tslib: 2.6.2 value-or-promise: 1.0.12 transitivePeerDependencies: - '@types/node' @@ -8820,7 +9555,7 @@ packages: '@types/ws': 8.5.4 graphql: 16.6.0 isomorphic-ws: 5.0.0(ws@8.12.0) - tslib: 2.5.0 + tslib: 2.6.2 ws: 8.12.0 transitivePeerDependencies: - bufferutil @@ -8836,7 +9571,7 @@ packages: '@graphql-typed-document-node/core': 3.1.1(graphql@16.6.0) '@repeaterjs/repeater': 3.0.4 graphql: 16.6.0 - tslib: 2.5.0 + tslib: 2.6.2 value-or-promise: 1.0.12 dev: true @@ -8850,7 +9585,7 @@ packages: graphql: 16.6.0 is-glob: 4.0.3 micromatch: 4.0.5 - tslib: 2.5.0 + tslib: 2.6.2 unixify: 1.0.0 transitivePeerDependencies: - '@babel/core' @@ -8867,7 +9602,7 @@ packages: '@graphql-tools/utils': 9.1.4(graphql@16.6.0) '@whatwg-node/fetch': 0.6.2 graphql: 16.6.0 - tslib: 2.5.0 + tslib: 2.6.2 transitivePeerDependencies: - '@babel/core' - encoding @@ -8894,7 +9629,7 @@ packages: '@graphql-tools/utils': 9.1.4(graphql@16.6.0) globby: 11.1.0 graphql: 16.6.0 - tslib: 2.5.0 + tslib: 2.6.2 unixify: 1.0.0 dev: true @@ -8909,7 +9644,7 @@ packages: '@babel/types': 7.22.4 '@graphql-tools/utils': 9.1.4(graphql@16.6.0) graphql: 16.6.0 - tslib: 2.5.0 + tslib: 2.6.2 transitivePeerDependencies: - '@babel/core' - supports-color @@ -8926,7 +9661,7 @@ packages: '@babel/types': 7.22.4 '@graphql-tools/utils': 9.2.1(graphql@16.6.0) graphql: 16.6.0 - tslib: 2.5.0 + tslib: 2.6.2 transitivePeerDependencies: - '@babel/core' - supports-color @@ -8940,7 +9675,7 @@ packages: '@graphql-tools/utils': 9.1.4(graphql@16.6.0) graphql: 16.6.0 resolve-from: 5.0.0 - tslib: 2.5.0 + tslib: 2.6.2 dev: true /@graphql-tools/json-file-loader@6.2.6(graphql@16.6.0): @@ -8961,7 +9696,7 @@ packages: '@graphql-tools/utils': 9.1.4(graphql@16.6.0) globby: 11.1.0 graphql: 16.6.0 - tslib: 2.5.0 + tslib: 2.6.2 unixify: 1.0.0 dev: true @@ -9025,7 +9760,7 @@ packages: '@graphql-tools/utils': 8.12.0(graphql@16.6.0) graphql: 16.6.0 p-limit: 3.1.0 - tslib: 2.5.0 + tslib: 2.6.2 dev: true /@graphql-tools/merge@6.2.17(graphql@15.3.0): @@ -9057,7 +9792,7 @@ packages: dependencies: '@graphql-tools/utils': 8.9.0(graphql@15.3.0) graphql: 15.3.0 - tslib: 2.5.0 + tslib: 2.6.2 dev: true /@graphql-tools/merge@8.3.1(graphql@16.6.0): @@ -9067,7 +9802,7 @@ packages: dependencies: '@graphql-tools/utils': 8.9.0(graphql@16.6.0) graphql: 16.6.0 - tslib: 2.5.0 + tslib: 2.6.2 dev: true /@graphql-tools/merge@8.3.15(graphql@16.6.0): @@ -9077,7 +9812,7 @@ packages: dependencies: '@graphql-tools/utils': 9.1.4(graphql@16.6.0) graphql: 16.6.0 - tslib: 2.5.0 + tslib: 2.6.2 dev: true /@graphql-tools/merge@8.3.6(graphql@16.6.0): @@ -9087,7 +9822,7 @@ packages: dependencies: '@graphql-tools/utils': 8.12.0(graphql@16.6.0) graphql: 16.6.0 - tslib: 2.5.0 + tslib: 2.6.2 dev: true /@graphql-tools/optimize@1.3.1(graphql@16.6.0): @@ -9096,7 +9831,7 @@ packages: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 dependencies: graphql: 16.6.0 - tslib: 2.5.0 + tslib: 2.6.2 dev: true /@graphql-tools/prisma-loader@7.2.54(@types/node@18.15.10)(graphql@16.6.0): @@ -9122,7 +9857,7 @@ packages: jsonwebtoken: 9.0.0 lodash: 4.17.21 scuid: 1.1.0 - tslib: 2.5.0 + tslib: 2.6.2 yaml-ast-parser: 0.0.43 transitivePeerDependencies: - '@types/node' @@ -9140,7 +9875,7 @@ packages: '@ardatan/relay-compiler': 12.0.0(graphql@16.6.0) '@graphql-tools/utils': 9.1.4(graphql@16.6.0) graphql: 16.6.0 - tslib: 2.5.0 + tslib: 2.6.2 transitivePeerDependencies: - encoding - supports-color @@ -9165,7 +9900,7 @@ packages: '@graphql-tools/merge': 8.3.1(graphql@15.3.0) '@graphql-tools/utils': 8.9.0(graphql@15.3.0) graphql: 15.3.0 - tslib: 2.5.0 + tslib: 2.6.2 value-or-promise: 1.0.11 dev: true @@ -9177,7 +9912,7 @@ packages: '@graphql-tools/merge': 8.3.1(graphql@16.6.0) '@graphql-tools/utils': 8.9.0(graphql@16.6.0) graphql: 16.6.0 - tslib: 2.5.0 + tslib: 2.6.2 value-or-promise: 1.0.11 dev: true @@ -9189,7 +9924,7 @@ packages: '@graphql-tools/merge': 8.3.15(graphql@16.6.0) '@graphql-tools/utils': 9.1.4(graphql@16.6.0) graphql: 16.6.0 - tslib: 2.5.0 + tslib: 2.6.2 value-or-promise: 1.0.12 dev: true @@ -9201,7 +9936,7 @@ packages: '@graphql-tools/merge': 8.3.6(graphql@16.6.0) '@graphql-tools/utils': 8.12.0(graphql@16.6.0) graphql: 16.6.0 - tslib: 2.5.0 + tslib: 2.6.2 value-or-promise: 1.0.11 dev: true @@ -9253,7 +9988,7 @@ packages: '@whatwg-node/fetch': 0.6.2 graphql: 16.6.0 isomorphic-ws: 5.0.0(ws@8.12.0) - tslib: 2.5.0 + tslib: 2.6.2 value-or-promise: 1.0.12 ws: 8.12.0 transitivePeerDependencies: @@ -9320,7 +10055,7 @@ packages: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 dependencies: graphql: 16.6.0 - tslib: 2.5.0 + tslib: 2.6.2 dev: true /@graphql-tools/utils@8.13.1(graphql@16.6.0): @@ -9329,7 +10064,7 @@ packages: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 dependencies: graphql: 16.6.0 - tslib: 2.5.0 + tslib: 2.6.2 dev: true /@graphql-tools/utils@8.9.0(graphql@15.3.0): @@ -9338,7 +10073,7 @@ packages: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 dependencies: graphql: 15.3.0 - tslib: 2.5.0 + tslib: 2.6.2 dev: true /@graphql-tools/utils@8.9.0(graphql@16.6.0): @@ -9347,7 +10082,7 @@ packages: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 dependencies: graphql: 16.6.0 - tslib: 2.5.0 + tslib: 2.6.2 dev: true /@graphql-tools/utils@9.1.4(graphql@16.6.0): @@ -9356,7 +10091,7 @@ packages: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 dependencies: graphql: 16.6.0 - tslib: 2.5.0 + tslib: 2.6.2 dev: true /@graphql-tools/utils@9.2.1(graphql@16.6.0): @@ -9366,7 +10101,7 @@ packages: dependencies: '@graphql-typed-document-node/core': 3.2.0(graphql@16.6.0) graphql: 16.6.0 - tslib: 2.5.0 + tslib: 2.6.2 dev: true /@graphql-tools/wrap@7.0.8(graphql@16.6.0): @@ -9391,7 +10126,7 @@ packages: '@graphql-tools/schema': 9.0.13(graphql@16.6.0) '@graphql-tools/utils': 9.1.4(graphql@16.6.0) graphql: 16.6.0 - tslib: 2.5.0 + tslib: 2.6.2 value-or-promise: 1.0.12 dev: true @@ -9418,6 +10153,25 @@ packages: dependencies: graphql: 16.6.0 + /@grpc/grpc-js@1.9.2: + resolution: {integrity: sha512-Lf2pUhNTaviEdEaGgjU+29qw3arX7Qd/45q66F3z1EV5hroE6wM9xSHPvjB8EY+b1RmKZgwnLWXQorC6fZ9g5g==} + engines: {node: ^8.13.0 || >=10.10.0} + dependencies: + '@grpc/proto-loader': 0.7.9 + '@types/node': 18.15.10 + dev: false + + /@grpc/proto-loader@0.7.9: + resolution: {integrity: sha512-YJsOehVXzgurc+lLAxYnlSMc1p/Gu6VAvnfx0ATi2nzvr0YZcjhmZDeY8SeAKv1M7zE3aEJH0Xo9mK1iZ8GYoQ==} + engines: {node: '>=6'} + hasBin: true + dependencies: + lodash.camelcase: 4.3.0 + long: 5.2.3 + protobufjs: 7.2.5 + yargs: 17.7.2 + dev: false + /@hapi/address@2.1.4: resolution: {integrity: sha512-QD1PhQk+s31P1ixsX0H0Suoupp3VMXzIVMSwobR3F3MSUO2YCV0B7xqLcUw/Bh8yuvd3LhpyqLQWTNcRmp6IdQ==} deprecated: Moved to 'npm install @sideway/address' @@ -9472,6 +10226,17 @@ packages: transitivePeerDependencies: - supports-color + /@humanwhocodes/config-array@0.5.0: + resolution: {integrity: sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==} + engines: {node: '>=10.10.0'} + dependencies: + '@humanwhocodes/object-schema': 1.2.1 + debug: 4.3.4(supports-color@8.1.1) + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + dev: true + /@humanwhocodes/module-importer@1.0.1: resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} engines: {node: '>=12.22'} @@ -9499,6 +10264,22 @@ packages: /@iconify/types@2.0.0: resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} + /@isaacs/cliui@8.0.2: + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + dependencies: + string-width: 5.1.2 + string-width-cjs: /string-width@4.2.3 + strip-ansi: 7.0.1 + strip-ansi-cjs: /strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: /wrap-ansi@7.0.0 + dev: true + + /@isaacs/string-locale-compare@1.1.0: + resolution: {integrity: sha512-SQ7Kzhh9+D+ZW9MA0zkYv3VXhIDNx+LzM6EJ+/65I3QY+enU6Itte7E5XX7EWrqLW2FN4n06GWzBnPoC3th2aQ==} + dev: true + /@istanbuljs/load-nyc-config@1.1.0: resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} engines: {node: '>=8'} @@ -9598,7 +10379,7 @@ packages: chalk: 4.1.2 ci-info: 3.7.1 exit: 0.1.2 - graceful-fs: 4.2.10 + graceful-fs: 4.2.11 jest-changed-files: 29.5.0 jest-config: 29.5.0(@types/node@18.15.10)(ts-node@10.9.1) jest-haste-map: 29.5.0 @@ -9775,7 +10556,7 @@ packages: collect-v8-coverage: 1.0.1 exit: 0.1.2 glob: 7.2.3 - graceful-fs: 4.2.10 + graceful-fs: 4.2.11 istanbul-lib-coverage: 3.2.0 istanbul-lib-instrument: 5.2.1 istanbul-lib-report: 3.0.0 @@ -9893,7 +10674,7 @@ packages: chalk: 4.1.2 convert-source-map: 2.0.0 fast-json-stable-stringify: 2.1.0 - graceful-fs: 4.2.10 + graceful-fs: 4.2.11 jest-haste-map: 29.5.0 jest-regex-util: 29.4.3 jest-util: 29.5.0 @@ -10083,20 +10864,6 @@ packages: resolution: {integrity: sha512-W6CLUJ2eBMw3Rec70qrsEW0jOm/3twwJv21mrmj2yORiaVmVYGS4sSS5yUwvQc1ZlDLYGPnClVWmUUMagKNsfA==} dev: true - /@mole-inc/bin-wrapper@8.0.1: - resolution: {integrity: sha512-sTGoeZnjI8N4KS+sW2AN95gDBErhAguvkw/tWdCjeM8bvxpz5lqrnd0vOJABA1A+Ic3zED7PYoLP/RANLgVotA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - bin-check: 4.1.0 - bin-version-check: 5.0.0 - content-disposition: 0.5.4 - ext-name: 5.0.0 - file-type: 17.1.6 - filenamify: 5.1.1 - got: 11.8.6 - os-filter-obj: 2.0.0 - dev: true - /@mswjs/cookies@0.2.2: resolution: {integrity: sha512-mlN83YSrcFgk7Dm1Mys40DLssI1KdJji2CMKN8eOlBqsTADYzj2+jWzsANsUTFbxDMWPD5e9bfA1RGqBpS3O1g==} engines: {node: '>=14'} @@ -10126,6 +10893,12 @@ packages: pump: 3.0.0 tar-fs: 2.1.1 + /@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1: + resolution: {integrity: sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==} + dependencies: + eslint-scope: 5.1.1 + dev: true + /@nodelib/fs.scandir@2.1.5: resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} @@ -10144,6 +10917,217 @@ packages: '@nodelib/fs.scandir': 2.1.5 fastq: 1.15.0 + /@npmcli/arborist@4.3.1: + resolution: {integrity: sha512-yMRgZVDpwWjplorzt9SFSaakWx6QIK248Nw4ZFgkrAy/GvJaFRaSZzE6nD7JBK5r8g/+PTxFq5Wj/sfciE7x+A==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16} + hasBin: true + dependencies: + '@isaacs/string-locale-compare': 1.1.0 + '@npmcli/installed-package-contents': 1.0.7 + '@npmcli/map-workspaces': 2.0.4 + '@npmcli/metavuln-calculator': 2.0.0 + '@npmcli/move-file': 1.1.2 + '@npmcli/name-from-folder': 1.0.1 + '@npmcli/node-gyp': 1.0.3 + '@npmcli/package-json': 1.0.1 + '@npmcli/run-script': 2.0.0 + bin-links: 3.0.3 + cacache: 15.3.0 + common-ancestor-path: 1.0.1 + json-parse-even-better-errors: 2.3.1 + json-stringify-nice: 1.1.4 + mkdirp: 1.0.4 + mkdirp-infer-owner: 2.0.0 + npm-install-checks: 4.0.0 + npm-package-arg: 8.1.5 + npm-pick-manifest: 6.1.1 + npm-registry-fetch: 12.0.2 + pacote: 12.0.3 + parse-conflict-json: 2.0.2 + proc-log: 1.0.0 + promise-all-reject-late: 1.0.1 + promise-call-limit: 1.0.2 + read-package-json-fast: 2.0.3 + readdir-scoped-modules: 1.1.0 + rimraf: 3.0.2 + semver: 7.5.4 + ssri: 8.0.1 + treeverse: 1.0.4 + walk-up-path: 1.0.0 + transitivePeerDependencies: + - bluebird + - supports-color + dev: true + + /@npmcli/fs@1.1.1: + resolution: {integrity: sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==} + dependencies: + '@gar/promisify': 1.1.3 + semver: 7.5.4 + dev: true + + /@npmcli/fs@2.1.2: + resolution: {integrity: sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + dependencies: + '@gar/promisify': 1.1.3 + semver: 7.5.4 + dev: true + + /@npmcli/fs@3.1.0: + resolution: {integrity: sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + semver: 7.5.4 + dev: true + + /@npmcli/git@2.1.0: + resolution: {integrity: sha512-/hBFX/QG1b+N7PZBFs0bi+evgRZcK9nWBxQKZkGoXUT5hJSwl5c4d7y8/hm+NQZRPhQ67RzFaj5UM9YeyKoryw==} + dependencies: + '@npmcli/promise-spawn': 1.3.2 + lru-cache: 6.0.0 + mkdirp: 1.0.4 + npm-pick-manifest: 6.1.1 + promise-inflight: 1.0.1 + promise-retry: 2.0.1 + semver: 7.5.4 + which: 2.0.2 + transitivePeerDependencies: + - bluebird + dev: true + + /@npmcli/git@4.1.0: + resolution: {integrity: sha512-9hwoB3gStVfa0N31ymBmrX+GuDGdVA/QWShZVqE0HK2Af+7QGGrCTbZia/SW0ImUTjTne7SP91qxDmtXvDHRPQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + '@npmcli/promise-spawn': 6.0.2 + lru-cache: 7.18.3 + npm-pick-manifest: 8.0.2 + proc-log: 3.0.0 + promise-inflight: 1.0.1 + promise-retry: 2.0.1 + semver: 7.5.4 + which: 3.0.1 + transitivePeerDependencies: + - bluebird + dev: true + + /@npmcli/installed-package-contents@1.0.7: + resolution: {integrity: sha512-9rufe0wnJusCQoLpV9ZPKIVP55itrM5BxOXs10DmdbRfgWtHy1LDyskbwRnBghuB0PrF7pNPOqREVtpz4HqzKw==} + engines: {node: '>= 10'} + hasBin: true + dependencies: + npm-bundled: 1.1.2 + npm-normalize-package-bin: 1.0.1 + dev: true + + /@npmcli/installed-package-contents@2.0.2: + resolution: {integrity: sha512-xACzLPhnfD51GKvTOOuNX2/V4G4mz9/1I2MfDoye9kBM3RYe5g2YbscsaGoTlaWqkxeiapBWyseULVKpSVHtKQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + hasBin: true + dependencies: + npm-bundled: 3.0.0 + npm-normalize-package-bin: 3.0.1 + dev: true + + /@npmcli/map-workspaces@2.0.4: + resolution: {integrity: sha512-bMo0aAfwhVwqoVM5UzX1DJnlvVvzDCHae821jv48L1EsrYwfOZChlqWYXEtto/+BkBXetPbEWgau++/brh4oVg==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + dependencies: + '@npmcli/name-from-folder': 1.0.1 + glob: 8.1.0 + minimatch: 5.1.6 + read-package-json-fast: 2.0.3 + dev: true + + /@npmcli/metavuln-calculator@2.0.0: + resolution: {integrity: sha512-VVW+JhWCKRwCTE+0xvD6p3uV4WpqocNYYtzyvenqL/u1Q3Xx6fGTJ+6UoIoii07fbuEO9U3IIyuGY0CYHDv1sg==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16} + dependencies: + cacache: 15.3.0 + json-parse-even-better-errors: 2.3.1 + pacote: 12.0.3 + semver: 7.5.4 + transitivePeerDependencies: + - bluebird + - supports-color + dev: true + + /@npmcli/move-file@1.1.2: + resolution: {integrity: sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==} + engines: {node: '>=10'} + deprecated: This functionality has been moved to @npmcli/fs + dependencies: + mkdirp: 1.0.4 + rimraf: 3.0.2 + dev: true + + /@npmcli/move-file@2.0.1: + resolution: {integrity: sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + deprecated: This functionality has been moved to @npmcli/fs + dependencies: + mkdirp: 1.0.4 + rimraf: 3.0.2 + dev: true + + /@npmcli/name-from-folder@1.0.1: + resolution: {integrity: sha512-qq3oEfcLFwNfEYOQ8HLimRGKlD8WSeGEdtUa7hmzpR8Sa7haL1KVQrvgO6wqMjhWFFVjgtrh1gIxDz+P8sjUaA==} + dev: true + + /@npmcli/node-gyp@1.0.3: + resolution: {integrity: sha512-fnkhw+fmX65kiLqk6E3BFLXNC26rUhK90zVwe2yncPliVT/Qos3xjhTLE59Df8KnPlcwIERXKVlU1bXoUQ+liA==} + dev: true + + /@npmcli/node-gyp@3.0.0: + resolution: {integrity: sha512-gp8pRXC2oOxu0DUE1/M3bYtb1b3/DbJ5aM113+XJBgfXdussRAsX0YOrOhdd8WvnAR6auDBvJomGAkLKA5ydxA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dev: true + + /@npmcli/package-json@1.0.1: + resolution: {integrity: sha512-y6jnu76E9C23osz8gEMBayZmaZ69vFOIk8vR1FJL/wbEJ54+9aVG9rLTjQKSXfgYZEr50nw1txBBFfBZZe+bYg==} + dependencies: + json-parse-even-better-errors: 2.3.1 + dev: true + + /@npmcli/promise-spawn@1.3.2: + resolution: {integrity: sha512-QyAGYo/Fbj4MXeGdJcFzZ+FkDkomfRBrPM+9QYJSg+PxgAUL+LU3FneQk37rKR2/zjqkCV1BLHccX98wRXG3Sg==} + dependencies: + infer-owner: 1.0.4 + dev: true + + /@npmcli/promise-spawn@6.0.2: + resolution: {integrity: sha512-gGq0NJkIGSwdbUt4yhdF8ZrmkGKVz9vAdVzpOfnom+V8PLSmSOVhZwbNvZZS1EYcJN5hzzKBxmmVVAInM6HQLg==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + which: 3.0.1 + dev: true + + /@npmcli/run-script@2.0.0: + resolution: {integrity: sha512-fSan/Pu11xS/TdaTpTB0MRn9guwGU8dye+x56mEVgBEd/QsybBbYcAL0phPXi8SGWFEChkQd6M9qL4y6VOpFig==} + dependencies: + '@npmcli/node-gyp': 1.0.3 + '@npmcli/promise-spawn': 1.3.2 + node-gyp: 8.4.1 + read-package-json-fast: 2.0.3 + transitivePeerDependencies: + - bluebird + - supports-color + dev: true + + /@npmcli/run-script@6.0.2: + resolution: {integrity: sha512-NCcr1uQo1k5U+SYlnIrbAh3cxy+OQT1VtqiAbxdymSlptbzBb62AjH2xXgjNCoP073hoa1CfCAcwoZ8k96C4nA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + '@npmcli/node-gyp': 3.0.0 + '@npmcli/promise-spawn': 6.0.2 + node-gyp: 9.4.0 + read-package-json-fast: 3.0.2 + which: 3.0.1 + transitivePeerDependencies: + - supports-color + dev: true + /@nrwl/devkit@16.3.2(nx@16.3.2): resolution: {integrity: sha512-EiDwVIvh6AcClXv22Q7auQh7Iy/ONISEFWzTswy/J6ZmVGCQesbiwg4cGV0MKiScr+awdVzqyNey+wD6IR5Lkw==} dependencies: @@ -10151,10 +11135,10 @@ packages: transitivePeerDependencies: - nx - /@nrwl/eslint-plugin-nx@16.3.2(@swc-node/register@1.5.5)(@swc/core@1.3.27)(@typescript-eslint/parser@5.59.9)(eslint-config-prettier@8.6.0)(eslint@8.34.0)(nx@16.3.2)(typescript@5.0.4): + /@nrwl/eslint-plugin-nx@16.3.2(@typescript-eslint/parser@5.59.9)(eslint-config-prettier@8.6.0)(eslint@8.34.0)(nx@16.3.2)(typescript@5.0.4): resolution: {integrity: sha512-E+X/L8b/GtbAGnwm+WOdAlXNwNYCTb6uodo5yxRrUkkMoVVMkzI7FLOHKGgYiqXH/xbuKE3yAg21EwP0epOi2Q==} dependencies: - '@nx/eslint-plugin': 16.3.2(@swc-node/register@1.5.5)(@swc/core@1.3.27)(@typescript-eslint/parser@5.59.9)(eslint-config-prettier@8.6.0)(eslint@8.34.0)(nx@16.3.2)(typescript@5.0.4) + '@nx/eslint-plugin': 16.3.2(@typescript-eslint/parser@5.59.9)(eslint-config-prettier@8.6.0)(eslint@8.34.0)(nx@16.3.2)(typescript@5.0.4) transitivePeerDependencies: - '@babel/traverse' - '@swc-node/register' @@ -10169,10 +11153,10 @@ packages: - verdaccio dev: true - /@nrwl/jest@16.3.2(@swc-node/register@1.5.5)(@swc/core@1.3.27)(@types/node@18.14.2)(nx@16.3.2)(ts-node@10.9.1)(typescript@5.0.4): + /@nrwl/jest@16.3.2(@types/node@18.14.2)(nx@16.3.2)(ts-node@10.9.1)(typescript@5.0.4): resolution: {integrity: sha512-vhwrgjIn1XG3zDSlc6CSfCKBtgDEYQUWG69MdfaqrNInmmsiPkspv7eM99Xh8MGN5HMC2Epzy2todD3J2zZZuQ==} dependencies: - '@nx/jest': 16.3.2(@swc-node/register@1.5.5)(@swc/core@1.3.27)(@types/node@18.14.2)(nx@16.3.2)(ts-node@10.9.1)(typescript@5.0.4) + '@nx/jest': 16.3.2(@types/node@18.14.2)(nx@16.3.2)(ts-node@10.9.1)(typescript@5.0.4) transitivePeerDependencies: - '@babel/traverse' - '@swc-node/register' @@ -10187,10 +11171,10 @@ packages: - verdaccio dev: true - /@nrwl/jest@16.3.2(@swc-node/register@1.5.5)(@swc/core@1.3.27)(@types/node@18.15.10)(nx@16.3.2)(ts-node@10.9.1)(typescript@5.0.4): + /@nrwl/jest@16.3.2(@types/node@18.15.10)(nx@16.3.2)(ts-node@10.9.1)(typescript@5.0.4): resolution: {integrity: sha512-vhwrgjIn1XG3zDSlc6CSfCKBtgDEYQUWG69MdfaqrNInmmsiPkspv7eM99Xh8MGN5HMC2Epzy2todD3J2zZZuQ==} dependencies: - '@nx/jest': 16.3.2(@swc-node/register@1.5.5)(@swc/core@1.3.27)(@types/node@18.15.10)(nx@16.3.2)(ts-node@10.9.1)(typescript@5.0.4) + '@nx/jest': 16.3.2(@types/node@18.15.10)(nx@16.3.2)(ts-node@10.9.1)(typescript@5.0.4) transitivePeerDependencies: - '@babel/traverse' - '@swc-node/register' @@ -10204,10 +11188,10 @@ packages: - typescript - verdaccio - /@nrwl/js@16.3.2(@swc-node/register@1.5.5)(@swc/core@1.3.27)(nx@16.3.2)(typescript@5.0.4): + /@nrwl/js@16.3.2(nx@16.3.2)(typescript@5.0.4): resolution: {integrity: sha512-UMmdA4vXy2/VWNMlpBDruT9XwGmLw/MpUaKoN2KLkai/fYN6MvB3mabc9WQ8qsNvDWshmOJ6TqAHReR25BjugQ==} dependencies: - '@nx/js': 16.3.2(@swc-node/register@1.5.5)(@swc/core@1.3.27)(nx@16.3.2)(typescript@5.0.4) + '@nx/js': 16.3.2(nx@16.3.2)(typescript@5.0.4) transitivePeerDependencies: - '@babel/traverse' - '@swc-node/register' @@ -10218,10 +11202,10 @@ packages: - typescript - verdaccio - /@nrwl/linter@16.3.2(@swc-node/register@1.5.5)(@swc/core@1.3.27)(eslint@8.34.0)(nx@16.3.2)(typescript@5.0.4): + /@nrwl/linter@16.3.2(eslint@8.34.0)(nx@16.3.2)(typescript@5.0.4): resolution: {integrity: sha512-sUDQNlmRIGQnhdDmpQkJgpF9LZWKBoqXr2g9Y4yq0QlpTamxTbx8/GxMICotA52kayEx1cKbU1xvjJWPchSrlw==} dependencies: - '@nx/linter': 16.3.2(@swc-node/register@1.5.5)(@swc/core@1.3.27)(eslint@8.34.0)(nx@16.3.2)(typescript@5.0.4) + '@nx/linter': 16.3.2(eslint@8.34.0)(nx@16.3.2)(typescript@5.0.4) transitivePeerDependencies: - '@babel/traverse' - '@swc-node/register' @@ -10233,10 +11217,10 @@ packages: - typescript - verdaccio - /@nrwl/node@16.3.2(@swc-node/register@1.5.5)(@swc/core@1.3.27)(@types/node@18.14.2)(eslint@8.34.0)(nx@16.3.2)(ts-node@10.9.1)(typescript@5.0.4): + /@nrwl/node@16.3.2(@types/node@18.14.2)(eslint@8.34.0)(nx@16.3.2)(ts-node@10.9.1)(typescript@5.0.4): resolution: {integrity: sha512-QRMN9K1LgfqeERdgynnLE7vruJshPVgAA1kp3AXcxZq6kmE+RxCZ/TxC6jzpCNEVg6tPYBzmBrJiqga+aDI8jQ==} dependencies: - '@nx/node': 16.3.2(@swc-node/register@1.5.5)(@swc/core@1.3.27)(@types/node@18.14.2)(eslint@8.34.0)(nx@16.3.2)(ts-node@10.9.1)(typescript@5.0.4) + '@nx/node': 16.3.2(@types/node@18.14.2)(eslint@8.34.0)(nx@16.3.2)(ts-node@10.9.1)(typescript@5.0.4) transitivePeerDependencies: - '@babel/traverse' - '@swc-node/register' @@ -10260,10 +11244,10 @@ packages: - debug dev: true - /@nrwl/nx-plugin@16.3.2(@swc-node/register@1.5.5)(@swc/core@1.3.27)(@types/node@18.14.2)(eslint@8.34.0)(nx@16.3.2)(ts-node@10.9.1)(typescript@5.0.4): + /@nrwl/nx-plugin@16.3.2(@types/node@18.14.2)(eslint@8.34.0)(nx@16.3.2)(ts-node@10.9.1)(typescript@5.0.4): resolution: {integrity: sha512-uXOrLV0+EgeHm6s5WpmAYZQ6oOuf87TFmrm3gcZHzExwNf21utFFTQVHoeQlieE/LFU/RBPsE2p+3+4d2EQTDw==} dependencies: - '@nx/plugin': 16.3.2(@swc-node/register@1.5.5)(@swc/core@1.3.27)(@types/node@18.14.2)(eslint@8.34.0)(nx@16.3.2)(ts-node@10.9.1)(typescript@5.0.4) + '@nx/plugin': 16.3.2(@types/node@18.14.2)(eslint@8.34.0)(nx@16.3.2)(ts-node@10.9.1)(typescript@5.0.4) transitivePeerDependencies: - '@babel/traverse' - '@swc-node/register' @@ -10279,10 +11263,10 @@ packages: - verdaccio dev: true - /@nrwl/react@16.3.2(@swc-node/register@1.5.5)(@swc/core@1.3.27)(eslint@8.34.0)(nx@16.3.2)(typescript@5.0.4)(webpack@5.85.1): + /@nrwl/react@16.3.2(eslint@8.34.0)(nx@16.3.2)(typescript@5.0.4)(webpack@5.85.1): resolution: {integrity: sha512-p9Y2pWgUnVOUB5wMiE9iIKCV6CzixSPc6p5GQIP8ysbtVdV7WZ9bNFiuR9pxNQ9Y6weJsMH9lr45pZ7G7JO4KA==} dependencies: - '@nx/react': 16.3.2(@swc-node/register@1.5.5)(@swc/core@1.3.27)(eslint@8.34.0)(nx@16.3.2)(typescript@5.0.4)(webpack@5.85.1) + '@nx/react': 16.3.2(eslint@8.34.0)(nx@16.3.2)(typescript@5.0.4)(webpack@5.85.1) transitivePeerDependencies: - '@babel/traverse' - '@swc-node/register' @@ -10295,20 +11279,20 @@ packages: - verdaccio - webpack - /@nrwl/tao@16.3.2(@swc-node/register@1.5.5)(@swc/core@1.3.27): + /@nrwl/tao@16.3.2: resolution: {integrity: sha512-2Kg7dtv6JcQagCZPSq+okceI81NqmXGGgbKWqS7sOfdmp1otxS9uiUFNXw+Pdtnw38mdRviMtSOXScntu4sUKg==} hasBin: true dependencies: - nx: 16.3.2(@swc-node/register@1.5.5)(@swc/core@1.3.27) + nx: 16.3.2 transitivePeerDependencies: - '@swc-node/register' - '@swc/core' - debug - /@nrwl/web@16.3.2(@swc-node/register@1.5.5)(@swc/core@1.3.27)(nx@16.3.2)(typescript@5.0.4): + /@nrwl/web@16.3.2(nx@16.3.2)(typescript@5.0.4): resolution: {integrity: sha512-UJotencL5g+jyozfVPLevbzWoR10Mx/AURzGNzzGmddLbmXJlsHwnnKHtzGzc+QFG10jYMzk1WZSyBo/ZPrN+Q==} dependencies: - '@nx/web': 16.3.2(@swc-node/register@1.5.5)(@swc/core@1.3.27)(nx@16.3.2)(typescript@5.0.4) + '@nx/web': 16.3.2(nx@16.3.2)(typescript@5.0.4) transitivePeerDependencies: - '@babel/traverse' - '@swc-node/register' @@ -10319,10 +11303,10 @@ packages: - typescript - verdaccio - /@nrwl/webpack@16.3.2(@swc-node/register@1.5.5)(@swc/core@1.3.27)(@types/node@18.15.10)(nx@16.3.2)(typescript@5.0.4): + /@nrwl/webpack@16.3.2(@types/node@18.15.10)(nx@16.3.2)(typescript@5.0.4): resolution: {integrity: sha512-/vd02AtQc8gTstEhYZ0MFt4YxgYgSx3rnsLg/MDv7ltLif7If5eLJfT7ZBQSawcQx0tYb7p5v+7gPRZzH4yiyw==} dependencies: - '@nx/webpack': 16.3.2(@swc-node/register@1.5.5)(@swc/core@1.3.27)(@types/node@18.15.10)(nx@16.3.2)(typescript@5.0.4) + '@nx/webpack': 16.3.2(@types/node@18.15.10)(nx@16.3.2)(typescript@5.0.4) transitivePeerDependencies: - '@babel/traverse' - '@parcel/css' @@ -10349,10 +11333,10 @@ packages: - webpack-cli dev: true - /@nrwl/workspace@16.3.2(@swc-node/register@1.5.5)(@swc/core@1.3.27): + /@nrwl/workspace@16.3.2: resolution: {integrity: sha512-ORVzEEJIMOFYEOtOQHLU7N4vT4mYZ/JzKiwHZrHkCaVhgkiGBLoX3tOwVZjafKaa/24cGISv0J7WRtnfRKl2cA==} dependencies: - '@nx/workspace': 16.3.2(@swc-node/register@1.5.5)(@swc/core@1.3.27) + '@nx/workspace': 16.3.2 transitivePeerDependencies: - '@swc-node/register' - '@swc/core' @@ -10366,12 +11350,12 @@ packages: '@nrwl/devkit': 16.3.2(nx@16.3.2) ejs: 3.1.8 ignore: 5.2.4 - nx: 16.3.2(@swc-node/register@1.5.5)(@swc/core@1.3.27) + nx: 16.3.2 semver: 7.3.4 tmp: 0.2.1 tslib: 2.5.0 - /@nx/eslint-plugin@16.3.2(@swc-node/register@1.5.5)(@swc/core@1.3.27)(@typescript-eslint/parser@5.59.9)(eslint-config-prettier@8.6.0)(eslint@8.34.0)(nx@16.3.2)(typescript@5.0.4): + /@nx/eslint-plugin@16.3.2(@typescript-eslint/parser@5.59.9)(eslint-config-prettier@8.6.0)(eslint@8.34.0)(nx@16.3.2)(typescript@5.0.4): resolution: {integrity: sha512-9KMiDEvsHPlLm9wrG3qUl68veNFLbFglD5XGKmBXA07tHISWo5eqNIML5/Y5cwsRufUcQFe21V+6FxrbVQ24CQ==} peerDependencies: '@typescript-eslint/parser': ^5.58.0 @@ -10380,9 +11364,9 @@ packages: eslint-config-prettier: optional: true dependencies: - '@nrwl/eslint-plugin-nx': 16.3.2(@swc-node/register@1.5.5)(@swc/core@1.3.27)(@typescript-eslint/parser@5.59.9)(eslint-config-prettier@8.6.0)(eslint@8.34.0)(nx@16.3.2)(typescript@5.0.4) + '@nrwl/eslint-plugin-nx': 16.3.2(@typescript-eslint/parser@5.59.9)(eslint-config-prettier@8.6.0)(eslint@8.34.0)(nx@16.3.2)(typescript@5.0.4) '@nx/devkit': 16.3.2(nx@16.3.2) - '@nx/js': 16.3.2(@swc-node/register@1.5.5)(@swc/core@1.3.27)(nx@16.3.2)(typescript@5.0.4) + '@nx/js': 16.3.2(nx@16.3.2)(typescript@5.0.4) '@typescript-eslint/parser': 5.59.9(eslint@8.34.0)(typescript@5.0.4) '@typescript-eslint/type-utils': 5.59.9(eslint@8.34.0)(typescript@5.0.4) '@typescript-eslint/utils': 5.59.9(eslint@8.34.0)(typescript@5.0.4) @@ -10402,14 +11386,14 @@ packages: - verdaccio dev: true - /@nx/jest@16.3.2(@swc-node/register@1.5.5)(@swc/core@1.3.27)(@types/node@18.14.2)(nx@16.3.2)(ts-node@10.9.1)(typescript@5.0.4): + /@nx/jest@16.3.2(@types/node@18.14.2)(nx@16.3.2)(ts-node@10.9.1)(typescript@5.0.4): resolution: {integrity: sha512-aO8Rc+wwSXLh1jJYd2cxOT5R9BQfqjAXWZOPcvAQQonFNNfwMHrw0+YsqjWgiFtFrxzSX5RrhzVG44cOWpAdqQ==} dependencies: '@jest/reporters': 29.5.0 '@jest/test-result': 29.5.0 - '@nrwl/jest': 16.3.2(@swc-node/register@1.5.5)(@swc/core@1.3.27)(@types/node@18.14.2)(nx@16.3.2)(ts-node@10.9.1)(typescript@5.0.4) + '@nrwl/jest': 16.3.2(@types/node@18.14.2)(nx@16.3.2)(ts-node@10.9.1)(typescript@5.0.4) '@nx/devkit': 16.3.2(nx@16.3.2) - '@nx/js': 16.3.2(@swc-node/register@1.5.5)(@swc/core@1.3.27)(nx@16.3.2)(typescript@5.0.4) + '@nx/js': 16.3.2(nx@16.3.2)(typescript@5.0.4) '@phenomnomnominal/tsquery': 5.0.1(typescript@5.0.4) chalk: 4.1.2 dotenv: 10.0.0 @@ -10433,14 +11417,14 @@ packages: - verdaccio dev: true - /@nx/jest@16.3.2(@swc-node/register@1.5.5)(@swc/core@1.3.27)(@types/node@18.15.10)(nx@16.3.2)(ts-node@10.9.1)(typescript@5.0.4): + /@nx/jest@16.3.2(@types/node@18.15.10)(nx@16.3.2)(ts-node@10.9.1)(typescript@5.0.4): resolution: {integrity: sha512-aO8Rc+wwSXLh1jJYd2cxOT5R9BQfqjAXWZOPcvAQQonFNNfwMHrw0+YsqjWgiFtFrxzSX5RrhzVG44cOWpAdqQ==} dependencies: '@jest/reporters': 29.5.0 '@jest/test-result': 29.5.0 - '@nrwl/jest': 16.3.2(@swc-node/register@1.5.5)(@swc/core@1.3.27)(@types/node@18.15.10)(nx@16.3.2)(ts-node@10.9.1)(typescript@5.0.4) + '@nrwl/jest': 16.3.2(@types/node@18.15.10)(nx@16.3.2)(ts-node@10.9.1)(typescript@5.0.4) '@nx/devkit': 16.3.2(nx@16.3.2) - '@nx/js': 16.3.2(@swc-node/register@1.5.5)(@swc/core@1.3.27)(nx@16.3.2)(typescript@5.0.4) + '@nx/js': 16.3.2(nx@16.3.2)(typescript@5.0.4) '@phenomnomnominal/tsquery': 5.0.1(typescript@5.0.4) chalk: 4.1.2 dotenv: 10.0.0 @@ -10449,7 +11433,7 @@ packages: jest-resolve: 29.5.0 jest-util: 29.5.0 resolve.exports: 1.1.0 - tslib: 2.5.0 + tslib: 2.6.2 transitivePeerDependencies: - '@babel/traverse' - '@swc-node/register' @@ -10463,7 +11447,7 @@ packages: - typescript - verdaccio - /@nx/js@16.3.2(@swc-node/register@1.5.5)(@swc/core@1.3.27)(nx@16.3.2)(typescript@5.0.4): + /@nx/js@16.3.2(nx@16.3.2)(typescript@5.0.4): resolution: {integrity: sha512-bumLGMduNm221Sh3/wkEMEkJOC1kTlqmpx6wamDSsPlAFq0ePgoaNJjoYqC9XH7n7wXtgy9bgKhHJPnek8NKow==} peerDependencies: verdaccio: ^5.0.4 @@ -10478,22 +11462,22 @@ packages: '@babel/preset-env': 7.21.5(@babel/core@7.21.8) '@babel/preset-typescript': 7.21.5(@babel/core@7.21.8) '@babel/runtime': 7.20.13 - '@nrwl/js': 16.3.2(@swc-node/register@1.5.5)(@swc/core@1.3.27)(nx@16.3.2)(typescript@5.0.4) + '@nrwl/js': 16.3.2(nx@16.3.2)(typescript@5.0.4) '@nx/devkit': 16.3.2(nx@16.3.2) - '@nx/workspace': 16.3.2(@swc-node/register@1.5.5)(@swc/core@1.3.27) + '@nx/workspace': 16.3.2 '@phenomnomnominal/tsquery': 5.0.1(typescript@5.0.4) babel-plugin-const-enum: 1.2.0(@babel/core@7.21.8) babel-plugin-macros: 2.8.0 babel-plugin-transform-typescript-metadata: 0.3.2(@babel/core@7.21.8) chalk: 4.1.2 fast-glob: 3.2.7 - fs-extra: 11.1.0 + fs-extra: 11.1.1 ignore: 5.2.4 js-tokens: 4.0.0 minimatch: 3.0.5 semver: 7.3.4 source-map-support: 0.5.19 - tslib: 2.5.0 + tslib: 2.6.2 transitivePeerDependencies: - '@babel/traverse' - '@swc-node/register' @@ -10503,7 +11487,7 @@ packages: - supports-color - typescript - /@nx/linter@16.3.2(@swc-node/register@1.5.5)(@swc/core@1.3.27)(eslint@8.34.0)(nx@16.3.2)(typescript@5.0.4): + /@nx/linter@16.3.2(eslint@8.34.0)(nx@16.3.2)(typescript@5.0.4): resolution: {integrity: sha512-hVCU6ZIMd+yTMLrC3PbjaHuD3yU+sB/lABTaWuUx2klT0cqKhiTp0KnDLcFWtzQmnNtGEaUjfPKxvA92xon0CA==} peerDependencies: eslint: ^8.0.0 @@ -10511,9 +11495,9 @@ packages: eslint: optional: true dependencies: - '@nrwl/linter': 16.3.2(@swc-node/register@1.5.5)(@swc/core@1.3.27)(eslint@8.34.0)(nx@16.3.2)(typescript@5.0.4) + '@nrwl/linter': 16.3.2(eslint@8.34.0)(nx@16.3.2)(typescript@5.0.4) '@nx/devkit': 16.3.2(nx@16.3.2) - '@nx/js': 16.3.2(@swc-node/register@1.5.5)(@swc/core@1.3.27)(nx@16.3.2)(typescript@5.0.4) + '@nx/js': 16.3.2(nx@16.3.2)(typescript@5.0.4) '@phenomnomnominal/tsquery': 5.0.1(typescript@5.0.4) eslint: 8.34.0 tmp: 0.2.1 @@ -10528,15 +11512,15 @@ packages: - typescript - verdaccio - /@nx/node@16.3.2(@swc-node/register@1.5.5)(@swc/core@1.3.27)(@types/node@18.14.2)(eslint@8.34.0)(nx@16.3.2)(ts-node@10.9.1)(typescript@5.0.4): + /@nx/node@16.3.2(@types/node@18.14.2)(eslint@8.34.0)(nx@16.3.2)(ts-node@10.9.1)(typescript@5.0.4): resolution: {integrity: sha512-UGRuawRYQczkus3Gne3JH2xIUeWPrw63j9UM+e0IynC7ocQFNGOZYvOhEMOyoq9fdb22vno17D5v84dRGuWlsA==} dependencies: - '@nrwl/node': 16.3.2(@swc-node/register@1.5.5)(@swc/core@1.3.27)(@types/node@18.14.2)(eslint@8.34.0)(nx@16.3.2)(ts-node@10.9.1)(typescript@5.0.4) + '@nrwl/node': 16.3.2(@types/node@18.14.2)(eslint@8.34.0)(nx@16.3.2)(ts-node@10.9.1)(typescript@5.0.4) '@nx/devkit': 16.3.2(nx@16.3.2) - '@nx/jest': 16.3.2(@swc-node/register@1.5.5)(@swc/core@1.3.27)(@types/node@18.14.2)(nx@16.3.2)(ts-node@10.9.1)(typescript@5.0.4) - '@nx/js': 16.3.2(@swc-node/register@1.5.5)(@swc/core@1.3.27)(nx@16.3.2)(typescript@5.0.4) - '@nx/linter': 16.3.2(@swc-node/register@1.5.5)(@swc/core@1.3.27)(eslint@8.34.0)(nx@16.3.2)(typescript@5.0.4) - '@nx/workspace': 16.3.2(@swc-node/register@1.5.5)(@swc/core@1.3.27) + '@nx/jest': 16.3.2(@types/node@18.14.2)(nx@16.3.2)(ts-node@10.9.1)(typescript@5.0.4) + '@nx/js': 16.3.2(nx@16.3.2)(typescript@5.0.4) + '@nx/linter': 16.3.2(eslint@8.34.0)(nx@16.3.2)(typescript@5.0.4) + '@nx/workspace': 16.3.2 tslib: 2.5.0 transitivePeerDependencies: - '@babel/traverse' @@ -10633,14 +11617,14 @@ packages: requiresBuild: true optional: true - /@nx/plugin@16.3.2(@swc-node/register@1.5.5)(@swc/core@1.3.27)(@types/node@18.14.2)(eslint@8.34.0)(nx@16.3.2)(ts-node@10.9.1)(typescript@5.0.4): + /@nx/plugin@16.3.2(@types/node@18.14.2)(eslint@8.34.0)(nx@16.3.2)(ts-node@10.9.1)(typescript@5.0.4): resolution: {integrity: sha512-X/fHhw3ADep5KQE1uaPQE8bzSEUMxvTB7cMdkBd7h+WTg00Q5GHjM/E77f5Nj4oX7F2wjuenMRAS2XAV8kWWJQ==} dependencies: - '@nrwl/nx-plugin': 16.3.2(@swc-node/register@1.5.5)(@swc/core@1.3.27)(@types/node@18.14.2)(eslint@8.34.0)(nx@16.3.2)(ts-node@10.9.1)(typescript@5.0.4) + '@nrwl/nx-plugin': 16.3.2(@types/node@18.14.2)(eslint@8.34.0)(nx@16.3.2)(ts-node@10.9.1)(typescript@5.0.4) '@nx/devkit': 16.3.2(nx@16.3.2) - '@nx/jest': 16.3.2(@swc-node/register@1.5.5)(@swc/core@1.3.27)(@types/node@18.14.2)(nx@16.3.2)(ts-node@10.9.1)(typescript@5.0.4) - '@nx/js': 16.3.2(@swc-node/register@1.5.5)(@swc/core@1.3.27)(nx@16.3.2)(typescript@5.0.4) - '@nx/linter': 16.3.2(@swc-node/register@1.5.5)(@swc/core@1.3.27)(eslint@8.34.0)(nx@16.3.2)(typescript@5.0.4) + '@nx/jest': 16.3.2(@types/node@18.14.2)(nx@16.3.2)(ts-node@10.9.1)(typescript@5.0.4) + '@nx/js': 16.3.2(nx@16.3.2)(typescript@5.0.4) + '@nx/linter': 16.3.2(eslint@8.34.0)(nx@16.3.2)(typescript@5.0.4) '@phenomnomnominal/tsquery': 5.0.1(typescript@5.0.4) dotenv: 10.0.0 fs-extra: 11.1.0 @@ -10660,14 +11644,14 @@ packages: - verdaccio dev: true - /@nx/react@16.3.2(@swc-node/register@1.5.5)(@swc/core@1.3.27)(eslint@8.34.0)(nx@16.3.2)(typescript@5.0.4)(webpack@5.85.1): + /@nx/react@16.3.2(eslint@8.34.0)(nx@16.3.2)(typescript@5.0.4)(webpack@5.85.1): resolution: {integrity: sha512-Maj2zva2nUlsGP5o5SDEsNErIiDK247EqXraTnLPUEQy8XQP2oOThu5FkKhT51RguLyRDFtFei4vANPl/WI6FQ==} dependencies: - '@nrwl/react': 16.3.2(@swc-node/register@1.5.5)(@swc/core@1.3.27)(eslint@8.34.0)(nx@16.3.2)(typescript@5.0.4)(webpack@5.85.1) + '@nrwl/react': 16.3.2(eslint@8.34.0)(nx@16.3.2)(typescript@5.0.4)(webpack@5.85.1) '@nx/devkit': 16.3.2(nx@16.3.2) - '@nx/js': 16.3.2(@swc-node/register@1.5.5)(@swc/core@1.3.27)(nx@16.3.2)(typescript@5.0.4) - '@nx/linter': 16.3.2(@swc-node/register@1.5.5)(@swc/core@1.3.27)(eslint@8.34.0)(nx@16.3.2)(typescript@5.0.4) - '@nx/web': 16.3.2(@swc-node/register@1.5.5)(@swc/core@1.3.27)(nx@16.3.2)(typescript@5.0.4) + '@nx/js': 16.3.2(nx@16.3.2)(typescript@5.0.4) + '@nx/linter': 16.3.2(eslint@8.34.0)(nx@16.3.2)(typescript@5.0.4) + '@nx/web': 16.3.2(nx@16.3.2)(typescript@5.0.4) '@phenomnomnominal/tsquery': 5.0.1(typescript@5.0.4) '@svgr/webpack': 8.0.1 chalk: 4.1.2 @@ -10685,18 +11669,18 @@ packages: - verdaccio - webpack - /@nx/web@16.3.2(@swc-node/register@1.5.5)(@swc/core@1.3.27)(nx@16.3.2)(typescript@5.0.4): + /@nx/web@16.3.2(nx@16.3.2)(typescript@5.0.4): resolution: {integrity: sha512-PzTkawQ+OgjX0mR5KwMGcdveoMNLKo/jYaW3UrPMIVUy0NpalW0ULJnDOUt+NRlrp7jOsUP7hUYZkYPNDI3Ivg==} dependencies: - '@nrwl/web': 16.3.2(@swc-node/register@1.5.5)(@swc/core@1.3.27)(nx@16.3.2)(typescript@5.0.4) + '@nrwl/web': 16.3.2(nx@16.3.2)(typescript@5.0.4) '@nx/devkit': 16.3.2(nx@16.3.2) - '@nx/js': 16.3.2(@swc-node/register@1.5.5)(@swc/core@1.3.27)(nx@16.3.2)(typescript@5.0.4) + '@nx/js': 16.3.2(nx@16.3.2)(typescript@5.0.4) chalk: 4.1.2 chokidar: 3.5.3 detect-port: 1.5.1 http-server: 14.1.1 ignore: 5.2.4 - tslib: 2.5.0 + tslib: 2.6.2 transitivePeerDependencies: - '@babel/traverse' - '@swc-node/register' @@ -10707,13 +11691,13 @@ packages: - typescript - verdaccio - /@nx/webpack@16.3.2(@swc-node/register@1.5.5)(@swc/core@1.3.27)(@types/node@18.15.10)(nx@16.3.2)(typescript@5.0.4): + /@nx/webpack@16.3.2(@types/node@18.15.10)(nx@16.3.2)(typescript@5.0.4): resolution: {integrity: sha512-dTbq8IU3STOz9xUb+Bb1PoRNyN/Pyg0S8GAP7s/PI/Ir2ExphoDH522MVv4+EwxJym86xJtejibdszuJYCAV4Q==} dependencies: '@babel/core': 7.21.8 - '@nrwl/webpack': 16.3.2(@swc-node/register@1.5.5)(@swc/core@1.3.27)(@types/node@18.15.10)(nx@16.3.2)(typescript@5.0.4) + '@nrwl/webpack': 16.3.2(@types/node@18.15.10)(nx@16.3.2)(typescript@5.0.4) '@nx/devkit': 16.3.2(nx@16.3.2) - '@nx/js': 16.3.2(@swc-node/register@1.5.5)(@swc/core@1.3.27)(nx@16.3.2)(typescript@5.0.4) + '@nx/js': 16.3.2(nx@16.3.2)(typescript@5.0.4) autoprefixer: 10.4.13(postcss@8.4.23) babel-loader: 9.1.2(@babel/core@7.21.8)(webpack@5.85.1) chalk: 4.1.2 @@ -10741,13 +11725,13 @@ packages: style-loader: 3.3.1(webpack@5.85.1) stylus: 0.55.0 stylus-loader: 7.1.0(stylus@0.55.0)(webpack@5.85.1) - terser-webpack-plugin: 5.3.6(@swc/core@1.3.27)(webpack@5.85.1) + terser-webpack-plugin: 5.3.6(webpack@5.85.1) ts-loader: 9.4.2(typescript@5.0.4)(webpack@5.85.1) - ts-node: 10.9.1(@swc/core@1.3.27)(@types/node@18.15.10)(typescript@5.0.4) + ts-node: 10.9.1(@types/node@18.15.10)(typescript@5.0.4) tsconfig-paths: 4.1.2 tsconfig-paths-webpack-plugin: 4.0.0 - tslib: 2.5.0 - webpack: 5.85.1(@swc/core@1.3.27) + tslib: 2.6.2 + webpack: 5.85.1 webpack-dev-server: 4.11.1(webpack@5.85.1) webpack-node-externals: 3.0.0 webpack-subresource-integrity: 5.1.0(webpack@5.85.1) @@ -10777,10 +11761,10 @@ packages: - webpack-cli dev: true - /@nx/workspace@16.3.2(@swc-node/register@1.5.5)(@swc/core@1.3.27): + /@nx/workspace@16.3.2: resolution: {integrity: sha512-gFrJEv3+Jn2leu3RKFTakPHY8okI8hjOg8RO4OWA2ZemFXRyh9oIm/xsCsOyqYlGt06eqV2mD3GUun/05z1nhg==} dependencies: - '@nrwl/workspace': 16.3.2(@swc-node/register@1.5.5)(@swc/core@1.3.27) + '@nrwl/workspace': 16.3.2 '@nx/devkit': 16.3.2(nx@16.3.2) '@parcel/watcher': 2.0.4 chalk: 4.1.2 @@ -10793,21 +11777,569 @@ packages: ignore: 5.2.4 minimatch: 3.0.5 npm-run-path: 4.0.1 - nx: 16.3.2(@swc-node/register@1.5.5)(@swc/core@1.3.27) + nx: 16.3.2 open: 8.4.0 rxjs: 7.8.0 tmp: 0.2.1 - tslib: 2.5.0 - yargs: 17.6.2 + tslib: 2.6.2 + yargs: 17.7.2 yargs-parser: 21.1.1 transitivePeerDependencies: - '@swc-node/register' - '@swc/core' - debug + /@oclif/color@1.0.11: + resolution: {integrity: sha512-2hOJFJoaJdeEH/0D9Ek5B7Q3bV6jFVRIc7AUimqV8HiA6HGynvCcV0jb1kDK7O2h+WT3j6MO6S4IdjipwqOP4Q==} + engines: {node: '>=12.0.0'} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. + dependencies: + ansi-styles: 4.3.0 + chalk: 4.1.2 + strip-ansi: 6.0.1 + supports-color: 8.1.1 + tslib: 2.6.2 + dev: false + + /@oclif/core@2.15.0(@types/node@16.18.47)(typescript@5.0.4): + resolution: {integrity: sha512-fNEMG5DzJHhYmI3MgpByTvltBOMyFcnRIUMxbiz2ai8rhaYgaTHMG3Q38HcosfIvtw9nCjxpcQtC8MN8QtVCcA==} + engines: {node: '>=14.0.0'} + dependencies: + '@types/cli-progress': 3.11.1 + ansi-escapes: 4.3.2 + ansi-styles: 4.3.0 + cardinal: 2.1.1 + chalk: 4.1.2 + clean-stack: 3.0.1 + cli-progress: 3.12.0 + debug: 4.3.4(supports-color@8.1.1) + ejs: 3.1.8 + get-package-type: 0.1.0 + globby: 11.1.0 + hyperlinker: 1.0.0 + indent-string: 4.0.0 + is-wsl: 2.2.0 + js-yaml: 3.14.1 + natural-orderby: 2.0.3 + object-treeify: 1.1.33 + password-prompt: 1.1.3 + slice-ansi: 4.0.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + supports-color: 8.1.1 + supports-hyperlinks: 2.3.0 + ts-node: 10.9.1(@types/node@16.18.47)(typescript@5.0.4) + tslib: 2.6.2 + widest-line: 3.1.0 + wordwrap: 1.0.0 + wrap-ansi: 7.0.0 + transitivePeerDependencies: + - '@swc/core' + - '@swc/wasm' + - '@types/node' + - typescript + + /@oclif/errors@1.3.6: + resolution: {integrity: sha512-fYaU4aDceETd89KXP+3cLyg9EHZsLD3RxF2IU9yxahhBpspWjkWi3Dy3bTgcwZ3V47BgxQaGapzJWDM33XIVDQ==} + engines: {node: '>=8.0.0'} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. + dependencies: + clean-stack: 3.0.1 + fs-extra: 8.1.0 + indent-string: 4.0.0 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + dev: false + + /@oclif/plugin-autocomplete@2.3.8(@types/node@16.18.47)(typescript@5.0.4): + resolution: {integrity: sha512-cmRPss9OQxz8sRoaw5C/4t/Da7eBEIDJWKRsuzUSQBcPJCN3kTgjp24VTjPHT3j86197s/qkjCRct+3P0IGArg==} + engines: {node: '>=12.0.0'} + dependencies: + '@oclif/core': 2.15.0(@types/node@16.18.47)(typescript@5.0.4) + chalk: 4.1.2 + debug: 4.3.4(supports-color@8.1.1) + transitivePeerDependencies: + - '@swc/core' + - '@swc/wasm' + - '@types/node' + - supports-color + - typescript + dev: false + + /@oclif/plugin-help@5.2.19(@types/node@16.18.47)(typescript@5.0.4): + resolution: {integrity: sha512-gf6/dFtzMJ8RA4ovlBCBGJsZsd4jPXhYWJho+Gh6KmA+Ev9LupoExbE0qT+a2uHJyHEvIg4uX/MBW3qdERD/8g==} + engines: {node: '>=12.0.0'} + dependencies: + '@oclif/core': 2.15.0(@types/node@16.18.47)(typescript@5.0.4) + transitivePeerDependencies: + - '@swc/core' + - '@swc/wasm' + - '@types/node' + - typescript + + /@oclif/plugin-not-found@2.4.1(@types/node@16.18.47)(typescript@5.0.4): + resolution: {integrity: sha512-LqW7qpw5Q8ploRiup2jEIMQJXcxHP1tpwj45GApKQMe7GRdGdRdjBT9Tu+U2tdEgMqgMplAIhOsYCx2nc2nMSw==} + engines: {node: '>=12.0.0'} + dependencies: + '@oclif/core': 2.15.0(@types/node@16.18.47)(typescript@5.0.4) + chalk: 4.1.2 + fast-levenshtein: 3.0.0 + transitivePeerDependencies: + - '@swc/core' + - '@swc/wasm' + - '@types/node' + - typescript + dev: true + + /@oclif/plugin-plugins@3.4.0(@types/node@16.18.47)(typescript@5.0.4): + resolution: {integrity: sha512-oErF7B+75TEheNWMvVfrCtlaHhnCnx41B4pN6cDQWeW4AZc11N45aNYFU55jPN0q20nUkzlVjhb/5M4zMDqQ7w==} + engines: {node: '>=16'} + dependencies: + '@oclif/core': 2.15.0(@types/node@16.18.47)(typescript@5.0.4) + chalk: 4.1.2 + debug: 4.3.4(supports-color@8.1.1) + fs-extra: 9.1.0 + http-call: 5.3.0 + load-json-file: 5.3.0 + npm: 9.6.7 + npm-run-path: 4.0.1 + semver: 7.5.4 + shelljs: 0.8.5 + tslib: 2.6.2 + validate-npm-package-name: 5.0.0 + yarn: 1.22.19 + transitivePeerDependencies: + - '@swc/core' + - '@swc/wasm' + - '@types/node' + - supports-color + - typescript + dev: false + + /@oclif/plugin-warn-if-update-available@2.0.50(@types/node@16.18.47)(typescript@5.0.4): + resolution: {integrity: sha512-+VtxuK31PX49suwkwcR8no0P55KUjvZzfKURTYhveLGAeGHSPLnA60TqB+94+FQN88nlPZncw3867zfwgw6rfw==} + engines: {node: '>=12.0.0'} + dependencies: + '@oclif/core': 2.15.0(@types/node@16.18.47)(typescript@5.0.4) + chalk: 4.1.2 + debug: 4.3.4(supports-color@8.1.1) + fs-extra: 9.1.0 + http-call: 5.3.0 + lodash: 4.17.21 + semver: 7.5.4 + transitivePeerDependencies: + - '@swc/core' + - '@swc/wasm' + - '@types/node' + - supports-color + - typescript + dev: true + + /@oclif/test@2.4.7(@types/node@16.18.47)(typescript@5.0.4): + resolution: {integrity: sha512-r18sKGNUm/VGQ8BkSF9Kn7QeMGjGMDUrLxTDPzL5ERaBF5YSi+O9CT3mKhcFdrMwGnCqPVvlAdX4U/6gtYPy1A==} + engines: {node: '>=12.0.0'} + dependencies: + '@oclif/core': 2.15.0(@types/node@16.18.47)(typescript@5.0.4) + fancy-test: 2.0.38 + transitivePeerDependencies: + - '@swc/core' + - '@swc/wasm' + - '@types/node' + - supports-color + - typescript + dev: true + + /@octokit/auth-token@2.5.0: + resolution: {integrity: sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g==} + dependencies: + '@octokit/types': 6.41.0 + dev: true + + /@octokit/core@3.6.0: + resolution: {integrity: sha512-7RKRKuA4xTjMhY+eG3jthb3hlZCsOwg3rztWh75Xc+ShDWOfDDATWbeZpAHBNRpm4Tv9WgBMOy1zEJYXG6NJ7Q==} + dependencies: + '@octokit/auth-token': 2.5.0 + '@octokit/graphql': 4.8.0 + '@octokit/request': 5.6.3 + '@octokit/request-error': 2.1.0 + '@octokit/types': 6.41.0 + before-after-hook: 2.2.3 + universal-user-agent: 6.0.0 + transitivePeerDependencies: + - encoding + dev: true + + /@octokit/endpoint@6.0.12: + resolution: {integrity: sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA==} + dependencies: + '@octokit/types': 6.41.0 + is-plain-object: 5.0.0 + universal-user-agent: 6.0.0 + dev: true + + /@octokit/graphql@4.8.0: + resolution: {integrity: sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg==} + dependencies: + '@octokit/request': 5.6.3 + '@octokit/types': 6.41.0 + universal-user-agent: 6.0.0 + transitivePeerDependencies: + - encoding + dev: true + + /@octokit/openapi-types@12.11.0: + resolution: {integrity: sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==} + dev: true + + /@octokit/plugin-paginate-rest@2.21.3(@octokit/core@3.6.0): + resolution: {integrity: sha512-aCZTEf0y2h3OLbrgKkrfFdjRL6eSOo8komneVQJnYecAxIej7Bafor2xhuDJOIFau4pk0i/P28/XgtbyPF0ZHw==} + peerDependencies: + '@octokit/core': '>=2' + dependencies: + '@octokit/core': 3.6.0 + '@octokit/types': 6.41.0 + dev: true + + /@octokit/plugin-request-log@1.0.4(@octokit/core@3.6.0): + resolution: {integrity: sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA==} + peerDependencies: + '@octokit/core': '>=3' + dependencies: + '@octokit/core': 3.6.0 + dev: true + + /@octokit/plugin-rest-endpoint-methods@5.16.2(@octokit/core@3.6.0): + resolution: {integrity: sha512-8QFz29Fg5jDuTPXVtey05BLm7OB+M8fnvE64RNegzX7U+5NUXcOcnpTIK0YfSHBg8gYd0oxIq3IZTe9SfPZiRw==} + peerDependencies: + '@octokit/core': '>=3' + dependencies: + '@octokit/core': 3.6.0 + '@octokit/types': 6.41.0 + deprecation: 2.3.1 + dev: true + + /@octokit/request-error@2.1.0: + resolution: {integrity: sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==} + dependencies: + '@octokit/types': 6.41.0 + deprecation: 2.3.1 + once: 1.4.0 + dev: true + + /@octokit/request@5.6.3: + resolution: {integrity: sha512-bFJl0I1KVc9jYTe9tdGGpAMPy32dLBXXo1dS/YwSCTL/2nd9XeHsY616RE3HPXDVk+a+dBuzyz5YdlXwcDTr2A==} + dependencies: + '@octokit/endpoint': 6.0.12 + '@octokit/request-error': 2.1.0 + '@octokit/types': 6.41.0 + is-plain-object: 5.0.0 + node-fetch: 2.6.12 + universal-user-agent: 6.0.0 + transitivePeerDependencies: + - encoding + dev: true + + /@octokit/rest@18.12.0: + resolution: {integrity: sha512-gDPiOHlyGavxr72y0guQEhLsemgVjwRePayJ+FcKc2SJqKUbxbkvf5kAZEWA/MKvsfYlQAMVzNJE3ezQcxMJ2Q==} + dependencies: + '@octokit/core': 3.6.0 + '@octokit/plugin-paginate-rest': 2.21.3(@octokit/core@3.6.0) + '@octokit/plugin-request-log': 1.0.4(@octokit/core@3.6.0) + '@octokit/plugin-rest-endpoint-methods': 5.16.2(@octokit/core@3.6.0) + transitivePeerDependencies: + - encoding + dev: true + + /@octokit/types@6.41.0: + resolution: {integrity: sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==} + dependencies: + '@octokit/openapi-types': 12.11.0 + dev: true + /@open-draft/until@1.0.3: resolution: {integrity: sha512-Aq58f5HiWdyDlFffbbSjAlv596h/cOnt2DO1w3DOC7OJ5EHs0hd/nycJfiu9RJbT6Yk6F1knnRRXNSpxoIVZ9Q==} + /@opentelemetry/api-logs@0.42.0: + resolution: {integrity: sha512-sNMJrstiYgDeKmi5KzlgUW8jop0C700/ZctN0BnJCEiWOrM0CgkCzFeZXbzF7Ko0ukTBUaZly7+YbftWh+xp8w==} + engines: {node: '>=14'} + dependencies: + '@opentelemetry/api': 1.5.0 + dev: false + + /@opentelemetry/api@1.5.0: + resolution: {integrity: sha512-636km3y3pVyJldKGp9qM+lPvxuOvhThUED9cHNPsERkp+APbdtCtj0sALW+mZsbQqnqQkNRHqoGw/Uc82UP6fQ==} + engines: {node: '>=8.0.0'} + dev: false + + /@opentelemetry/context-async-hooks@1.16.0(@opentelemetry/api@1.5.0): + resolution: {integrity: sha512-gV93lVjiqtiDnE6D9QQ7OxpgURQTZqF2xVlqP5+5kbPcsRj+8WQAtpauKm2FuL/eIKVBEeDLaSJWatUKh9RONg==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': '>=1.0.0 <1.6.0' + dependencies: + '@opentelemetry/api': 1.5.0 + dev: false + + /@opentelemetry/core@1.16.0(@opentelemetry/api@1.5.0): + resolution: {integrity: sha512-JMxz7kzAqmIDUDEpoRrumHk257vrA9ZGVdHLB829gu6i/ryKlnjXIzJk86pgjhmxjLMX43BY6J0nbzOhy0QGtw==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': '>=1.0.0 <1.6.0' + dependencies: + '@opentelemetry/api': 1.5.0 + '@opentelemetry/semantic-conventions': 1.16.0 + dev: false + + /@opentelemetry/exporter-jaeger@1.16.0(@opentelemetry/api@1.5.0): + resolution: {integrity: sha512-1zxm5SDhn5HGMMVyzgadEC+4ba/A1j0dbiQMTHm4BuP9psbzbIWPa9hiHBiiM9JjU92Wbgonh+DoLX54tTfBbw==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.0.0 + dependencies: + '@opentelemetry/api': 1.5.0 + '@opentelemetry/core': 1.16.0(@opentelemetry/api@1.5.0) + '@opentelemetry/sdk-trace-base': 1.16.0(@opentelemetry/api@1.5.0) + '@opentelemetry/semantic-conventions': 1.16.0 + jaeger-client: 3.19.0 + dev: false + + /@opentelemetry/exporter-trace-otlp-grpc@0.42.0(@opentelemetry/api@1.5.0): + resolution: {integrity: sha512-iF++MFx97KNXI+VuTwe+Szk9CSIaPU9vLf6OYl788Yhs5SYIJ7CXHuKPcu9x+cYpHB8fm++DfXxG6C9tr/4VjQ==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.0.0 + dependencies: + '@grpc/grpc-js': 1.9.2 + '@opentelemetry/api': 1.5.0 + '@opentelemetry/core': 1.16.0(@opentelemetry/api@1.5.0) + '@opentelemetry/otlp-grpc-exporter-base': 0.42.0(@opentelemetry/api@1.5.0) + '@opentelemetry/otlp-transformer': 0.42.0(@opentelemetry/api@1.5.0) + '@opentelemetry/resources': 1.16.0(@opentelemetry/api@1.5.0) + '@opentelemetry/sdk-trace-base': 1.16.0(@opentelemetry/api@1.5.0) + dev: false + + /@opentelemetry/exporter-trace-otlp-http@0.42.0(@opentelemetry/api@1.5.0): + resolution: {integrity: sha512-wAB1oacyRDWVuioNTFwdoFzj4W+jqVjMmZsYN8wk8bmsZFPRFLXSj1RFYX54QsKiqNpoNretAaz5W0y9VUMKxw==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.0.0 + dependencies: + '@opentelemetry/api': 1.5.0 + '@opentelemetry/core': 1.16.0(@opentelemetry/api@1.5.0) + '@opentelemetry/otlp-exporter-base': 0.42.0(@opentelemetry/api@1.5.0) + '@opentelemetry/otlp-transformer': 0.42.0(@opentelemetry/api@1.5.0) + '@opentelemetry/resources': 1.16.0(@opentelemetry/api@1.5.0) + '@opentelemetry/sdk-trace-base': 1.16.0(@opentelemetry/api@1.5.0) + dev: false + + /@opentelemetry/exporter-trace-otlp-proto@0.42.0(@opentelemetry/api@1.5.0): + resolution: {integrity: sha512-xL85kJQTo8n5D4nuW9yyIYai7fBiU6KQgg85ruCA7fG7Idx1uXpoh2ABBCuyW0B14gZkErc9iM2F7lJeYJQf4w==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.0.0 + dependencies: + '@opentelemetry/api': 1.5.0 + '@opentelemetry/core': 1.16.0(@opentelemetry/api@1.5.0) + '@opentelemetry/otlp-exporter-base': 0.42.0(@opentelemetry/api@1.5.0) + '@opentelemetry/otlp-proto-exporter-base': 0.42.0(@opentelemetry/api@1.5.0) + '@opentelemetry/otlp-transformer': 0.42.0(@opentelemetry/api@1.5.0) + '@opentelemetry/resources': 1.16.0(@opentelemetry/api@1.5.0) + '@opentelemetry/sdk-trace-base': 1.16.0(@opentelemetry/api@1.5.0) + dev: false + + /@opentelemetry/exporter-zipkin@1.16.0(@opentelemetry/api@1.5.0): + resolution: {integrity: sha512-cg5N7GOB/AwWsdkLwObzQguLZLbR8EvE1CyJwb1FG608YkVa8mAOe83cgIzBtNVzGDOw3KK9xWhTjeFdXC7e8g==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.0.0 + dependencies: + '@opentelemetry/api': 1.5.0 + '@opentelemetry/core': 1.16.0(@opentelemetry/api@1.5.0) + '@opentelemetry/resources': 1.16.0(@opentelemetry/api@1.5.0) + '@opentelemetry/sdk-trace-base': 1.16.0(@opentelemetry/api@1.5.0) + '@opentelemetry/semantic-conventions': 1.16.0 + dev: false + + /@opentelemetry/instrumentation@0.42.0(@opentelemetry/api@1.5.0): + resolution: {integrity: sha512-GurYTghhmz/JlV2jGzGQbZLWBmzsjWKVOunZnoy1fzYtZ3mHBAmEFWXwQyAi6lQwnWsEq6u/xacGY60qH2onnw==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.5.0 + '@types/shimmer': 1.0.2 + import-in-the-middle: 1.4.2 + require-in-the-middle: 7.2.0 + semver: 7.5.4 + shimmer: 1.2.1 + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/otlp-exporter-base@0.42.0(@opentelemetry/api@1.5.0): + resolution: {integrity: sha512-iF9imj5Qjoc4tOMWbYkf1hqgLIZbuhWxFkESdwd6z/0sgWmLLs+Vgf5khvJhSS0ZKaCPXKvkvEGPDNrMGM1U+w==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.0.0 + dependencies: + '@opentelemetry/api': 1.5.0 + '@opentelemetry/core': 1.16.0(@opentelemetry/api@1.5.0) + dev: false + + /@opentelemetry/otlp-grpc-exporter-base@0.42.0(@opentelemetry/api@1.5.0): + resolution: {integrity: sha512-0YlzC2CfgM5cvzJ/7xPOnprpm4NdJ+s+yhibjhI6qADcd+GJUzCwT/prvOThHSuD5e222l7rwCU+5hC2aLou6g==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.0.0 + dependencies: + '@grpc/grpc-js': 1.9.2 + '@opentelemetry/api': 1.5.0 + '@opentelemetry/core': 1.16.0(@opentelemetry/api@1.5.0) + '@opentelemetry/otlp-exporter-base': 0.42.0(@opentelemetry/api@1.5.0) + protobufjs: 7.2.5 + dev: false + + /@opentelemetry/otlp-proto-exporter-base@0.42.0(@opentelemetry/api@1.5.0): + resolution: {integrity: sha512-jF5sZndx8Nh3hxxD/0Db55+pr/X3zrLGBNxGbFZ/aSMHLRCqL0Mtkg0OywDT6bD6mgTl/b79sUvzdEpmo+Y1tg==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.0.0 + dependencies: + '@opentelemetry/api': 1.5.0 + '@opentelemetry/core': 1.16.0(@opentelemetry/api@1.5.0) + '@opentelemetry/otlp-exporter-base': 0.42.0(@opentelemetry/api@1.5.0) + protobufjs: 7.2.5 + dev: false + + /@opentelemetry/otlp-transformer@0.42.0(@opentelemetry/api@1.5.0): + resolution: {integrity: sha512-Mf8PN4zA7jgpYP7l7WiBNwEUawlCMTi2pLAXN2/B3lRCOXVA/93L4xhWzZP9YhP3Ef7NR8M33TOIVrXdflHPJQ==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': '>=1.3.0 <1.6.0' + dependencies: + '@opentelemetry/api': 1.5.0 + '@opentelemetry/api-logs': 0.42.0 + '@opentelemetry/core': 1.16.0(@opentelemetry/api@1.5.0) + '@opentelemetry/resources': 1.16.0(@opentelemetry/api@1.5.0) + '@opentelemetry/sdk-logs': 0.42.0(@opentelemetry/api-logs@0.42.0)(@opentelemetry/api@1.5.0) + '@opentelemetry/sdk-metrics': 1.16.0(@opentelemetry/api@1.5.0) + '@opentelemetry/sdk-trace-base': 1.16.0(@opentelemetry/api@1.5.0) + dev: false + + /@opentelemetry/propagator-b3@1.16.0(@opentelemetry/api@1.5.0): + resolution: {integrity: sha512-dtmRiyGN8tO0pCUoryYda167NQ0TTDWRd5vd6AbZmduxmPle+COCJdvrwmW/2/e2CU0waRKCs4iOELVZISbFCQ==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': '>=1.0.0 <1.6.0' + dependencies: + '@opentelemetry/api': 1.5.0 + '@opentelemetry/core': 1.16.0(@opentelemetry/api@1.5.0) + dev: false + + /@opentelemetry/propagator-jaeger@1.16.0(@opentelemetry/api@1.5.0): + resolution: {integrity: sha512-c7R7KzifQrTAlvEBz4xCxaLPYNtrX0u9/9scS3zQP3BPUVpCApbsmVIun0Oq+vtBUTR9eI6LE1OCTVShTBh6Pw==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': '>=1.0.0 <1.6.0' + dependencies: + '@opentelemetry/api': 1.5.0 + '@opentelemetry/core': 1.16.0(@opentelemetry/api@1.5.0) + dev: false + + /@opentelemetry/resources@1.16.0(@opentelemetry/api@1.5.0): + resolution: {integrity: sha512-Z2LdmfbLDYtn1vMJrPDdbRozwj9+WX8G4dxnUeqIVIYjwolV3kLjV+fWgvxoo0N00kNZBCvor+iD81iXx3sDpA==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': '>=1.0.0 <1.6.0' + dependencies: + '@opentelemetry/api': 1.5.0 + '@opentelemetry/core': 1.16.0(@opentelemetry/api@1.5.0) + '@opentelemetry/semantic-conventions': 1.16.0 + dev: false + + /@opentelemetry/sdk-logs@0.42.0(@opentelemetry/api-logs@0.42.0)(@opentelemetry/api@1.5.0): + resolution: {integrity: sha512-EP6sOiIl8c8pH97+eNeDiNcQQwPYG+sqw/fA0R1vWgAaJ7QKmL4+w5TIgCH86aSlQWCYE/q26fVUalYbf+mgJA==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': '>=1.4.0 <1.6.0' + '@opentelemetry/api-logs': '>=0.39.1' + dependencies: + '@opentelemetry/api': 1.5.0 + '@opentelemetry/api-logs': 0.42.0 + '@opentelemetry/core': 1.16.0(@opentelemetry/api@1.5.0) + '@opentelemetry/resources': 1.16.0(@opentelemetry/api@1.5.0) + dev: false + + /@opentelemetry/sdk-metrics@1.16.0(@opentelemetry/api@1.5.0): + resolution: {integrity: sha512-58obaKzBY0CB6ZQS/sxcGvihqZk2zL2KDCQe734NofVfE7JpKMn/TtyzA8O4nw9sXIO2N9Wx2zzKRyGFXVGrcw==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': '>=1.3.0 <1.6.0' + dependencies: + '@opentelemetry/api': 1.5.0 + '@opentelemetry/core': 1.16.0(@opentelemetry/api@1.5.0) + '@opentelemetry/resources': 1.16.0(@opentelemetry/api@1.5.0) + lodash.merge: 4.6.2 + dev: false + + /@opentelemetry/sdk-node@0.42.0(@opentelemetry/api@1.5.0): + resolution: {integrity: sha512-HSpFp1YlU2C0elonA7vsXEtSalIxyx8rZkZ5necXY6iFpv7jJS4LeWgEJdjQ4MwYL04JPLoNemW/hjVr4KBr7g==} + engines: {node: '>=14'} + requiresBuild: true + peerDependencies: + '@opentelemetry/api': '>=1.3.0 <1.6.0' + dependencies: + '@opentelemetry/api': 1.5.0 + '@opentelemetry/api-logs': 0.42.0 + '@opentelemetry/core': 1.16.0(@opentelemetry/api@1.5.0) + '@opentelemetry/exporter-jaeger': 1.16.0(@opentelemetry/api@1.5.0) + '@opentelemetry/exporter-trace-otlp-grpc': 0.42.0(@opentelemetry/api@1.5.0) + '@opentelemetry/exporter-trace-otlp-http': 0.42.0(@opentelemetry/api@1.5.0) + '@opentelemetry/exporter-trace-otlp-proto': 0.42.0(@opentelemetry/api@1.5.0) + '@opentelemetry/exporter-zipkin': 1.16.0(@opentelemetry/api@1.5.0) + '@opentelemetry/instrumentation': 0.42.0(@opentelemetry/api@1.5.0) + '@opentelemetry/resources': 1.16.0(@opentelemetry/api@1.5.0) + '@opentelemetry/sdk-logs': 0.42.0(@opentelemetry/api-logs@0.42.0)(@opentelemetry/api@1.5.0) + '@opentelemetry/sdk-metrics': 1.16.0(@opentelemetry/api@1.5.0) + '@opentelemetry/sdk-trace-base': 1.16.0(@opentelemetry/api@1.5.0) + '@opentelemetry/sdk-trace-node': 1.16.0(@opentelemetry/api@1.5.0) + '@opentelemetry/semantic-conventions': 1.16.0 + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/sdk-trace-base@1.16.0(@opentelemetry/api@1.5.0): + resolution: {integrity: sha512-UvV8v8cN0Bx5BI40IJ+sMWcbwWekPa9ngMHSOfCWtSAVKbzwFdDV4Jrs/ejC6uR/SI6CKFQB9ItHp/0nZzVbIQ==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': '>=1.0.0 <1.6.0' + dependencies: + '@opentelemetry/api': 1.5.0 + '@opentelemetry/core': 1.16.0(@opentelemetry/api@1.5.0) + '@opentelemetry/resources': 1.16.0(@opentelemetry/api@1.5.0) + '@opentelemetry/semantic-conventions': 1.16.0 + dev: false + + /@opentelemetry/sdk-trace-node@1.16.0(@opentelemetry/api@1.5.0): + resolution: {integrity: sha512-OYWUx1U9FrpTOf+jeDWE+f2rRD3r1PI604cMz1OFmC2nL2CF8htalKE7Z/bc/hy5Bm+YO0W78m4tWjyKep9YSw==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': '>=1.0.0 <1.6.0' + dependencies: + '@opentelemetry/api': 1.5.0 + '@opentelemetry/context-async-hooks': 1.16.0(@opentelemetry/api@1.5.0) + '@opentelemetry/core': 1.16.0(@opentelemetry/api@1.5.0) + '@opentelemetry/propagator-b3': 1.16.0(@opentelemetry/api@1.5.0) + '@opentelemetry/propagator-jaeger': 1.16.0(@opentelemetry/api@1.5.0) + '@opentelemetry/sdk-trace-base': 1.16.0(@opentelemetry/api@1.5.0) + semver: 7.5.4 + dev: false + + /@opentelemetry/semantic-conventions@1.16.0: + resolution: {integrity: sha512-jpbpOY0ahD/uTF16h4/NkFatwlulCpkvecK8zVJgHRfjK/ymJAw1Cg45KXiVSJML8uiMmRBciea/+gebrD398g==} + engines: {node: '>=14'} + dev: false + /@originjs/vite-plugin-commonjs@1.0.3: resolution: {integrity: sha512-KuEXeGPptM2lyxdIEJ4R11+5ztipHoE7hy8ClZt3PYaOVQ/pyngd2alaSrPnwyFeOW1UagRBaQ752aA1dTMdOQ==} dependencies: @@ -10838,14 +12370,14 @@ packages: dependencies: asn1js: 3.0.5 pvtsutils: 1.3.2 - tslib: 2.5.0 + tslib: 2.6.2 dev: true /@peculiar/json-schema@1.1.12: resolution: {integrity: sha512-coUfuoMeIB7B8/NMekxaDzLhaYmp0HZNPEjYRm9goRou8UZIC3z21s0sL9AWoCw4EG876QyO3kYrc61WNF9B/w==} engines: {node: '>=8.0.0'} dependencies: - tslib: 2.5.0 + tslib: 2.6.2 dev: true /@peculiar/webcrypto@1.4.1: @@ -10855,7 +12387,7 @@ packages: '@peculiar/asn1-schema': 2.3.3 '@peculiar/json-schema': 1.1.12 pvtsutils: 1.3.2 - tslib: 2.5.0 + tslib: 2.6.2 webcrypto-core: 1.7.5 dev: true @@ -10867,6 +12399,13 @@ packages: esquery: 1.4.0 typescript: 5.0.4 + /@pkgjs/parseargs@0.11.0: + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + requiresBuild: true + dev: true + optional: true + /@pkgr/utils@2.3.1: resolution: {integrity: sha512-wfzX8kc1PMyUILA+1Z/EqoE4UCXGy0iRGMhPwdfae1+f0OXlLqCk+By+aMzgJBzR9AzS4CDizioG6Ss1gvAFJw==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} @@ -10876,7 +12415,7 @@ packages: open: 8.4.2 picocolors: 1.0.0 tiny-glob: 0.2.9 - tslib: 2.5.0 + tslib: 2.6.2 dev: true /@pmmmwh/react-refresh-webpack-plugin@0.5.10(react-refresh@0.10.0)(webpack@5.85.1): @@ -10915,12 +12454,55 @@ packages: react-refresh: 0.10.0 schema-utils: 3.1.1 source-map: 0.7.4 - webpack: 5.85.1(@swc/core@1.3.27) + webpack: 5.85.1 dev: true /@polka/url@1.0.0-next.21: resolution: {integrity: sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==} + /@protobufjs/aspromise@1.1.2: + resolution: {integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==} + dev: false + + /@protobufjs/base64@1.1.2: + resolution: {integrity: sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==} + dev: false + + /@protobufjs/codegen@2.0.4: + resolution: {integrity: sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==} + dev: false + + /@protobufjs/eventemitter@1.1.0: + resolution: {integrity: sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==} + dev: false + + /@protobufjs/fetch@1.1.0: + resolution: {integrity: sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==} + dependencies: + '@protobufjs/aspromise': 1.1.2 + '@protobufjs/inquire': 1.1.0 + dev: false + + /@protobufjs/float@1.0.2: + resolution: {integrity: sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==} + dev: false + + /@protobufjs/inquire@1.1.0: + resolution: {integrity: sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==} + dev: false + + /@protobufjs/path@1.1.2: + resolution: {integrity: sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==} + dev: false + + /@protobufjs/pool@1.1.0: + resolution: {integrity: sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==} + dev: false + + /@protobufjs/utf8@1.1.0: + resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==} + dev: false + /@radix-ui/primitive@1.0.1: resolution: {integrity: sha512-yQ8oGX2GVsEYMWGxcovu1uGWPCxV5BFfeeYxqPmuAzUyLT9qmaMXSAhXpb0WrspIeqYzdJpkh2vHModJPgRIaw==} dependencies: @@ -11874,7 +13456,7 @@ packages: dependencies: archive-type: 4.0.0 chalk: 4.1.2 - ci-info: 3.7.1 + ci-info: 3.8.0 cli-progress-footer: 2.3.2 content-disposition: 0.5.4 d: 1.0.1 @@ -11923,6 +13505,39 @@ packages: /@sideway/pinpoint@2.0.0: resolution: {integrity: sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==} + /@sigstore/bundle@1.1.0: + resolution: {integrity: sha512-PFutXEy0SmQxYI4texPw3dd2KewuNqv7OuK1ZFtY2fM754yhvG2KdgwIhRnoEE2uHdtdGNQ8s0lb94dW9sELog==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + '@sigstore/protobuf-specs': 0.2.1 + dev: true + + /@sigstore/protobuf-specs@0.2.1: + resolution: {integrity: sha512-XTWVxnWJu+c1oCshMLwnKvz8ZQJJDVOlciMfgpJBQbThVjKTCG8dwyhgLngBD2KN0ap9F/gOV8rFDEx8uh7R2A==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dev: true + + /@sigstore/sign@1.0.0: + resolution: {integrity: sha512-INxFVNQteLtcfGmcoldzV6Je0sbbfh9I16DM4yJPw3j5+TFP8X6uIiA18mvpEa9yyeycAKgPmOA3X9hVdVTPUA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + '@sigstore/bundle': 1.1.0 + '@sigstore/protobuf-specs': 0.2.1 + make-fetch-happen: 11.1.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@sigstore/tuf@1.0.3: + resolution: {integrity: sha512-2bRovzs0nJZFlCN3rXirE4gwxCn97JNjMmwpecqlbgV9WcxX7WRuIrgzx/X7Ib7MYRbyUTpBYE0s2x6AmZXnlg==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + '@sigstore/protobuf-specs': 0.2.1 + tuf-js: 1.1.7 + transitivePeerDependencies: + - supports-color + dev: true + /@sinclair/typebox@0.24.51: resolution: {integrity: sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA==} dev: true @@ -11970,21 +13585,326 @@ packages: webpack-sources: 3.2.3 dev: false + /@smithy/abort-controller@2.0.5: + resolution: {integrity: sha512-byVZ2KWLMPYAZGKjRpniAzLcygJO4ruClZKdJTuB0eCB76ONFTdptBHlviHpAZXknRz7skYWPfcgO9v30A1SyA==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/types': 2.2.2 + tslib: 2.6.2 + + /@smithy/config-resolver@2.0.5: + resolution: {integrity: sha512-n0c2AXz+kjALY2FQr7Zy9zhYigXzboIh1AuUUVCqFBKFtdEvTwnwPXrTDoEehLiRTUHNL+4yzZ3s+D0kKYSLSg==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/types': 2.2.2 + '@smithy/util-config-provider': 2.0.0 + '@smithy/util-middleware': 2.0.0 + tslib: 2.6.2 + + /@smithy/credential-provider-imds@2.0.5: + resolution: {integrity: sha512-KFcf/e0meFkQNyteJ65f1G19sgUEY1e5zL7hyAEUPz2SEfBmC9B37WyRq87G3MEEsvmAWwCRu7nFFYUKtR3svQ==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/node-config-provider': 2.0.5 + '@smithy/property-provider': 2.0.5 + '@smithy/types': 2.2.2 + '@smithy/url-parser': 2.0.5 + tslib: 2.6.2 + + /@smithy/eventstream-codec@2.0.5: + resolution: {integrity: sha512-iqR6OuOV3zbQK8uVs9o+9AxhVk8kW9NAxA71nugwUB+kTY9C35pUd0A5/m4PRT0Y0oIW7W4kgnSR3fdYXQjECw==} + dependencies: + '@aws-crypto/crc32': 3.0.0 + '@smithy/types': 2.2.2 + '@smithy/util-hex-encoding': 2.0.0 + tslib: 2.6.2 + + /@smithy/fetch-http-handler@2.0.5: + resolution: {integrity: sha512-EzFoMowdBNy1VqtvkiXgPFEdosIAt4/4bgZ8uiDiUyfhmNXq/3bV+CagPFFBsgFOR/X2XK4zFZHRsoa7PNHVVg==} + dependencies: + '@smithy/protocol-http': 2.0.5 + '@smithy/querystring-builder': 2.0.5 + '@smithy/types': 2.2.2 + '@smithy/util-base64': 2.0.0 + tslib: 2.6.2 + + /@smithy/hash-node@2.0.5: + resolution: {integrity: sha512-mk551hIywBITT+kXruRNXk7f8Fy7DTzBjZJSr/V6nolYKmUHIG3w5QU6nO9qPYEQGKc/yEPtkpdS28ndeG93lA==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/types': 2.2.2 + '@smithy/util-buffer-from': 2.0.0 + '@smithy/util-utf8': 2.0.0 + tslib: 2.6.2 + + /@smithy/invalid-dependency@2.0.5: + resolution: {integrity: sha512-0wEi+JT0hM+UUwrJVYbqjuGFhy5agY/zXyiN7BNAJ1XoCDjU5uaNSj8ekPWsXd/d4yM6NSe8UbPd8cOc1+3oBQ==} + dependencies: + '@smithy/types': 2.2.2 + tslib: 2.6.2 + + /@smithy/is-array-buffer@2.0.0: + resolution: {integrity: sha512-z3PjFjMyZNI98JFRJi/U0nGoLWMSJlDjAW4QUX2WNZLas5C0CmVV6LJ01JI0k90l7FvpmixjWxPFmENSClQ7ug==} + engines: {node: '>=14.0.0'} + dependencies: + tslib: 2.6.2 + + /@smithy/middleware-content-length@2.0.5: + resolution: {integrity: sha512-E7VwV5H02fgZIUGRli4GevBCAPvkyEI/fgl9SU47nPPi3DAAX3nEtUb8xfGbXjOcJ5BdSUoWWZn42tEd/blOqA==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/protocol-http': 2.0.5 + '@smithy/types': 2.2.2 + tslib: 2.6.2 + + /@smithy/middleware-endpoint@2.0.5: + resolution: {integrity: sha512-tyzDuoNTbsMQCq5Xkc4QOt6e2GACUllQIV8SQ5fc59FtOIV9/vbf58/GxVjZm2o8+MMbdDBANjTDZe/ijZKfyA==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/middleware-serde': 2.0.5 + '@smithy/types': 2.2.2 + '@smithy/url-parser': 2.0.5 + '@smithy/util-middleware': 2.0.0 + tslib: 2.6.2 + + /@smithy/middleware-retry@2.0.5: + resolution: {integrity: sha512-ulIfbFyzQTVnJbLjUl1CTSi0etg6tej/ekwaLp0Gn8ybUkDkKYa+uB6CF/m2J5B6meRwyJlsryR+DjaOVyiicg==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/protocol-http': 2.0.5 + '@smithy/service-error-classification': 2.0.0 + '@smithy/types': 2.2.2 + '@smithy/util-middleware': 2.0.0 + '@smithy/util-retry': 2.0.0 + tslib: 2.6.2 + uuid: 8.3.2 + + /@smithy/middleware-serde@2.0.5: + resolution: {integrity: sha512-in0AA5sous74dOfTGU9rMJBXJ0bDVNxwdXtEt5lh3FVd2sEyjhI+rqpLLRF1E4ixbw3RSEf80hfRpcPdjg4vvQ==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/types': 2.2.2 + tslib: 2.6.2 + + /@smithy/middleware-stack@2.0.0: + resolution: {integrity: sha512-31XC1xNF65nlbc16yuh3wwTudmqs6qy4EseQUGF8A/p2m/5wdd/cnXJqpniy/XvXVwkHPz/GwV36HqzHtIKATQ==} + engines: {node: '>=14.0.0'} + dependencies: + tslib: 2.6.2 + + /@smithy/node-config-provider@2.0.5: + resolution: {integrity: sha512-LRtjV9WkhONe2lVy+ipB/l1GX60ybzBmFyeRUoLUXWKdnZ3o81jsnbKzMK8hKq8eFSWPk+Lmyx6ZzCQabGeLxg==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/property-provider': 2.0.5 + '@smithy/shared-ini-file-loader': 2.0.5 + '@smithy/types': 2.2.2 + tslib: 2.6.2 + + /@smithy/node-http-handler@2.0.5: + resolution: {integrity: sha512-lZm5DZf4b3V0saUw9WTC4/du887P6cy2fUyQgQQKRRV6OseButyD5yTzeMmXE53CaXJBMBsUvvIQ0hRVxIq56w==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/abort-controller': 2.0.5 + '@smithy/protocol-http': 2.0.5 + '@smithy/querystring-builder': 2.0.5 + '@smithy/types': 2.2.2 + tslib: 2.6.2 + + /@smithy/property-provider@2.0.5: + resolution: {integrity: sha512-cAFSUhX6aiHcmpWfrCLKvwBtgN1F6A0N8qY/8yeSi0LRLmhGqsY1/YTxFE185MCVzYbqBGXVr9TBv4RUcIV4rA==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/types': 2.2.2 + tslib: 2.6.2 + /@smithy/protocol-http@1.0.1: resolution: {integrity: sha512-9OrEn0WfOVtBNYJUjUAn9AOiJ4lzERCJJ/JeZs8E6yajTGxBaFRxUnNBHiNqoDJVg076hY36UmEnPx7xXrvUSg==} engines: {node: '>=14.0.0'} dependencies: '@smithy/types': 1.0.0 - tslib: 2.5.0 + tslib: 2.6.2 dev: false + /@smithy/protocol-http@2.0.5: + resolution: {integrity: sha512-d2hhHj34mA2V86doiDfrsy2fNTnUOowGaf9hKb0hIPHqvcnShU4/OSc4Uf1FwHkAdYF3cFXTrj5VGUYbEuvMdw==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/types': 2.2.2 + tslib: 2.6.2 + + /@smithy/querystring-builder@2.0.5: + resolution: {integrity: sha512-4DCX9krxLzATj+HdFPC3i8pb7XTAWzzKqSw8aTZMjXjtQY+vhe4azMAqIvbb6g7JKwIkmkRAjK6EXO3YWSnJVQ==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/types': 2.2.2 + '@smithy/util-uri-escape': 2.0.0 + tslib: 2.6.2 + + /@smithy/querystring-parser@2.0.5: + resolution: {integrity: sha512-C2stCULH0r54KBksv3AWcN8CLS3u9+WsEW8nBrvctrJ5rQTNa1waHkffpVaiKvcW2nP0aIMBPCobD/kYf/q9mA==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/types': 2.2.2 + tslib: 2.6.2 + + /@smithy/service-error-classification@2.0.0: + resolution: {integrity: sha512-2z5Nafy1O0cTf69wKyNjGW/sNVMiqDnb4jgwfMG8ye8KnFJ5qmJpDccwIbJNhXIfbsxTg9SEec2oe1cexhMJvw==} + engines: {node: '>=14.0.0'} + + /@smithy/shared-ini-file-loader@2.0.5: + resolution: {integrity: sha512-Mvtk6FwMtfbKRC4YuSsIqRYp9WTxsSUJVVo2djgyhcacKGMqicHDWSAmgy3sDrKv+G/G6xTZCPwm6pJARtdxVg==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/types': 2.2.2 + tslib: 2.6.2 + + /@smithy/signature-v4@2.0.5: + resolution: {integrity: sha512-ABIzXmUDXK4n2c9cXjQLELgH2RdtABpYKT+U131e2I6RbCypFZmxIHmIBufJzU2kdMCQ3+thBGDWorAITFW04A==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/eventstream-codec': 2.0.5 + '@smithy/is-array-buffer': 2.0.0 + '@smithy/types': 2.2.2 + '@smithy/util-hex-encoding': 2.0.0 + '@smithy/util-middleware': 2.0.0 + '@smithy/util-uri-escape': 2.0.0 + '@smithy/util-utf8': 2.0.0 + tslib: 2.6.2 + + /@smithy/smithy-client@2.0.5: + resolution: {integrity: sha512-kCTFr8wfOAWKDzGvfBElc6shHigWtHNhMQ1IbosjC4jOlayFyZMSs2PysKB+Ox/dhQ41KqOzgVjgiQ+PyWqHMQ==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/middleware-stack': 2.0.0 + '@smithy/types': 2.2.2 + '@smithy/util-stream': 2.0.5 + tslib: 2.6.2 + /@smithy/types@1.0.0: resolution: {integrity: sha512-kc1m5wPBHQCTixwuaOh9vnak/iJm21DrSf9UK6yDE5S3mQQ4u11pqAUiKWnlrZnYkeLfAI9UEHj9OaMT1v5Umg==} engines: {node: '>=14.0.0'} dependencies: - tslib: 2.5.0 + tslib: 2.6.2 dev: false + /@smithy/types@2.2.2: + resolution: {integrity: sha512-4PS0y1VxDnELGHGgBWlDksB2LJK8TG8lcvlWxIsgR+8vROI7Ms8h1P4FQUx+ftAX2QZv5g1CJCdhdRmQKyonyw==} + engines: {node: '>=14.0.0'} + dependencies: + tslib: 2.6.2 + + /@smithy/url-parser@2.0.5: + resolution: {integrity: sha512-OdMBvZhpckQSkugCXNJQCvqJ71wE7Ftxce92UOQLQ9pwF6hoS5PLL7wEfpnuEXtStzBqJYkzu1C1ZfjuFGOXAA==} + dependencies: + '@smithy/querystring-parser': 2.0.5 + '@smithy/types': 2.2.2 + tslib: 2.6.2 + + /@smithy/util-base64@2.0.0: + resolution: {integrity: sha512-Zb1E4xx+m5Lud8bbeYi5FkcMJMnn+1WUnJF3qD7rAdXpaL7UjkFQLdmW5fHadoKbdHpwH9vSR8EyTJFHJs++tA==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/util-buffer-from': 2.0.0 + tslib: 2.6.2 + + /@smithy/util-body-length-browser@2.0.0: + resolution: {integrity: sha512-JdDuS4ircJt+FDnaQj88TzZY3+njZ6O+D3uakS32f2VNnDo3vyEuNdBOh/oFd8Df1zSZOuH1HEChk2AOYDezZg==} + dependencies: + tslib: 2.6.2 + + /@smithy/util-body-length-node@2.1.0: + resolution: {integrity: sha512-/li0/kj/y3fQ3vyzn36NTLGmUwAICb7Jbe/CsWCktW363gh1MOcpEcSO3mJ344Gv2dqz8YJCLQpb6hju/0qOWw==} + engines: {node: '>=14.0.0'} + dependencies: + tslib: 2.6.2 + + /@smithy/util-buffer-from@2.0.0: + resolution: {integrity: sha512-/YNnLoHsR+4W4Vf2wL5lGv0ksg8Bmk3GEGxn2vEQt52AQaPSCuaO5PM5VM7lP1K9qHRKHwrPGktqVoAHKWHxzw==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/is-array-buffer': 2.0.0 + tslib: 2.6.2 + + /@smithy/util-config-provider@2.0.0: + resolution: {integrity: sha512-xCQ6UapcIWKxXHEU4Mcs2s7LcFQRiU3XEluM2WcCjjBtQkUN71Tb+ydGmJFPxMUrW/GWMgQEEGipLym4XG0jZg==} + engines: {node: '>=14.0.0'} + dependencies: + tslib: 2.6.2 + + /@smithy/util-defaults-mode-browser@2.0.5: + resolution: {integrity: sha512-yciP6TPttLsj731aHTvekgyuCGXQrEAJibEwEWAh3kzaDsfGAVCuZSBlyvC2Dl3TZmHKCOQwHV8mIE7KQCTPuQ==} + engines: {node: '>= 10.0.0'} + dependencies: + '@smithy/property-provider': 2.0.5 + '@smithy/types': 2.2.2 + bowser: 2.11.0 + tslib: 2.6.2 + + /@smithy/util-defaults-mode-node@2.0.5: + resolution: {integrity: sha512-M07t99rWasXt+IaDZDyP3BkcoEm/mgIE1RIMASrE49LKSNxaVN7PVcgGc77+4uu2kzBAyqJKy79pgtezuknyjQ==} + engines: {node: '>= 10.0.0'} + dependencies: + '@smithy/config-resolver': 2.0.5 + '@smithy/credential-provider-imds': 2.0.5 + '@smithy/node-config-provider': 2.0.5 + '@smithy/property-provider': 2.0.5 + '@smithy/types': 2.2.2 + tslib: 2.6.2 + + /@smithy/util-hex-encoding@2.0.0: + resolution: {integrity: sha512-c5xY+NUnFqG6d7HFh1IFfrm3mGl29lC+vF+geHv4ToiuJCBmIfzx6IeHLg+OgRdPFKDXIw6pvi+p3CsscaMcMA==} + engines: {node: '>=14.0.0'} + dependencies: + tslib: 2.6.2 + + /@smithy/util-middleware@2.0.0: + resolution: {integrity: sha512-eCWX4ECuDHn1wuyyDdGdUWnT4OGyIzV0LN1xRttBFMPI9Ff/4heSHVxneyiMtOB//zpXWCha1/SWHJOZstG7kA==} + engines: {node: '>=14.0.0'} + dependencies: + tslib: 2.6.2 + + /@smithy/util-retry@2.0.0: + resolution: {integrity: sha512-/dvJ8afrElasuiiIttRJeoS2sy8YXpksQwiM/TcepqdRVp7u4ejd9C4IQURHNjlfPUT7Y6lCDSa2zQJbdHhVTg==} + engines: {node: '>= 14.0.0'} + dependencies: + '@smithy/service-error-classification': 2.0.0 + tslib: 2.6.2 + + /@smithy/util-stream@2.0.5: + resolution: {integrity: sha512-ylx27GwI05xLpYQ4hDIfS15vm+wYjNN0Sc2P0FxuzgRe8v0BOLHppGIQ+Bezcynk8C9nUzsUue3TmtRhjut43g==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/fetch-http-handler': 2.0.5 + '@smithy/node-http-handler': 2.0.5 + '@smithy/types': 2.2.2 + '@smithy/util-base64': 2.0.0 + '@smithy/util-buffer-from': 2.0.0 + '@smithy/util-hex-encoding': 2.0.0 + '@smithy/util-utf8': 2.0.0 + tslib: 2.6.2 + + /@smithy/util-uri-escape@2.0.0: + resolution: {integrity: sha512-ebkxsqinSdEooQduuk9CbKcI+wheijxEb3utGXkCoYQkJnwTnLbH1JXGimJtUkQwNQbsbuYwG2+aFVyZf5TLaw==} + engines: {node: '>=14.0.0'} + dependencies: + tslib: 2.6.2 + + /@smithy/util-utf8@2.0.0: + resolution: {integrity: sha512-rctU1VkziY84n5OXe3bPNpKR001ZCME2JCaBBFgtiM2hfKbHFudc/BkMuPab8hRbLd0j3vbnBTTZ1igBf0wgiQ==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/util-buffer-from': 2.0.0 + tslib: 2.6.2 + + /@smithy/util-waiter@2.0.5: + resolution: {integrity: sha512-1lkkUmI/bhaDX+LIT3RiUNAn+NzPmsWjE7beMq0oQ3H1/CffaILIN67riDA0aE1YBj6xll7uWMIy4tJqc+peXw==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/abort-controller': 2.0.5 + '@smithy/types': 2.2.2 + tslib: 2.6.2 + /@storybook/addon-actions@7.0.23(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-xsLUZez6fzHc+be8BypVO5aA7kjeH9jymLAib68SSQoF0GQry7mb/fhumifQno2BKfCyCw++lYqLHzwV0EISxg==} peerDependencies: @@ -12587,7 +14507,7 @@ packages: dependencies: '@storybook/node-logger': 7.0.23 '@storybook/types': 7.0.23 - '@types/node': 16.11.7 + '@types/node': 16.18.47 '@types/node-fetch': 2.6.4 '@types/pretty-hrtime': 1.0.1 chalk: 4.1.2 @@ -12635,7 +14555,7 @@ packages: '@storybook/telemetry': 7.0.23 '@storybook/types': 7.0.23 '@types/detect-port': 1.3.2 - '@types/node': 16.11.7 + '@types/node': 16.18.47 '@types/node-fetch': 2.6.4 '@types/pretty-hrtime': 1.0.1 '@types/semver': 7.3.13 @@ -12922,7 +14842,7 @@ packages: '@storybook/types': 7.0.23 '@types/escodegen': 0.0.6 '@types/estree': 0.0.51 - '@types/node': 16.11.7 + '@types/node': 16.18.47 acorn: 7.4.1 acorn-jsx: 5.3.2(acorn@7.4.1) acorn-walk: 7.2.0 @@ -12962,7 +14882,7 @@ packages: '@storybook/types': 7.0.23 '@types/escodegen': 0.0.6 '@types/estree': 0.0.51 - '@types/node': 16.11.7 + '@types/node': 16.18.47 acorn: 7.4.1 acorn-jsx: 5.3.2(acorn@7.4.1) acorn-walk: 7.2.0 @@ -13055,7 +14975,7 @@ packages: dependencies: '@storybook/channels': 7.0.10 '@types/babel__core': 7.20.0 - '@types/express': 4.17.15 + '@types/express': 4.17.17 file-system-cache: 2.1.1 dev: true @@ -13368,159 +15288,6 @@ packages: transitivePeerDependencies: - supports-color - /@swc-node/core@1.9.2(@swc/core@1.3.27): - resolution: {integrity: sha512-tInCla6NO1HEQwhIc/K7PCOu4X3ppqw5xYNEMD7i41SyRuH7yp3u8x7x2cqeAD+6IAhJ5jKDPv2QRLPz7Xt3EA==} - engines: {node: '>= 10'} - peerDependencies: - '@swc/core': '>= 1.3' - dependencies: - '@swc/core': 1.3.27 - - /@swc-node/register@1.5.5(@swc/core@1.3.27)(typescript@5.0.4): - resolution: {integrity: sha512-SNpbRG8EOXShk3YAnC4suAVovYQ7oFOFdCVBA3J8hkO5qy0WHPVnlnMojTYI+8UT1CrfQ1QSUySaAARRvEdwjg==} - peerDependencies: - '@swc/core': '>= 1.3' - typescript: '>= 4.3' - dependencies: - '@swc-node/core': 1.9.2(@swc/core@1.3.27) - '@swc-node/sourcemap-support': 0.2.3 - '@swc/core': 1.3.27 - colorette: 2.0.19 - debug: 4.3.4(supports-color@8.1.1) - pirates: 4.0.5 - tslib: 2.4.1 - typescript: 5.0.4 - transitivePeerDependencies: - - supports-color - - /@swc-node/sourcemap-support@0.2.3: - resolution: {integrity: sha512-LOC/z9HDUmTqSAF08YIRLThGGNZLdRrjcEdoQu/EANxPSVRedYgh4AiZlOX8sY8Rp1p7S/StOmZogJLuvR4mcA==} - dependencies: - source-map-support: 0.5.21 - tslib: 2.5.0 - - /@swc/cli@0.1.62(@swc/core@1.3.27): - resolution: {integrity: sha512-kOFLjKY3XH1DWLfXL1/B5MizeNorHR8wHKEi92S/Zi9Md/AK17KSqR8MgyRJ6C1fhKHvbBCl8wboyKAFXStkYw==} - engines: {node: '>= 12.13'} - hasBin: true - peerDependencies: - '@swc/core': ^1.2.66 - chokidar: ^3.5.1 - peerDependenciesMeta: - chokidar: - optional: true - dependencies: - '@mole-inc/bin-wrapper': 8.0.1 - '@swc/core': 1.3.27 - commander: 7.2.0 - fast-glob: 3.2.12 - semver: 7.3.8 - slash: 3.0.0 - source-map: 0.7.4 - dev: true - - /@swc/core-darwin-arm64@1.3.27: - resolution: {integrity: sha512-IKlxkhEy99CnP9nduaf5IJWIFcr6D5cZCjYmCs7nWkjMV+aAieyDO9AX4LT8AcHy6CF7ByOX7SKoqk+gVMAaKw==} - engines: {node: '>=10'} - cpu: [arm64] - os: [darwin] - requiresBuild: true - optional: true - - /@swc/core-darwin-x64@1.3.27: - resolution: {integrity: sha512-MtabZIhFf/dL3vs6UMbd+vJsjIkm2NaFqulGV0Jofy2bfVZPTj/b5pXeOlUsTWy7JcH1uixjdx4RvJRyvqJxQA==} - engines: {node: '>=10'} - cpu: [x64] - os: [darwin] - requiresBuild: true - optional: true - - /@swc/core-linux-arm-gnueabihf@1.3.27: - resolution: {integrity: sha512-XELMoGcUTAkk+G4buwIIhu6AIr1U418Odt22HUW8+ZvV+Wty2ICgR/myOIhM3xMb6U2L8ay+evMqoVNMQ0RRTg==} - engines: {node: '>=10'} - cpu: [arm] - os: [linux] - requiresBuild: true - optional: true - - /@swc/core-linux-arm64-gnu@1.3.27: - resolution: {integrity: sha512-O6vtT6bnrVR9PzEIuA5U7tIfYo7bv97H9K9Vqy2oyHNeGN0H36DKwS4UqPreHtziXNF5+7ubdUYUkrG/j8UnUQ==} - engines: {node: '>=10'} - cpu: [arm64] - os: [linux] - requiresBuild: true - optional: true - - /@swc/core-linux-arm64-musl@1.3.27: - resolution: {integrity: sha512-Oa0E1i7dOTWpaEZumKoNbTE/Ap+da6nlhqKVUdYrFDrOBi25tz76SdxZIyvAszzmgY89b5yd1naourKmkPXpww==} - engines: {node: '>=10'} - cpu: [arm64] - os: [linux] - requiresBuild: true - optional: true - - /@swc/core-linux-x64-gnu@1.3.27: - resolution: {integrity: sha512-S3v9H8oL2a8Ur6AjQyhkC6HfBVPOxKMdBhcZmdNuVgEUHbHdbf/Lka85F9IOYXEarMn0FtQw3ywowS22O9L5Uw==} - engines: {node: '>=10'} - cpu: [x64] - os: [linux] - requiresBuild: true - optional: true - - /@swc/core-linux-x64-musl@1.3.27: - resolution: {integrity: sha512-6DDkdXlOADpwICFZTRphCR+cIeS8aEYh4NlyzBito0mOWwIIdfCgALzhkTQOzTOkcD42bP97CIoZ97hqV/puOg==} - engines: {node: '>=10'} - cpu: [x64] - os: [linux] - requiresBuild: true - optional: true - - /@swc/core-win32-arm64-msvc@1.3.27: - resolution: {integrity: sha512-baxfH4AbEcaTNo08wxV0W6hiMXwVCxPS4qc0amHpXPti92unvSqeDR1W3C9GjHqzXlWtmCRsq8Ww1pal6ZVLrw==} - engines: {node: '>=10'} - cpu: [arm64] - os: [win32] - requiresBuild: true - optional: true - - /@swc/core-win32-ia32-msvc@1.3.27: - resolution: {integrity: sha512-7iLJnH71k5qCwxv9NcM/P7nIEzTsC7r1sIiQW6bu+CpC8qZvwl0PS+XvQRlLly2gCZM+Le98tksYG14MEh+Hrw==} - engines: {node: '>=10'} - cpu: [ia32] - os: [win32] - requiresBuild: true - optional: true - - /@swc/core-win32-x64-msvc@1.3.27: - resolution: {integrity: sha512-mFM907PDw/jrQ44+TRjIVGEOy2Mu06mMMz0HPMFuRsBzl5t0Kajp3vmn8FkkpS9wH5982VPi6hPYVTb7QJo5Qg==} - engines: {node: '>=10'} - cpu: [x64] - os: [win32] - requiresBuild: true - optional: true - - /@swc/core@1.3.27: - resolution: {integrity: sha512-praRNgpeYGvwDIm/Cl6JU+yHMvwVraL0U6ejMgGyzvpcm1FVsZd1/EYXGqzbBJ0ALv7Gx4eK56h4GnwV6d4L0w==} - engines: {node: '>=10'} - requiresBuild: true - optionalDependencies: - '@swc/core-darwin-arm64': 1.3.27 - '@swc/core-darwin-x64': 1.3.27 - '@swc/core-linux-arm-gnueabihf': 1.3.27 - '@swc/core-linux-arm64-gnu': 1.3.27 - '@swc/core-linux-arm64-musl': 1.3.27 - '@swc/core-linux-x64-gnu': 1.3.27 - '@swc/core-linux-x64-musl': 1.3.27 - '@swc/core-win32-arm64-msvc': 1.3.27 - '@swc/core-win32-ia32-msvc': 1.3.27 - '@swc/core-win32-x64-msvc': 1.3.27 - - /@swc/helpers@0.5.1: - resolution: {integrity: sha512-sJ902EfIzn1Fa+qYmjdQqh8tPsoxyBz+8yBKC2HKUxyezKJFwPGOn7pv4WY6QuQW//ySQi5lJjA/ZT9sNWWNTg==} - dependencies: - tslib: 2.5.0 - dev: true - /@szmarczak/http-timer@1.1.2: resolution: {integrity: sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==} engines: {node: '>=6'} @@ -13749,6 +15516,19 @@ packages: /@tsconfig/node16@1.0.3: resolution: {integrity: sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==} + /@tufjs/canonical-json@1.0.0: + resolution: {integrity: sha512-QTnf++uxunWvG2z3UFNzAoQPHxnSXOwtaI3iJ+AohhV+5vONuArPjJE7aPXPVXfXJsqrVbZBu9b81AJoSd09IQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dev: true + + /@tufjs/models@1.0.4: + resolution: {integrity: sha512-qaGV9ltJP0EO25YfFUPhxRVK0evXFIAGicsVXuRim4Ed9cjPxYhNnNJ49SFmbeLgtxpslIkX317IgpfcHPVj/A==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + '@tufjs/canonical-json': 1.0.0 + minimatch: 9.0.3 + dev: true + /@types/apollo-upload-client@17.0.2(graphql-ws@5.11.2)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-NphAiBqzZv3iY8Cq+qWyi0QUFFzJ+nVd7QKI/iKV8RfILrpYDL69F/vlhjn4BNxKlmc3LxJHymcf3gFzLBwuZQ==} dependencies: @@ -13811,6 +15591,15 @@ packages: '@types/responselike': 1.0.0 dev: true + /@types/chai@4.0.0: + resolution: {integrity: sha512-B56eI1x+Av9A7XHsgF0+WyLyBytAQqvdBoaULY3c4TGeKwLm43myB78EeBA8/VQn74KblXM4/ecmjTJJXUUF1A==} + dev: true + + /@types/cli-progress@3.11.1: + resolution: {integrity: sha512-d9iA+0uys9N6wV/SvZkDEWMYwv+e/mhWPLa6lncQ1ZqrC3mXHnDmidanVGoVGnmCQ3mCxyu9S09Y2s18u5wL5w==} + dependencies: + '@types/node': 18.15.10 + /@types/color-convert@2.0.0: resolution: {integrity: sha512-m7GG7IKKGuJUXvkZ1qqG3ChccdIM/qBBo913z+Xft0nKCX4hAU/IxKwZBU4cpRZ7GS5kV4vOblUkILtSShCPXQ==} dependencies: @@ -13882,6 +15671,10 @@ packages: /@types/estree@1.0.0: resolution: {integrity: sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==} + /@types/expect@1.20.4: + resolution: {integrity: sha512-Q5Vn3yjTDyCMV50TB6VRIbQNxSE4OmZR86VSbGaNpfUolm0iePBB4KdEEHmxoY5sT2+2DIvXW0rvMDP2nHZ4Mg==} + dev: true + /@types/express-serve-static-core@4.17.32: resolution: {integrity: sha512-aI5h/VOkxOF2Z1saPy0Zsxs5avets/iaiAJYznQFm5By/pamU31xWKL//epiF4OfUA2qTOc9PV6tCUjhO8wlZA==} dependencies: @@ -13889,6 +15682,14 @@ packages: '@types/qs': 6.9.7 '@types/range-parser': 1.2.4 + /@types/express-serve-static-core@4.17.36: + resolution: {integrity: sha512-zbivROJ0ZqLAtMzgzIUC4oNqDG9iF0lSsAqpOD9kbs5xcIM3dTiyuHvBc7R8MtWBp3AAWGaovJa+wzWPjLYW7Q==} + dependencies: + '@types/node': 18.15.10 + '@types/qs': 6.9.7 + '@types/range-parser': 1.2.4 + '@types/send': 0.17.1 + /@types/express@4.17.15: resolution: {integrity: sha512-Yv0k4bXGOH+8a+7bELd2PqHQsuiANB+A8a4gnQrkRWzrkKlb6KHaVvyXhqs04sVW/OWlbPyYxRgYlIXLfrufMQ==} dependencies: @@ -13897,6 +15698,14 @@ packages: '@types/qs': 6.9.7 '@types/serve-static': 1.15.0 + /@types/express@4.17.17: + resolution: {integrity: sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q==} + dependencies: + '@types/body-parser': 1.19.2 + '@types/express-serve-static-core': 4.17.36 + '@types/qs': 6.9.7 + '@types/serve-static': 1.15.0 + /@types/extract-files@8.1.1: resolution: {integrity: sha512-dMJJqBqyhsfJKuK7p7HyyNmki7qj1AlwhUKWx6KrU7i1K2T2SPsUsSUTWFmr/sEM1q8rfR8j5IyUmYrDbrhfjQ==} dev: true @@ -14109,9 +15918,16 @@ packages: /@types/mime-types@2.1.1: resolution: {integrity: sha512-vXOTGVSLR2jMw440moWTC7H19iUyLtP3Z1YTj7cSsubOICinjMxFeb/V57v9QdyyPGbbWolUFSSmSiRSn94tFw==} + /@types/mime@1.3.2: + resolution: {integrity: sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==} + /@types/mime@3.0.1: resolution: {integrity: sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==} + /@types/minimatch@3.0.5: + resolution: {integrity: sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==} + dev: true + /@types/minimatch@5.1.2: resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==} @@ -14119,6 +15935,10 @@ packages: resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==} dev: true + /@types/mocha@9.0.0: + resolution: {integrity: sha512-scN0hAWyLVAvLR9AyW7HoFF5sJZglyBsbPuHO4fv7JRvfmPBMfp1ozWqOf/e4wwPNxezBZXRfWzMb6iFLgEVRA==} + dev: true + /@types/ms@0.7.31: resolution: {integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==} @@ -14128,11 +15948,22 @@ packages: '@types/node': 18.15.10 form-data: 3.0.1 - /@types/node@16.11.7: - resolution: {integrity: sha512-QB5D2sqfSjCmTuWcBWyJ+/44bcjO7VbjSbOE0ucoVbAsSNQc4Lt6QkgkVXkTDwkL4z/beecZNDvVX15D4P8Jbw==} + /@types/node-persist@3.1.4: + resolution: {integrity: sha512-MXwo/ijhPIIKa5jLxwBfs8wTVZzwO36V/a12TSzsm5hAMFiY9CgSzbFobvQEmQTRu778CIIhJoT59KF2BzSYwg==} + dependencies: + '@types/node': 18.15.10 + dev: true + + /@types/node@15.14.9: + resolution: {integrity: sha512-qjd88DrCxupx/kJD5yQgZdcYKZKSIGBVDIBE1/LTGcNm3d2Np/jxojkdePDdfnBHJc5W7vSMpbJ1aB7p/Py69A==} + dev: true + + /@types/node@16.18.47: + resolution: {integrity: sha512-yBaT6qZKmvaeTuv8kfv2QwIsgi/D4bYSLmHow/IBxjLNRHxYEXgwVRvBmnNLBXi3CkZg0Wdzu3NTUlUjjxconQ==} /@types/node@17.0.45: resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==} + dev: false /@types/node@18.14.2: resolution: {integrity: sha512-1uEQxww3DaghA0RxqHx0O0ppVlo43pJhepY51OxuQIKHpjbnYLA7vcdwioNPzIqmC2u3I/dmylcqjlh0e7AyUA==} @@ -14170,7 +16001,7 @@ packages: /@types/prompts@2.4.2: resolution: {integrity: sha512-TwNx7qsjvRIUv/BCx583tqF5IINEVjCNqg9ofKHRlSoUHE62WBHrem4B1HGXcIrG511v29d1kJ9a/t2Esz7MIg==} dependencies: - '@types/node': 18.15.10 + '@types/node': 16.18.47 kleur: 3.0.3 dev: true @@ -14180,7 +16011,7 @@ packages: /@types/qrcode@1.5.0: resolution: {integrity: sha512-x5ilHXRxUPIMfjtM+1vf/GPTRWZ81nqscursm5gMznJeK9M0YnZ1c3bEvRLQ0zSSgedLx1J6MGL231ObQGGhaA==} dependencies: - '@types/node': 18.15.10 + '@types/node': 16.18.47 dev: true /@types/qs@6.9.7: @@ -14204,6 +16035,12 @@ packages: ts-toolbelt: 6.15.5 dev: true + /@types/ramda@0.29.3: + resolution: {integrity: sha512-Yh/RHkjN0ru6LVhSQtTkCRo6HXkfL9trot/2elzM/yXLJmbLm2v6kJc8yftTnwv1zvUob6TEtqI2cYjdqG3U0Q==} + dependencies: + types-ramda: 0.29.4 + dev: true + /@types/range-parser@1.2.4: resolution: {integrity: sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==} @@ -14268,7 +16105,7 @@ packages: /@types/rollup-plugin-peer-deps-external@2.2.1: resolution: {integrity: sha512-CUK4Mi3M3A/0coRUeo4McvUFOxR5H6UYd6Wt3D+K4c4fJupolMSoIxsZaBG1g/BJQOaujf78Pf7KhgfhrX1FZA==} dependencies: - '@types/node': 18.15.10 + '@types/node': 16.18.47 rollup: 0.63.5 dev: true @@ -14288,10 +16125,16 @@ packages: /@types/semver@7.3.13: resolution: {integrity: sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==} + /@types/send@0.17.1: + resolution: {integrity: sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q==} + dependencies: + '@types/mime': 1.3.2 + '@types/node': 18.15.10 + /@types/serve-index@1.9.1: resolution: {integrity: sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg==} dependencies: - '@types/express': 4.17.15 + '@types/express': 4.17.17 /@types/serve-static@1.15.0: resolution: {integrity: sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==} @@ -14304,6 +16147,20 @@ packages: dependencies: '@types/node': 18.15.10 + /@types/shimmer@1.0.2: + resolution: {integrity: sha512-dKkr1bTxbEsFlh2ARpKzcaAmsYixqt9UyCdoEZk8rHyE4iQYcDCyvSjDSf7JUWJHlJiTtbIoQjxKh6ViywqDAg==} + dev: false + + /@types/sinon@10.0.16: + resolution: {integrity: sha512-j2Du5SYpXZjJVJtXBokASpPRj+e2z+VUhCPHmM6WMfe3dpHu6iVKJMU6AiBcMp/XTAYnEj6Wc1trJUWwZ0QaAQ==} + dependencies: + '@types/sinonjs__fake-timers': 8.1.2 + dev: true + + /@types/sinonjs__fake-timers@8.1.2: + resolution: {integrity: sha512-9GcLXF0/v3t80caGs5p2rRfkB+a8VBGLJZVih6CNFkx8IZ994wiKKLSRs9nuFwk1HevWs/1mnUmkApGrSGsShA==} + dev: true + /@types/sockjs@0.3.33: resolution: {integrity: sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==} dependencies: @@ -14370,6 +16227,13 @@ packages: /@types/unist@2.0.6: resolution: {integrity: sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==} + /@types/vinyl@2.0.7: + resolution: {integrity: sha512-4UqPv+2567NhMQuMLdKAyK4yzrfCqwaTt6bLhHEs8PFcxbHILsrxaY63n4wgE/BRLDWDQeI+WcTmkXKExh9hQg==} + dependencies: + '@types/expect': 1.20.4 + '@types/node': 18.15.10 + dev: true + /@types/websocket@1.0.2: resolution: {integrity: sha512-B5m9aq7cbbD/5/jThEr33nUY8WEfVi6A2YKCTOvw5Ldy7mtsOkqRvGjnzy6g7iMMDsgu7xREuCzqATLDLQVKcQ==} dependencies: @@ -14401,6 +16265,32 @@ packages: dependencies: '@types/yargs-parser': 21.0.0 + /@typescript-eslint/eslint-plugin@4.33.0(@typescript-eslint/parser@4.33.0)(eslint@7.32.0)(typescript@5.0.4): + resolution: {integrity: sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg==} + engines: {node: ^10.12.0 || >=12.0.0} + peerDependencies: + '@typescript-eslint/parser': ^4.0.0 + eslint: ^5.0.0 || ^6.0.0 || ^7.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/experimental-utils': 4.33.0(eslint@7.32.0)(typescript@5.0.4) + '@typescript-eslint/parser': 4.33.0(eslint@7.32.0)(typescript@5.0.4) + '@typescript-eslint/scope-manager': 4.33.0 + debug: 4.3.4(supports-color@8.1.1) + eslint: 7.32.0 + functional-red-black-tree: 1.0.1 + ignore: 5.2.4 + regexpp: 3.2.0 + semver: 7.5.4 + tsutils: 3.21.0(typescript@5.0.4) + typescript: 5.0.4 + transitivePeerDependencies: + - supports-color + dev: true + /@typescript-eslint/eslint-plugin@5.59.9(@typescript-eslint/parser@5.59.9)(eslint@8.34.0)(typescript@5.0.4): resolution: {integrity: sha512-4uQIBq1ffXd2YvF7MAvehWKW3zVv/w+mSfRAu+8cKbfj3nwzyqJLNcZJpQ/WZ1HLbJDiowwmQ6NO+63nCA+fqA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -14429,6 +16319,44 @@ packages: - supports-color dev: true + /@typescript-eslint/experimental-utils@4.33.0(eslint@7.32.0)(typescript@5.0.4): + resolution: {integrity: sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q==} + engines: {node: ^10.12.0 || >=12.0.0} + peerDependencies: + eslint: '*' + dependencies: + '@types/json-schema': 7.0.11 + '@typescript-eslint/scope-manager': 4.33.0 + '@typescript-eslint/types': 4.33.0 + '@typescript-eslint/typescript-estree': 4.33.0(typescript@5.0.4) + eslint: 7.32.0 + eslint-scope: 5.1.1 + eslint-utils: 3.0.0(eslint@7.32.0) + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /@typescript-eslint/parser@4.33.0(eslint@7.32.0)(typescript@5.0.4): + resolution: {integrity: sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA==} + engines: {node: ^10.12.0 || >=12.0.0} + peerDependencies: + eslint: ^5.0.0 || ^6.0.0 || ^7.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/scope-manager': 4.33.0 + '@typescript-eslint/types': 4.33.0 + '@typescript-eslint/typescript-estree': 4.33.0(typescript@5.0.4) + debug: 4.3.4(supports-color@8.1.1) + eslint: 7.32.0 + typescript: 5.0.4 + transitivePeerDependencies: + - supports-color + dev: true + /@typescript-eslint/parser@5.59.9(eslint@8.34.0)(typescript@5.0.4): resolution: {integrity: sha512-FsPkRvBtcLQ/eVK1ivDiNYBjn3TGJdXy2fhXX+rc7czWl4ARwnpArwbihSOHI2Peg9WbtGHrbThfBUkZZGTtvQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -14449,6 +16377,14 @@ packages: - supports-color dev: true + /@typescript-eslint/scope-manager@4.33.0: + resolution: {integrity: sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ==} + engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} + dependencies: + '@typescript-eslint/types': 4.33.0 + '@typescript-eslint/visitor-keys': 4.33.0 + dev: true + /@typescript-eslint/scope-manager@5.51.0: resolution: {integrity: sha512-gNpxRdlx5qw3yaHA0SFuTjW4rxeYhpHxt491PEcKF8Z6zpq0kMhe0Tolxt0qjlojS+/wArSDlj/LtE69xUJphQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -14485,6 +16421,11 @@ packages: - supports-color dev: true + /@typescript-eslint/types@4.33.0: + resolution: {integrity: sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ==} + engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} + dev: true + /@typescript-eslint/types@5.51.0: resolution: {integrity: sha512-SqOn0ANn/v6hFn0kjvLwiDi4AzR++CBZz0NV5AnusT2/3y32jdc0G4woXPWHCumWtUXZKPAS27/9vziSsC9jnw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -14495,7 +16436,28 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@typescript-eslint/typescript-estree@5.51.0(typescript@4.9.4): + /@typescript-eslint/typescript-estree@4.33.0(typescript@5.0.4): + resolution: {integrity: sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA==} + engines: {node: ^10.12.0 || >=12.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 4.33.0 + '@typescript-eslint/visitor-keys': 4.33.0 + debug: 4.3.4(supports-color@8.1.1) + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.5.4 + tsutils: 3.21.0(typescript@5.0.4) + typescript: 5.0.4 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/typescript-estree@5.51.0(typescript@4.9.5): resolution: {integrity: sha512-TSkNupHvNRkoH9FMA3w7TazVFcBPveAAmb7Sz+kArY6sLT86PA5Vx80cKlYmd8m3Ha2SwofM1KwraF24lM9FvA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -14510,8 +16472,8 @@ packages: globby: 11.1.0 is-glob: 4.0.3 semver: 7.5.4 - tsutils: 3.21.0(typescript@4.9.4) - typescript: 4.9.4 + tsutils: 3.21.0(typescript@4.9.5) + typescript: 4.9.5 transitivePeerDependencies: - supports-color dev: true @@ -14598,6 +16560,14 @@ packages: - typescript dev: true + /@typescript-eslint/visitor-keys@4.33.0: + resolution: {integrity: sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg==} + engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} + dependencies: + '@typescript-eslint/types': 4.33.0 + eslint-visitor-keys: 2.1.0 + dev: true + /@typescript-eslint/visitor-keys@5.51.0: resolution: {integrity: sha512-Oh2+eTdjHjOFjKA27sxESlA87YPSOJafGCR0md5oeMdh1ZcCfAGCIOL216uTBAkAIptvLIfKQhl7lHxMJet4GQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -14614,6 +16584,10 @@ packages: eslint-visitor-keys: 3.3.0 dev: true + /@ungap/promise-all-settled@1.1.2: + resolution: {integrity: sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==} + dev: true + /@vitejs/plugin-legacy@4.0.1(terser@5.17.7)(vite@4.3.5): resolution: {integrity: sha512-/ZV63NagI1c9TB5E4ijGmycY//fNm/2L02nsnXXxACwYaF9W+/OyVlgIW24jYUIS+g0yQRtn+N5hzBc8RLNhGA==} engines: {node: ^14.18.0 || >=16.0.0} @@ -14936,14 +16910,14 @@ packages: busboy: 1.6.0 fast-querystring: 1.1.1 fast-url-parser: 1.1.3 - tslib: 2.5.0 + tslib: 2.6.2 dev: true /@wry/context@0.7.0: resolution: {integrity: sha512-LcDAiYWRtwAoSOArfk7cuYvFXytxfVrdX7yxoUmK7pPITLk5jYh2F8knCwS7LjgYL8u1eidPlKKV6Ikqq0ODqQ==} engines: {node: '>=8'} dependencies: - tslib: 2.5.0 + tslib: 2.6.2 /@wry/equality@0.1.11: resolution: {integrity: sha512-mwEVBDUVODlsQQ5dfuLUS5/Tf7jqUKyhKYHmVi4fPB6bDMOfWvUPJmKgS1Z7Za/sOI3vzWt4+O7yCiL/70MogA==} @@ -14955,13 +16929,13 @@ packages: resolution: {integrity: sha512-avR+UXdSrsF2v8vIqIgmeTY0UR91UT+IyablCyKe/uk22uOJ8fusKZnH9JH9e1/EtLeNJBtagNmL3eJdnOV53g==} engines: {node: '>=8'} dependencies: - tslib: 2.5.0 + tslib: 2.6.2 /@wry/trie@0.3.2: resolution: {integrity: sha512-yRTyhWSls2OY/pYLfwff867r8ekooZ4UI+/gxot5Wj8EFwSf2rG+n+Mo/6LoLQm1TKA4GRj2+LCpbfS937dClQ==} engines: {node: '>=8'} dependencies: - tslib: 2.5.0 + tslib: 2.6.2 /@xmldom/xmldom@0.8.6: resolution: {integrity: sha512-uRjjusqpoqfmRkTaNuLJ2VohVr67Q5YwDATW3VU7PfzTj6IRaihGrYI7zckGZjxQPBIp63nfvJbM+Yu5ICh0Bg==} @@ -14980,7 +16954,7 @@ packages: esbuild: '>=0.10.0' dependencies: esbuild: 0.17.18 - tslib: 2.5.0 + tslib: 2.6.2 /@yarnpkg/lockfile@1.1.0: resolution: {integrity: sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==} @@ -14990,7 +16964,7 @@ packages: engines: {node: '>=14.15.0'} dependencies: js-yaml: 3.14.1 - tslib: 2.5.0 + tslib: 2.6.2 /@zkochan/js-yaml@0.0.6: resolution: {integrity: sha512-nzvgl3VfhcELQ8LyVrYOru+UtAy1nrygk2+AGbTm8a5YcO6o8lSjAT+pfg3vJWxIoZKOUhrK6UU7xW/+00kQrg==} @@ -15147,6 +17121,13 @@ packages: - supports-color dev: false + /agentkeepalive@4.5.0: + resolution: {integrity: sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==} + engines: {node: '>= 8.0.0'} + dependencies: + humanize-ms: 1.2.1 + dev: true + /aggregate-error@3.1.0: resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} engines: {node: '>=8'} @@ -15229,6 +17210,15 @@ packages: string-width: 4.2.3 dev: false + /ansi-color@0.2.1: + resolution: {integrity: sha512-bF6xLaZBLpOQzgYUtYEhJx090nPSZk1BQ/q2oyBK9aMMcJHzx9uXGCjI2Y+LebsN4Jwoykr0V9whbPiogdyHoQ==} + dev: false + + /ansi-colors@4.1.1: + resolution: {integrity: sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==} + engines: {node: '>=6'} + dev: true + /ansi-colors@4.1.3: resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} engines: {node: '>=6'} @@ -15267,7 +17257,6 @@ packages: /ansi-regex@3.0.1: resolution: {integrity: sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==} engines: {node: '>=4'} - dev: false /ansi-regex@4.1.1: resolution: {integrity: sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==} @@ -15308,11 +17297,9 @@ packages: /ansi-styles@6.2.1: resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} engines: {node: '>=12'} - dev: false /ansicolors@0.3.2: resolution: {integrity: sha512-QXu7BPrP29VllRxH8GwB7x5iX5qWKAAMLqKQGWTeLWVlNHNOpVMJ91dsxQAIWXpjuW5wqvxu3Jd/nRjrJ+0pqg==} - dev: false /any-observable@0.3.0(rxjs@6.6.7): resolution: {integrity: sha512-/FQM1EDkTsf63Ub2C6O7GuYFDsSXUwsaZDurV0np41ocwq0jthUAYCmhBX9f+KwlaCgIuWyr/4WlUQUBfKfZog==} @@ -15381,10 +17368,6 @@ packages: /aproba@2.0.0: resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==} - /arch@2.2.0: - resolution: {integrity: sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==} - dev: true - /archive-type@4.0.0: resolution: {integrity: sha512-zV4Ky0v1F8dBrdYElwTvQhweQ0P7Kwc1aluqJsYtOBP01jXcWCyW2IEfI1YiqsG+Iy7ZR+o5LF1N+PGECBxHWA==} engines: {node: '>=4'} @@ -15432,6 +17415,14 @@ packages: delegates: 1.0.0 readable-stream: 3.6.0 + /are-we-there-yet@3.0.1: + resolution: {integrity: sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + dependencies: + delegates: 1.0.0 + readable-stream: 3.6.0 + dev: true + /arg@4.1.3: resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} @@ -15450,7 +17441,7 @@ packages: resolution: {integrity: sha512-xcLxITLe2HYa1cnYnwCjkOO1PqUHQpozB8x9AR0OgWN2woOBi5kSDVxKfd0b7sb1hw5qFeJhXm9H1nu3xSfLeQ==} engines: {node: '>=10'} dependencies: - tslib: 2.5.0 + tslib: 2.6.2 dev: false /aria-query@4.2.2: @@ -15482,6 +17473,11 @@ packages: engines: {node: '>=0.10.0'} dev: true + /array-differ@3.0.0: + resolution: {integrity: sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==} + engines: {node: '>=8'} + dev: true + /array-each@1.0.1: resolution: {integrity: sha512-zHjL5SZa68hkKHBFBK6DJCTtr9sfTCPCaph/L7tMSLcTFgy+zX7E+6q5UArbtOtMBCtxdICpfTCspRse+ywyXA==} engines: {node: '>=0.10.0'} @@ -15556,6 +17552,11 @@ packages: engines: {node: '>=0.10.0'} dev: true + /arrify@2.0.1: + resolution: {integrity: sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==} + engines: {node: '>=8'} + dev: true + /asap@2.0.6: resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} @@ -15596,7 +17597,7 @@ packages: dependencies: pvtsutils: 1.3.2 pvutils: 1.1.3 - tslib: 2.5.0 + tslib: 2.6.2 dev: true /assert-plus@1.0.0: @@ -15612,6 +17613,10 @@ packages: object-is: 1.1.5 util: 0.12.5 + /assertion-error@1.1.0: + resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} + dev: true + /assign-symbols@1.0.0: resolution: {integrity: sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==} engines: {node: '>=0.10.0'} @@ -15625,19 +17630,19 @@ packages: resolution: {integrity: sha512-O0yuUDnZeQDL+ncNGlJ78BiO4jnYI3bvMsD5prT0/nsgijG/LpNBIr63gTjVTNsiGkgQhiyCShTgxt8oXOrklA==} engines: {node: '>=4'} dependencies: - tslib: 2.5.0 + tslib: 2.6.2 /ast-types@0.15.2: resolution: {integrity: sha512-c27loCv9QkZinsa5ProX751khO9DJl/AcB5c2KNtA6NRvHKS0PgLfcftz72KVq504vB0Gku5s2kUZzDBvQWvHg==} engines: {node: '>=4'} dependencies: - tslib: 2.5.0 + tslib: 2.6.2 /ast-types@0.16.1: resolution: {integrity: sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==} engines: {node: '>=4'} dependencies: - tslib: 2.5.0 + tslib: 2.6.2 /ast-types@0.7.8: resolution: {integrity: sha512-RIOpVnVlltB6PcBJ5BMLx+H+6JJ/zjDGU0t7f0L6c2M1dqcK92VQopLBlPQ9R80AVXelfqYgjcPLtHtDbNFg0Q==} @@ -15821,24 +17826,8 @@ packages: uuid: 8.0.0 xml2js: 0.4.19 - /aws-sdk@2.1316.0: - resolution: {integrity: sha512-5y0PR0RcswLlDkIq2E3dF4rvCn7b7yqyVae8SzDv5tcjebwt+YCSD2jJu5Cu7nahqtpWz35I2QGD1OcLK+rlUQ==} - engines: {node: '>= 10.0.0'} - dependencies: - buffer: 4.9.2 - events: 1.1.1 - ieee754: 1.1.13 - jmespath: 0.16.0 - querystring: 0.2.0 - sax: 1.2.1 - url: 0.10.3 - util: 0.12.5 - uuid: 8.0.0 - xml2js: 0.4.19 - dev: true - - /aws-sdk@2.1428.0: - resolution: {integrity: sha512-z8RfFfbPCbtEPeu2W7UJTRcwXu5WNj2ehoDAhmIkvwKMGb5Y1/TbGmny51bucSWt8QKqZlmLxWs9zBGgy7slXw==} + /aws-sdk@2.1448.0: + resolution: {integrity: sha512-15r8YKdAAXLgtPfQTAzD/qNxxgndF1SMEw6F+mXvLxZrLkG4BHnzOW2g2sQc3C2qG5yqCb3K6R+OrjbvGOAmdQ==} engines: {node: '>= 10.0.0'} dependencies: buffer: 4.9.2 @@ -15875,7 +17864,7 @@ packages: camel-case: 4.1.2 header-case: 2.0.4 snake-case: 3.0.4 - tslib: 2.5.0 + tslib: 2.6.2 dev: false /axios-proxy-builder@0.1.2: @@ -16016,7 +18005,7 @@ packages: loader-utils: 2.0.4 make-dir: 3.1.0 schema-utils: 2.7.1 - webpack: 5.75.0(@swc/core@1.3.27) + webpack: 5.75.0 dev: false /babel-loader@9.1.2(@babel/core@7.21.8)(webpack@5.85.1): @@ -16029,7 +18018,7 @@ packages: '@babel/core': 7.21.8 find-cache-dir: 3.3.2 schema-utils: 4.0.0 - webpack: 5.85.1(@swc/core@1.3.27) + webpack: 5.85.1 dev: true /babel-plugin-apply-mdx-type-prop@1.6.22(@babel/core@7.12.9): @@ -16102,7 +18091,7 @@ packages: dependencies: '@babel/runtime': 7.22.6 cosmiconfig: 6.0.0 - resolve: 1.22.1 + resolve: 1.22.2 /babel-plugin-macros@3.1.0: resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==} @@ -16121,7 +18110,7 @@ packages: '@babel/compat-data': 7.21.7 '@babel/core': 7.20.12 '@babel/helper-define-polyfill-provider': 0.3.3(@babel/core@7.20.12) - semver: 6.3.0 + semver: 6.3.1 transitivePeerDependencies: - supports-color @@ -16133,7 +18122,7 @@ packages: '@babel/compat-data': 7.21.7 '@babel/core': 7.21.8 '@babel/helper-define-polyfill-provider': 0.3.3(@babel/core@7.21.8) - semver: 6.3.0 + semver: 6.3.1 transitivePeerDependencies: - supports-color @@ -16225,7 +18214,7 @@ packages: dependencies: '@babel/core': 7.21.8 '@babel/template': 7.20.7 - tslib: 2.4.1 + tslib: 2.6.2 dev: true /babel-plugin-transform-react-remove-prop-types@0.4.24: @@ -16398,6 +18387,10 @@ packages: tweetnacl: 0.14.5 dev: true + /before-after-hook@2.2.3: + resolution: {integrity: sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==} + dev: true + /bestzip@2.2.1: resolution: {integrity: sha512-XdAb87RXqOqF7C6UgQG9IqpEHJvS6IOUo0bXWEAebjSSdhDjsbcqFKdHpn5Q7QHz2pGr3Zmw4wgG3LlzdyDz7w==} engines: {node: '>=10'} @@ -16433,29 +18426,16 @@ packages: /big.js@5.2.2: resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==} - /bin-check@4.1.0: - resolution: {integrity: sha512-b6weQyEUKsDGFlACWSIOfveEnImkJyK/FGW6FAG42loyoquvjdtOIqO6yBFzHyqyVVhNgNkQxxx09SFLK28YnA==} - engines: {node: '>=4'} - dependencies: - execa: 0.7.0 - executable: 4.1.1 - dev: true - - /bin-version-check@5.0.0: - resolution: {integrity: sha512-Q3FMQnS5eZmrBGqmDXLs4dbAn/f+52voP6ykJYmweSA60t6DyH4UTSwZhtbK5UH+LBoWvDljILUQMLRUtsynsA==} - engines: {node: '>=12'} - dependencies: - bin-version: 6.0.0 - semver: 7.5.4 - semver-truncate: 2.0.0 - dev: true - - /bin-version@6.0.0: - resolution: {integrity: sha512-nk5wEsP4RiKjG+vF+uG8lFsEn4d7Y6FVDamzzftSunXOoOcOOkzcWdKVlGgFFwlUQCj63SgnUkLLGF8v7lufhw==} - engines: {node: '>=12'} + /bin-links@3.0.3: + resolution: {integrity: sha512-zKdnMPWEdh4F5INR07/eBrodC7QrF5JKvqskjz/ZZRXg5YSAZIbn8zGhbhUrElzHBZ2fvEQdOU59RHcTG3GiwA==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} dependencies: - execa: 5.1.1 - find-versions: 5.1.0 + cmd-shim: 5.0.0 + mkdirp-infer-owner: 2.0.0 + npm-normalize-package-bin: 2.0.0 + read-cmd-shim: 3.0.1 + rimraf: 3.0.2 + write-file-atomic: 4.0.2 dev: true /binary-extensions@2.2.0: @@ -16473,6 +18453,11 @@ packages: - debug dev: true + /binaryextensions@4.18.0: + resolution: {integrity: sha512-PQu3Kyv9dM4FnwB7XGj1+HucW+ShvJzJqjuw1JkKVs1mWdwOKVcRjOi+pV9X52A0tNvrPCsPkbFFQb+wE1EAXw==} + engines: {node: '>=0.8'} + dev: true + /bl@0.8.2: resolution: {integrity: sha512-pfqikmByp+lifZCS0p6j6KreV6kNU6Apzpm2nKOk+94cZb/jvle55+JxWiByUQ0Wo/+XnDXEy5MxxKMb6r0VIw==} dependencies: @@ -16544,7 +18529,6 @@ packages: /bowser@2.11.0: resolution: {integrity: sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==} - dev: false /boxen@5.1.2: resolution: {integrity: sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==} @@ -16626,6 +18610,10 @@ packages: resolution: {integrity: sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==} dev: true + /browser-stdout@1.3.1: + resolution: {integrity: sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==} + dev: true + /browserify-aes@1.2.0: resolution: {integrity: sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==} dependencies: @@ -16771,6 +18759,15 @@ packages: dependencies: base64-js: 1.5.1 ieee754: 1.2.1 + + /bufrw@1.3.0: + resolution: {integrity: sha512-jzQnSbdJqhIltU9O5KUiTtljP9ccw2u5ix59McQy4pV2xGhVLhRZIndY8GIrgh5HjXa6+QJ9AQhOd2QWQizJFQ==} + engines: {node: '>= 0.10.x'} + dependencies: + ansi-color: 0.2.1 + error: 7.0.2 + hexer: 1.5.0 + xtend: 4.0.2 dev: false /builtin-modules@3.3.0: @@ -16782,6 +18779,11 @@ packages: resolution: {integrity: sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ==} dev: true + /builtins@5.0.1: + resolution: {integrity: sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==} + dependencies: + semver: 7.5.4 + /busboy@1.6.0: resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} engines: {node: '>=10.16.0'} @@ -16816,6 +18818,76 @@ packages: yargs-parser: 20.2.9 dev: true + /cacache@15.3.0: + resolution: {integrity: sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==} + engines: {node: '>= 10'} + dependencies: + '@npmcli/fs': 1.1.1 + '@npmcli/move-file': 1.1.2 + chownr: 2.0.0 + fs-minipass: 2.1.0 + glob: 7.2.3 + infer-owner: 1.0.4 + lru-cache: 6.0.0 + minipass: 3.3.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: 8.0.1 + tar: 6.1.15 + unique-filename: 1.1.1 + transitivePeerDependencies: + - bluebird + dev: true + + /cacache@16.1.3: + resolution: {integrity: sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + dependencies: + '@npmcli/fs': 2.1.2 + '@npmcli/move-file': 2.0.1 + chownr: 2.0.0 + fs-minipass: 2.1.0 + glob: 8.1.0 + infer-owner: 1.0.4 + lru-cache: 7.18.3 + minipass: 3.3.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.1 + tar: 6.1.15 + unique-filename: 2.0.1 + transitivePeerDependencies: + - bluebird + dev: true + + /cacache@17.1.4: + resolution: {integrity: sha512-/aJwG2l3ZMJ1xNAnqbMpA40of9dj/pIH3QfiuQSqjfPJF747VR0J/bHn+/KdNnHKc6XQcWt/AfRSBft82W1d2A==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + '@npmcli/fs': 3.1.0 + fs-minipass: 3.0.3 + glob: 10.3.4 + lru-cache: 7.18.3 + 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.5 + tar: 6.1.15 + unique-filename: 3.0.0 + dev: true + /cache-base@1.0.1: resolution: {integrity: sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==} engines: {node: '>=0.10.0'} @@ -16842,7 +18914,7 @@ packages: dependencies: clone-response: 1.0.3 get-stream: 5.2.0 - http-cache-semantics: 4.1.0 + http-cache-semantics: 4.1.1 keyv: 3.1.0 lowercase-keys: 2.0.0 normalize-url: 4.5.1 @@ -16917,7 +18989,7 @@ packages: resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==} dependencies: pascal-case: 3.1.2 - tslib: 2.5.0 + tslib: 2.6.2 /camelcase-css@2.0.1: resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} @@ -16965,7 +19037,7 @@ packages: resolution: {integrity: sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==} dependencies: no-case: 3.0.4 - tslib: 2.5.0 + tslib: 2.6.2 upper-case-first: 2.0.2 /cardinal@2.1.1: @@ -16974,7 +19046,6 @@ packages: dependencies: ansicolors: 0.3.2 redeyed: 2.1.1 - dev: false /case@1.6.3: resolution: {integrity: sha512-mzDSXIPaFwVDvZAHqZ9VlbyF4yyXRuX6IvB06WvPYkqJVO24kX1PPhv9bfpKNFZyxYFmmgo03HUiD8iklmJYRQ==} @@ -16999,6 +19070,18 @@ packages: constructs: 10.1.228 dev: true + /chai@4.0.0: + resolution: {integrity: sha512-FQdXBx+UlDU1RljcWV3/ha2Mm+ooF9IQApHXZA1Az+XYItNtzYPR7e1Ga6WwjTkhCPrE6WhvaCU6b4ljGKbgoQ==} + engines: {node: '>=4'} + dependencies: + assertion-error: 1.1.0 + check-error: 1.0.2 + deep-eql: 2.0.2 + get-func-name: 2.0.0 + pathval: 1.1.1 + type-detect: 4.0.8 + dev: true + /chalk@1.1.1: resolution: {integrity: sha512-W10W+QfIxJlTm3VRtg8eafwUBkDfUPFvRvPv4jCD9vF4+HzlAyXJ7P3Y5yw/r+gJ1TzFEU6oFqMgp1dIVpYr0A==} engines: {node: '>=0.10.0'} @@ -17129,7 +19212,7 @@ packages: path-case: 3.0.4 sentence-case: 3.0.4 snake-case: 3.0.4 - tslib: 2.5.0 + tslib: 2.6.2 /char-regex@1.0.2: resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} @@ -17158,6 +19241,10 @@ packages: /chardet@0.7.0: resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} + /check-error@1.0.2: + resolution: {integrity: sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==} + dev: true + /check-types@11.2.2: resolution: {integrity: sha512-HBiYvXvn9Z70Z88XKjz3AEKd4HJhBXsa3j7xFnITAzoS8+q6eIGi8qDB8FKPBAjtuxjI/zFpwuiCb8oDtKOYrA==} dev: false @@ -17193,7 +19280,7 @@ packages: htmlparser2: 6.1.0 parse5: 6.0.1 parse5-htmlparser2-tree-adapter: 6.0.1 - tslib: 2.5.0 + tslib: 2.6.2 dev: false /cheerio@1.0.0-rc.12: @@ -17219,6 +19306,21 @@ packages: stream-promise: 3.2.0 dev: true + /chokidar@3.5.1: + resolution: {integrity: sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==} + engines: {node: '>= 8.10.0'} + dependencies: + anymatch: 3.1.3 + braces: 3.0.2 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.5.0 + optionalDependencies: + fsevents: 2.3.2 + dev: true + /chokidar@3.5.3: resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} engines: {node: '>= 8.10.0'} @@ -17296,10 +19398,23 @@ packages: source-map: 0.6.1 dev: false + /clean-regexp@1.0.0: + resolution: {integrity: sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==} + engines: {node: '>=4'} + dependencies: + escape-string-regexp: 1.0.5 + dev: true + /clean-stack@2.2.0: resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} engines: {node: '>=6'} + /clean-stack@3.0.1: + resolution: {integrity: sha512-lR9wNiMRcVQjSB3a7xXGLuz4cr4wJuuXlaAEbRutGowQTmlp7R72/DOgN21e8jdwblMWl9UOJMJXarX94pzKdg==} + engines: {node: '>=10'} + dependencies: + escape-string-regexp: 4.0.0 + /cli-boxes@2.2.1: resolution: {integrity: sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==} engines: {node: '>=6'} @@ -17379,6 +19494,12 @@ packages: type: 2.7.2 dev: true + /cli-progress@3.12.0: + resolution: {integrity: sha512-tRkV3HJ1ASwm19THiiLIXLO7Im7wlTuKnvkYaTkyoAPefqjNg7W7DHKUlGRxy9vxDvbyCYQkQozvptuMkGCg8A==} + engines: {node: '>=4'} + dependencies: + string-width: 4.2.3 + /cli-spinners@2.6.1: resolution: {integrity: sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==} engines: {node: '>=6'} @@ -17405,6 +19526,13 @@ packages: optionalDependencies: '@colors/colors': 1.5.0 + /cli-table@0.3.11: + resolution: {integrity: sha512-IqLQi4lO0nIB4tcdTpN4LCB9FI3uqrJZK7RC515EnhZ6qBaglkIgICb1wjeAqpdoOabm1+SuQtkXIPdYC93jhQ==} + engines: {node: '>= 0.2.0'} + dependencies: + colors: 1.0.3 + dev: true + /cli-truncate@0.2.1: resolution: {integrity: sha512-f4r4yJnbT++qUPI9NR4XLDLq41gQ+uqnPItWG0F5ZkehuNiTTa3EY0S4AqTSUOeJ7/zU41oWPQSNkW5BqPL9bg==} engines: {node: '>=0.10.0'} @@ -17457,6 +19585,11 @@ packages: strip-ansi: 6.0.1 wrap-ansi: 7.0.0 + /clone-buffer@1.0.0: + resolution: {integrity: sha512-KLLTJWrvwIP+OPfMn0x2PheDEP20RPUcGXj/ERegTgdmPEZylALQldygiqrPPu8P45uNuPs7ckmReLY6v/iA5g==} + engines: {node: '>= 0.10'} + dev: true + /clone-deep@4.0.1: resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==} engines: {node: '>=6'} @@ -17470,6 +19603,10 @@ packages: dependencies: mimic-response: 1.0.1 + /clone-stats@1.0.0: + resolution: {integrity: sha512-au6ydSpg6nsrigcZ4m8Bc9hxjeW+GJ8xh5G3BJCMt4WXe1H10UNaVOamqQTmrx1kjVuxAHIQSNU6hY4Nsn9/ag==} + dev: true + /clone@0.1.19: resolution: {integrity: sha512-IO78I0y6JcSpEPHzK4obKdsL7E7oLdRVDVOLwr2Hkbjsb+Eoz0dxW6tef0WizoKu0gLC4oZSZuEF4U2K6w1WQw==} dev: true @@ -17478,10 +19615,30 @@ packages: resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} engines: {node: '>=0.8'} + /clone@2.1.2: + resolution: {integrity: sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==} + engines: {node: '>=0.8'} + dev: true + + /cloneable-readable@1.1.3: + resolution: {integrity: sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ==} + dependencies: + inherits: 2.0.4 + process-nextick-args: 2.0.1 + readable-stream: 2.3.7 + dev: true + /clsx@1.2.1: resolution: {integrity: sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==} engines: {node: '>=6'} + /cmd-shim@5.0.0: + resolution: {integrity: sha512-qkCtZ59BidfEwHltnJwkyVZn+XQojdAySM1D1gSeh11Z4pW1Kpolkyo53L5noc0nrxmIvyFwTmJRo4xs7FFLPw==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + dependencies: + mkdirp-infer-owner: 2.0.0 + dev: true + /co@4.6.0: resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} @@ -17547,6 +19704,11 @@ packages: /colorette@2.0.19: resolution: {integrity: sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==} + /colors@1.0.3: + resolution: {integrity: sha512-pFGrxThWcWQ2MsAz6RtgeWe4NK2kUE1WfsrvvlctdII745EW9I0yflqhe7++M5LEc7bV2c/9/5zc8sFcpL0Drw==} + engines: {node: '>=0.1.90'} + dev: true + /combine-promises@1.1.0: resolution: {integrity: sha512-ZI9jvcLDxqwaXEixOhArm3r7ReIivsXkpbyEWyeOhzz1QS0iSgBPnWvEqvIQtYyamGCYA88gFhmUrs9hrrQ0pg==} engines: {node: '>=10'} @@ -17585,6 +19747,11 @@ packages: resolution: {integrity: sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==} engines: {node: '>= 6'} + /commander@7.1.0: + resolution: {integrity: sha512-pRxBna3MJe6HKnBGsDyMv8ETbptw3axEdYHoqNh7gu5oDcew8fs0xnivZGm06Ogk8zGAJ9VX+OPEr2GXEQK4dg==} + engines: {node: '>= 10'} + dev: true + /commander@7.2.0: resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} engines: {node: '>= 10'} @@ -17594,6 +19761,10 @@ packages: engines: {node: '>= 12'} dev: false + /common-ancestor-path@1.0.1: + resolution: {integrity: sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==} + dev: true + /common-path-prefix@3.0.0: resolution: {integrity: sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==} dev: true @@ -17680,6 +19851,10 @@ packages: xdg-basedir: 4.0.0 dev: false + /confusing-browser-globals@1.0.10: + resolution: {integrity: sha512-gNld/3lySHwuhaVluJUKLePYirM3QNCKzVxqAdhJII9/WXKVX5PURzMVJspS1jTslSqjeuG4KMVTSouit5YPHA==} + dev: true + /confusing-browser-globals@1.0.11: resolution: {integrity: sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==} dev: true @@ -17713,7 +19888,7 @@ packages: resolution: {integrity: sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==} dependencies: no-case: 3.0.4 - tslib: 2.5.0 + tslib: 2.6.2 upper-case: 2.0.2 /constructs@10.1.228: @@ -17841,7 +20016,7 @@ packages: lodash.startcase: 4.4.0 mkdirp: 2.1.3 node-fetch: 2.6.8 - yargs: 17.6.2 + yargs: 17.7.2 transitivePeerDependencies: - debug - encoding @@ -18031,7 +20206,7 @@ packages: normalize-path: 3.0.0 schema-utils: 4.0.0 serialize-javascript: 6.0.1 - webpack: 5.85.1(@swc/core@1.3.27) + webpack: 5.85.1 dev: true /copy-webpack-plugin@11.0.0(webpack@5.75.0): @@ -18046,7 +20221,7 @@ packages: normalize-path: 3.0.0 schema-utils: 4.0.0 serialize-javascript: 6.0.1 - webpack: 5.75.0(@swc/core@1.3.27) + webpack: 5.75.0 dev: false /core-js-compat@3.27.2: @@ -18090,7 +20265,7 @@ packages: dependencies: '@types/node': 18.15.10 cosmiconfig: 7.1.0 - ts-node: 10.9.1(@swc/core@1.3.27)(@types/node@18.15.10)(typescript@5.0.4) + ts-node: 10.9.1(@types/node@18.15.10)(typescript@5.0.4) typescript: 5.0.4 dev: true @@ -18235,14 +20410,6 @@ packages: transitivePeerDependencies: - encoding - /cross-spawn@5.1.0: - resolution: {integrity: sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==} - dependencies: - lru-cache: 4.1.5 - shebang-command: 1.2.0 - which: 1.3.1 - dev: true - /cross-spawn@6.0.5: resolution: {integrity: sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==} engines: {node: '>=4.8'} @@ -18322,7 +20489,7 @@ packages: postcss-modules-values: 4.0.0(postcss@8.4.23) postcss-value-parser: 4.2.0 semver: 7.5.4 - webpack: 5.75.0(@swc/core@1.3.27) + webpack: 5.75.0 dev: false /css-loader@6.7.3(webpack@5.85.1): @@ -18339,7 +20506,7 @@ packages: postcss-modules-values: 4.0.0(postcss@8.4.23) postcss-value-parser: 4.2.0 semver: 7.5.4 - webpack: 5.85.1(@swc/core@1.3.27) + webpack: 5.85.1 dev: true /css-minimizer-webpack-plugin@3.4.1(webpack@5.85.1): @@ -18367,7 +20534,7 @@ packages: schema-utils: 4.0.0 serialize-javascript: 6.0.1 source-map: 0.6.1 - webpack: 5.85.1(@swc/core@1.3.27) + webpack: 5.85.1 dev: true /css-minimizer-webpack-plugin@4.2.2(clean-css@5.3.2)(webpack@5.75.0): @@ -18402,7 +20569,7 @@ packages: schema-utils: 4.0.0 serialize-javascript: 6.0.1 source-map: 0.6.1 - webpack: 5.75.0(@swc/core@1.3.27) + webpack: 5.75.0 dev: false /css-select@4.3.0: @@ -18656,6 +20823,11 @@ packages: resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} dev: true + /dargs@7.0.0: + resolution: {integrity: sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==} + engines: {node: '>=8'} + dev: true + /dashdash@1.14.1: resolution: {integrity: sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==} engines: {node: '>=0.10'} @@ -18706,7 +20878,6 @@ packages: /dateformat@4.6.3: resolution: {integrity: sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==} - dev: false /dayjs@1.11.7: resolution: {integrity: sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ==} @@ -18752,6 +20923,19 @@ packages: ms: 2.1.3 supports-color: 5.5.0 + /debug@4.3.1(supports-color@8.1.1): + resolution: {integrity: sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + supports-color: 8.1.1 + dev: true + /debug@4.3.4(supports-color@5.5.0): resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} engines: {node: '>=6.0'} @@ -18776,6 +20960,11 @@ packages: ms: 2.1.2 supports-color: 8.1.1 + /debuglog@1.0.1: + resolution: {integrity: sha512-syBZ+rnAK3EgMsH2aYEOLUW7mZSY9Gb+0wUMCFsZvcmiz+HigA0LOcq/HoQqVuGG+EKykunc7QG2bzrponfaSw==} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. + dev: true + /decamelize-keys@1.1.1: resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==} engines: {node: '>=0.10.0'} @@ -18788,6 +20977,11 @@ packages: resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} engines: {node: '>=0.10.0'} + /decamelize@4.0.0: + resolution: {integrity: sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==} + engines: {node: '>=10'} + dev: true + /decimal.js@10.4.3: resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==} dev: true @@ -18861,7 +21055,7 @@ packages: decompress-tarbz2: 4.1.1 decompress-targz: 4.1.1 decompress-unzip: 4.0.1 - graceful-fs: 4.2.10 + graceful-fs: 4.2.11 make-dir: 1.3.0 pify: 2.3.0 strip-dirs: 2.1.0 @@ -18870,6 +21064,13 @@ packages: /dedent@0.7.0: resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} + /deep-eql@2.0.2: + resolution: {integrity: sha512-uts3fF4HnV1bcNx8K5c9NMjXXKtLOf1obUMq04uEuMaF8i1m0SfugbpDMd59cYfodQcMqeUISvL4Pmx5NZ7lcw==} + engines: {node: '>=0.12'} + dependencies: + type-detect: 3.0.0 + dev: true + /deep-equal@2.2.0: resolution: {integrity: sha512-RdpzE0Hv4lhowpIUKKMJfeH6C1pXdtT1/it80ubgWqwI3qpuxUBpC1S4hnHg+zjnuOoDkzUtUCEEkG+XG5l3Mw==} dependencies: @@ -19004,7 +21205,7 @@ packages: engines: {node: '>=10'} dependencies: globby: 11.1.0 - graceful-fs: 4.2.10 + graceful-fs: 4.2.11 is-glob: 4.0.3 is-path-cwd: 2.2.0 is-path-inside: 3.0.3 @@ -19036,6 +21237,10 @@ packages: resolution: {integrity: sha512-MHidOOnCHGlZDKsI21+mbIIhf4Fff+hhCTB7gtVg4uoIqjcrTZc5v6M+GS2zVI0sV7PqK415rb8XaOSQsQkHOw==} dev: true + /deprecation@2.3.1: + resolution: {integrity: sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==} + dev: true + /dequal@2.0.3: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} @@ -19150,6 +21355,11 @@ packages: resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} engines: {node: '>=0.3.1'} + /diff@5.0.0: + resolution: {integrity: sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==} + engines: {node: '>=0.3.1'} + dev: true + /diff@5.1.0: resolution: {integrity: sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==} engines: {node: '>=0.3.1'} @@ -19296,7 +21506,7 @@ packages: resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} dependencies: no-case: 3.0.4 - tslib: 2.5.0 + tslib: 2.6.2 /dot-prop@5.3.0: resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==} @@ -19355,7 +21565,6 @@ packages: /eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - dev: false /easy-table@1.1.0: resolution: {integrity: sha512-oq33hWOSSnl2Hoh00tZWaIPi1ievrD9aFG82/IgjlycAnW9hHx5PkJiXpxPsgEE+H7BsbVQXFVFST8TEXS6/pA==} @@ -19457,6 +21666,14 @@ packages: resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} engines: {node: '>= 0.8'} + /encoding@0.1.13: + resolution: {integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==} + requiresBuild: true + dependencies: + iconv-lite: 0.6.3 + dev: true + optional: true + /end-of-stream@1.4.4: resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} dependencies: @@ -19466,7 +21683,7 @@ packages: resolution: {integrity: sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==} engines: {node: '>=10.13.0'} dependencies: - graceful-fs: 4.2.10 + graceful-fs: 4.2.11 tapable: 2.2.1 /enhanced-resolve@5.14.1: @@ -19498,18 +21715,26 @@ packages: cross-spawn: 7.0.3 dev: true + /env-paths@2.2.1: + resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} + engines: {node: '>=6'} + dev: true + /envalid@7.3.1: resolution: {integrity: sha512-KL1YRwn8WcoF/Ty7t+yLLtZol01xr9ZJMTjzoGRM8NaSU+nQQjSWOQKKJhJP2P57bpdakJ9jbxqQX4fGTOicZg==} engines: {node: '>=8.12'} dependencies: tslib: 2.3.1 - dev: true /envinfo@7.8.1: resolution: {integrity: sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==} engines: {node: '>=4'} hasBin: true + /err-code@2.0.3: + resolution: {integrity: sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==} + dev: true + /errno@0.1.8: resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==} hasBin: true @@ -19529,6 +21754,17 @@ packages: stackframe: 1.3.4 dev: true + /error@10.4.0: + resolution: {integrity: sha512-YxIFEJuhgcICugOUvRx5th0UM+ActZ9sjY0QJmeVwsQdvosZ7kYzc9QqS0Da3R5iUmgU5meGIxh0xBeZpMVeLw==} + dev: true + + /error@7.0.2: + resolution: {integrity: sha512-UtVv4l5MhijsYUxPJo4390gzfZvAnTHreNnDjnTZaKIiZ/SemXxAhBkYSKtWa5RtBXbLP8tMgn/n0RUa/H7jXw==} + dependencies: + string-template: 0.2.1 + xtend: 4.0.2 + dev: false + /es-abstract@1.21.1: resolution: {integrity: sha512-QudMsPOz86xYz/1dG1OuGBKOELjCh99IIWHLzy5znUB6j8xG2yMA7bfTV86VSqKF+Y/H08vQPR+9jyXpuC6hfg==} engines: {node: '>= 0.4'} @@ -19989,11 +22225,6 @@ packages: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} - /escape-string-regexp@5.0.0: - resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} - engines: {node: '>=12'} - dev: true - /escodegen@2.0.0: resolution: {integrity: sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==} engines: {node: '>=6.0'} @@ -20007,6 +22238,34 @@ packages: source-map: 0.6.1 dev: true + /eslint-config-oclif-typescript@1.0.3(eslint@7.32.0)(typescript@5.0.4): + resolution: {integrity: sha512-TeJKXWBQ3uKMtzgz++UFNWpe1WCx8mfqRuzZy1LirREgRlVv656SkVG4gNZat5rRNIQgfDmTS+YebxK02kfylA==} + engines: {node: '>=12.0.0'} + dependencies: + '@typescript-eslint/eslint-plugin': 4.33.0(@typescript-eslint/parser@4.33.0)(eslint@7.32.0)(typescript@5.0.4) + '@typescript-eslint/parser': 4.33.0(eslint@7.32.0)(typescript@5.0.4) + eslint-config-xo-space: 0.29.0(eslint@7.32.0) + eslint-plugin-mocha: 9.0.0(eslint@7.32.0) + eslint-plugin-node: 11.1.0(eslint@7.32.0) + transitivePeerDependencies: + - eslint + - supports-color + - typescript + dev: true + + /eslint-config-oclif@4.0.0(eslint@7.32.0): + resolution: {integrity: sha512-5tkUQeC33rHAhJxaGeBGYIflDLumeV2qD/4XLBdXhB/6F/+Jnwdce9wYHSvkx0JUqUQShpQv8JEVkBp/zzD7hg==} + engines: {node: '>=12.0.0'} + dependencies: + eslint-config-xo-space: 0.27.0(eslint@7.32.0) + eslint-plugin-mocha: 9.0.0(eslint@7.32.0) + eslint-plugin-node: 11.1.0(eslint@7.32.0) + eslint-plugin-unicorn: 36.0.0(eslint@7.32.0) + transitivePeerDependencies: + - eslint + - supports-color + dev: true + /eslint-config-prettier@8.6.0(eslint@8.34.0): resolution: {integrity: sha512-bAF0eLpLVqP5oEVUFKpMA+NnRFICwn9X8B5jrR9FcqnYBuPbqWEjTEspPWMj5ye6czoSLDweCzSo3Ko7gGrZaA==} hasBin: true @@ -20016,6 +22275,46 @@ packages: eslint: 8.34.0 dev: true + /eslint-config-xo-space@0.27.0(eslint@7.32.0): + resolution: {integrity: sha512-b8UjW+nQyOkhiANVpIptqlKPyE7XRyQ40uQ1NoBhzVfu95gxfZGrpliq8ZHBpaOF2wCLZaexTSjg7Rvm99vj4A==} + engines: {node: '>=10'} + peerDependencies: + eslint: '>=7.20.0' + dependencies: + eslint: 7.32.0 + eslint-config-xo: 0.35.0(eslint@7.32.0) + dev: true + + /eslint-config-xo-space@0.29.0(eslint@7.32.0): + resolution: {integrity: sha512-emUZVHjmzl3I1aO2M/2gEpqa/GHXTl7LF/vQeAX4W+mQIU+2kyqY97FkMnSc2J8Osoq+vCSXCY/HjFUmFIF/Ag==} + engines: {node: '>=10'} + peerDependencies: + eslint: '>=7.32.0' + dependencies: + eslint: 7.32.0 + eslint-config-xo: 0.38.0(eslint@7.32.0) + dev: true + + /eslint-config-xo@0.35.0(eslint@7.32.0): + resolution: {integrity: sha512-+WyZTLWUJlvExFrBU/Ldw8AB/S0d3x+26JQdBWbcqig2ZaWh0zinYcHok+ET4IoPaEcRRf3FE9kjItNVjBwnAg==} + engines: {node: '>=10'} + peerDependencies: + eslint: '>=7.20.0' + dependencies: + confusing-browser-globals: 1.0.10 + eslint: 7.32.0 + dev: true + + /eslint-config-xo@0.38.0(eslint@7.32.0): + resolution: {integrity: sha512-G2jL+VyfkcZW8GoTmqLsExvrWssBedSoaQQ11vyhflDeT3csMdBVp0On+AVijrRuvgmkWeDwwUL5Rj0qDRHK6g==} + engines: {node: '>=10'} + peerDependencies: + eslint: '>=7.20.0' + dependencies: + confusing-browser-globals: 1.0.10 + eslint: 7.32.0 + dev: true + /eslint-import-resolver-node@0.3.7: resolution: {integrity: sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==} dependencies: @@ -20085,6 +22384,17 @@ packages: globals: 11.12.0 dev: true + /eslint-plugin-es@3.0.1(eslint@7.32.0): + resolution: {integrity: sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==} + engines: {node: '>=8.10.0'} + peerDependencies: + eslint: '>=4.19.1' + dependencies: + eslint: 7.32.0 + eslint-utils: 2.1.0 + regexpp: 3.2.0 + dev: true + /eslint-plugin-formatjs@4.3.9(eslint@8.34.0)(ts-jest@28.0.5): resolution: {integrity: sha512-+8kGoTUaNe0qS55eg5XbPDY+eQmeZxnrC8MugQTGUXlqbCyLyG7y4mDsMhAgactVyUMST6Ln1HEm1Tk0KNuIKQ==} peerDependencies: @@ -20094,12 +22404,12 @@ packages: '@formatjs/ts-transformer': 3.11.5(ts-jest@28.0.5) '@types/eslint': 8.4.10 '@types/picomatch': 2.3.0 - '@typescript-eslint/typescript-estree': 5.51.0(typescript@4.9.4) + '@typescript-eslint/typescript-estree': 5.51.0(typescript@4.9.5) emoji-regex: 10.2.1 eslint: 8.34.0 picomatch: 2.3.1 - tslib: 2.5.0 - typescript: 4.9.4 + tslib: 2.6.2 + typescript: 4.9.5 transitivePeerDependencies: - supports-color - ts-jest @@ -20185,6 +22495,32 @@ packages: semver: 6.3.0 dev: true + /eslint-plugin-mocha@9.0.0(eslint@7.32.0): + resolution: {integrity: sha512-d7knAcQj1jPCzZf3caeBIn3BnW6ikcvfz0kSqQpwPYcVGLoJV5sz0l0OJB2LR8I7dvTDbqq1oV6ylhSgzA10zg==} + engines: {node: '>=12.0.0'} + peerDependencies: + eslint: '>=7.0.0' + dependencies: + eslint: 7.32.0 + eslint-utils: 3.0.0(eslint@7.32.0) + ramda: 0.27.2 + dev: true + + /eslint-plugin-node@11.1.0(eslint@7.32.0): + resolution: {integrity: sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==} + engines: {node: '>=8.10.0'} + peerDependencies: + eslint: '>=5.16.0' + dependencies: + eslint: 7.32.0 + eslint-plugin-es: 3.0.1(eslint@7.32.0) + eslint-utils: 2.1.0 + ignore: 5.2.4 + minimatch: 3.1.2 + resolve: 1.22.2 + semver: 6.3.1 + dev: true + /eslint-plugin-react-hooks@4.6.0(eslint@8.34.0): resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} engines: {node: '>=10'} @@ -20279,6 +22615,29 @@ packages: - typescript dev: true + /eslint-plugin-unicorn@36.0.0(eslint@7.32.0): + resolution: {integrity: sha512-xxN2vSctGWnDW6aLElm/LKIwcrmk6mdiEcW55Uv5krcrVcIFSWMmEgc/hwpemYfZacKZ5npFERGNz4aThsp1AA==} + engines: {node: '>=12'} + peerDependencies: + eslint: '>=7.32.0' + dependencies: + '@babel/helper-validator-identifier': 7.19.1 + ci-info: 3.8.0 + clean-regexp: 1.0.0 + eslint: 7.32.0 + eslint-template-visitor: 2.3.2(eslint@7.32.0) + eslint-utils: 3.0.0(eslint@7.32.0) + is-builtin-module: 3.2.1 + lodash: 4.17.21 + pluralize: 8.0.0 + read-pkg-up: 7.0.1 + regexp-tree: 0.1.27 + safe-regex: 2.1.1 + semver: 7.5.4 + transitivePeerDependencies: + - supports-color + dev: true + /eslint-scope@5.1.1: resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} engines: {node: '>=8.0.0'} @@ -20293,6 +22652,38 @@ packages: esrecurse: 4.3.0 estraverse: 5.3.0 + /eslint-template-visitor@2.3.2(eslint@7.32.0): + resolution: {integrity: sha512-3ydhqFpuV7x1M9EK52BPNj6V0Kwu0KKkcIAfpUhwHbR8ocRln/oUHgfxQupY8O1h4Qv/POHDumb/BwwNfxbtnA==} + peerDependencies: + eslint: '>=7.0.0' + dependencies: + '@babel/core': 7.21.8 + '@babel/eslint-parser': 7.22.15(@babel/core@7.21.8)(eslint@7.32.0) + eslint: 7.32.0 + eslint-visitor-keys: 2.1.0 + esquery: 1.4.0 + multimap: 1.1.0 + transitivePeerDependencies: + - supports-color + dev: true + + /eslint-utils@2.1.0: + resolution: {integrity: sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==} + engines: {node: '>=6'} + dependencies: + eslint-visitor-keys: 1.3.0 + dev: true + + /eslint-utils@3.0.0(eslint@7.32.0): + resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} + engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} + peerDependencies: + eslint: '>=5' + dependencies: + eslint: 7.32.0 + eslint-visitor-keys: 2.1.0 + dev: true + /eslint-utils@3.0.0(eslint@8.34.0): resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} @@ -20302,6 +22693,11 @@ packages: eslint: 8.34.0 eslint-visitor-keys: 2.1.0 + /eslint-visitor-keys@1.3.0: + resolution: {integrity: sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==} + engines: {node: '>=4'} + dev: true + /eslint-visitor-keys@2.1.0: resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} engines: {node: '>=10'} @@ -20310,6 +22706,55 @@ packages: resolution: {integrity: sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /eslint@7.32.0: + resolution: {integrity: sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==} + engines: {node: ^10.12.0 || >=12.0.0} + hasBin: true + dependencies: + '@babel/code-frame': 7.12.11 + '@eslint/eslintrc': 0.4.3 + '@humanwhocodes/config-array': 0.5.0 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.3 + debug: 4.3.4(supports-color@8.1.1) + doctrine: 3.0.0 + enquirer: 2.3.6 + escape-string-regexp: 4.0.0 + eslint-scope: 5.1.1 + eslint-utils: 2.1.0 + eslint-visitor-keys: 2.1.0 + espree: 7.3.1 + esquery: 1.4.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 6.0.1 + functional-red-black-tree: 1.0.1 + glob-parent: 5.1.2 + globals: 13.19.0 + ignore: 4.0.6 + import-fresh: 3.3.0 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + js-yaml: 3.14.1 + 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.1 + progress: 2.0.3 + regexpp: 3.2.0 + semver: 7.5.4 + strip-ansi: 6.0.1 + strip-json-comments: 3.1.1 + table: 6.8.1 + text-table: 0.2.0 + v8-compile-cache: 2.3.0 + transitivePeerDependencies: + - supports-color + dev: true + /eslint@8.34.0: resolution: {integrity: sha512-1Z8iFsucw+7kSqXNZVslXS8Ioa4u2KM7GPwuKtkTFAqZ/cHMcEaR+1+Br0wLlot49cNxIiZk5wp8EAbPcYZxTg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -20364,6 +22809,15 @@ packages: es5-ext: 0.10.62 dev: true + /espree@7.3.1: + resolution: {integrity: sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==} + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + acorn: 7.4.1 + acorn-jsx: 5.3.2(acorn@7.4.1) + eslint-visitor-keys: 1.3.0 + dev: true + /espree@9.4.1: resolution: {integrity: sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -20482,19 +22936,6 @@ packages: safe-buffer: 5.2.1 dev: true - /execa@0.7.0: - resolution: {integrity: sha512-RztN09XglpYI7aBBrJCPW95jEH7YF1UEPOoX9yDhUTPdp7mK+CQvnLTuD10BNXZ3byLTu2uehZ8EcKT/4CGiFw==} - engines: {node: '>=4'} - dependencies: - cross-spawn: 5.1.0 - get-stream: 3.0.0 - is-stream: 1.1.0 - npm-run-path: 2.0.2 - p-finally: 1.0.0 - signal-exit: 3.0.7 - strip-eof: 1.0.0 - dev: true - /execa@1.0.0: resolution: {integrity: sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==} engines: {node: '>=6'} @@ -20537,13 +22978,6 @@ packages: signal-exit: 3.0.7 strip-final-newline: 2.0.0 - /executable@4.1.1: - resolution: {integrity: sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==} - engines: {node: '>=4'} - dependencies: - pify: 2.3.0 - dev: true - /exit-hook@1.1.1: resolution: {integrity: sha512-MsG3prOVw1WtLXAZbM3KiYtooKR1LvxHh3VHsVtIy0uiUu8usxgB/94DP2HxtD/661lLdB6yzQ09lGJSQr6nkg==} engines: {node: '>=0.10.0'} @@ -20594,6 +23028,10 @@ packages: jest-message-util: 29.5.0 jest-util: 29.5.0 + /exponential-backoff@3.1.1: + resolution: {integrity: sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==} + dev: true + /express@4.18.2: resolution: {integrity: sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==} engines: {node: '>= 0.10.0'} @@ -20726,6 +23164,22 @@ packages: engines: {'0': node >=0.6.0} dev: true + /fancy-test@2.0.38: + resolution: {integrity: sha512-uQ795eOLJ5aJJypwJ0g1Pqk9Zp5s1Git+XmaGX1e06wwaSr+K6o+FPYuHlQmetBXxPLx81xst2l7j624v5ZqdQ==} + engines: {node: '>=12.0.0'} + dependencies: + '@types/chai': 4.0.0 + '@types/lodash': 4.14.191 + '@types/node': 18.15.10 + '@types/sinon': 10.0.16 + lodash: 4.17.21 + mock-stdin: 1.0.0 + nock: 13.3.3 + stdout-stderr: 0.1.13 + transitivePeerDependencies: + - supports-color + dev: true + /fast-content-type-parse@1.0.0: resolution: {integrity: sha512-Xbc4XcysUXcsP5aHUU7Nq3OwvHq97C+WnbkeIefpeYLX+ryzFJlU6OStFJhs6Ol0LkUGpcK+wL0JwfM+FCU5IA==} dev: false @@ -20781,6 +23235,12 @@ packages: /fast-levenshtein@2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + /fast-levenshtein@3.0.0: + resolution: {integrity: sha512-hKKNajm46uNmTlhHSyZkmToAc56uZJwYq7yrciZjqOxnlfQwERDQJmHPUp7m1m9wx8vgOe8IaCKZ5Kv2k1DdCQ==} + dependencies: + fastest-levenshtein: 1.0.16 + dev: true + /fast-querystring@1.1.1: resolution: {integrity: sha512-qR2r+e3HvhEFmpdHMv//U8FnFlnYjaC6QKDuaXALDkw2kvHO8WDjxH+f/rHGR4Me4pnk8p9JAkRNTjYHAKRn2Q==} dependencies: @@ -20817,6 +23277,12 @@ packages: strnum: 1.0.5 dev: false + /fast-xml-parser@4.2.5: + resolution: {integrity: sha512-B9/wizE4WngqQftFPmdaMYlXoJlJOYxGQOanC77fq9k8+Z0v5dDSVh+3glErdIROP//s/jgb7ZuxKfB8nVyo0g==} + hasBin: true + dependencies: + strnum: 1.0.5 + /fastest-levenshtein@1.0.16: resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==} engines: {node: '>= 4.9.1'} @@ -20943,7 +23409,7 @@ packages: dependencies: loader-utils: 2.0.4 schema-utils: 3.1.1 - webpack: 5.75.0(@swc/core@1.3.27) + webpack: 5.75.0 dev: false /file-loader@6.2.0(webpack@5.85.1): @@ -20954,13 +23420,13 @@ packages: dependencies: loader-utils: 2.0.4 schema-utils: 3.1.1 - webpack: 5.85.1(@swc/core@1.3.27) + webpack: 5.85.1 /file-selector@0.6.0: resolution: {integrity: sha512-QlZ5yJC0VxHxQQsQhXvBaC7VRJ2uaxTf+Tfpu4Z/OcVQJVpZO+DGU0rkoVW5ce2SccxugvpBJoMvUs59iILYdw==} engines: {node: '>= 12'} dependencies: - tslib: 2.5.0 + tslib: 2.6.2 dev: false /file-system-cache@2.1.1: @@ -20978,15 +23444,6 @@ packages: token-types: 4.2.1 dev: true - /file-type@17.1.6: - resolution: {integrity: sha512-hlDw5Ev+9e883s0pwUsuuYNu4tD7GgpUnOvykjv1Gya0ZIjuKumthDRua90VUn6/nlRKAjcxLUnHNTIUWwWIiw==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - readable-web-to-node-stream: 3.0.2 - strtok3: 7.0.0 - token-types: 5.0.1 - dev: true - /file-type@3.9.0: resolution: {integrity: sha512-RLoqTXE8/vPmMuTI88DAzhMYC99I8BWv7zYP4A1puo5HIjEJ5EX48ighy4ZyKMG9EDXxBgW6e++cn7d1xuFghA==} engines: {node: '>=0.10.0'} @@ -21017,11 +23474,6 @@ packages: engines: {node: '>=4'} dev: true - /filename-reserved-regex@3.0.0: - resolution: {integrity: sha512-hn4cQfU6GOT/7cFHXBqeBg2TbrMBgdD0kcjLhvSQYYwm3s4B6cjvBfb7nBALJLAXqmU5xajSa7X2NnUud/VCdw==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dev: true - /filenamify@4.3.0: resolution: {integrity: sha512-hcFKyUG57yWGAzu1CMt/dPzYZuv+jAJUT85bL8mrXvNe6hWj6yEHEc4EdcgiA6Z3oi1/9wXJdZPXF2dZNgwgOg==} engines: {node: '>=8'} @@ -21031,15 +23483,6 @@ packages: trim-repeated: 1.0.0 dev: true - /filenamify@5.1.1: - resolution: {integrity: sha512-M45CbrJLGACfrPOkrTp3j2EcO9OBkKUYME0eiqOCa7i2poaklU0jhlIaMlr8ijLorT0uLAzrn3qXOp5684CkfA==} - engines: {node: '>=12.20'} - dependencies: - filename-reserved-regex: 3.0.0 - strip-outer: 2.0.0 - trim-repeated: 2.0.0 - dev: true - /filesize@10.0.6: resolution: {integrity: sha512-rzpOZ4C9vMFDqOa6dNpog92CoLYjD79dnjLk2TYDDtImRIyLTOzqojCb05Opd1WuiWjs+fshhCgTd8cl7y5t+g==} engines: {node: '>= 10.4.0'} @@ -21148,11 +23591,17 @@ packages: locate-path: 6.0.0 path-exists: 4.0.0 - /find-versions@5.1.0: - resolution: {integrity: sha512-+iwzCJ7C5v5KgcBuueqVoNiHVoQpwiUK5XFLjf0affFTep+Wcw93tPvmb8tqujDNmzhBDPddnWV/qgWSXgq+Hg==} - engines: {node: '>=12'} + /find-yarn-workspace-root2@1.2.16: + resolution: {integrity: sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA==} dependencies: - semver-regex: 4.0.5 + micromatch: 4.0.5 + pkg-dir: 4.2.0 + dev: true + + /find-yarn-workspace-root@2.0.0: + resolution: {integrity: sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ==} + dependencies: + micromatch: 4.0.5 dev: true /findup-sync@2.0.0: @@ -21199,6 +23648,13 @@ packages: parse-filepath: 1.0.2 dev: false + /first-chunk-stream@2.0.0: + resolution: {integrity: sha512-X8Z+b/0L4lToKYq+lwnKqi9X/Zek0NibLpsJgVsSxpoYq7JtiCtRb5HqKVEjEw/qAb/4AKKRLOwwKHlWNpm2Eg==} + engines: {node: '>=0.10.0'} + dependencies: + readable-stream: 2.3.7 + dev: true + /flagged-respawn@1.0.1: resolution: {integrity: sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==} engines: {node: '>= 0.10'} @@ -21279,6 +23735,14 @@ packages: signal-exit: 3.0.7 dev: true + /foreground-child@3.1.1: + resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} + engines: {node: '>=14'} + dependencies: + cross-spawn: 7.0.3 + signal-exit: 4.1.0 + dev: true + /forever-agent@0.6.1: resolution: {integrity: sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==} dev: true @@ -21312,7 +23776,7 @@ packages: semver: 7.5.4 tapable: 1.1.3 typescript: 5.0.4 - webpack: 5.75.0(@swc/core@1.3.27) + webpack: 5.75.0 dev: false /fork-ts-checker-webpack-plugin@7.2.13(typescript@5.0.4)(webpack@5.85.1): @@ -21339,7 +23803,7 @@ packages: semver: 7.5.4 tapable: 2.2.1 typescript: 5.0.4 - webpack: 5.85.1(@swc/core@1.3.27) + webpack: 5.85.1 dev: true /form-data-encoder@1.7.2: @@ -21429,9 +23893,10 @@ packages: resolution: {integrity: sha512-0rcTq621PD5jM/e0a3EJoGC/1TC5ZBCERW82LQuwfGnCa1V8w7dpYH1yNu+SLb6E5dkeCBzKEyLGlFrnr+dUyw==} engines: {node: '>=14.14'} dependencies: - graceful-fs: 4.2.10 + graceful-fs: 4.2.11 jsonfile: 6.1.0 universalify: 2.0.0 + dev: true /fs-extra@11.1.1: resolution: {integrity: sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==} @@ -21441,6 +23906,14 @@ packages: jsonfile: 6.1.0 universalify: 2.0.0 + /fs-extra@8.1.0: + resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} + engines: {node: '>=6 <7 || >=8'} + dependencies: + graceful-fs: 4.2.11 + jsonfile: 4.0.0 + universalify: 0.1.2 + /fs-extra@9.0.1: resolution: {integrity: sha512-h2iAoN838FqAFJY2/qVpzFXy+EBxfVE220PalAqQLDVsFOHLJrZvut5puAbCdNv6WJk+B8ihI+k0c7JK5erwqQ==} engines: {node: '>=10'} @@ -21466,6 +23939,13 @@ packages: dependencies: minipass: 3.3.6 + /fs-minipass@3.0.3: + resolution: {integrity: sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + minipass: 7.0.3 + dev: true + /fs-monkey@1.0.3: resolution: {integrity: sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==} @@ -21517,6 +23997,10 @@ packages: functions-have-names: 1.2.3 dev: true + /functional-red-black-tree@1.0.1: + resolution: {integrity: sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==} + dev: true + /functions-have-names@1.2.3: resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} dev: true @@ -21541,6 +24025,20 @@ packages: strip-ansi: 6.0.1 wide-align: 1.1.5 + /gauge@4.0.4: + resolution: {integrity: sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + dependencies: + aproba: 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 + dev: true + /gensync@1.0.0-beta.2: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} @@ -21549,6 +24047,10 @@ packages: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} + /get-func-name@2.0.0: + resolution: {integrity: sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==} + dev: true + /get-intrinsic@1.2.0: resolution: {integrity: sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==} dependencies: @@ -21589,11 +24091,6 @@ packages: pinkie-promise: 2.0.1 dev: true - /get-stream@3.0.0: - resolution: {integrity: sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==} - engines: {node: '>=4'} - dev: true - /get-stream@4.1.0: resolution: {integrity: sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==} engines: {node: '>=6'} @@ -21650,6 +24147,15 @@ packages: /github-slugger@1.5.0: resolution: {integrity: sha512-wIh+gKBI9Nshz2o46B0B3f5k/W+WI9ZAv6y5Dn5WJ5SK1t0TnDimB4WE5rmTD05ZAIn8HALCZVmCsvj0w0v0lw==} + /github-username@6.0.0: + resolution: {integrity: sha512-7TTrRjxblSI5l6adk9zd+cV5d6i1OrJSo3Vr9xdGqFLBQo0mz5P9eIfKCDJ7eekVGGFLbce0qbPSnktXV2BjDQ==} + engines: {node: '>=10'} + dependencies: + '@octokit/rest': 18.12.0 + transitivePeerDependencies: + - encoding + dev: true + /glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} @@ -21684,6 +24190,18 @@ packages: /glob-to-regexp@0.4.1: resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} + /glob@10.3.4: + resolution: {integrity: sha512-6LFElP3A+i/Q8XQKEvZjkEWEOTgAIALR9AO2rwT8bgPhDd1anmqDJDZ6lLddI4ehxxxR1S5RIqKe1uapMQfYaQ==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true + dependencies: + foreground-child: 3.1.1 + jackspeak: 2.3.3 + minimatch: 9.0.3 + minipass: 7.0.3 + path-scurry: 1.10.1 + dev: true + /glob@7.1.4: resolution: {integrity: sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==} dependencies: @@ -21705,6 +24223,17 @@ packages: path-is-absolute: 1.0.1 dev: true + /glob@7.1.7: + resolution: {integrity: sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: true + /glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} dependencies: @@ -21906,6 +24435,7 @@ packages: /graceful-fs@4.2.10: resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} + dev: true /graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} @@ -21954,7 +24484,7 @@ packages: graphql: 16.6.0 minimatch: 3.0.4 string-env-interpolation: 1.0.1 - tslib: 2.5.0 + tslib: 2.6.2 transitivePeerDependencies: - '@types/node' - bufferutil @@ -21982,7 +24512,7 @@ packages: graphql: 16.6.0 minimatch: 4.2.1 string-env-interpolation: 1.0.1 - tslib: 2.5.0 + tslib: 2.6.2 transitivePeerDependencies: - '@types/node' - bufferutil @@ -22011,7 +24541,7 @@ packages: jiti: 1.17.1 minimatch: 4.2.3 string-env-interpolation: 1.0.1 - tslib: 2.5.0 + tslib: 2.6.2 transitivePeerDependencies: - '@types/node' - bufferutil @@ -22063,7 +24593,7 @@ packages: graphql: ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 dependencies: graphql: 16.6.0 - tslib: 2.5.0 + tslib: 2.6.2 /graphql-tools@4.0.8(graphql@16.6.0): resolution: {integrity: sha512-MW+ioleBrwhRjalKjYaLQbr+920pHBgy9vM/n47sswtns8+96sRn5M/G+J1eu7IMeKWiN/9p6tmwCHU7552VJg==} @@ -22123,6 +24653,16 @@ packages: strip-bom-string: 1.0.0 dev: false + /grouped-queue@2.0.0: + resolution: {integrity: sha512-/PiFUa7WIsl48dUeCvhIHnwNmAAzlI/eHoJl0vu3nsFA366JleY7Ff8EVTplZu5kO0MIdZjKTTnzItL61ahbnw==} + engines: {node: '>=8.0.0'} + dev: true + + /growl@1.10.5: + resolution: {integrity: sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==} + engines: {node: '>=4.x'} + dev: true + /gunzip-maybe@1.4.2: resolution: {integrity: sha512-4haO1M4mLO91PW57BMsDFf75UmwoRX0GkdD+Faw+Lr+r/OZrOCS0pIBwOL1xCKQqnQzbNFGgK2V2CpBUPeFNTw==} hasBin: true @@ -22357,7 +24897,7 @@ packages: resolution: {integrity: sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==} dependencies: capital-case: 1.0.4 - tslib: 2.5.0 + tslib: 2.6.2 /headers-polyfill@3.1.2: resolution: {integrity: sha512-tWCK4biJ6hcLqTviLXVR9DTRfYGQMXEIUj3gwJ2rZ5wO/at3XtkI4g8mCvFdUF9l1KMBNCfmNAdnahm1cgavQA==} @@ -22369,6 +24909,17 @@ packages: readable-stream: 3.6.0 dev: false + /hexer@1.5.0: + resolution: {integrity: sha512-dyrPC8KzBzUJ19QTIo1gXNqIISRXQ0NwteW6OeQHRN4ZuZeHkdODfj0zHBdOlHbRY8GqbqK57C9oWSvQZizFsg==} + engines: {node: '>= 0.10.x'} + hasBin: true + dependencies: + ansi-color: 0.2.1 + minimist: 1.2.7 + process: 0.10.1 + xtend: 4.0.2 + dev: false + /hexoid@1.0.0: resolution: {integrity: sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g==} engines: {node: '>=8'} @@ -22423,6 +24974,13 @@ packages: lru-cache: 6.0.0 dev: true + /hosted-git-info@6.1.1: + resolution: {integrity: sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + lru-cache: 7.18.3 + dev: true + /hpack.js@2.1.6: resolution: {integrity: sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==} dependencies: @@ -22483,7 +25041,7 @@ packages: lodash: 4.17.21 pretty-error: 4.0.0 tapable: 2.2.1 - webpack: 5.75.0(@swc/core@1.3.27) + webpack: 5.75.0 dev: false /htmlparser2@5.0.1: @@ -22515,6 +25073,23 @@ packages: /http-cache-semantics@4.1.0: resolution: {integrity: sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==} + dev: true + + /http-cache-semantics@4.1.1: + resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} + + /http-call@5.3.0: + resolution: {integrity: sha512-ahwimsC23ICE4kPl9xTBjKB4inbRaeLyZeRunC/1Jy/Z6X8tv22MEAjK+KBOMSVLaqXPTTmd8638waVIKLGx2w==} + engines: {node: '>=8.0.0'} + dependencies: + content-type: 1.0.4 + debug: 4.3.4(supports-color@8.1.1) + is-retry-allowed: 1.2.0 + is-stream: 2.0.1 + parse-json: 4.0.0 + tunnel-agent: 0.6.0 + transitivePeerDependencies: + - supports-color /http-deceiver@1.2.7: resolution: {integrity: sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==} @@ -22685,12 +25260,22 @@ packages: resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} engines: {node: '>=10.17.0'} + /humanize-ms@1.2.1: + resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} + dependencies: + ms: 2.1.3 + dev: true + /husky@8.0.3: resolution: {integrity: sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==} engines: {node: '>=14'} hasBin: true dev: true + /hyperlinker@1.0.0: + resolution: {integrity: sha512-Ty8UblRWFEcfSuIaajM34LdPXIhbs1ajEX/BBPv24J+enSVaEVY63xQ6lTO9VRYS5LAoghIG0IDJ+p+IPzKUQQ==} + engines: {node: '>=4'} + /iconv-lite@0.4.24: resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} engines: {node: '>=0.10.0'} @@ -22731,6 +25316,25 @@ packages: resolution: {integrity: sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==} dev: true + /ignore-walk@4.0.1: + resolution: {integrity: sha512-rzDQLaW4jQbh2YrOFlJdCtX8qgJTehFRYiUB2r1osqTeDzV/3+Jh8fz1oAPzUThf3iku8Ds4IDqawI5d8mUiQw==} + engines: {node: '>=10'} + dependencies: + minimatch: 3.1.2 + dev: true + + /ignore-walk@6.0.3: + resolution: {integrity: sha512-C7FfFoTA+bI10qfeydT8aZbvr91vAEU+2W5BZUlzPec47oNb07SsOfwYrtxuvOYdUApPP/Qlh4DtAO51Ekk2QA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + minimatch: 9.0.3 + dev: true + + /ignore@4.0.6: + resolution: {integrity: sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==} + engines: {node: '>= 4'} + dev: true + /ignore@5.2.4: resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} engines: {node: '>= 4'} @@ -22795,6 +25399,15 @@ packages: engines: {node: '>=12.2'} dev: true + /import-in-the-middle@1.4.2: + resolution: {integrity: sha512-9WOz1Yh/cvO/p69sxRmhyQwrIGGSp7EIdcb+fFNVi7CzQGQB8U1/1XrKVSbEd/GNOAeM0peJtmi7+qphe7NvAw==} + dependencies: + acorn: 8.8.2 + acorn-import-assertions: 1.9.0(acorn@8.8.2) + cjs-module-lexer: 1.2.2 + module-details-from-path: 1.0.3 + dev: false + /import-lazy@2.1.0: resolution: {integrity: sha512-m7ZEHgtw69qOGw+jwxXkHlrlIPdTGkyh66zXZ1ajZbxkDBNjSY/LGbmjc7h0s2ELsUDTAhFr55TrPSSqJGPG0A==} engines: {node: '>=4'} @@ -22831,6 +25444,10 @@ packages: resolution: {integrity: sha512-i0G7hLJ1z0DE8dsqJa2rycj9dBmNKgXBvotXtZYXakU9oivfB9Uj2ZBC27qqef2U58/ZLwalxa1X/RDCdkHtVg==} dev: true + /infer-owner@1.0.4: + resolution: {integrity: sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==} + dev: true + /infima@0.2.0-alpha.43: resolution: {integrity: sha512-2uw57LvUqW0rK/SWYnd/2rRfxNA5DDNOh33jxF7fy46VWoNhGxiUQyVZHbBMjQ33mQem0cjdDVwgWVAmlRfgyQ==} engines: {node: '>=12'} @@ -22996,7 +25613,7 @@ packages: '@formatjs/ecma402-abstract': 1.14.3 '@formatjs/fast-memoize': 1.2.7 '@formatjs/icu-messageformat-parser': 2.1.14 - tslib: 2.5.0 + tslib: 2.6.2 /intl@1.2.5: resolution: {integrity: sha512-rK0KcPHeBFBcqsErKSpvZnrOmWOj+EmDkyJ57e90YWaQNqbcivcqmKDlHEeNprDWOsKzPsh1BfSpPQdDvclHVw==} @@ -23105,6 +25722,13 @@ packages: resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==} engines: {node: '>=4'} + /is-builtin-module@3.2.1: + resolution: {integrity: sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==} + engines: {node: '>=6'} + dependencies: + builtin-modules: 3.3.0 + dev: true + /is-callable@1.2.7: resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} engines: {node: '>= 0.4'} @@ -23201,7 +25825,6 @@ packages: /is-fullwidth-code-point@2.0.0: resolution: {integrity: sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==} engines: {node: '>=4'} - dev: false /is-fullwidth-code-point@3.0.0: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} @@ -23262,6 +25885,10 @@ packages: engines: {node: '>=12'} dev: false + /is-lambda@1.0.1: + resolution: {integrity: sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==} + dev: true + /is-lower-case@1.1.3: resolution: {integrity: sha512-+5A1e/WJpLLXZEDlgz4G//WYSHyQBD32qa4Jd3Lw06qQlv3fJHnp3YIHjTQSGzHMgzmVKz2ZP3rBxTHkPw/lxA==} dependencies: @@ -23271,7 +25898,7 @@ packages: /is-lower-case@2.0.2: resolution: {integrity: sha512-bVcMJy4X5Og6VZfdOZstSexlEy20Sr0k/p/b2IlQJlfdKAQuMpiv5w2Ccxb8sKdRUNAG1PnHVHjFSdRDVS6NlQ==} dependencies: - tslib: 2.5.0 + tslib: 2.6.2 dev: true /is-map@2.0.2: @@ -23356,7 +25983,6 @@ packages: /is-plain-obj@2.1.0: resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} engines: {node: '>=8'} - dev: false /is-plain-obj@3.0.0: resolution: {integrity: sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==} @@ -23405,11 +26031,22 @@ packages: dependencies: is-unc-path: 1.0.0 + /is-retry-allowed@1.2.0: + resolution: {integrity: sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==} + engines: {node: '>=0.10.0'} + /is-root@2.1.0: resolution: {integrity: sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg==} engines: {node: '>=6'} dev: false + /is-scoped@2.1.0: + resolution: {integrity: sha512-Cv4OpPTHAK9kHYzkzCrof3VJh7H/PrG2MBUMvvJebaaUMbqhm0YAtXnvh0I3Hnj2tMZWwrRROWLSgfJrKqWmlQ==} + engines: {node: '>=8'} + dependencies: + scoped-regex: 2.1.0 + dev: true + /is-set@2.0.2: resolution: {integrity: sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==} dev: true @@ -23479,7 +26116,11 @@ packages: /is-upper-case@2.0.2: resolution: {integrity: sha512-44pxmxAvnnAOwBg4tHPnkfvgjPwbc5QIsSstNU+YcJ1ovxVzCWpSGosPJOZh/a1tdl81fbgnLc9LLv+x2ywbPQ==} dependencies: - tslib: 2.5.0 + tslib: 2.6.2 + dev: true + + /is-utf8@0.2.1: + resolution: {integrity: sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==} dev: true /is-weakmap@2.0.1: @@ -23543,6 +26184,11 @@ packages: resolution: {integrity: sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==} engines: {node: '>= 8.0.0'} + /isbinaryfile@5.0.0: + resolution: {integrity: sha512-UDdnyGvMajJUWCkib7Cei/dvyJrrvo4FIrsvSFWdPpXSUorzXrDJ0S+X5Q4ZlasfPjca4yqCNNsjbCeiy8FFeg==} + engines: {node: '>= 14.0.0'} + dev: true + /isbuffer@0.0.0: resolution: {integrity: sha512-xU+NoHp+YtKQkaM2HsQchYn0sltxMxew0HavMfHbjnucBoTSGbw745tL+Z7QBANleWM1eEQMenEpi174mIeS4g==} dev: true @@ -23617,7 +26263,7 @@ packages: '@babel/parser': 7.22.4 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.0 - semver: 6.3.0 + semver: 6.3.1 transitivePeerDependencies: - supports-color @@ -23654,6 +26300,26 @@ packages: resolution: {integrity: sha512-4dG1D1x/7g8PwHS9aK6QV5V94+ZvyP4+d19qDv43EzImmrndysIl4prmJ1hWWIGCqrZHyaHBm6BSEWHOLnpoNw==} dev: false + /jackspeak@2.3.3: + resolution: {integrity: sha512-R2bUw+kVZFS/h1AZqBKrSgDmdmjApzgY0AlCPumopFiAlbUxE2gf+SCuBzQ0cP5hHmUmFYF5yw55T97Th5Kstg==} + engines: {node: '>=14'} + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + dev: true + + /jaeger-client@3.19.0: + resolution: {integrity: sha512-M0c7cKHmdyEUtjemnJyx/y9uX16XHocL46yQvyqDlPdvAcwPDbHrIbKjQdBqtiE4apQ/9dmr+ZLJYYPGnurgpw==} + engines: {node: '>=10'} + dependencies: + node-int64: 0.4.0 + opentracing: 0.14.7 + thriftrw: 3.11.4 + uuid: 8.3.2 + xorshift: 1.2.0 + dev: false + /jake@10.8.5: resolution: {integrity: sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==} engines: {node: '>=10'} @@ -23781,7 +26447,7 @@ packages: '@jest/types': 29.5.0 chalk: 4.1.2 exit: 0.1.2 - graceful-fs: 4.2.10 + graceful-fs: 4.2.11 import-local: 3.1.0 jest-config: 29.5.0(@types/node@18.14.2)(ts-node@10.9.1) jest-util: 29.5.0 @@ -23829,7 +26495,7 @@ packages: pretty-format: 28.1.3 slash: 3.0.0 strip-json-comments: 3.1.1 - ts-node: 10.9.1(@swc/core@1.3.27)(@types/node@18.14.2)(typescript@5.0.4) + ts-node: 10.9.1(@types/node@18.14.2)(typescript@5.0.4) transitivePeerDependencies: - supports-color dev: true @@ -23855,7 +26521,7 @@ packages: ci-info: 3.7.1 deepmerge: 4.3.1 glob: 7.2.3 - graceful-fs: 4.2.10 + graceful-fs: 4.2.11 jest-circus: 29.5.0 jest-environment-node: 29.5.0 jest-get-type: 29.4.3 @@ -23869,7 +26535,7 @@ packages: pretty-format: 29.5.0 slash: 3.0.0 strip-json-comments: 3.1.1 - ts-node: 10.9.1(@swc/core@1.3.27)(@types/node@18.14.2)(typescript@5.0.4) + ts-node: 10.9.1(@types/node@18.14.2)(typescript@5.0.4) transitivePeerDependencies: - supports-color dev: true @@ -23895,7 +26561,7 @@ packages: ci-info: 3.7.1 deepmerge: 4.3.1 glob: 7.2.3 - graceful-fs: 4.2.10 + graceful-fs: 4.2.11 jest-circus: 29.5.0 jest-environment-node: 29.5.0 jest-get-type: 29.4.3 @@ -23909,7 +26575,7 @@ packages: pretty-format: 29.5.0 slash: 3.0.0 strip-json-comments: 3.1.1 - ts-node: 10.9.1(@swc/core@1.3.27)(@types/node@18.14.2)(typescript@5.0.4) + ts-node: 10.9.1(@types/node@18.14.2)(typescript@5.0.4) transitivePeerDependencies: - supports-color @@ -23994,7 +26660,7 @@ packages: '@jest/fake-timers': 28.1.3 '@jest/types': 28.1.3 '@types/jsdom': 16.2.15 - '@types/node': 18.15.10 + '@types/node': 16.18.47 jest-mock: 28.1.3 jest-util: 28.1.3 jsdom: 19.0.0 @@ -24203,7 +26869,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.5.0 - '@types/node': 18.15.10 + '@types/node': 16.18.47 jest-util: 29.5.0 /jest-pnp-resolver@1.2.3(jest-resolve@28.1.3): @@ -24283,7 +26949,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: chalk: 4.1.2 - graceful-fs: 4.2.10 + graceful-fs: 4.2.11 jest-haste-map: 29.5.0 jest-pnp-resolver: 1.2.3(jest-resolve@29.5.0) jest-util: 29.5.0 @@ -24489,7 +27155,7 @@ packages: '@types/node': 18.15.10 chalk: 4.1.2 ci-info: 3.7.1 - graceful-fs: 4.2.10 + graceful-fs: 4.2.11 picomatch: 2.3.1 /jest-validate@28.1.3: @@ -24915,15 +27581,19 @@ packages: /json-parse-better-errors@1.0.2: resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} - dev: true /json-parse-even-better-errors@2.3.1: resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + /json-parse-even-better-errors@3.0.0: + resolution: {integrity: sha512-iZbGHafX/59r39gPwVPRBGw0QQKnA7tte5pSMrhWOW7swGsVvVTjmfyAV9pNqk8YGT7tRCdxRu8uzcgZwoDooA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dev: true + /json-ptr@1.3.2: resolution: {integrity: sha512-tFH40YQ+lG7mgYYM1kGZOhQngO4SbOEHZJlA4W+NtetWZ20EUU3BPU+30uWRKumuAJoSo5eqrsXD2h72ioS8ew==} dependencies: - tslib: 2.5.0 + tslib: 2.6.2 dev: true /json-refs@3.0.15(supports-color@8.1.1): @@ -24962,6 +27632,10 @@ packages: jsonify: 0.0.1 dev: true + /json-stringify-nice@1.1.4: + resolution: {integrity: sha512-5Z5RFW63yxReJ7vANgW6eZFGWaQvnPE3WNmZoOJrSkGju2etKA2L5rrOa1sm877TVTFt57A80BH1bArcmlLfPw==} + dev: true + /json-stringify-safe@5.0.1: resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} @@ -24998,6 +27672,11 @@ packages: /jsonc-parser@3.2.0: resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} + /jsonfile@4.0.0: + resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} + optionalDependencies: + graceful-fs: 4.2.11 + /jsonfile@6.1.0: resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} dependencies: @@ -25009,6 +27688,11 @@ packages: resolution: {integrity: sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg==} dev: true + /jsonparse@1.3.1: + resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} + engines: {'0': node >= 0.2.0} + dev: true + /jsonpath-plus@4.0.0: resolution: {integrity: sha512-e0Jtg4KAzDJKKwzbLaUtinCn0RZseWBVRTRGihSpvFlM3wTR7ExSp+PTdeTsDrLNJUe7L7JYJe8mblHX5SCT6A==} engines: {node: '>=10.0'} @@ -25073,6 +27757,14 @@ packages: - encoding dev: false + /just-diff-apply@5.5.0: + resolution: {integrity: sha512-OYTthRfSh55WOItVqwpefPtNt2VdKsq5AnAK6apdtR6yCH8pr0CmSr710J0Mf+WdQy7K/OzMy7K2MgAfdQURDw==} + dev: true + + /just-diff@5.2.0: + resolution: {integrity: sha512-6ufhP9SHjb7jibNFrNxyFZ6od3g+An6Ai9mhGRvcYe8UJlH0prseN64M+6ZBBUoKYHZsitDP42gAJ8+eVWr3lw==} + dev: true + /jwa@1.4.1: resolution: {integrity: sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==} dependencies: @@ -25190,7 +27882,7 @@ packages: dependencies: klona: 2.0.6 less: 4.1.3 - webpack: 5.85.1(@swc/core@1.3.27) + webpack: 5.85.1 dev: true /less@4.1.3: @@ -25200,7 +27892,7 @@ packages: dependencies: copy-anything: 2.0.6 parse-node-version: 1.0.1 - tslib: 2.5.0 + tslib: 2.6.2 optionalDependencies: errno: 0.1.8 graceful-fs: 4.2.11 @@ -25318,7 +28010,7 @@ packages: webpack-sources: optional: true dependencies: - webpack: 5.85.1(@swc/core@1.3.27) + webpack: 5.85.1 webpack-sources: 3.2.3 dev: true @@ -25498,6 +28190,27 @@ packages: - zenObservable dev: false + /load-json-file@5.3.0: + resolution: {integrity: sha512-cJGP40Jc/VXUsp8/OrnyKyTZ1y6v/dphm3bioS+RrKXjK2BB6wHUd6JptZEFDGgGahMT+InnZO5i1Ei9mpC8Bw==} + engines: {node: '>=6'} + dependencies: + graceful-fs: 4.2.11 + parse-json: 4.0.0 + pify: 4.0.1 + strip-bom: 3.0.0 + type-fest: 0.3.1 + dev: false + + /load-yaml-file@0.2.0: + resolution: {integrity: sha512-OfCBkGEw4nN6JLtgRidPX6QxjBQGQf72q3si2uvqyFEMbycSFFHwAZeXx6cJgFM9wmLrf9zBwCP3Ivqa+LLZPw==} + engines: {node: '>=6'} + dependencies: + graceful-fs: 4.2.11 + js-yaml: 3.14.1 + pify: 4.0.1 + strip-bom: 3.0.0 + dev: true + /loader-runner@4.3.0: resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} engines: {node: '>=6.11.5'} @@ -25534,6 +28247,10 @@ packages: dependencies: p-locate: 5.0.0 + /lodash.camelcase@4.3.0: + resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} + dev: false + /lodash.castarray@4.4.0: resolution: {integrity: sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==} dev: true @@ -25691,6 +28408,20 @@ packages: uni-global: 1.0.0 dev: true + /long@2.4.0: + resolution: {integrity: sha512-ijUtjmO/n2A5PaosNG9ZGDsQ3vxJg7ZW8vsY8Kp0f2yIZWhSJvjmegV7t+9RPQKxKrvj8yKGehhS+po14hPLGQ==} + engines: {node: '>=0.6'} + dev: false + + /long@5.2.3: + resolution: {integrity: sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==} + dev: false + + /lookpath@1.2.2: + resolution: {integrity: sha512-k2Gmn8iV6qdME3ztZC2spubmQISimFOPLuQKiPaLcVdRz0IpdxrNClVepMlyTJlhodm/zG/VfbkWERm3kUIh+Q==} + engines: {npm: '>=6.13.4'} + hasBin: true + /loose-envify@1.4.0: resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} hasBin: true @@ -25706,7 +28437,7 @@ packages: /lower-case-first@2.0.2: resolution: {integrity: sha512-EVm/rR94FJTZi3zefZ82fLWab+GX14LJN4HrWBcuo6Evmsl9hEfnqxgcHCKb9q+mNf6EVdsjx/qucYFIIB84pg==} dependencies: - tslib: 2.5.0 + tslib: 2.6.2 dev: true /lower-case@1.1.4: @@ -25716,7 +28447,7 @@ packages: /lower-case@2.0.2: resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} dependencies: - tslib: 2.5.0 + tslib: 2.6.2 /lowercase-keys@1.0.1: resolution: {integrity: sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==} @@ -25726,11 +28457,9 @@ packages: resolution: {integrity: sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==} engines: {node: '>=8'} - /lru-cache@4.1.5: - resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==} - dependencies: - pseudomap: 1.0.2 - yallist: 2.1.2 + /lru-cache@10.0.1: + resolution: {integrity: sha512-IJ4uwUTi2qCccrioU6g9g/5rvvVl13bsdczUUcqbciD9iLr095yj8DQKdObriEvuNSx325N1rV1O0sJFszx75g==} + engines: {node: 14 || >=16.14} dev: true /lru-cache@5.1.1: @@ -25744,6 +28473,11 @@ packages: dependencies: yallist: 4.0.0 + /lru-cache@7.18.3: + resolution: {integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==} + engines: {node: '>=12'} + dev: true + /lru-queue@0.1.0: resolution: {integrity: sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ==} dependencies: @@ -25814,7 +28548,7 @@ packages: resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} engines: {node: '>=8'} dependencies: - semver: 6.3.0 + semver: 6.3.1 /make-dir@4.0.0: resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} @@ -25826,6 +28560,79 @@ packages: /make-error@1.3.6: resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} + /make-fetch-happen@10.2.1: + resolution: {integrity: sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + dependencies: + agentkeepalive: 4.5.0 + cacache: 16.1.3 + http-cache-semantics: 4.1.0 + http-proxy-agent: 5.0.0 + https-proxy-agent: 5.0.1(supports-color@8.1.1) + is-lambda: 1.0.1 + lru-cache: 7.18.3 + minipass: 3.3.6 + minipass-collect: 1.0.2 + minipass-fetch: 2.1.2 + 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.1 + transitivePeerDependencies: + - bluebird + - supports-color + dev: true + + /make-fetch-happen@11.1.1: + resolution: {integrity: sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + agentkeepalive: 4.5.0 + cacache: 17.1.4 + http-cache-semantics: 4.1.1 + http-proxy-agent: 5.0.0 + https-proxy-agent: 5.0.1(supports-color@8.1.1) + is-lambda: 1.0.1 + lru-cache: 7.18.3 + minipass: 5.0.0 + minipass-fetch: 3.0.4 + 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.5 + transitivePeerDependencies: + - supports-color + dev: true + + /make-fetch-happen@9.1.0: + resolution: {integrity: sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==} + engines: {node: '>= 10'} + dependencies: + agentkeepalive: 4.5.0 + cacache: 15.3.0 + http-cache-semantics: 4.1.1 + http-proxy-agent: 4.0.1 + https-proxy-agent: 5.0.1(supports-color@8.1.1) + is-lambda: 1.0.1 + lru-cache: 6.0.0 + minipass: 3.3.6 + minipass-collect: 1.0.2 + minipass-fetch: 1.4.1 + minipass-flush: 1.0.5 + minipass-pipeline: 1.2.4 + negotiator: 0.6.3 + promise-retry: 2.0.1 + socks-proxy-agent: 6.2.1 + ssri: 8.0.1 + transitivePeerDependencies: + - bluebird + - supports-color + dev: true + /make-iterator@1.0.1: resolution: {integrity: sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==} engines: {node: '>=0.10.0'} @@ -25995,6 +28802,38 @@ packages: resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} engines: {node: '>= 0.6'} + /mem-fs-editor@9.7.0(mem-fs@2.3.0): + resolution: {integrity: sha512-ReB3YD24GNykmu4WeUL/FDIQtkoyGB6zfJv60yfCo3QjKeimNcTqv2FT83bP0ccs6uu+sm5zyoBlspAzigmsdg==} + engines: {node: '>=12.10.0'} + peerDependencies: + mem-fs: ^2.1.0 + peerDependenciesMeta: + mem-fs: + optional: true + dependencies: + binaryextensions: 4.18.0 + commondir: 1.0.1 + deep-extend: 0.6.0 + ejs: 3.1.8 + globby: 11.1.0 + isbinaryfile: 5.0.0 + mem-fs: 2.3.0 + minimatch: 7.4.6 + multimatch: 5.0.0 + normalize-path: 3.0.0 + textextensions: 5.16.0 + dev: true + + /mem-fs@2.3.0: + resolution: {integrity: sha512-GftCCBs6EN8sz3BoWO1bCj8t7YBtT713d8bUgbhg9Iel5kFSqnSvCK06TYIDJAtJ51cSiWkM/YemlT0dfoFycw==} + engines: {node: '>=12'} + dependencies: + '@types/node': 15.14.9 + '@types/vinyl': 2.0.7 + vinyl: 2.2.1 + vinyl-file: 3.0.0 + dev: true + /mem@5.1.1: resolution: {integrity: sha512-qvwipnozMohxLXG1pOqoLiZKNkC4r4qqRucSoDwXowsNGDSULiqFTRUF05vcZWnwJSG22qTsynQhxbaMtnX9gw==} engines: {node: '>=8'} @@ -26340,7 +29179,7 @@ packages: webpack: ^5.0.0 dependencies: schema-utils: 4.0.0 - webpack: 5.85.1(@swc/core@1.3.27) + webpack: 5.85.1 dev: true /mini-css-extract-plugin@2.7.2(webpack@5.75.0): @@ -26350,7 +29189,7 @@ packages: webpack: ^5.0.0 dependencies: schema-utils: 4.0.0 - webpack: 5.75.0(@swc/core@1.3.27) + webpack: 5.75.0 dev: false /minimalistic-assert@1.0.1: @@ -26396,6 +29235,13 @@ packages: dependencies: brace-expansion: 2.0.1 + /minimatch@7.4.6: + resolution: {integrity: sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==} + engines: {node: '>=10'} + dependencies: + brace-expansion: 2.0.1 + dev: true + /minimatch@9.0.0: resolution: {integrity: sha512-0jJj8AvgKqWN05mrwuqi8QYKx1WmYSUoKSxu5Qhs9prezTz10sxAHGNZe9J9cqIJzta8DWsleh2KaVaLl6Ru2w==} engines: {node: '>=16 || 14 >=14.17'} @@ -26403,6 +29249,13 @@ packages: brace-expansion: 2.0.1 dev: true + /minimatch@9.0.3: + resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + brace-expansion: 2.0.1 + dev: true + /minimist-options@4.1.0: resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} engines: {node: '>= 6'} @@ -26415,6 +29268,74 @@ packages: /minimist@1.2.7: resolution: {integrity: sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==} + /minipass-collect@1.0.2: + resolution: {integrity: sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==} + engines: {node: '>= 8'} + dependencies: + minipass: 3.3.6 + dev: true + + /minipass-fetch@1.4.1: + resolution: {integrity: sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==} + engines: {node: '>=8'} + dependencies: + minipass: 3.3.6 + minipass-sized: 1.0.3 + minizlib: 2.1.2 + optionalDependencies: + encoding: 0.1.13 + dev: true + + /minipass-fetch@2.1.2: + resolution: {integrity: sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + dependencies: + minipass: 3.3.6 + minipass-sized: 1.0.3 + minizlib: 2.1.2 + optionalDependencies: + encoding: 0.1.13 + dev: true + + /minipass-fetch@3.0.4: + resolution: {integrity: sha512-jHAqnA728uUpIaFm7NWsCnqKT6UqZz7GcI/bDpPATuwYyKwJwW0remxSCxUlKiEty+eopHGa3oc8WxgQ1FFJqg==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + minipass: 7.0.3 + minipass-sized: 1.0.3 + minizlib: 2.1.2 + optionalDependencies: + encoding: 0.1.13 + dev: true + + /minipass-flush@1.0.5: + resolution: {integrity: sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==} + engines: {node: '>= 8'} + dependencies: + minipass: 3.3.6 + dev: true + + /minipass-json-stream@1.0.1: + resolution: {integrity: sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg==} + dependencies: + jsonparse: 1.3.1 + minipass: 3.3.6 + dev: true + + /minipass-pipeline@1.2.4: + resolution: {integrity: sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==} + engines: {node: '>=8'} + dependencies: + minipass: 3.3.6 + dev: true + + /minipass-sized@1.0.3: + resolution: {integrity: sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==} + engines: {node: '>=8'} + dependencies: + minipass: 3.3.6 + dev: true + /minipass@3.3.6: resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} engines: {node: '>=8'} @@ -26431,6 +29352,11 @@ packages: resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} engines: {node: '>=8'} + /minipass@7.0.3: + resolution: {integrity: sha512-LhbbwCfz3vsb12j/WkWQPZfKTsgqIe1Nf/ti1pKjYESGLHIVjWU96G9/ljLH4F9mWNVhlQOm0VySdAWzf05dpg==} + engines: {node: '>=16 || 14 >=14.17'} + dev: true + /minizlib@2.1.2: resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} engines: {node: '>= 8'} @@ -26449,6 +29375,15 @@ packages: /mkdirp-classic@0.5.3: resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} + /mkdirp-infer-owner@2.0.0: + resolution: {integrity: sha512-sdqtiFt3lkOaYvTXSRIUjkIdPTcxgv5+fgqYE/5qgwdw12cOrAuzzgzvVExIkH/ul1oeHN3bCLOWSG3XOqbKKw==} + engines: {node: '>=10'} + dependencies: + chownr: 2.0.0 + infer-owner: 1.0.4 + mkdirp: 1.0.4 + dev: true + /mkdirp@0.5.6: resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} hasBin: true @@ -26472,10 +29407,50 @@ packages: hasBin: true dev: false + /mocha@9.0.0: + resolution: {integrity: sha512-GRGG/q9bIaUkHJB9NL+KZNjDhMBHB30zW3bZW9qOiYr+QChyLjPzswaxFWkI1q6lGlSL28EQYzAi2vKWNkPx+g==} + engines: {node: '>= 12.0.0'} + hasBin: true + dependencies: + '@ungap/promise-all-settled': 1.1.2 + ansi-colors: 4.1.1 + browser-stdout: 1.3.1 + chokidar: 3.5.1 + debug: 4.3.1(supports-color@8.1.1) + diff: 5.0.0 + escape-string-regexp: 4.0.0 + find-up: 5.0.0 + glob: 7.1.7 + growl: 1.10.5 + he: 1.2.0 + js-yaml: 4.1.0 + log-symbols: 4.1.0 + minimatch: 3.0.4 + ms: 2.1.3 + nanoid: 3.1.23 + serialize-javascript: 5.0.1 + strip-json-comments: 3.1.1 + supports-color: 8.1.1 + which: 2.0.2 + wide-align: 1.1.3 + workerpool: 6.1.4 + yargs: 16.2.0 + yargs-parser: 20.2.4 + yargs-unparser: 2.0.0 + dev: true + + /mock-stdin@1.0.0: + resolution: {integrity: sha512-tukRdb9Beu27t6dN+XztSRHq9J0B/CoAOySGzHfn8UTfmqipA5yNT/sDUEyYdAV3Hpka6Wx6kOMxuObdOex60Q==} + dev: true + /mockdate@3.0.5: resolution: {integrity: sha512-iniQP4rj1FhBdBYS/+eQv7j1tadJ9lJtdzgOpvsOHng/GbcDh2Fhdeq+ZRldrPYdXvCyfFUmFeEwEGXZB5I/AQ==} dev: true + /module-details-from-path@1.0.3: + resolution: {integrity: sha512-ySViT69/76t8VhE1xXHK6Ch4NcDd26gx0MzKXLO+F7NOtnqH68d9zF94nT8ZWSxXh8ELOERsnJO/sWt1xZYw5A==} + dev: false + /mri@1.2.0: resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} engines: {node: '>=4'} @@ -26538,6 +29513,21 @@ packages: dns-packet: 5.4.0 thunky: 1.1.0 + /multimap@1.1.0: + resolution: {integrity: sha512-0ZIR9PasPxGXmRsEF8jsDzndzHDj7tIav+JUmvIFB/WHswliFnquxECT/De7GR4yg99ky/NlRKJT82G1y271bw==} + dev: true + + /multimatch@5.0.0: + resolution: {integrity: sha512-ypMKuglUrZUD99Tk2bUQ+xNQj43lPEfAeX2o9cTteAmShXy2VHDJpuwu1o0xqoKCt9jLVAvwyFKdLTPXKAfJyA==} + engines: {node: '>=10'} + dependencies: + '@types/minimatch': 3.0.5 + array-differ: 3.0.0 + array-union: 2.1.0 + arrify: 2.0.1 + minimatch: 3.1.2 + dev: true + /mute-stream@0.0.6: resolution: {integrity: sha512-m0kBTDLF/0lgzCsPVmJSKM5xkLNX7ZAB0Q+n2DP37JMIRPVC2R4c3BdO6x++bXFKftbhvSfKgwxAexME+BRDRw==} @@ -26551,6 +29541,12 @@ packages: object-assign: 4.1.1 thenify-all: 1.6.0 + /nanoid@3.1.23: + resolution: {integrity: sha512-FiB0kzdP0FFVGDKlRLEQ1BgDzU87dy5NnzjeW9YZNt+/c3+q82EQDUwniSAUxp/F0gFNI1ZhKU1FqYsMuqZVnw==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + dev: true + /nanoid@3.3.6: resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} @@ -26592,6 +29588,9 @@ packages: /natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + /natural-orderby@2.0.3: + resolution: {integrity: sha512-p7KTHxU0CUrcOXe62Zfrb5Z13nLvPhSWR/so3kFulUQU0sgUll2Z0LwpsLN351eOOD+hRGu/F1g+6xDfPeD++Q==} + /ncjsm@4.3.2: resolution: {integrity: sha512-6d1VWA7FY31CpI4Ki97Fpm36jfURkVbpktizp8aoVViTZRQgr/0ddmlKerALSSlzfwQRBeSq1qwwVcBJK4Sk7Q==} dependencies: @@ -26644,7 +29643,19 @@ packages: resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} dependencies: lower-case: 2.0.2 - tslib: 2.5.0 + tslib: 2.6.2 + + /nock@13.3.3: + resolution: {integrity: sha512-z+KUlILy9SK/RjpeXDiDUEAq4T94ADPHE3qaRkf66mpEhzc/ytOMm3Bwdrbq6k1tMWkbdujiKim3G2tfQARuJw==} + engines: {node: '>= 10.13'} + dependencies: + debug: 4.3.4(supports-color@8.1.1) + json-stringify-safe: 5.0.1 + lodash: 4.17.21 + propagate: 2.0.1 + transitivePeerDependencies: + - supports-color + dev: true /node-abort-controller@3.0.1: resolution: {integrity: sha512-/ujIVxthRs+7q6hsdjHMaj8hRG9NuWmwrz+JdRwZ14jdFoKSkm+vDsCbF9PLpnSqjaWQJuTmVtcWHNLr+vrOFw==} @@ -26732,6 +29743,46 @@ packages: resolution: {integrity: sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ==} hasBin: true + /node-gyp@8.4.1: + resolution: {integrity: sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w==} + engines: {node: '>= 10.12.0'} + hasBin: true + dependencies: + env-paths: 2.2.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + make-fetch-happen: 9.1.0 + nopt: 5.0.0 + npmlog: 6.0.2 + rimraf: 3.0.2 + semver: 7.5.4 + tar: 6.1.15 + which: 2.0.2 + transitivePeerDependencies: + - bluebird + - supports-color + dev: true + + /node-gyp@9.4.0: + resolution: {integrity: sha512-dMXsYP6gc9rRbejLXmTbVRYjAHw7ppswsKyMxuxJxxOHzluIO1rGp9TOQgjFJ+2MCqcOcQTOPB/8Xwhr+7s4Eg==} + engines: {node: ^12.13 || ^14.13 || >=16} + hasBin: true + dependencies: + env-paths: 2.2.1 + exponential-backoff: 3.1.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + make-fetch-happen: 11.1.1 + nopt: 6.0.0 + npmlog: 6.0.2 + rimraf: 3.0.2 + semver: 7.5.4 + tar: 6.1.15 + which: 2.0.2 + transitivePeerDependencies: + - supports-color + dev: true + /node-int64@0.4.0: resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} @@ -26739,6 +29790,11 @@ packages: resolution: {integrity: sha512-QNABxbrPa3qEIfrE6GOJ7BYIuignnJw7iQ2YPbc3Nla1HzRJjXzZOiikfF8m7eAMfichLt3M4VgLOetqgDmgGQ==} dev: true + /node-persist@3.1.3: + resolution: {integrity: sha512-CaFv+kSZtsc+VeDRldK1yR47k1vPLBpzYB9re2z7LIwITxwBtljMq3s8VQnnr+x3E8pQfHbc5r2IyJsBLJhtXg==} + engines: {node: '>=10.12.0'} + dev: false + /node-plop@0.26.3: resolution: {integrity: sha512-Cov028YhBZ5aB7MdMWJEmwyBig43aGL5WT4vdoB28Oitau1zZAcHUn8Sgfk9HM33TqhtLJ9PlM/O0Mv+QpV/4Q==} engines: {node: '>=8.9.4'} @@ -26813,6 +29869,22 @@ packages: abbrev: 1.1.1 dev: true + /nopt@5.0.0: + resolution: {integrity: sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==} + engines: {node: '>=6'} + hasBin: true + dependencies: + abbrev: 1.1.1 + dev: true + + /nopt@6.0.0: + resolution: {integrity: sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + hasBin: true + dependencies: + abbrev: 1.1.1 + dev: true + /normalize-package-data@2.5.0: resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} dependencies: @@ -26831,6 +29903,16 @@ packages: validate-npm-package-license: 3.0.4 dev: true + /normalize-package-data@5.0.0: + resolution: {integrity: sha512-h9iPVIfrVZ9wVYQnxFgtw1ugSvGEMOlyPWWtm8BMJhnwyEL/FLbYbTY3V3PpjI/BUK67n9PEWDu6eHzu1fB15Q==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + hosted-git-info: 6.1.1 + is-core-module: 2.11.0 + semver: 7.5.4 + validate-npm-package-license: 3.0.4 + dev: true + /normalize-path@2.1.1: resolution: {integrity: sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==} engines: {node: '>=0.10.0'} @@ -26854,6 +29936,133 @@ packages: resolution: {integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==} engines: {node: '>=10'} + /npm-bundled@1.1.2: + resolution: {integrity: sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==} + dependencies: + npm-normalize-package-bin: 1.0.1 + dev: true + + /npm-bundled@3.0.0: + resolution: {integrity: sha512-Vq0eyEQy+elFpzsKjMss9kxqb9tG3YHg4dsyWuUENuzvSUWe1TCnW/vV9FkhvBk/brEDoDiVd+M1Btosa6ImdQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + npm-normalize-package-bin: 3.0.1 + dev: true + + /npm-install-checks@4.0.0: + resolution: {integrity: sha512-09OmyDkNLYwqKPOnbI8exiOZU2GVVmQp7tgez2BPi5OZC8M82elDAps7sxC4l//uSUtotWqoEIDwjRvWH4qz8w==} + engines: {node: '>=10'} + dependencies: + semver: 7.5.4 + dev: true + + /npm-install-checks@6.2.0: + resolution: {integrity: sha512-744wat5wAAHsxa4590mWO0tJ8PKxR8ORZsH9wGpQc3nWTzozMAgBN/XyqYw7mg3yqLM8dLwEnwSfKMmXAjF69g==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + semver: 7.5.4 + dev: true + + /npm-normalize-package-bin@1.0.1: + resolution: {integrity: sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==} + dev: true + + /npm-normalize-package-bin@2.0.0: + resolution: {integrity: sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + dev: true + + /npm-normalize-package-bin@3.0.1: + resolution: {integrity: sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dev: true + + /npm-package-arg@10.1.0: + resolution: {integrity: sha512-uFyyCEmgBfZTtrKk/5xDfHp6+MdrqGotX/VoOyEEl3mBwiEE5FlBaePanazJSVMPT7vKepcjYBY2ztg9A3yPIA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + hosted-git-info: 6.1.1 + proc-log: 3.0.0 + semver: 7.5.4 + validate-npm-package-name: 5.0.0 + dev: true + + /npm-package-arg@8.1.5: + resolution: {integrity: sha512-LhgZrg0n0VgvzVdSm1oiZworPbTxYHUJCgtsJW8mGvlDpxTM1vSJc3m5QZeUkhAHIzbz3VCHd/R4osi1L1Tg/Q==} + engines: {node: '>=10'} + dependencies: + hosted-git-info: 4.1.0 + semver: 7.5.4 + validate-npm-package-name: 3.0.0 + dev: true + + /npm-packlist@3.0.0: + resolution: {integrity: sha512-L/cbzmutAwII5glUcf2DBRNY/d0TFd4e/FnaZigJV6JD85RHZXJFGwCndjMWiiViiWSsWt3tiOLpI3ByTnIdFQ==} + engines: {node: '>=10'} + hasBin: true + dependencies: + glob: 7.2.3 + ignore-walk: 4.0.1 + npm-bundled: 1.1.2 + npm-normalize-package-bin: 1.0.1 + dev: true + + /npm-packlist@7.0.4: + resolution: {integrity: sha512-d6RGEuRrNS5/N84iglPivjaJPxhDbZmlbTwTDX2IbcRHG5bZCdtysYMhwiPvcF4GisXHGn7xsxv+GQ7T/02M5Q==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + ignore-walk: 6.0.3 + dev: true + + /npm-pick-manifest@6.1.1: + resolution: {integrity: sha512-dBsdBtORT84S8V8UTad1WlUyKIY9iMsAmqxHbLdeEeBNMLQDlDWWra3wYUx9EBEIiG/YwAy0XyNHDd2goAsfuA==} + dependencies: + npm-install-checks: 4.0.0 + npm-normalize-package-bin: 1.0.1 + npm-package-arg: 8.1.5 + semver: 7.5.4 + dev: true + + /npm-pick-manifest@8.0.2: + resolution: {integrity: sha512-1dKY+86/AIiq1tkKVD3l0WI+Gd3vkknVGAggsFeBkTvbhMQ1OND/LKkYv4JtXPKUJ8bOTCyLiqEg2P6QNdK+Gg==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + npm-install-checks: 6.2.0 + npm-normalize-package-bin: 3.0.1 + npm-package-arg: 10.1.0 + semver: 7.5.4 + dev: true + + /npm-registry-fetch@12.0.2: + resolution: {integrity: sha512-Df5QT3RaJnXYuOwtXBXS9BWs+tHH2olvkCLh6jcR/b/u3DvPMlp3J0TvvYwplPKxHMOwfg287PYih9QqaVFoKA==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16} + dependencies: + make-fetch-happen: 10.2.1 + minipass: 3.3.6 + minipass-fetch: 1.4.1 + minipass-json-stream: 1.0.1 + minizlib: 2.1.2 + npm-package-arg: 8.1.5 + transitivePeerDependencies: + - bluebird + - supports-color + dev: true + + /npm-registry-fetch@14.0.5: + resolution: {integrity: sha512-kIDMIo4aBm6xg7jOttupWZamsZRkAqMqwqqbVXnUqstY5+tapvv6bkH/qMR76jdgV+YljEUCyWx3hRYMrJiAgA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + make-fetch-happen: 11.1.1 + minipass: 5.0.0 + minipass-fetch: 3.0.4 + minipass-json-stream: 1.0.1 + minizlib: 2.1.2 + npm-package-arg: 10.1.0 + proc-log: 3.0.0 + transitivePeerDependencies: + - supports-color + dev: true + /npm-registry-utilities@1.0.0: resolution: {integrity: sha512-9xYfSJy2IFQw1i6462EJzjChL9e65EfSo2Cw6kl0EFeDp05VvU+anrQk3Fc0d1MbVCq7rWIxeer89O9SUQ/uOg==} engines: {node: '>=12.0'} @@ -26882,6 +30091,79 @@ packages: dependencies: path-key: 3.1.1 + /npm@9.6.7: + resolution: {integrity: sha512-xwkU1hSZl6Qrkfw3fhxVmMfNWu0A67+aZZs5gz/LoehCeAPkVhQDB90Z2NFoPSI1KpfBWCJ6Bp28wXzv5U5/2g==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + hasBin: true + dev: false + bundledDependencies: + - '@isaacs/string-locale-compare' + - '@npmcli/arborist' + - '@npmcli/config' + - '@npmcli/map-workspaces' + - '@npmcli/package-json' + - '@npmcli/run-script' + - 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 + - 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 + - read-package-json + - read-package-json-fast + - semver + - ssri + - tar + - text-table + - tiny-relative-date + - treeverse + - validate-npm-package-name + - which + - write-file-atomic + /npmlog@5.0.1: resolution: {integrity: sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==} dependencies: @@ -26890,6 +30172,16 @@ packages: gauge: 3.0.2 set-blocking: 2.0.0 + /npmlog@6.0.2: + resolution: {integrity: sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + dependencies: + are-we-there-yet: 3.0.1 + console-control-strings: 1.1.0 + gauge: 4.0.4 + set-blocking: 2.0.0 + dev: true + /nprogress@0.2.0: resolution: {integrity: sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==} dev: false @@ -26929,7 +30221,7 @@ packages: - debug dev: true - /nx@16.3.2(@swc-node/register@1.5.5)(@swc/core@1.3.27): + /nx@16.3.2: resolution: {integrity: sha512-fOzCVL7qoCJAcYTJwvJ9j+PSaL791ro4AICWuLxaphZsp2jcLoav4Ev7ONPks2Wlkt8FS9bee3nqQ3w1ya36Og==} hasBin: true requiresBuild: true @@ -26942,10 +30234,8 @@ packages: '@swc/core': optional: true dependencies: - '@nrwl/tao': 16.3.2(@swc-node/register@1.5.5)(@swc/core@1.3.27) + '@nrwl/tao': 16.3.2 '@parcel/watcher': 2.0.4 - '@swc-node/register': 1.5.5(@swc/core@1.3.27)(typescript@5.0.4) - '@swc/core': 1.3.27 '@yarnpkg/lockfile': 1.1.0 '@yarnpkg/parsers': 3.0.0-rc.36 '@zkochan/js-yaml': 0.0.6 @@ -26974,7 +30264,7 @@ packages: tar-stream: 2.2.0 tmp: 0.2.1 tsconfig-paths: 4.1.2 - tslib: 2.5.0 + tslib: 2.6.2 v8-compile-cache: 2.3.0 yargs: 17.7.2 yargs-parser: 21.1.1 @@ -27083,6 +30373,10 @@ packages: resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} engines: {node: '>= 0.4'} + /object-treeify@1.1.33: + resolution: {integrity: sha512-EFVjAYfzWqWsBMRHPMAXLCDIJnpMhdWAqR7xG6M6a2cs6PMFpl/+Z20w9zDW4vkxOFfddegBKq9Rehd0bxWE7A==} + engines: {node: '>= 10'} + /object-visit@1.0.1: resolution: {integrity: sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==} engines: {node: '>=0.10.0'} @@ -27158,6 +30452,40 @@ packages: /obuf@1.1.2: resolution: {integrity: sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==} + /oclif@3.14.0(@types/node@16.18.47)(typescript@5.0.4): + resolution: {integrity: sha512-IlTb6WcbL7DxKSBp/TlC+wj7FhelIVu5AHBoW5+ABJ9GjXMv27sAY6F+RfEXqQaMu8OwRP9t/1sAKR+3wMlX8w==} + engines: {node: '>=12.0.0'} + hasBin: true + dependencies: + '@oclif/core': 2.15.0(@types/node@16.18.47)(typescript@5.0.4) + '@oclif/plugin-help': 5.2.19(@types/node@16.18.47)(typescript@5.0.4) + '@oclif/plugin-not-found': 2.4.1(@types/node@16.18.47)(typescript@5.0.4) + '@oclif/plugin-warn-if-update-available': 2.0.50(@types/node@16.18.47)(typescript@5.0.4) + aws-sdk: 2.1448.0 + concurrently: 7.6.0 + debug: 4.3.4(supports-color@8.1.1) + find-yarn-workspace-root: 2.0.0 + fs-extra: 8.1.0 + github-slugger: 1.5.0 + got: 11.8.6 + lodash: 4.17.21 + normalize-package-data: 3.0.3 + semver: 7.5.4 + shelljs: 0.8.5 + tslib: 2.6.2 + yeoman-environment: 3.19.3 + yeoman-generator: 5.9.0(yeoman-environment@3.19.3) + transitivePeerDependencies: + - '@swc/core' + - '@swc/wasm' + - '@types/node' + - bluebird + - encoding + - mem-fs + - supports-color + - typescript + dev: true + /octal@1.0.0: resolution: {integrity: sha512-nnda7W8d+A3vEIY+UrDQzzboPf1vhs4JYVhff5CDkq9QNoZY7Xrxeo/htox37j9dZf7yNHevZzqtejWgy1vCqQ==} dev: true @@ -27255,6 +30583,11 @@ packages: resolution: {integrity: sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==} hasBin: true + /opentracing@0.14.7: + resolution: {integrity: sha512-vz9iS7MJ5+Bp1URw8Khvdyw1H/hGvzHWlKQ7eRrQojSCDL1/SrWfrY9QebLw97n2deyRtzHRC3MkQfVNUCo91Q==} + engines: {node: '>=0.10'} + dev: false + /optimism@0.16.2: resolution: {integrity: sha512-zWNbgWj+3vLEjZNIh/okkY2EUfX+vB9TJopzIZwT1xxaMqC5hRLLraePod4c5n4He08xuXNH+zhKFFCu390wiQ==} dependencies: @@ -27339,13 +30672,6 @@ packages: wcwidth: 1.0.1 dev: false - /os-filter-obj@2.0.0: - resolution: {integrity: sha512-uksVLsqG3pVdzzPvmAHpBK0wKxYItuzZr7SziusRPoz67tGV8rL1szZ6IdeUrbqLjGDwApBtN29eEE3IqGHOjg==} - engines: {node: '>=4'} - dependencies: - arch: 2.2.0 - dev: true - /os-shim@0.1.3: resolution: {integrity: sha512-jd0cvB8qQ5uVt0lvCIexBaROw1KyKm5sbulg2fWOHjETisuCzWyt+eTZKEMs8v6HwzoGs8xik26jg7eCM6pS+A==} engines: {node: '>= 0.4.0'} @@ -27457,7 +30783,6 @@ packages: dependencies: eventemitter3: 4.0.7 p-timeout: 3.2.0 - dev: false /p-retry@4.6.2: resolution: {integrity: sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==} @@ -27485,6 +30810,16 @@ packages: dependencies: p-finally: 1.0.0 + /p-transform@1.3.0: + resolution: {integrity: sha512-UJKdSzgd3KOnXXAtqN5+/eeHcvTn1hBkesEmElVgvO/NAYcxAvmjzIGmnNd3Tb/gRAvMBdNRFD4qAWdHxY6QXg==} + engines: {node: '>=12.10.0'} + dependencies: + debug: 4.3.4(supports-color@8.1.1) + p-queue: 6.6.2 + transitivePeerDependencies: + - supports-color + dev: true + /p-try@2.2.0: resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} engines: {node: '>=6'} @@ -27496,7 +30831,64 @@ packages: got: 9.6.0 registry-auth-token: 4.2.2 registry-url: 5.1.0 - semver: 6.3.0 + semver: 6.3.1 + + /pacote@12.0.3: + resolution: {integrity: sha512-CdYEl03JDrRO3x18uHjBYA9TyoW8gy+ThVcypcDkxPtKlw76e4ejhYB6i9lJ+/cebbjpqPW/CijjqxwDTts8Ow==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16} + hasBin: true + dependencies: + '@npmcli/git': 2.1.0 + '@npmcli/installed-package-contents': 1.0.7 + '@npmcli/promise-spawn': 1.3.2 + '@npmcli/run-script': 2.0.0 + cacache: 15.3.0 + chownr: 2.0.0 + fs-minipass: 2.1.0 + infer-owner: 1.0.4 + minipass: 3.3.6 + mkdirp: 1.0.4 + npm-package-arg: 8.1.5 + npm-packlist: 3.0.0 + npm-pick-manifest: 6.1.1 + npm-registry-fetch: 12.0.2 + promise-retry: 2.0.1 + read-package-json-fast: 2.0.3 + rimraf: 3.0.2 + ssri: 8.0.1 + tar: 6.1.15 + transitivePeerDependencies: + - bluebird + - supports-color + dev: true + + /pacote@15.2.0: + resolution: {integrity: sha512-rJVZeIwHTUta23sIZgEIM62WYwbmGbThdbnkt81ravBplQv+HjyroqnLRNH2+sLJHcGZmLRmhPwACqhfTcOmnA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + hasBin: true + dependencies: + '@npmcli/git': 4.1.0 + '@npmcli/installed-package-contents': 2.0.2 + '@npmcli/promise-spawn': 6.0.2 + '@npmcli/run-script': 6.0.2 + cacache: 17.1.4 + fs-minipass: 3.0.3 + minipass: 5.0.0 + npm-package-arg: 10.1.0 + npm-packlist: 7.0.4 + npm-pick-manifest: 8.0.2 + npm-registry-fetch: 14.0.5 + proc-log: 3.0.0 + promise-retry: 2.0.1 + read-package-json: 6.0.4 + read-package-json-fast: 3.0.2 + sigstore: 1.9.0 + ssri: 10.0.5 + tar: 6.1.15 + transitivePeerDependencies: + - bluebird + - supports-color + dev: true /pako@0.2.9: resolution: {integrity: sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==} @@ -27515,7 +30907,7 @@ packages: resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==} dependencies: dot-case: 3.0.4 - tslib: 2.5.0 + tslib: 2.6.2 /parent-module@1.0.1: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} @@ -27533,6 +30925,15 @@ packages: safe-buffer: 5.2.1 dev: true + /parse-conflict-json@2.0.2: + resolution: {integrity: sha512-jDbRGb00TAPFsKWCpZZOT93SxVP9nONOSgES3AevqRq/CHvavEBvKAjxX9p5Y5F0RZLxH9Ufd9+RwtCsa+lFDA==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + dependencies: + json-parse-even-better-errors: 2.3.1 + just-diff: 5.2.0 + just-diff-apply: 5.5.0 + dev: true + /parse-entities@2.0.0: resolution: {integrity: sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==} dependencies: @@ -27564,7 +30965,6 @@ packages: dependencies: error-ex: 1.3.2 json-parse-better-errors: 1.0.2 - dev: true /parse-json@5.2.0: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} @@ -27632,7 +31032,7 @@ packages: resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} dependencies: no-case: 3.0.4 - tslib: 2.5.0 + tslib: 2.6.2 /pascalcase@0.1.1: resolution: {integrity: sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==} @@ -27646,6 +31046,12 @@ packages: execa: 1.0.0 dev: true + /password-prompt@1.1.3: + resolution: {integrity: sha512-HkrjG2aJlvF0t2BMH0e2LB/EHf3Lcq3fNMzy4GYHcQblAvOl+QQji1Lx7WRBMqpVK8p+KR7bCg7oqAMXtdgqyw==} + dependencies: + ansi-escapes: 4.3.2 + cross-spawn: 7.0.3 + /path-case@2.1.1: resolution: {integrity: sha512-Ou0N05MioItesaLr9q8TtHVWmJ6fxWdqKB2RohFmNWVyJ+2zeKIeDNWAN6B/Pe7wpzWChhZX6nONYmOnMeJQ/Q==} dependencies: @@ -27656,7 +31062,7 @@ packages: resolution: {integrity: sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg==} dependencies: dot-case: 3.0.4 - tslib: 2.5.0 + tslib: 2.6.2 /path-exists@3.0.0: resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} @@ -27705,6 +31111,14 @@ packages: dependencies: path-root-regex: 0.1.2 + /path-scurry@1.10.1: + resolution: {integrity: sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + lru-cache: 10.0.1 + minipass: 7.0.3 + dev: true + /path-to-regexp@0.1.7: resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==} @@ -27739,6 +31153,10 @@ packages: /pathe@1.1.0: resolution: {integrity: sha512-ODbEPR0KKHqECXW1GoxdDb+AZvULmXjVPy4rt+pGo2+TnjJTIPJQSVS6N63n8T2Ip+syHhbn52OewKicV0373w==} + /pathval@1.1.1: + resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} + dev: true + /pbkdf2@3.1.2: resolution: {integrity: sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==} engines: {node: '>=0.12'} @@ -27755,11 +31173,6 @@ packages: engines: {node: '>=8'} dev: true - /peek-readable@5.0.0: - resolution: {integrity: sha512-YtCKvLUOvwtMGmrniQPdO7MwPjgkFBtFIrmfSbYmYuq3tKDV/mcfAhBth1+C3ru7uXIZasc/pHnb+YDYNkkj4A==} - engines: {node: '>=14.16'} - dev: true - /peek-stream@1.1.3: resolution: {integrity: sha512-FhJ+YbOSBb9/rIl2ZeE/QHEsWn7PqNYt8ARAY3kIgNGOk13g9FGyIY6JIl/xB/3TFRVoTv5as0l11weORrTekA==} dependencies: @@ -28146,7 +31559,7 @@ packages: dependencies: lilconfig: 2.1.0 postcss: 8.4.23 - ts-node: 10.9.1(@swc/core@1.3.27)(@types/node@18.14.2)(typescript@5.0.4) + ts-node: 10.9.1(@types/node@18.14.2)(typescript@5.0.4) yaml: 2.2.1 dev: true @@ -28161,7 +31574,7 @@ packages: klona: 2.0.6 postcss: 8.4.23 semver: 7.5.4 - webpack: 5.85.1(@swc/core@1.3.27) + webpack: 5.85.1 dev: true /postcss-loader@7.0.2(postcss@8.4.21)(webpack@5.75.0): @@ -28175,7 +31588,7 @@ packages: klona: 2.0.6 postcss: 8.4.21 semver: 7.5.4 - webpack: 5.75.0(@swc/core@1.3.27) + webpack: 5.75.0 dev: false /postcss-loader@7.3.3(postcss@8.4.21)(webpack@5.85.1): @@ -28189,7 +31602,7 @@ packages: jiti: 1.18.2 postcss: 8.4.21 semver: 7.5.4 - webpack: 5.85.1(@swc/core@1.3.27)(esbuild@0.16.17) + webpack: 5.85.1(esbuild@0.16.17) dev: true /postcss-media-query-parser@0.2.3: @@ -28751,6 +32164,16 @@ packages: picocolors: 1.0.0 source-map-js: 1.0.2 + /preferred-pm@3.1.2: + resolution: {integrity: sha512-nk7dKrcW8hfCZ4H6klWcdRknBOXWzNQByJ0oJyX97BOupsYD+FzLS4hflgEu/uPUEHZCuRfMxzCBsuWd7OzT8Q==} + engines: {node: '>=10'} + dependencies: + find-up: 5.0.0 + find-yarn-workspace-root2: 1.2.16 + path-exists: 4.0.0 + which-pm: 2.0.0 + dev: true + /prelude-ls@1.1.2: resolution: {integrity: sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==} engines: {node: '>= 0.8.0'} @@ -28825,6 +32248,11 @@ packages: engines: {node: '>=10.13.0'} hasBin: true + /pretty-bytes@5.6.0: + resolution: {integrity: sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==} + engines: {node: '>=6'} + dev: true + /pretty-error@4.0.0: resolution: {integrity: sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==} dependencies: @@ -28910,6 +32338,15 @@ packages: engines: {node: '>=6'} dev: false + /proc-log@1.0.0: + resolution: {integrity: sha512-aCk8AO51s+4JyuYGg3Q/a6gnrlDO09NpVWePtjp7xwphcoQ04x5WAfCyugcsbLooWcMJ87CLkD4+604IckEdhg==} + dev: true + + /proc-log@3.0.0: + resolution: {integrity: sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dev: true + /process-es6@0.11.6: resolution: {integrity: sha512-GYBRQtL4v3wgigq10Pv58jmTbFXlIiTbSfgnNqZLY0ldUPqy1rRxDI5fCjoCpnM6TqmHQI8ydzTBXW86OYc0gA==} dev: true @@ -28931,6 +32368,11 @@ packages: resolution: {integrity: sha512-/1WZ8+VQjR6avWOgHeEPd7SDQmFQ1B5mC1eRXsCm5TarlNmx/wCsa5GEaxGm05BORRtyG/Ex/3xq3TuRvq57qg==} dev: false + /process@0.10.1: + resolution: {integrity: sha512-dyIett8dgGIZ/TXKUzeYExt7WA6ldDzys9vTDU/cCA9L17Ypme+KzS+NjQCjpn9xsvi/shbMC+yP/BcFMBz0NA==} + engines: {node: '>= 0.6.0'} + dev: false + /process@0.11.10: resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} engines: {node: '>= 0.6.0'} @@ -28939,11 +32381,36 @@ packages: resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} engines: {node: '>=0.4.0'} + /promise-all-reject-late@1.0.1: + resolution: {integrity: sha512-vuf0Lf0lOxyQREH7GDIOUMLS7kz+gs8i6B+Yi8dC68a2sychGrHTJYghMBD6k7eUcH0H5P73EckCA48xijWqXw==} + dev: true + + /promise-call-limit@1.0.2: + resolution: {integrity: sha512-1vTUnfI2hzui8AEIixbdAJlFY4LFDXqQswy/2eOlThAscXCY4It8FdVuI0fMJGAB2aWGbdQf/gv0skKYXmdrHA==} + dev: true + + /promise-inflight@1.0.1: + resolution: {integrity: sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==} + peerDependencies: + bluebird: '*' + peerDependenciesMeta: + bluebird: + optional: true + dev: true + /promise-queue@2.2.5: resolution: {integrity: sha512-p/iXrPSVfnqPft24ZdNNLECw/UrtLTpT3jpAAMzl/o5/rDsGCPo3/CQS2611flL6LkoEJ3oQZw7C8Q80ZISXRQ==} engines: {node: '>= 0.8.0'} dev: true + /promise-retry@2.0.1: + resolution: {integrity: sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==} + engines: {node: '>=10'} + dependencies: + err-code: 2.0.3 + retry: 0.12.0 + dev: true + /promise@7.3.1: resolution: {integrity: sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==} dependencies: @@ -28963,6 +32430,11 @@ packages: object-assign: 4.1.1 react-is: 16.13.1 + /propagate@2.0.1: + resolution: {integrity: sha512-vGrhOavPSTz4QVNuBNdcNXePNdNMaO1xj9yBeH1ScQPjk/rhg9sSlCXPhMkFuaNNW/syTvYqsnbIJxMBfRbbag==} + engines: {node: '>= 8'} + dev: true + /property-information@5.6.0: resolution: {integrity: sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA==} dependencies: @@ -28972,6 +32444,25 @@ packages: /property-information@6.2.0: resolution: {integrity: sha512-kma4U7AFCTwpqq5twzC1YVIDXSqg6qQK6JN0smOw8fgRy1OkMi0CYSzFmsy6dnqSenamAtj0CyXMUJ1Mf6oROg==} + /protobufjs@7.2.5: + resolution: {integrity: sha512-gGXRSXvxQ7UiPgfw8gevrfRWcTlSbOFg+p/N+JVJEK5VhueL2miT6qTymqAmjr1Q5WbOCyJbyrk6JfWKwlFn6A==} + engines: {node: '>=12.0.0'} + requiresBuild: true + dependencies: + '@protobufjs/aspromise': 1.1.2 + '@protobufjs/base64': 1.1.2 + '@protobufjs/codegen': 2.0.4 + '@protobufjs/eventemitter': 1.1.0 + '@protobufjs/fetch': 1.1.0 + '@protobufjs/float': 1.0.2 + '@protobufjs/inquire': 1.1.0 + '@protobufjs/path': 1.1.2 + '@protobufjs/pool': 1.1.0 + '@protobufjs/utf8': 1.1.0 + '@types/node': 18.15.10 + long: 5.2.3 + dev: false + /proxy-addr@2.0.7: resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} engines: {node: '>= 0.10'} @@ -28990,10 +32481,6 @@ packages: resolution: {integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==} dev: true - /pseudomap@1.0.2: - resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==} - dev: true - /psl@1.9.0: resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} dev: true @@ -29078,7 +32565,7 @@ packages: /pvtsutils@1.3.2: resolution: {integrity: sha512-+Ipe2iNUyrZz+8K/2IOo+kKikdtfhRKzNpQbruF2URmqPtoqAs8g3xS7TJvFF2GcPXjh7DkqMnpVveRFq4PgEQ==} dependencies: - tslib: 2.5.0 + tslib: 2.6.2 dev: true /pvutils@1.1.3: @@ -29166,9 +32653,17 @@ packages: performance-now: 2.1.0 dev: false + /ramda@0.27.2: + resolution: {integrity: sha512-SbiLPU40JuJniHexQSAgad32hfwd+DRUdwF2PlVuI5RZD0/vahUco7R8vD86J/tcEKKF9vZrUVwgtmGCqlCKyA==} + dev: true + /ramda@0.28.0: resolution: {integrity: sha512-9QnLuG/kPVgWvMQ4aODhsBUFKOUmnbUnsSXACv+NCQZcHbeb+v8Lodp8OVxtRULN1/xOyYLLaL6npE6dMq5QTA==} + /ramda@0.29.0: + resolution: {integrity: sha512-BBea6L67bYLtdbOqfp8f58fPMqEwx0doL+pAi8TZyp2YWz8R9G8z9x75CZI8W+ftqhFHCpEX2cRnUUXK130iKA==} + dev: false + /randombytes@2.1.0: resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} dependencies: @@ -29272,7 +32767,7 @@ packages: strip-ansi: 6.0.1 text-table: 0.2.0 typescript: 5.0.4 - webpack: 5.75.0(@swc/core@1.3.27) + webpack: 5.75.0 transitivePeerDependencies: - eslint - supports-color @@ -29473,7 +32968,7 @@ packages: hoist-non-react-statics: 3.3.2 intl-messageformat: 10.2.5 react: 18.2.0 - tslib: 2.5.0 + tslib: 2.6.2 typescript: 5.0.4 /react-is@16.13.1: @@ -29520,7 +33015,7 @@ packages: dependencies: '@babel/runtime': 7.22.6 react-loadable: /@docusaurus/react-loadable@5.5.2(react@16.14.0) - webpack: 5.75.0(@swc/core@1.3.27) + webpack: 5.75.0 dev: false /react-loading-skeleton@3.1.0(react@18.2.0): @@ -29579,7 +33074,7 @@ packages: '@types/react': 18.0.28 react: 18.2.0 react-style-singleton: 2.2.1(@types/react@18.0.28)(react@18.2.0) - tslib: 2.5.0 + tslib: 2.6.2 dev: false /react-remove-scroll@2.5.5(@types/react@18.0.28)(react@18.2.0): @@ -29596,7 +33091,7 @@ packages: react: 18.2.0 react-remove-scroll-bar: 2.3.4(@types/react@18.0.28)(react@18.2.0) react-style-singleton: 2.2.1(@types/react@18.0.28)(react@18.2.0) - tslib: 2.5.0 + tslib: 2.6.2 use-callback-ref: 1.3.0(@types/react@18.0.28)(react@18.2.0) use-sidecar: 1.1.2(@types/react@18.0.28)(react@18.2.0) dev: false @@ -29712,7 +33207,7 @@ packages: get-nonce: 1.0.1 invariant: 2.2.4 react: 18.2.0 - tslib: 2.5.0 + tslib: 2.6.2 dev: false /react-test-renderer@18.2.0(react@18.2.0): @@ -29760,6 +33255,37 @@ packages: pify: 2.3.0 dev: true + /read-cmd-shim@3.0.1: + resolution: {integrity: sha512-kEmDUoYf/CDy8yZbLTmhB1X9kkjf9Q80PCNsDMb7ufrGd6zZSQA1+UyjrO+pZm5K/S4OXCWJeiIt1JA8kAsa6g==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + dev: true + + /read-package-json-fast@2.0.3: + resolution: {integrity: sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ==} + engines: {node: '>=10'} + dependencies: + json-parse-even-better-errors: 2.3.1 + npm-normalize-package-bin: 1.0.1 + dev: true + + /read-package-json-fast@3.0.2: + resolution: {integrity: sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + json-parse-even-better-errors: 3.0.0 + npm-normalize-package-bin: 3.0.1 + dev: true + + /read-package-json@6.0.4: + resolution: {integrity: sha512-AEtWXYfopBj2z5N5PbkAOeNHRPUg5q+Nen7QLxV8M2zJq1ym6/lCz3fYNTCXe19puu2d06jfHhrP7v/S2PtMMw==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + glob: 10.3.4 + json-parse-even-better-errors: 3.0.0 + normalize-package-data: 5.0.0 + npm-normalize-package-bin: 3.0.1 + dev: true + /read-pkg-up@7.0.1: resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} engines: {node: '>=8'} @@ -29814,7 +33340,6 @@ packages: events: 3.3.0 process: 0.11.10 string_decoder: 1.3.0 - dev: false /readable-web-to-node-stream@3.0.2: resolution: {integrity: sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw==} @@ -29829,6 +33354,23 @@ packages: minimatch: 5.1.6 dev: true + /readdir-scoped-modules@1.1.0: + resolution: {integrity: sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw==} + deprecated: This functionality has been moved to @npmcli/fs + dependencies: + debuglog: 1.0.1 + dezalgo: 1.0.4 + graceful-fs: 4.2.11 + once: 1.4.0 + dev: true + + /readdirp@3.5.0: + resolution: {integrity: sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==} + engines: {node: '>=8.10.0'} + dependencies: + picomatch: 2.3.1 + dev: true + /readdirp@3.6.0: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} @@ -29851,7 +33393,7 @@ packages: ast-types: 0.15.2 esprima: 4.0.1 source-map: 0.6.1 - tslib: 2.5.0 + tslib: 2.6.2 /recast@0.23.2: resolution: {integrity: sha512-Qv6cPfVZyMOtPszK6PgW70pUgm7gPlFitAPf0Q69rlOA0zLw2XdDcNmPbVGYicFGT9O8I7TZ/0ryJD+6COvIPw==} @@ -29861,7 +33403,7 @@ packages: ast-types: 0.16.1 esprima: 4.0.1 source-map: 0.6.1 - tslib: 2.5.0 + tslib: 2.6.2 /rechoir@0.6.2: resolution: {integrity: sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==} @@ -29895,7 +33437,6 @@ packages: resolution: {integrity: sha512-FNpGGo1DycYAdnrKFxCMmKYgo/mILAqtRYbkdQD8Ep/Hk2PQ5+aEAEx+IU713RTDmuBaH0c8P5ZozurNu5ObRQ==} dependencies: esprima: 4.0.1 - dev: false /reftools@1.1.9: resolution: {integrity: sha512-OVede/NQE13xBQ+ob5CKd5KyeJYU2YInb1bmV4nRoOfquZPkAkxuOXicSe1PvqIuZZ4kD13sPKBbR7UFDmli6w==} @@ -29934,6 +33475,11 @@ packages: resolution: {integrity: sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q==} dev: true + /regexp-tree@0.1.27: + resolution: {integrity: sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==} + hasBin: true + dev: true + /regexp.prototype.flags@1.4.3: resolution: {integrity: sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==} engines: {node: '>= 0.4'} @@ -30114,6 +33660,11 @@ packages: resolution: {integrity: sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==} engines: {node: '>=0.10'} + /replace-ext@1.0.1: + resolution: {integrity: sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==} + engines: {node: '>= 0.10'} + dev: true + /request@2.88.2: resolution: {integrity: sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==} engines: {node: '>= 6'} @@ -30149,6 +33700,17 @@ packages: resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} engines: {node: '>=0.10.0'} + /require-in-the-middle@7.2.0: + resolution: {integrity: sha512-3TLx5TGyAY6AOqLBoXmHkNql0HIf2RGbuMgCDT2WO/uGVAPJs6h7Kl+bN6TIZGd9bWhWPwnDnTHGtW8Iu77sdw==} + engines: {node: '>=8.6.0'} + dependencies: + debug: 4.3.4(supports-color@8.1.1) + module-details-from-path: 1.0.3 + resolve: 1.22.2 + transitivePeerDependencies: + - supports-color + dev: false + /require-like@0.1.2: resolution: {integrity: sha512-oyrU88skkMtDdauHDuKVrgR+zuItqr6/c//FXzvmxRGMexSDc6hNvJInGW3LL46n+8b50RykrvwSUIIQH2LQ5A==} dev: false @@ -30234,6 +33796,7 @@ packages: is-core-module: 2.11.0 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 + dev: true /resolve@1.22.2: resolution: {integrity: sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==} @@ -30306,6 +33869,11 @@ packages: engines: {node: '>=4'} dev: false + /retry@0.12.0: + resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==} + engines: {node: '>= 4'} + dev: true + /retry@0.13.1: resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==} engines: {node: '>= 4'} @@ -30474,7 +34042,7 @@ packages: /rxjs@7.8.0: resolution: {integrity: sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==} dependencies: - tslib: 2.5.0 + tslib: 2.6.2 /sade@1.8.1: resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} @@ -30511,6 +34079,12 @@ packages: ret: 0.1.15 dev: true + /safe-regex@2.1.1: + resolution: {integrity: sha512-rx+x8AMzKb5Q5lQ95Zoi6ZbJqwCLkqi3XuJXp5P3rT8OEc6sZCJG5AE5dU3lsgRr/F4Bs31jSlVN+j5KrsGu9A==} + dependencies: + regexp-tree: 0.1.27 + dev: true + /safe-stable-stringify@2.4.3: resolution: {integrity: sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==} engines: {node: '>=10'} @@ -30541,7 +34115,7 @@ packages: klona: 2.0.6 neo-async: 2.6.2 sass: 1.57.1 - webpack: 5.85.1(@swc/core@1.3.27) + webpack: 5.85.1 dev: true /sass-loader@13.3.2(webpack@5.85.1): @@ -30564,7 +34138,7 @@ packages: optional: true dependencies: neo-async: 2.6.2 - webpack: 5.85.1(@swc/core@1.3.27)(esbuild@0.16.17) + webpack: 5.85.1(esbuild@0.16.17) dev: true /sass@1.57.1: @@ -30651,6 +34225,11 @@ packages: ajv-formats: 2.1.1(ajv@8.12.0) ajv-keywords: 5.1.0(ajv@8.12.0) + /scoped-regex@2.1.0: + resolution: {integrity: sha512-g3WxHrqSWCZHGHlSrF51VXFdjImhwvH8ZO/pryFH56Qi0cDsZfylQa/t0jCzVQFNbNvM00HfHjkDPEuarKDSWQ==} + engines: {node: '>=8'} + dev: true + /scuid@1.1.0: resolution: {integrity: sha512-MuCAyrGZcTLfQoH2XoBlQ8C6bzwN88XT/0slOGz0pn8+gIP85BOAfYa44ZXQUTOwRwPU0QvgU+V+OSajl/59Xg==} dev: true @@ -30693,21 +34272,9 @@ packages: resolution: {integrity: sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==} engines: {node: '>=8'} dependencies: - semver: 6.3.0 + semver: 6.3.1 dev: false - /semver-regex@4.0.5: - resolution: {integrity: sha512-hunMQrEy1T6Jr2uEVjrAIqjwWcQTgOAcIM52C8MY1EZSD3DDNft04XzvYKPqjED65bNVVko0YI38nYeEHCX3yw==} - engines: {node: '>=12'} - dev: true - - /semver-truncate@2.0.0: - resolution: {integrity: sha512-Rh266MLDYNeML5h90ttdMwfXe1+Nc4LAWd9X1KdJe8pPHP4kFmvLZALtsMNHNdvTyQygbEC0D59sIz47DIaq8w==} - engines: {node: '>=8'} - dependencies: - semver: 6.3.0 - dev: true - /semver@2.3.2: resolution: {integrity: sha512-abLdIKCosKfpnmhS52NCTjO4RiLspDfsn37prjzGrp9im5DPJOgh82Os92vtwGh6XdQryKI/7SREZnV+aqiXrA==} hasBin: true @@ -30720,6 +34287,11 @@ packages: /semver@6.3.0: resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} hasBin: true + dev: true + + /semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true /semver@7.0.0: resolution: {integrity: sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==} @@ -30784,9 +34356,15 @@ packages: resolution: {integrity: sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==} dependencies: no-case: 3.0.4 - tslib: 2.5.0 + tslib: 2.6.2 upper-case-first: 2.0.2 + /serialize-javascript@5.0.1: + resolution: {integrity: sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==} + dependencies: + randombytes: 2.1.0 + dev: true + /serialize-javascript@6.0.1: resolution: {integrity: sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==} dependencies: @@ -30859,7 +34437,7 @@ packages: esbuild: 0.16.17 execa: 5.1.1 fp-ts: 2.13.1 - fs-extra: 11.1.0 + fs-extra: 11.1.1 globby: 11.1.0 p-map: 4.0.0 ramda: 0.28.0 @@ -30869,7 +34447,7 @@ packages: /serverless-localstack@1.0.2: resolution: {integrity: sha512-sWKCDugurkloKYmOAQ8UjtJg/CL9JTpQWS2x4LGWEw5OGYVA7Wl4CXI1nrPHxGN2VXiyvsho5FBDkXCZ21rQMg==} dependencies: - aws-sdk: 2.1316.0 + aws-sdk: 2.1448.0 es6-promisify: 6.1.1 dev: true @@ -30901,7 +34479,7 @@ packages: ajv: 8.12.0 ajv-formats: 2.1.1(ajv@8.12.0) archiver: 5.3.1 - aws-sdk: 2.1316.0 + aws-sdk: 2.1448.0 bluebird: 3.7.2 cachedir: 2.3.0 chalk: 4.1.2 @@ -30968,7 +34546,7 @@ packages: ajv: 8.12.0 ajv-formats: 2.1.1(ajv@8.12.0) archiver: 5.3.1 - aws-sdk: 2.1428.0 + aws-sdk: 2.1448.0 bluebird: 3.7.2 cachedir: 2.3.0 chalk: 4.1.2 @@ -31113,6 +34691,10 @@ packages: vscode-textmate: 8.0.0 dev: true + /shimmer@1.2.1: + resolution: {integrity: sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==} + dev: false + /should-equal@2.0.0: resolution: {integrity: sha512-ZP36TMrK9euEuWQYBig9W55WPC7uo37qzAEmbjHz4gfyuXrEUgF8cUvQVO+w+d3OMfPvSRQJ22lSm8MQJ43LTA==} dependencies: @@ -31151,6 +34733,15 @@ packages: should-util: 1.0.1 dev: true + /shx@0.3.3: + resolution: {integrity: sha512-nZJ3HFWVoTSyyB+evEKjJ1STiixGztlqwKLTUNV5KqMWtGey9fTd4KU1gdZ1X9BV6215pswQ/Jew9NsuS/fNDA==} + engines: {node: '>=6'} + hasBin: true + dependencies: + minimist: 1.2.7 + shelljs: 0.8.5 + dev: true + /side-channel@1.0.4: resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} dependencies: @@ -31161,10 +34752,29 @@ packages: /signal-exit@3.0.7: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + /signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + dev: true + /signedsource@1.0.0: resolution: {integrity: sha512-6+eerH9fEnNmi/hyM1DXcRK3pWdoMQtlkQ+ns0ntzunjKqp5i3sKCc80ym8Fib3iaYhdJUOPdhlJWj1tvge2Ww==} dev: true + /sigstore@1.9.0: + resolution: {integrity: sha512-0Zjz0oe37d08VeOtBIuB6cRriqXse2e8w+7yIy2XSXjshRKxbc2KkhXjL229jXSxEm7UbcjS76wcJDGQddVI9A==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + hasBin: true + dependencies: + '@sigstore/bundle': 1.1.0 + '@sigstore/protobuf-specs': 0.2.1 + '@sigstore/sign': 1.0.0 + '@sigstore/tuf': 1.0.3 + make-fetch-happen: 11.1.1 + transitivePeerDependencies: + - supports-color + dev: true + /simple-git@2.21.0: resolution: {integrity: sha512-rohCHmEjD/ESXFLxF4bVeqgdb4Awc65ZyyuCKl3f7BvgMbZOBa/Ye3HN/GFnvruiUOAWWNupxhz3Rz5/3vJLTg==} dependencies: @@ -31274,6 +34884,11 @@ packages: resolution: {integrity: sha512-4qdtOGcBjral6YIBCWJ0ljFSKNLz9KkhbWtuGvUyRowl1kxfuE1x/Z/aJcaiilpb3do9bl5K7/1h9XC5wWpY/A==} dev: false + /smart-buffer@4.2.0: + resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} + engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} + dev: true + /snake-case@2.1.0: resolution: {integrity: sha512-FMR5YoPFwOLuh4rRz92dywJjyKYZNLpMn1R5ujVpIYkbA9p01fq8RMg0FkO4M+Yobt4MjHeLTJVm5xFFBHSV2Q==} dependencies: @@ -31284,7 +34899,7 @@ packages: resolution: {integrity: sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==} dependencies: dot-case: 3.0.4 - tslib: 2.5.0 + tslib: 2.6.2 /snapdragon-node@2.1.1: resolution: {integrity: sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==} @@ -31325,6 +34940,36 @@ packages: uuid: 8.3.2 websocket-driver: 0.7.4 + /socks-proxy-agent@6.2.1: + resolution: {integrity: sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ==} + engines: {node: '>= 10'} + dependencies: + agent-base: 6.0.2(supports-color@8.1.1) + debug: 4.3.4(supports-color@8.1.1) + socks: 2.7.1 + transitivePeerDependencies: + - supports-color + dev: true + + /socks-proxy-agent@7.0.0: + resolution: {integrity: sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==} + engines: {node: '>= 10'} + dependencies: + agent-base: 6.0.2(supports-color@8.1.1) + debug: 4.3.4(supports-color@8.1.1) + socks: 2.7.1 + transitivePeerDependencies: + - supports-color + dev: true + + /socks@2.7.1: + resolution: {integrity: sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==} + engines: {node: '>= 10.13.0', npm: '>= 3.0.0'} + dependencies: + ip: 2.0.0 + smart-buffer: 4.2.0 + dev: true + /sonic-boom@3.3.0: resolution: {integrity: sha512-LYxp34KlZ1a2Jb8ZQgFCK3niIHzibdwtwNUWKg0qQRzsDoJ3Gfgkf8KdBTFU3SkejDEIlWwnSnpVdOZIhFMl/g==} dependencies: @@ -31350,6 +34995,13 @@ packages: is-plain-obj: 1.1.0 dev: true + /sort-keys@4.2.0: + resolution: {integrity: sha512-aUYIEU/UviqPgc8mHR6IW1EGxkAXpeRETYcrzg8cLAvUPZcpAlleSXHV2mY7G12GphSH6Gzv+4MMVSSkbdteHg==} + engines: {node: '>=8'} + dependencies: + is-plain-obj: 2.1.0 + dev: true + /source-map-js@1.0.2: resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} engines: {node: '>=0.10.0'} @@ -31363,7 +35015,7 @@ packages: abab: 2.0.6 iconv-lite: 0.6.3 source-map-js: 1.0.2 - webpack: 5.85.1(@swc/core@1.3.27) + webpack: 5.85.1 dev: true /source-map-resolve@0.5.3: @@ -31511,7 +35163,7 @@ packages: /sponge-case@1.0.1: resolution: {integrity: sha512-dblb9Et4DAtiZ5YSUZHLl4XhH4uK80GhAZrVXdN4O2P4gQ40Wa5UIOPUHlA/nFd2PLblBZWUioLMMAVrgpoYcA==} dependencies: - tslib: 2.5.0 + tslib: 2.6.2 dev: true /sprintf-js@1.0.3: @@ -31539,6 +35191,27 @@ packages: tweetnacl: 0.14.5 dev: true + /ssri@10.0.5: + resolution: {integrity: sha512-bSf16tAFkGeRlUNDjXu8FzaMQt6g2HZJrun7mtMbIPOddxt3GLMSz5VWUWcqTJUPfLEaDIepGxv+bYQW49596A==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + minipass: 7.0.3 + dev: true + + /ssri@8.0.1: + resolution: {integrity: sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==} + engines: {node: '>= 8'} + dependencies: + minipass: 3.3.6 + dev: true + + /ssri@9.0.1: + resolution: {integrity: sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + dependencies: + minipass: 3.3.6 + dev: true + /stable@0.1.8: resolution: {integrity: sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==} deprecated: 'Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility' @@ -31577,6 +35250,16 @@ packages: resolution: {integrity: sha512-3H20QlwQsSm2OvAxWIYhs+j01MzzqwMwGiiO1NQaJYZgJZFPuAbf95/DiKRBSTYIJ2FeGUc+B/6mPGcWP9dO3Q==} dev: false + /stdout-stderr@0.1.13: + resolution: {integrity: sha512-Xnt9/HHHYfjZ7NeQLvuQDyL1LnbsbddgMFKCuaQKwGCdJm8LnstZIXop+uOY36UR1UXXoHXfMbC1KlVdVd2JLA==} + engines: {node: '>=8.0.0'} + dependencies: + debug: 4.3.4(supports-color@8.1.1) + strip-ansi: 6.0.1 + transitivePeerDependencies: + - supports-color + dev: true + /stop-iteration-iterator@1.0.0: resolution: {integrity: sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==} engines: {node: '>= 0.4'} @@ -31676,6 +35359,11 @@ packages: engines: {node: '>=0.6.19'} dev: true + /string-argv@0.3.2: + resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} + engines: {node: '>=0.6.19'} + dev: true + /string-env-interpolation@1.0.1: resolution: {integrity: sha512-78lwMoCcn0nNu8LszbP1UA7g55OeE4v7rCeWnM5B453rnNr4aq+5it3FEYtZrSEiMvHZOZ9Jlqb0OD0M2VInqg==} dev: true @@ -31699,6 +35387,10 @@ packages: resolution: {integrity: sha512-tYft6IFi8SjplJpxCUxyqisD3b+R2CSkomrtJYCkvuf1KuCAWgz7YXt4O0jip7efpfCemwHEzTEAO8EuOYgh3w==} dev: true + /string-template@0.2.1: + resolution: {integrity: sha512-Yptehjogou2xm4UJbxJ4CxgZx12HBfeystp0y3x7s4Dj32ltVVG1Gg8YhKjHZkHicuKpZX/ffilA8505VbUbpw==} + dev: false + /string-width@1.0.2: resolution: {integrity: sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==} engines: {node: '>=0.10.0'} @@ -31713,7 +35405,6 @@ packages: dependencies: is-fullwidth-code-point: 2.0.0 strip-ansi: 4.0.0 - dev: false /string-width@3.1.0: resolution: {integrity: sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==} @@ -31739,7 +35430,6 @@ packages: eastasianwidth: 0.2.0 emoji-regex: 9.2.2 strip-ansi: 7.0.1 - dev: false /string.prototype.matchall@4.0.8: resolution: {integrity: sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==} @@ -31803,7 +35493,6 @@ packages: engines: {node: '>=4'} dependencies: ansi-regex: 3.0.1 - dev: false /strip-ansi@5.2.0: resolution: {integrity: sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==} @@ -31823,11 +35512,33 @@ packages: dependencies: ansi-regex: 6.0.1 + /strip-bom-buf@1.0.0: + resolution: {integrity: sha512-1sUIL1jck0T1mhOLP2c696BIznzT525Lkub+n4jjMHjhjhoAQA6Ye659DxdlZBr0aLDMQoTxKIpnlqxgtwjsuQ==} + engines: {node: '>=4'} + dependencies: + is-utf8: 0.2.1 + dev: true + + /strip-bom-stream@2.0.0: + resolution: {integrity: sha512-yH0+mD8oahBZWnY43vxs4pSinn8SMKAdml/EOGBewoe1Y0Eitd0h2Mg3ZRiXruUW6L4P+lvZiEgbh0NgUGia1w==} + engines: {node: '>=0.10.0'} + dependencies: + first-chunk-stream: 2.0.0 + strip-bom: 2.0.0 + dev: true + /strip-bom-string@1.0.0: resolution: {integrity: sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==} engines: {node: '>=0.10.0'} dev: false + /strip-bom@2.0.0: + resolution: {integrity: sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g==} + engines: {node: '>=0.10.0'} + dependencies: + is-utf8: 0.2.1 + dev: true + /strip-bom@3.0.0: resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} engines: {node: '>=4'} @@ -31873,14 +35584,8 @@ packages: escape-string-regexp: 1.0.5 dev: true - /strip-outer@2.0.0: - resolution: {integrity: sha512-A21Xsm1XzUkK0qK1ZrytDUvqsQWict2Cykhvi0fBQntGG5JSprESasEyV1EZ/4CiR5WB5KjzLTrP/bO37B0wPg==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dev: true - /strnum@1.0.5: resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==} - dev: false /strong-log-transformer@2.1.0: resolution: {integrity: sha512-B3Hgul+z0L9a236FAUC9iZsL+nVHgoCJnqCbN588DjYxvGXaXaaFbfmQ/JhvKjZwsOukuR72XbHv71Qkug0HxA==} @@ -31899,21 +35604,13 @@ packages: peek-readable: 4.1.0 dev: true - /strtok3@7.0.0: - resolution: {integrity: sha512-pQ+V+nYQdC5H3Q7qBZAz/MO6lwGhoC2gOAjuouGf/VO0m7vQRh8QNMl2Uf6SwAtzZ9bOw3UIeBukEGNJl5dtXQ==} - engines: {node: '>=14.16'} - dependencies: - '@tokenizer/token': 0.3.0 - peek-readable: 5.0.0 - dev: true - /style-loader@3.3.1(webpack@5.85.1): resolution: {integrity: sha512-GPcQ+LDJbrcxHORTRes6Jy2sfvK2kS6hpSfI/fXhPt+spVzxF6LJ1dHLN9zIGmVaaP044YKaIatFaufENRiDoQ==} engines: {node: '>= 12.13.0'} peerDependencies: webpack: ^5.0.0 dependencies: - webpack: 5.85.1(@swc/core@1.3.27) + webpack: 5.85.1 dev: true /style-loader@3.3.3(webpack@5.85.1): @@ -31922,7 +35619,7 @@ packages: peerDependencies: webpack: ^5.0.0 dependencies: - webpack: 5.85.1(@swc/core@1.3.27)(esbuild@0.16.17) + webpack: 5.85.1(esbuild@0.16.17) dev: true /style-search@0.1.0: @@ -32117,7 +35814,7 @@ packages: klona: 2.0.6 normalize-path: 3.0.0 stylus: 0.55.0 - webpack: 5.85.1(@swc/core@1.3.27) + webpack: 5.85.1 dev: true /stylus@0.55.0: @@ -32130,7 +35827,7 @@ packages: mkdirp: 1.0.4 safer-buffer: 2.1.2 sax: 1.2.4 - semver: 6.3.0 + semver: 6.3.1 source-map: 0.7.4 transitivePeerDependencies: - supports-color @@ -32222,7 +35919,6 @@ packages: dependencies: has-flag: 4.0.0 supports-color: 7.2.0 - dev: true /supports-preserve-symlinks-flag@1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} @@ -32289,7 +35985,7 @@ packages: /swap-case@2.0.2: resolution: {integrity: sha512-kc6S2YS/2yXbtkSMunBtKdah4VFETZ8Oh6ONSmSd9bRxhqTrtARUCBUiWXH3xVPpvR7tz2CSnkuXVE42EcGnMw==} dependencies: - tslib: 2.5.0 + tslib: 2.6.2 dev: true /symbol-observable@1.2.0: @@ -32322,7 +36018,7 @@ packages: engines: {node: ^14.18.0 || >=16.0.0} dependencies: '@pkgr/utils': 2.3.1 - tslib: 2.5.0 + tslib: 2.6.2 dev: true /systemjs@6.13.0: @@ -32503,7 +36199,7 @@ packages: supports-hyperlinks: 2.3.0 dev: true - /terser-webpack-plugin@5.3.6(@swc/core@1.3.27)(webpack@5.75.0): + /terser-webpack-plugin@5.3.6(webpack@5.75.0): resolution: {integrity: sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ==} engines: {node: '>= 10.13.0'} peerDependencies: @@ -32520,14 +36216,13 @@ packages: optional: true dependencies: '@jridgewell/trace-mapping': 0.3.17 - '@swc/core': 1.3.27 jest-worker: 27.5.1 schema-utils: 3.1.1 serialize-javascript: 6.0.1 terser: 5.16.1 - webpack: 5.75.0(@swc/core@1.3.27) + webpack: 5.75.0 - /terser-webpack-plugin@5.3.6(@swc/core@1.3.27)(webpack@5.85.1): + /terser-webpack-plugin@5.3.6(webpack@5.85.1): resolution: {integrity: sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ==} engines: {node: '>= 10.13.0'} peerDependencies: @@ -32544,15 +36239,14 @@ packages: optional: true dependencies: '@jridgewell/trace-mapping': 0.3.17 - '@swc/core': 1.3.27 jest-worker: 27.5.1 schema-utils: 3.1.1 serialize-javascript: 6.0.1 terser: 5.16.1 - webpack: 5.85.1(@swc/core@1.3.27) + webpack: 5.85.1 dev: true - /terser-webpack-plugin@5.3.9(@swc/core@1.3.27)(esbuild@0.16.17)(webpack@5.85.1): + /terser-webpack-plugin@5.3.9(esbuild@0.16.17)(webpack@5.85.1): resolution: {integrity: sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==} engines: {node: '>= 10.13.0'} peerDependencies: @@ -32569,16 +36263,15 @@ packages: optional: true dependencies: '@jridgewell/trace-mapping': 0.3.17 - '@swc/core': 1.3.27 esbuild: 0.16.17 jest-worker: 27.5.1 schema-utils: 3.1.2 serialize-javascript: 6.0.1 terser: 5.17.7 - webpack: 5.85.1(@swc/core@1.3.27)(esbuild@0.16.17) + webpack: 5.85.1(esbuild@0.16.17) dev: true - /terser-webpack-plugin@5.3.9(@swc/core@1.3.27)(webpack@5.85.1): + /terser-webpack-plugin@5.3.9(webpack@5.85.1): resolution: {integrity: sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==} engines: {node: '>= 10.13.0'} peerDependencies: @@ -32595,12 +36288,11 @@ packages: optional: true dependencies: '@jridgewell/trace-mapping': 0.3.17 - '@swc/core': 1.3.27 jest-worker: 27.5.1 schema-utils: 3.1.2 serialize-javascript: 6.0.1 terser: 5.17.7 - webpack: 5.85.1(@swc/core@1.3.27) + webpack: 5.85.1 /terser@5.16.1: resolution: {integrity: sha512-xvQfyfA1ayT0qdK47zskQgRZeWLoOQ8JQ6mIgRGVNwZKdQMU+5FkCBjmv4QjcrTzyZquRw2FVtlJSRUmMKQslw==} @@ -32633,6 +36325,11 @@ packages: /text-table@0.2.0: resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + /textextensions@5.16.0: + resolution: {integrity: sha512-7D/r3s6uPZyU//MCYrX6I14nzauDwJ5CxazouuRGNuvSCihW87ufN6VLoROLCrHg6FblLuJrT6N2BVaPVzqElw==} + engines: {node: '>=0.8'} + dev: true + /thenify-all@1.6.0: resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} engines: {node: '>=0.8'} @@ -32650,6 +36347,16 @@ packages: real-require: 0.2.0 dev: false + /thriftrw@3.11.4: + resolution: {integrity: sha512-UcuBd3eanB3T10nXWRRMwfwoaC6VMk7qe3/5YIWP2Jtw+EbHqJ0p1/K3x8ixiR5dozKSSfcg1W+0e33G1Di3XA==} + engines: {node: '>= 0.10.x'} + hasBin: true + dependencies: + bufrw: 1.3.0 + error: 7.0.2 + long: 2.4.0 + dev: false + /throat@5.0.0: resolution: {integrity: sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==} dev: true @@ -32703,7 +36410,7 @@ packages: /title-case@3.0.3: resolution: {integrity: sha512-e1zGYRvbffpcHIrnuqT0Dh+gEJtDaxDSoG4JAIpq4oDFyooziLBIiYQv0GBT4FUAnUop5uZ1hiIAj7oAF6sOCA==} dependencies: - tslib: 2.5.0 + tslib: 2.6.2 /tmp@0.0.29: resolution: {integrity: sha512-89PTqMWGDva+GqClOqBV9s3SMh7MA3Mq0pJUdAoHuF65YoE7O0LermaZkVfT5/Ngfo18H4eYiyG7zKOtnEbxsw==} @@ -32788,14 +36495,6 @@ packages: ieee754: 1.2.1 dev: true - /token-types@5.0.1: - resolution: {integrity: sha512-Y2fmSnZjQdDb9W4w4r1tswlMHylzWIeOKpx0aZH9BgGtACHhrk3OkT52AzwcuqTRBZtvvnTjDBh8eynMulu8Vg==} - engines: {node: '>=14.16'} - dependencies: - '@tokenizer/token': 0.3.0 - ieee754: 1.2.1 - dev: true - /totalist@1.1.0: resolution: {integrity: sha512-gduQwd1rOdDMGxFG1gEvhV88Oirdo2p+KjoYFU7k2g+i7n6AFFbDQ5kMPUsW0pNbfQsB/cwXvT1i4Bue0s9g5g==} engines: {node: '>=6'} @@ -32856,6 +36555,10 @@ packages: resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} hasBin: true + /treeverse@1.0.4: + resolution: {integrity: sha512-whw60l7r+8ZU8Tu/Uc2yxtc4ZTZbR/PF3u1IPNKGQ6p8EICLb3Z2lAgoqw9bqYd8IkgnsaOcLzYHFckjqNsf0g==} + dev: true + /trim-lines@3.0.1: resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} @@ -32871,13 +36574,6 @@ packages: escape-string-regexp: 1.0.5 dev: true - /trim-repeated@2.0.0: - resolution: {integrity: sha512-QUHBFTJGdOwmp0tbOG505xAgOp/YliZP/6UgafFXYZ26WT1bvQmSMJUvkeVSASuJJHbqsFbynTvkd5W8RBTipg==} - engines: {node: '>=12'} - dependencies: - escape-string-regexp: 5.0.0 - dev: true - /trim-trailing-lines@1.1.4: resolution: {integrity: sha512-rjUWSqnfTNrjbB9NQWfPMH/xRK1deHeGsHoVfpxJ++XeYXE0d6B1En37AHfw3jtfTU7dzMzZL2jjpe8Qb5gLIQ==} dev: false @@ -32909,7 +36605,7 @@ packages: resolution: {integrity: sha512-uivwYcQaxAucv1CzRp2n/QdYPo4ILf9VXgH19zEIjFx2EJufV16P0JtJVpYHy89DItG6Kwj2oIUjrcK5au+4tQ==} engines: {node: '>=8'} dependencies: - tslib: 2.5.0 + tslib: 2.6.2 /ts-invariant@0.4.4: resolution: {integrity: sha512-uEtWkFM/sdZvRNNDL3Ehu4WVpwaulhwQszV8mrtcdeE8nN00BV9mAmQ88RkrBhFgl9gMgvjJLAQcZbnPXI9mlA==} @@ -33030,14 +36726,44 @@ packages: micromatch: 4.0.5 semver: 7.5.4 typescript: 5.0.4 - webpack: 5.85.1(@swc/core@1.3.27) + webpack: 5.85.1 dev: true /ts-log@2.2.5: resolution: {integrity: sha512-PGcnJoTBnVGy6yYNFxWVNkdcAuAMstvutN9MgDJIV6L0oG8fB+ZNNy1T+wJzah8RPGor1mZuPQkVfXNDpy9eHA==} dev: true - /ts-node@10.9.1(@swc/core@1.3.27)(@types/node@18.14.2)(typescript@5.0.4): + /ts-node@10.9.1(@types/node@16.18.47)(typescript@5.0.4): + resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} + hasBin: true + peerDependencies: + '@swc/core': '>=1.2.50' + '@swc/wasm': '>=1.2.50' + '@types/node': '*' + typescript: '>=2.7' + peerDependenciesMeta: + '@swc/core': + optional: true + '@swc/wasm': + optional: true + dependencies: + '@cspotcode/source-map-support': 0.8.1 + '@tsconfig/node10': 1.0.9 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.3 + '@types/node': 16.18.47 + acorn: 8.8.1 + acorn-walk: 8.2.0 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + typescript: 5.0.4 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + + /ts-node@10.9.1(@types/node@18.14.2)(typescript@5.0.4): resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} hasBin: true peerDependencies: @@ -33052,7 +36778,6 @@ packages: optional: true dependencies: '@cspotcode/source-map-support': 0.8.1 - '@swc/core': 1.3.27 '@tsconfig/node10': 1.0.9 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 @@ -33068,7 +36793,7 @@ packages: v8-compile-cache-lib: 3.0.1 yn: 3.1.1 - /ts-node@10.9.1(@swc/core@1.3.27)(@types/node@18.15.10)(typescript@5.0.4): + /ts-node@10.9.1(@types/node@18.15.10)(typescript@5.0.4): resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} hasBin: true peerDependencies: @@ -33083,7 +36808,6 @@ packages: optional: true dependencies: '@cspotcode/source-map-support': 0.8.1 - '@swc/core': 1.3.27 '@tsconfig/node10': 1.0.9 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 @@ -33120,6 +36844,10 @@ packages: resolution: {integrity: sha512-FZIXf1ksVyLcfr7M317jbB67XFJhOO1YqdTcuGaq9q5jLUoTikukZ+98TPjKiP2jC5CgmYdWWYs0s2nLSU0/1A==} dev: true + /ts-toolbelt@9.6.0: + resolution: {integrity: sha512-nsZd8ZeNUzukXPlJmTBwUAuABDe/9qtVDelJeT/qW0ow3ZS3BsQJtNkan1802aM9Uf68/Y8ljw86Hu0h5IUW3w==} + dev: true + /tsconfck@2.0.2(typescript@5.0.4): resolution: {integrity: sha512-H3DWlwKpow+GpVLm/2cpmok72pwRr1YFROV3YzAmvzfGFiC1zEM/mc9b7+1XnrxuXtEbhJ7xUSIqjPFbedp7aQ==} engines: {node: ^14.13.1 || ^16 || >=18, pnpm: ^7.18.0} @@ -33176,7 +36904,6 @@ packages: /tslib@2.3.1: resolution: {integrity: sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==} - dev: true /tslib@2.4.1: resolution: {integrity: sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==} @@ -33184,19 +36911,22 @@ packages: /tslib@2.5.0: resolution: {integrity: sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==} + /tslib@2.6.2: + resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} + /tsscmp@1.0.6: resolution: {integrity: sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==} engines: {node: '>=0.6.x'} dev: false - /tsutils@3.21.0(typescript@4.9.4): + /tsutils@3.21.0(typescript@4.9.5): resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} engines: {node: '>= 6'} peerDependencies: typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' dependencies: tslib: 1.14.1 - typescript: 4.9.4 + typescript: 4.9.5 dev: true /tsutils@3.21.0(typescript@5.0.4): @@ -33209,11 +36939,21 @@ packages: typescript: 5.0.4 dev: true + /tuf-js@1.1.7: + resolution: {integrity: sha512-i3P9Kgw3ytjELUfpuKVDNBJvk4u5bXL6gskv572mcevPbSKCV3zt3djhmlEQ65yERjIbOSncy7U4cQJaB1CBCg==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + '@tufjs/models': 1.0.4 + debug: 4.3.4(supports-color@8.1.1) + make-fetch-happen: 11.1.1 + transitivePeerDependencies: + - supports-color + dev: true + /tunnel-agent@0.6.0: resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} dependencies: safe-buffer: 5.2.1 - dev: true /tunnel@0.0.6: resolution: {integrity: sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==} @@ -33237,6 +36977,10 @@ packages: dependencies: prelude-ls: 1.2.1 + /type-detect@3.0.0: + resolution: {integrity: sha512-pwZo7l1T0a8wmTMDc4FtXuHseRaqa9nyaUArp4xHaBMUlRzr72PvgF6ouXIIj5rjbVWqo8pZu6vw74jDKg4Dvw==} + dev: true + /type-detect@4.0.8: resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} engines: {node: '>=4'} @@ -33261,7 +37005,6 @@ packages: /type-fest@0.3.1: resolution: {integrity: sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==} engines: {node: '>=6'} - dev: true /type-fest@0.6.0: resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} @@ -33342,8 +37085,14 @@ packages: typescript: 5.0.4 dev: true - /typescript@4.9.4: - resolution: {integrity: sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg==} + /types-ramda@0.29.4: + resolution: {integrity: sha512-XO/820iRsCDwqLjE8XE+b57cVGPyk1h+U9lBGpDWvbEky+NQChvHVwaKM05WnW1c5z3EVQh8NhXFmh2E/1YazQ==} + dependencies: + ts-toolbelt: 9.6.0 + dev: true + + /typescript@4.9.5: + resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==} engines: {node: '>=4.2.0'} hasBin: true dev: true @@ -33506,6 +37255,46 @@ packages: dependencies: qs: 6.11.0 + /unique-filename@1.1.1: + resolution: {integrity: sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==} + dependencies: + unique-slug: 2.0.2 + dev: true + + /unique-filename@2.0.1: + resolution: {integrity: sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + dependencies: + unique-slug: 3.0.0 + dev: true + + /unique-filename@3.0.0: + resolution: {integrity: sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + unique-slug: 4.0.0 + dev: true + + /unique-slug@2.0.2: + resolution: {integrity: sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==} + dependencies: + imurmurhash: 0.1.4 + dev: true + + /unique-slug@3.0.0: + resolution: {integrity: sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + dependencies: + imurmurhash: 0.1.4 + dev: true + + /unique-slug@4.0.0: + resolution: {integrity: sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + imurmurhash: 0.1.4 + dev: true + /unique-string@2.0.0: resolution: {integrity: sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==} engines: {node: '>=8'} @@ -33592,6 +37381,14 @@ packages: unist-util-is: 5.1.1 unist-util-visit-parents: 5.1.1 + /universal-user-agent@6.0.0: + resolution: {integrity: sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==} + dev: true + + /universalify@0.1.2: + resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} + engines: {node: '>= 4.0.0'} + /universalify@0.2.0: resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} engines: {node: '>= 4.0.0'} @@ -33688,7 +37485,7 @@ packages: /upper-case-first@2.0.2: resolution: {integrity: sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==} dependencies: - tslib: 2.5.0 + tslib: 2.6.2 /upper-case@1.1.3: resolution: {integrity: sha512-WRbjgmYzgXkCV7zNVpy5YgrHgbBv126rMALQQMrmzOVC4GM2waQ9x7xtm8VU+1yF2kWyPzI9zbZ48n4vSxwfSA==} @@ -33697,7 +37494,7 @@ packages: /upper-case@2.0.2: resolution: {integrity: sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg==} dependencies: - tslib: 2.5.0 + tslib: 2.6.2 /uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} @@ -33726,7 +37523,7 @@ packages: loader-utils: 2.0.4 mime-types: 2.1.35 schema-utils: 3.1.1 - webpack: 5.75.0(@swc/core@1.3.27) + webpack: 5.75.0 dev: false /url-loader@4.1.1(webpack@5.85.1): @@ -33742,7 +37539,7 @@ packages: loader-utils: 2.0.4 mime-types: 2.1.35 schema-utils: 3.1.1 - webpack: 5.85.1(@swc/core@1.3.27) + webpack: 5.85.1 dev: true /url-parse-lax@3.0.0: @@ -33782,7 +37579,7 @@ packages: dependencies: '@types/react': 18.0.28 react: 18.2.0 - tslib: 2.5.0 + tslib: 2.6.2 dev: false /use-composed-ref@1.3.0(react@16.14.0): @@ -33843,7 +37640,7 @@ packages: '@types/react': 18.0.28 detect-node-es: 1.1.0 react: 18.2.0 - tslib: 2.5.0 + tslib: 2.6.2 dev: false /use-sync-external-store@1.2.0(react@16.14.0): @@ -33969,6 +37766,12 @@ packages: builtins: 1.0.3 dev: true + /validate-npm-package-name@5.0.0: + resolution: {integrity: sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + builtins: 5.0.1 + /value-equal@1.0.1: resolution: {integrity: sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw==} dev: false @@ -34035,6 +37838,29 @@ packages: unist-util-stringify-position: 3.0.2 vfile-message: 3.1.3 + /vinyl-file@3.0.0: + resolution: {integrity: sha512-BoJDj+ca3D9xOuPEM6RWVtWQtvEPQiQYn82LvdxhLWplfQsBzBqtgK0yhCP0s1BNTi6dH9BO+dzybvyQIacifg==} + engines: {node: '>=4'} + dependencies: + graceful-fs: 4.2.11 + pify: 2.3.0 + strip-bom-buf: 1.0.0 + strip-bom-stream: 2.0.0 + vinyl: 2.2.1 + dev: true + + /vinyl@2.2.1: + resolution: {integrity: sha512-LII3bXRFBZLlezoG5FfZVcXflZgWP/4dCwKtxd5ky9+LOtM4CS3bIRQsmR1KMnMW07jpE8fqR2lcxPZ+8sJIcw==} + engines: {node: '>= 0.10'} + dependencies: + clone: 2.1.2 + clone-buffer: 1.0.0 + clone-stats: 1.0.0 + cloneable-readable: 1.1.3 + remove-trailing-separator: 1.1.0 + replace-ext: 1.0.1 + dev: true + /vite-plugin-eslint@1.8.1(eslint@8.34.0)(vite@4.3.5): resolution: {integrity: sha512-PqdMf3Y2fLO9FsNPmMX+//2BF5SF8nEWspZdgl4kSt7UvHDRHVVfHvxsD7ULYzZrJDGRxR81Nq7TOFgwMnUang==} peerDependencies: @@ -34161,6 +37987,10 @@ packages: - debug dev: false + /walk-up-path@1.0.0: + resolution: {integrity: sha512-hwj/qMDUEjCU5h0xr90KGCf0tg0/LgJbmOWgrWKYlcJZM7XvquvUJZ0G/HMGr7F7OQMOUuPHWP9JpriinkAlkg==} + dev: true + /walker@1.0.8: resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} dependencies: @@ -34225,7 +38055,7 @@ packages: '@peculiar/json-schema': 1.1.12 asn1js: 3.0.5 pvtsutils: 1.3.2 - tslib: 2.5.0 + tslib: 2.6.2 dev: true /webidl-conversions@3.0.1: @@ -34276,7 +38106,7 @@ packages: mime-types: 2.1.35 range-parser: 1.2.1 schema-utils: 4.0.0 - webpack: 5.75.0(@swc/core@1.3.27) + webpack: 5.75.0 dev: false /webpack-dev-middleware@5.3.3(webpack@5.85.1): @@ -34290,7 +38120,7 @@ packages: mime-types: 2.1.35 range-parser: 1.2.1 schema-utils: 4.0.0 - webpack: 5.85.1(@swc/core@1.3.27) + webpack: 5.85.1 dev: true /webpack-dev-server@4.11.1(webpack@5.75.0): @@ -34319,7 +38149,7 @@ packages: connect-history-api-fallback: 2.0.0 default-gateway: 6.0.3 express: 4.18.2 - graceful-fs: 4.2.10 + graceful-fs: 4.2.11 html-entities: 2.3.3 http-proxy-middleware: 2.0.6(@types/express@4.17.15) ipaddr.js: 2.0.1 @@ -34331,7 +38161,7 @@ packages: serve-index: 1.9.1 sockjs: 0.3.24 spdy: 4.0.2 - webpack: 5.75.0(@swc/core@1.3.27) + webpack: 5.75.0 webpack-dev-middleware: 5.3.3(webpack@5.75.0) ws: 8.13.0 transitivePeerDependencies: @@ -34367,7 +38197,7 @@ packages: connect-history-api-fallback: 2.0.0 default-gateway: 6.0.3 express: 4.18.2 - graceful-fs: 4.2.10 + graceful-fs: 4.2.11 html-entities: 2.3.3 http-proxy-middleware: 2.0.6(@types/express@4.17.15) ipaddr.js: 2.0.1 @@ -34379,7 +38209,7 @@ packages: serve-index: 1.9.1 sockjs: 0.3.24 spdy: 4.0.2 - webpack: 5.85.1(@swc/core@1.3.27) + webpack: 5.85.1 webpack-dev-middleware: 5.3.3(webpack@5.85.1) ws: 8.13.0 transitivePeerDependencies: @@ -34416,14 +38246,14 @@ packages: optional: true dependencies: typed-assert: 1.0.9 - webpack: 5.85.1(@swc/core@1.3.27) + webpack: 5.85.1 dev: true /webpack-virtual-modules@0.4.6: resolution: {integrity: sha512-5tyDlKLqPfMqjT3Q9TAqf2YqjwmnUleZwzJi1A5qXnlBCdj2AtOJ6wAWdglTIDOPgOiOrXeBeFcsQ8+aGQ6QbA==} dev: true - /webpack@5.75.0(@swc/core@1.3.27): + /webpack@5.75.0: resolution: {integrity: sha512-piaIaoVJlqMsPtX/+3KTTO6jfvrSYgauFVdt8cr9LTHKmcq/AMd4mhzsiP7ZF/PGRNPGA8336jldh9l2Kt2ogQ==} engines: {node: '>=10.13.0'} hasBin: true @@ -34447,14 +38277,14 @@ packages: eslint-scope: 5.1.1 events: 3.3.0 glob-to-regexp: 0.4.1 - graceful-fs: 4.2.10 + graceful-fs: 4.2.11 json-parse-even-better-errors: 2.3.1 loader-runner: 4.3.0 mime-types: 2.1.35 neo-async: 2.6.2 schema-utils: 3.1.1 tapable: 2.2.1 - terser-webpack-plugin: 5.3.6(@swc/core@1.3.27)(webpack@5.75.0) + terser-webpack-plugin: 5.3.6(webpack@5.75.0) watchpack: 2.4.0 webpack-sources: 3.2.3 transitivePeerDependencies: @@ -34462,7 +38292,7 @@ packages: - esbuild - uglify-js - /webpack@5.85.1(@swc/core@1.3.27): + /webpack@5.85.1: resolution: {integrity: sha512-xTb7MRf4LY8Z5rzn7aIx4TDrwYJrjcHnIfU1TqtyZOoObyuGSpAUwIvVuqq5wPnv7WEgQr8UvO1q/dgoGG4HjA==} engines: {node: '>=10.13.0'} hasBin: true @@ -34486,14 +38316,14 @@ packages: eslint-scope: 5.1.1 events: 3.3.0 glob-to-regexp: 0.4.1 - graceful-fs: 4.2.10 + graceful-fs: 4.2.11 json-parse-even-better-errors: 2.3.1 loader-runner: 4.3.0 mime-types: 2.1.35 neo-async: 2.6.2 schema-utils: 3.1.2 tapable: 2.2.1 - terser-webpack-plugin: 5.3.9(@swc/core@1.3.27)(webpack@5.85.1) + terser-webpack-plugin: 5.3.9(webpack@5.85.1) watchpack: 2.4.0 webpack-sources: 3.2.3 transitivePeerDependencies: @@ -34501,7 +38331,7 @@ packages: - esbuild - uglify-js - /webpack@5.85.1(@swc/core@1.3.27)(esbuild@0.16.17): + /webpack@5.85.1(esbuild@0.16.17): resolution: {integrity: sha512-xTb7MRf4LY8Z5rzn7aIx4TDrwYJrjcHnIfU1TqtyZOoObyuGSpAUwIvVuqq5wPnv7WEgQr8UvO1q/dgoGG4HjA==} engines: {node: '>=10.13.0'} hasBin: true @@ -34525,14 +38355,14 @@ packages: eslint-scope: 5.1.1 events: 3.3.0 glob-to-regexp: 0.4.1 - graceful-fs: 4.2.10 + graceful-fs: 4.2.11 json-parse-even-better-errors: 2.3.1 loader-runner: 4.3.0 mime-types: 2.1.35 neo-async: 2.6.2 schema-utils: 3.1.2 tapable: 2.2.1 - terser-webpack-plugin: 5.3.9(@swc/core@1.3.27)(esbuild@0.16.17)(webpack@5.85.1) + terser-webpack-plugin: 5.3.9(esbuild@0.16.17)(webpack@5.85.1) watchpack: 2.4.0 webpack-sources: 3.2.3 transitivePeerDependencies: @@ -34551,7 +38381,7 @@ packages: consola: 2.15.3 pretty-time: 1.1.0 std-env: 3.3.1 - webpack: 5.75.0(@swc/core@1.3.27) + webpack: 5.75.0 dev: false /websocket-driver@0.7.4: @@ -34643,6 +38473,14 @@ packages: /which-module@2.0.0: resolution: {integrity: sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==} + /which-pm@2.0.0: + resolution: {integrity: sha512-Lhs9Pmyph0p5n5Z3mVnN0yWcbQYUAD7rbQUiMsQxOJ3T57k7RFe35SUwWMf7dsbDZks1uOmw4AecB/JMDj3v/w==} + engines: {node: '>=8.15'} + dependencies: + load-yaml-file: 0.2.0 + path-exists: 4.0.0 + dev: true + /which-typed-array@1.1.9: resolution: {integrity: sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==} engines: {node: '>= 0.4'} @@ -34667,6 +38505,20 @@ packages: dependencies: isexe: 2.0.0 + /which@3.0.1: + resolution: {integrity: sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + hasBin: true + dependencies: + isexe: 2.0.0 + dev: true + + /wide-align@1.1.3: + resolution: {integrity: sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==} + dependencies: + string-width: 2.1.1 + dev: true + /wide-align@1.1.5: resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} dependencies: @@ -34677,7 +38529,6 @@ packages: engines: {node: '>=8'} dependencies: string-width: 4.2.3 - dev: false /widest-line@4.0.1: resolution: {integrity: sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==} @@ -34696,6 +38547,10 @@ packages: /wordwrap@1.0.0: resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} + /workerpool@6.1.4: + resolution: {integrity: sha512-jGWPzsUqzkow8HoAvqaPWTUPCrlPJaJ5tY8Iz7n1uCz3tTp6s3CDG0FF1NsX42WNlkRSW6Mr+CDZGnNoSsKa7g==} + dev: true + /wrap-ansi@3.0.1: resolution: {integrity: sha512-iXR3tDXpbnTpzjKSylUJRkLuOrEC7hwEB221cgn6wtF8wpmz28puFXAEfPT5zrjM3wahygB//VuWEr1vTkDcNQ==} engines: {node: '>=4'} @@ -34736,7 +38591,6 @@ packages: ansi-styles: 6.2.1 string-width: 5.1.2 strip-ansi: 7.0.1 - dev: false /wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} @@ -34875,6 +38729,10 @@ packages: resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} dev: true + /xorshift@1.2.0: + resolution: {integrity: sha512-iYgNnGyeeJ4t6U11NpA/QiKy+PXn5Aa3Azg5qkwIFz1tBLllQrjjsk9yzD7IAK0naNU4JxdeDgqW9ov4u/hc4g==} + dev: false + /xtend@2.0.6: resolution: {integrity: sha512-fOZg4ECOlrMl+A6Msr7EIFcON1L26mb4NY5rurSkOex/TWhazOrg6eXD/B0XkuiYcYhQDWLXzQxLMVJ7LXwokg==} engines: {node: '>=0.4'} @@ -34911,10 +38769,6 @@ packages: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} engines: {node: '>=10'} - /yallist@2.1.2: - resolution: {integrity: sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==} - dev: true - /yallist@3.1.1: resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} @@ -34955,6 +38809,11 @@ packages: camelcase: 5.3.1 decamelize: 1.2.0 + /yargs-parser@20.2.4: + resolution: {integrity: sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==} + engines: {node: '>=10'} + dev: true + /yargs-parser@20.2.9: resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} engines: {node: '>=10'} @@ -34963,6 +38822,16 @@ packages: resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} engines: {node: '>=12'} + /yargs-unparser@2.0.0: + resolution: {integrity: sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==} + engines: {node: '>=10'} + dependencies: + camelcase: 6.3.0 + decamelize: 4.0.0 + flat: 5.0.2 + is-plain-obj: 2.1.0 + dev: true + /yargs@13.3.2: resolution: {integrity: sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==} dependencies: @@ -35043,12 +38912,98 @@ packages: y18n: 5.0.8 yargs-parser: 21.1.1 + /yarn@1.22.19: + resolution: {integrity: sha512-/0V5q0WbslqnwP91tirOvldvYISzaqhClxzyUKXYxs07yUILIs5jx/k6CFe8bvKSkds5w+eiOqta39Wk3WxdcQ==} + engines: {node: '>=4.0.0'} + hasBin: true + requiresBuild: true + dev: false + /yauzl@2.10.0: resolution: {integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==} dependencies: buffer-crc32: 0.2.13 fd-slicer: 1.1.0 + /yeoman-environment@3.19.3: + resolution: {integrity: sha512-/+ODrTUHtlDPRH9qIC0JREH8+7nsRcjDl3Bxn2Xo/rvAaVvixH5275jHwg0C85g4QsF4P6M2ojfScPPAl+pLAg==} + engines: {node: '>=12.10.0'} + hasBin: true + dependencies: + '@npmcli/arborist': 4.3.1 + are-we-there-yet: 2.0.0 + arrify: 2.0.1 + binaryextensions: 4.18.0 + chalk: 4.1.2 + cli-table: 0.3.11 + commander: 7.1.0 + dateformat: 4.6.3 + debug: 4.3.4(supports-color@8.1.1) + diff: 5.1.0 + error: 10.4.0 + escape-string-regexp: 4.0.0 + execa: 5.1.1 + find-up: 5.0.0 + globby: 11.1.0 + grouped-queue: 2.0.0 + inquirer: 8.2.5 + is-scoped: 2.1.0 + isbinaryfile: 4.0.10 + lodash: 4.17.21 + log-symbols: 4.1.0 + mem-fs: 2.3.0 + mem-fs-editor: 9.7.0(mem-fs@2.3.0) + minimatch: 3.1.2 + npmlog: 5.0.1 + p-queue: 6.6.2 + p-transform: 1.3.0 + pacote: 12.0.3 + preferred-pm: 3.1.2 + pretty-bytes: 5.6.0 + readable-stream: 4.4.2 + semver: 7.5.4 + slash: 3.0.0 + strip-ansi: 6.0.1 + text-table: 0.2.0 + textextensions: 5.16.0 + untildify: 4.0.0 + transitivePeerDependencies: + - bluebird + - supports-color + dev: true + + /yeoman-generator@5.9.0(yeoman-environment@3.19.3): + resolution: {integrity: sha512-sN1e01Db4fdd8P/n/yYvizfy77HdbwzvXmPxps9Gwz2D24slegrkSn+qyj+0nmZhtFwGX2i/cH29QDrvAFT9Aw==} + engines: {node: '>=12.10.0'} + peerDependencies: + yeoman-environment: ^3.2.0 + peerDependenciesMeta: + yeoman-environment: + optional: true + dependencies: + chalk: 4.1.2 + dargs: 7.0.0 + debug: 4.3.4(supports-color@8.1.1) + execa: 5.1.1 + github-username: 6.0.0 + lodash: 4.17.21 + mem-fs-editor: 9.7.0(mem-fs@2.3.0) + minimist: 1.2.7 + pacote: 15.2.0 + read-pkg-up: 7.0.1 + run-async: 2.4.1 + semver: 7.5.4 + shelljs: 0.8.5 + sort-keys: 4.2.0 + text-table: 0.2.0 + yeoman-environment: 3.19.3 + transitivePeerDependencies: + - bluebird + - encoding + - mem-fs + - supports-color + dev: true + /yn@3.1.1: resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} engines: {node: '>=6'} diff --git a/tsconfig.base.json b/tsconfig.base.json index 751f261e0..48c2907d4 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -21,6 +21,7 @@ "baseUrl": "./", "types": ["@types/gtag.js"], "paths": { + "@sb/cli": ["packages/internal/cli"], "@sb/infra-core": ["packages/infra/infra-core/src/index.ts"], "@sb/infra-shared": ["packages/infra/infra-shared/src/index.ts"], "@sb/tools": ["packages/internal/tools/src/index.ts"],